1 | var wmd = require('../lib/wmd'),
|
2 | underscores = wmd.preprocessors.underscores,
|
3 | metadata = wmd.preprocessors.metadata,
|
4 | yamlFrontMatter = wmd.preprocessors.yamlFrontMatter,
|
5 | fencedCodeBlocks = wmd.preprocessors.fencedCodeBlocks;
|
6 |
|
7 |
|
8 | var mkTest = function (test, fn) {
|
9 | return function (input, expected) {
|
10 | var doc = {markdown: input};
|
11 | test.same(fn(doc), {markdown: expected});
|
12 | };
|
13 | };
|
14 |
|
15 |
|
16 |
|
17 | exports['underscores'] = function (test) {
|
18 | var testOutput = mkTest(test, underscores);
|
19 |
|
20 | testOutput('foo_bar', 'foo_bar');
|
21 |
|
22 | testOutput(' foo_bar', ' foo_bar');
|
23 |
|
24 | testOutput('<pre>\nfoo_bar_baz\n</pre>', '<pre>\nfoo_bar_baz\n</pre>');
|
25 |
|
26 | testOutput("foo_bar_baz", "foo\\_bar\\_baz");
|
27 | test.done();
|
28 | };
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 | exports['metadata'] = function (test) {
|
45 | test.same(
|
46 | metadata({
|
47 | markdown: 'property: value'
|
48 | }),
|
49 | {
|
50 | markdown: '',
|
51 | metadata: {property: 'value'}
|
52 | }
|
53 | );
|
54 | test.same(
|
55 | metadata({
|
56 | markdown: 'prop1: value1\n' +
|
57 | 'prop_two: value2\n' +
|
58 | '\n' +
|
59 | 'markdown'
|
60 | }),
|
61 | {
|
62 | markdown: 'markdown',
|
63 | metadata: {prop1: 'value1', prop_two: 'value2'}
|
64 | }
|
65 | );
|
66 | test.same(
|
67 | metadata({
|
68 | markdown: 'prop1: value with spaces\n' +
|
69 | 'prop_two: value2\n' +
|
70 | ' double-line\n' +
|
71 | ' \n' +
|
72 | '\n' +
|
73 | 'markdown'
|
74 | }),
|
75 | {
|
76 | markdown: 'markdown',
|
77 | metadata: {
|
78 | prop1: 'value with spaces',
|
79 | prop_two: 'value2\ndouble-line'
|
80 | }
|
81 | }
|
82 | );
|
83 | test.done();
|
84 | };
|
85 |
|
86 |
|
87 |
|
88 |
|
89 | exports['yamlFrontMatter'] = function (test) {
|
90 | test.same(
|
91 | yamlFrontMatter({
|
92 | markdown: '---\n' +
|
93 | 'property: value\n' +
|
94 | '---'
|
95 | }),
|
96 | {
|
97 | markdown: '',
|
98 | metadata: {property: 'value'}
|
99 | }
|
100 | );
|
101 | test.same(
|
102 | yamlFrontMatter({
|
103 | markdown: '---\n' +
|
104 | 'prop1: value1\n' +
|
105 | 'prop_two: 2\n' +
|
106 | '---\n' +
|
107 | '\n' +
|
108 | 'markdown'
|
109 | }),
|
110 | {
|
111 | markdown: 'markdown',
|
112 | metadata: {prop1: 'value1', prop_two: 2}
|
113 | }
|
114 | );
|
115 | test.same(
|
116 | yamlFrontMatter({
|
117 | markdown: '---\n' +
|
118 | 'prop1: value with spaces\n' +
|
119 | 'list:\n' +
|
120 | ' - item1\n' +
|
121 | ' - item2\n' +
|
122 | '---\n' +
|
123 | '\n' +
|
124 | '\n' +
|
125 | '# markdown'
|
126 | }),
|
127 | {
|
128 | markdown: '# markdown',
|
129 | metadata: {
|
130 | prop1: 'value with spaces',
|
131 | list: ['item1', 'item2']
|
132 | }
|
133 | }
|
134 | );
|
135 | test.done();
|
136 | };
|
137 |
|
138 |
|
139 | exports['fencedCodeBlocks'] = function (test) {
|
140 | test.same(
|
141 | fencedCodeBlocks({
|
142 | markdown: 'foo\n\n```testlang\nbar\n```\n'
|
143 | }),
|
144 | {
|
145 | markdown: 'foo\n\n<pre><code class="testlang">bar\n</code></pre>\n'
|
146 | }
|
147 | );
|
148 | test.same(
|
149 | fencedCodeBlocks({
|
150 | markdown: 'foo\n\n```\nbar\n baz\n```\n'
|
151 | }),
|
152 | {
|
153 | markdown: 'foo\n\n<pre><code class="no-highlight">' +
|
154 | 'bar\n baz\n</code></pre>\n'
|
155 | }
|
156 | );
|
157 | test.done();
|
158 | };
|