summaryrefslogtreecommitdiff
path: root/src/clarktown/parsers.clj
blob: 8ca27b309b7987d5b0ef7d7d4aac18e5ac8de4e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
(ns clarktown.parsers
  (:require
    [clarktown.matchers.empty-block]
    [clarktown.renderers.empty-block]
    [clarktown.matchers.horizontal-line-block]
    [clarktown.renderers.horizontal-line-block]
    [clarktown.matchers.heading-block]
    [clarktown.renderers.heading-block]
    [clarktown.matchers.quote-block]
    [clarktown.renderers.quote-block]
    [clarktown.matchers.fenced-code-block]
    [clarktown.renderers.fenced-code-block]
    [clarktown.matchers.indented-code-block]
    [clarktown.renderers.indented-code-block]
    [clarktown.matchers.list-block]
    [clarktown.renderers.list-block]
    [clarktown.renderers.paragraph-block]
    [clarktown.renderers.link-and-image]
    [clarktown.renderers.bold]
    [clarktown.renderers.italic]
    [clarktown.renderers.inline-code]
    [clarktown.renderers.strikethrough]))


(def
  ^{:doc "Detects, parses and renders a empty block."}
  empty-block-parser
  {:matcher clarktown.matchers.empty-block/match?
   :renderers [clarktown.renderers.empty-block/render]})


(def
  ^{:doc "Detects, parses and renders a horizontal line block."}
  horizontal-line-block-parser
  {:matcher clarktown.matchers.horizontal-line-block/match?
   :renderers [clarktown.renderers.horizontal-line-block/render]})


(def
  ^{:doc "Detects, parses and renders a heading block."}
  heading-block-parser
  {:matcher clarktown.matchers.heading-block/match?
   :renderers [clarktown.renderers.link-and-image/render
               clarktown.renderers.bold/render
               clarktown.renderers.italic/render
               clarktown.renderers.inline-code/render
               clarktown.renderers.strikethrough/render
               clarktown.renderers.heading-block/render]})


(def
  ^{:doc "Detects, parses and renders a quote block."}
  quote-block-parser
  {:matcher clarktown.matchers.quote-block/match?
   :renderers [clarktown.renderers.quote-block/render]})


(def
  ^{:doc "Detects, parses and renders a fenced code block."}
  fenced-code-block-parser
  {:matcher clarktown.matchers.fenced-code-block/match?
   :renderers [clarktown.renderers.fenced-code-block/render]})


(def
  ^{:doc "Detects, parses and renders a indented code block."}
  indented-code-block-parser
  {:matcher clarktown.matchers.indented-code-block/match?
   :renderers [clarktown.renderers.indented-code-block/render]})


(def
  ^{:doc "Detects, parses and renders a list block."}
  list-block-parser
  {:matcher clarktown.matchers.list-block/match?
   :renderers [clarktown.renderers.link-and-image/render
               clarktown.renderers.bold/render
               clarktown.renderers.italic/render
               clarktown.renderers.inline-code/render
               clarktown.renderers.strikethrough/render
               clarktown.renderers.list-block/render]})


(def
  ^{:doc "Parses and renders a quote block."}
  paragraph-block-parser
  {:renderers [clarktown.renderers.link-and-image/render
               clarktown.renderers.bold/render
               clarktown.renderers.italic/render
               clarktown.renderers.inline-code/render
               clarktown.renderers.strikethrough/render
               clarktown.renderers.paragraph-block/render]})


(def
  ^{:doc "A set of default parsers."}
  default-parsers
  [empty-block-parser
   horizontal-line-block-parser
   heading-block-parser
   quote-block-parser
   fenced-code-block-parser
   indented-code-block-parser
   list-block-parser
   paragraph-block-parser])