highmark-markdown 0.0.279 → 0.0.280

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/example.js +2227 -3002
  2. package/lib/elementMap.js +16 -34
  3. package/lib/example/view.js +2 -2
  4. package/lib/markdown/bnf.js +2 -2
  5. package/lib/markdown/entries.js +11 -23
  6. package/lib/node/markdown/{contents.js → directive/contents.js} +11 -11
  7. package/lib/node/markdown/{embee.js → directive/embee.js} +12 -12
  8. package/lib/node/markdown/{footnotes.js → directive/footnotes.js} +11 -11
  9. package/lib/node/markdown/{tableSeparator.js → directive/ignore.js} +11 -11
  10. package/lib/node/markdown/{include.js → directive/include.js} +11 -11
  11. package/lib/node/markdown/directives.js +2 -2
  12. package/lib/node/markdown/division.js +15 -15
  13. package/lib/node/markdown/error.js +22 -2
  14. package/lib/node/markdown/footnote.js +7 -3
  15. package/lib/node/markdown/orderedListItem.js +37 -3
  16. package/lib/node/markdown/paragraph.js +33 -2
  17. package/lib/node/markdown/stronglyEmphasisedText.js +2 -1
  18. package/lib/node/markdown/tableCell.js +2 -2
  19. package/lib/node/markdown/unorderedListItem.js +33 -2
  20. package/lib/nodeMap.js +7 -13
  21. package/lib/ruleNames.js +23 -53
  22. package/lib/tokenTypes.js +23 -48
  23. package/lib/utilities/childNodes.js +3 -1
  24. package/lib/utilities/index.js +28 -0
  25. package/lib/utilities/query.js +39 -48
  26. package/package.json +1 -1
  27. package/src/elementMap.js +25 -55
  28. package/src/example/view.js +2 -3
  29. package/src/markdown/bnf.js +98 -109
  30. package/src/markdown/entries.js +10 -22
  31. package/src/node/markdown/{contents.js → directive/contents.js} +3 -3
  32. package/src/node/markdown/{embee.js → directive/embee.js} +4 -4
  33. package/src/node/markdown/{footnotes.js → directive/footnotes.js} +3 -3
  34. package/src/node/markdown/directive/ignore.js +7 -0
  35. package/src/node/markdown/{include.js → directive/include.js} +3 -3
  36. package/src/node/markdown/directives.js +1 -2
  37. package/src/node/markdown/division.js +23 -24
  38. package/src/node/markdown/error.js +29 -1
  39. package/src/node/markdown/footnote.js +12 -3
  40. package/src/node/markdown/orderedListItem.js +48 -3
  41. package/src/node/markdown/paragraph.js +37 -0
  42. package/src/node/markdown/stronglyEmphasisedText.js +2 -0
  43. package/src/node/markdown/tableCell.js +1 -1
  44. package/src/node/markdown/unorderedListItem.js +37 -0
  45. package/src/nodeMap.js +15 -33
  46. package/src/ruleNames.js +10 -22
  47. package/src/tokenTypes.js +10 -20
  48. package/src/utilities/childNodes.js +4 -0
  49. package/src/utilities/index.js +13 -0
  50. package/src/utilities/query.js +38 -46
  51. package/lib/node/markdown/bullet.js +0 -120
  52. package/lib/node/markdown/ignore.js +0 -120
  53. package/lib/node/markdown/line.js +0 -137
  54. package/lib/node/markdown/lineBreak.js +0 -134
  55. package/lib/node/markdown/marker.js +0 -130
  56. package/lib/node/markdown/reference.js +0 -130
  57. package/src/node/markdown/bullet.js +0 -7
  58. package/src/node/markdown/ignore.js +0 -7
  59. package/src/node/markdown/line.js +0 -31
  60. package/src/node/markdown/lineBreak.js +0 -17
  61. package/src/node/markdown/marker.js +0 -21
  62. package/src/node/markdown/reference.js +0 -21
  63. package/src/node/markdown/tableSeparator.js +0 -7
@@ -4,17 +4,26 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import MarkdownNode from "../../node/markdown";
6
6
 
7
- const { first } = arrayUtilities;
7
+ const { first, second } = arrayUtilities;
8
8
 
9
9
  export default class FootnoteMarkdownNode extends MarkdownNode {
10
10
  identifier(context) {
11
11
  const childNodes = this.getChildNodes(),
12
12
  firstChildNode = first(childNodes),
13
- referenceMarkdownNode = firstChildNode, ///
14
- identifier = referenceMarkdownNode.identifier(context);
13
+ referenceTerminalNode = firstChildNode, ///
14
+ identifier = identifierFromReferenceTerminalNode(referenceTerminalNode);
15
15
 
16
16
  return identifier;
17
17
  }
18
18
 
19
19
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(FootnoteMarkdownNode, ruleName, childNodes, opacity); }
20
20
  }
21
+
22
+ function identifierFromReferenceTerminalNode(referenceTerminalNode) {
23
+ const content = referenceTerminalNode.getContent(),
24
+ matches = content.match(/\[\^([^\]]+)]:/),
25
+ secondMatch = second(matches),
26
+ identifier = secondMatch; ///
27
+
28
+ return identifier;
29
+ }
@@ -4,16 +4,18 @@ import { arrayUtilities } from "necessary";
4
4
 
5
5
  import MarkdownNode from "../../node/markdown";
6
6
 
7
+ import { isIndexOdd } from "../../utilities/index";
8
+ import { EMPTY_STRING } from "../../constants";
7
9
  import { VALUE_ATTRIBUTE_NAME } from "../../attributeNames";
8
10
 
9
- const { first } = arrayUtilities;
11
+ const { first, second } = arrayUtilities;
10
12
 
11
13
  export default class OrderedListItemMarkdownNode extends MarkdownNode {
12
14
  value(context) {
13
15
  const childNodes = this.getChildNodes(),
14
16
  firstChildNode = first(childNodes),
15
- markerMarkdownNode = firstChildNode, ///
16
- value = markerMarkdownNode.value(context);
17
+ markerTerminalNode = firstChildNode, ///
18
+ value = valueFromMarkerTerminalNode(markerTerminalNode);
17
19
 
18
20
  return value;
19
21
  }
@@ -31,5 +33,48 @@ export default class OrderedListItemMarkdownNode extends MarkdownNode {
31
33
  return attributeValue;
32
34
  }
33
35
 
36
+ childNodesAsHTML(indent, context) {
37
+ let childNodesHTML = EMPTY_STRING;
38
+
39
+ const childNodes = this.getChildNodes();
40
+
41
+ childNodes.forEach((childNode, index) => {
42
+ const indexOdd = isIndexOdd(index);
43
+
44
+ if (indexOdd) {
45
+ const markedTextChildNode = childNode, ///
46
+ markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context);
47
+
48
+ childNodesHTML = `${childNodesHTML}${markedTextChildNodeChildNodesHTML}`;
49
+ }
50
+ });
51
+
52
+ return childNodesHTML;
53
+ }
54
+
55
+ createChildNodeDOMElements(context) {
56
+ const domElement = this.getDOMElement(),
57
+ childNodes = this.getChildNodes();
58
+
59
+ childNodes.forEach((childNode, index) => {
60
+ const indexOdd = isIndexOdd(index);
61
+
62
+ if (indexOdd) {
63
+ const markedTextChildNode = childNode; ///
64
+
65
+ markedTextChildNode.createChildNodeDOMElements(domElement, context);
66
+ }
67
+ });
68
+ }
69
+
34
70
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(OrderedListItemMarkdownNode, ruleName, childNodes, opacity); }
35
71
  }
72
+
73
+ function valueFromMarkerTerminalNode(markerTerminalNode) {
74
+ const content = markerTerminalNode.getContent(),
75
+ matches = content.match(/(\d+)\./),
76
+ secondMatch = second(matches),
77
+ value = secondMatch; ///
78
+
79
+ return value;
80
+ }
@@ -2,6 +2,43 @@
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
4
 
5
+ import { isIndexEven } from "../../utilities/index";
6
+ import { EMPTY_STRING } from "../../constants";
7
+
5
8
  export default class ParagraphMarkdownNode extends MarkdownNode {
9
+ childNodesAsHTML(indent, context) {
10
+ let childNodesHTML = EMPTY_STRING;
11
+
12
+ const childNodes = this.getChildNodes();
13
+
14
+ childNodes.forEach((childNode, index) => {
15
+ const indexEven = isIndexEven(index);
16
+
17
+ if (indexEven) {
18
+ const markedTextChildNode = childNode, ///
19
+ markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context);
20
+
21
+ childNodesHTML = `${childNodesHTML}${markedTextChildNodeChildNodesHTML}`;
22
+ }
23
+ });
24
+
25
+ return childNodesHTML;
26
+ }
27
+
28
+ createChildNodeDOMElements(context) {
29
+ const domElement = this.getDOMElement(),
30
+ childNodes = this.getChildNodes();
31
+
32
+ childNodes.forEach((childNode, index) => {
33
+ const indexEven = isIndexEven(index);
34
+
35
+ if (indexEven) {
36
+ const markedTextChildNode = childNode; ///
37
+
38
+ markedTextChildNode.createChildNodeDOMElements(domElement, context);
39
+ }
40
+ });
41
+ }
42
+
6
43
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(ParagraphMarkdownNode, ruleName, childNodes, opacity); }
7
44
  }
@@ -34,6 +34,8 @@ class StronglyEmphasisedTextMarkdownNode extends MarkdownNode {
34
34
 
35
35
  parentDOMElement.appendChild(domElement);
36
36
 
37
+ domElement = parentDOMElement; ///
38
+
37
39
  return domElement;
38
40
  }
39
41
 
@@ -12,7 +12,7 @@ export default class TableCellMarkdownNode extends MarkdownNode {
12
12
  firstChildNode = first(childNodes),
13
13
  markedTextChildNode = firstChildNode, ///
14
14
  markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context),
15
- childNodesHTML = `${markedTextChildNodeChildNodesHTML}\n`;
15
+ childNodesHTML = markedTextChildNodeChildNodesHTML; ///
16
16
 
17
17
  return childNodesHTML;
18
18
  }
@@ -2,6 +2,43 @@
2
2
 
3
3
  import MarkdownNode from "../../node/markdown";
4
4
 
5
+ import { isIndexOdd } from "../../utilities/index";
6
+ import { EMPTY_STRING } from "../../constants";
7
+
5
8
  export default class UnorderedListItemMarkdownNode extends MarkdownNode {
9
+ childNodesAsHTML(indent, context) {
10
+ let childNodesHTML = EMPTY_STRING;
11
+
12
+ const childNodes = this.getChildNodes();
13
+
14
+ childNodes.forEach((childNode, index) => {
15
+ const indexOdd = isIndexOdd(index);
16
+
17
+ if (indexOdd) {
18
+ const markedTextChildNode = childNode, ///
19
+ markedTextChildNodeChildNodesHTML = markedTextChildNode.childNodesAsHTML(indent, context);
20
+
21
+ childNodesHTML = `${childNodesHTML}${markedTextChildNodeChildNodesHTML}`;
22
+ }
23
+ });
24
+
25
+ return childNodesHTML;
26
+ }
27
+
28
+ createChildNodeDOMElements(context) {
29
+ const domElement = this.getDOMElement(),
30
+ childNodes = this.getChildNodes();
31
+
32
+ childNodes.forEach((childNode, index) => {
33
+ const indexOdd = isIndexOdd(index);
34
+
35
+ if (indexOdd) {
36
+ const markedTextChildNode = childNode; ///
37
+
38
+ markedTextChildNode.createChildNodeDOMElements(domElement, context);
39
+ }
40
+ });
41
+ }
42
+
6
43
  static fromRuleNameChildNodesAndOpacity(ruleName, childNodes, opacity) { return MarkdownNode.fromRuleNameChildNodesAndOpacity(UnorderedListItemMarkdownNode, ruleName, childNodes, opacity); }
7
44
  }
package/src/nodeMap.js CHANGED
@@ -1,24 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  import LinkMarkdownNode from "./node/markdown/link";
4
- import LineMarkdownNode from "./node/markdown/line";
5
- import EmbedMarkdownNode from "./node/markdown/embee";
6
4
  import ImageMarkdownNode from "./node/markdown/image";
7
5
  import TableMarkdownNode from "./node/markdown/table";
8
6
  import ErrorMarkdownNode from "./node/markdown/error";
9
7
  import AnchorMarkdownNode from "./node/markdown/anchor";
10
- import MarkerMarkdownNode from "./node/markdown/marker";
11
- import BulletMarkdownNode from "./node/markdown/bullet";
12
- import IgnoreMarkdownNode from "./node/markdown/ignore";
13
- import IncludeMarkdownNode from "./node/markdown/include";
14
- import ContentsMarkdownNode from "./node/markdown/contents";
15
8
  import DivisionMarkdownNode from "./node/markdown/division";
16
9
  import FootnoteMarkdownNode from "./node/markdown/footnote";
17
- import FootnotesMarkdownNode from "./node/markdown/footnotes";
18
- import ReferenceMarkdownNode from "./node/markdown/reference";
19
10
  import ParagraphMarkdownNode from "./node/markdown/paragraph";
20
11
  import HyperlinkMarkdownNode from "./node/markdown/hyperlink";
21
- import LineBreakMarkdownNode from "./node/markdown/lineBreak";
22
12
  import TableCellMarkdownNode from "./node/markdown/tableCell";
23
13
  import TableHeadMarkdownNode from "./node/markdown/tableHead";
24
14
  import TableBodyMarkdownNode from "./node/markdown/tableBody";
@@ -43,38 +33,32 @@ import FootnotesListMarkdownNode from "./node/markdown/footnotesList";
43
33
  import VerticalSpaceMarkdownNode from "./node/markdown/verticalSpace";
44
34
  import TableHeadCellMarkdownNode from "./node/markdown/tableHeadCell";
45
35
  import TableBodyCellMarkdownNode from "./node/markdown/tableBodyCell";
46
- import TableSeparatorMarkdownNode from "./node/markdown/tableSeparator";
47
36
  import EmphasisedTextMarkdownNode from "./node/markdown/emphasisedText";
48
37
  import PrimaryHeadingMarkdownNode from "./node/markdown/heading/primary";
49
38
  import EmptyTableCellMarkdownNode from "./node/markdown/emptyTableCell";
39
+ import EmbedDirectiveMarkdownNode from "./node/markdown/directive/embee";
50
40
  import TertiaryHeadingMarkdownNode from "./node/markdown/heading/tertiary";
51
41
  import OrderedListItemMarkdownNode from "./node/markdown/orderedListItem";
52
42
  import BlockListingEndMarkdownNode from "./node/markdown/blockListingEnd";
43
+ import IgnoreDirectiveMarkdownNode from "./node/markdown/directive/ignore";
53
44
  import SecondaryHeadingMarkdownNode from "./node/markdown/heading/secondary";
45
+ import IncludeDirectiveMarkdownNode from "./node/markdown/directive/include";
54
46
  import QuaternaryHeadingMarkdownNode from "./node/markdown/heading/quaternary";
55
47
  import BlockListingStartMarkdownNode from "./node/markdown/blockListingStart";
56
48
  import UnorderedListItemMarkdownNode from "./node/markdown/unorderedListItem";
49
+ import ContentsDirectiveMarkdownNode from "./node/markdown/directive/contents";
50
+ import FootnotesDirectiveMarkdownNode from "./node/markdown/directive/footnotes";
57
51
  import StronglyEmphasisedTextMarkdownNode from "./node/markdown/stronglyEmphasisedText";
58
52
 
59
53
  import { LINK_RULE_NAME,
60
- LINE_RULE_NAME,
61
- EMBED_RULE_NAME,
62
54
  IMAGE_RULE_NAME,
63
55
  TABLE_RULE_NAME,
64
56
  ERROR_RULE_NAME,
65
57
  ANCHOR_RULE_NAME,
66
- MARKER_RULE_NAME,
67
- BULLET_RULE_NAME,
68
- IGNORE_RULE_NAME,
69
- INCLUDE_RULE_NAME,
70
- CONTENTS_RULE_NAME,
71
58
  DIVISION_RULE_NAME,
72
59
  FOOTNOTE_RULE_NAME,
73
- FOOTNOTES_RULE_NAME,
74
- REFERENCE_RULE_NAME,
75
60
  PARAGRAPH_RULE_NAME,
76
61
  HYPERLINK_RULE_NAME,
77
- LINE_BREAK_RULE_NAME,
78
62
  TABLE_CELL_RULE_NAME,
79
63
  TABLE_HEAD_RULE_NAME,
80
64
  TABLE_BODY_RULE_NAME,
@@ -99,39 +83,33 @@ import { LINK_RULE_NAME,
99
83
  VERTICAL_SPACE_RULE_NAME,
100
84
  TABLE_HEAD_CELL_RULE_NAME,
101
85
  TABLE_BODY_CELL_RULE_NAME,
102
- TABLE_SEPARATOR_RULE_NAME,
103
86
  EMPHASISED_TEXT_RULE_NAME,
104
87
  PRIMARY_HEADING_RULE_NAME,
88
+ EMBED_DIRECTIVE_RULE_NAME,
105
89
  EMPTY_TABLE_CELL_RULE_NAME,
106
90
  TERTIARY_HEADING_RULE_NAME,
91
+ IGNORE_DIRECTIVE_RULE_NAME,
107
92
  ORDERED_LIST_ITEM_RULE_NAME,
108
93
  BLOCK_LISTING_END_RULE_NAME,
109
94
  SECONDARY_HEADING_RULE_NAME,
95
+ INCLUDE_DIRECTIVE_RULE_NAME,
110
96
  QUATERNARY_HEADING_RULE_NAME,
97
+ CONTENTS_DIRECTIVE_RULE_NAME,
111
98
  BLOCK_LISTING_START_RULE_NAME,
112
99
  UNORDERED_LIST_ITEM_RULE_NAME,
100
+ FOOTNOTES_DIRECTIVE_RULE_NAME,
113
101
  STRONGLY_EMPHASISED_TEXT_RULE_NAME } from "./ruleNames";
114
102
 
115
103
  const nodeMap = {
116
104
  [LINK_RULE_NAME]: LinkMarkdownNode,
117
- [LINE_RULE_NAME]: LineMarkdownNode,
118
- [EMBED_RULE_NAME]: EmbedMarkdownNode,
119
105
  [IMAGE_RULE_NAME]: ImageMarkdownNode,
120
106
  [TABLE_RULE_NAME]: TableMarkdownNode,
121
107
  [ERROR_RULE_NAME]: ErrorMarkdownNode,
122
108
  [ANCHOR_RULE_NAME]: AnchorMarkdownNode,
123
- [MARKER_RULE_NAME]: MarkerMarkdownNode,
124
- [BULLET_RULE_NAME]: BulletMarkdownNode,
125
- [IGNORE_RULE_NAME]: IgnoreMarkdownNode,
126
- [INCLUDE_RULE_NAME]: IncludeMarkdownNode,
127
- [CONTENTS_RULE_NAME]: ContentsMarkdownNode,
128
109
  [DIVISION_RULE_NAME]: DivisionMarkdownNode,
129
110
  [FOOTNOTE_RULE_NAME]: FootnoteMarkdownNode,
130
- [FOOTNOTES_RULE_NAME]: FootnotesMarkdownNode,
131
- [REFERENCE_RULE_NAME]: ReferenceMarkdownNode,
132
111
  [PARAGRAPH_RULE_NAME]: ParagraphMarkdownNode,
133
112
  [HYPERLINK_RULE_NAME]: HyperlinkMarkdownNode,
134
- [LINE_BREAK_RULE_NAME]: LineBreakMarkdownNode,
135
113
  [TABLE_CELL_RULE_NAME]: TableCellMarkdownNode,
136
114
  [TABLE_HEAD_RULE_NAME]: TableHeadMarkdownNode,
137
115
  [TABLE_BODY_RULE_NAME]: TableBodyMarkdownNode,
@@ -156,17 +134,21 @@ const nodeMap = {
156
134
  [VERTICAL_SPACE_RULE_NAME]: VerticalSpaceMarkdownNode,
157
135
  [TABLE_HEAD_CELL_RULE_NAME]: TableHeadCellMarkdownNode,
158
136
  [TABLE_BODY_CELL_RULE_NAME]: TableBodyCellMarkdownNode,
159
- [TABLE_SEPARATOR_RULE_NAME]: TableSeparatorMarkdownNode,
160
137
  [EMPHASISED_TEXT_RULE_NAME]: EmphasisedTextMarkdownNode,
161
138
  [PRIMARY_HEADING_RULE_NAME]: PrimaryHeadingMarkdownNode,
139
+ [EMBED_DIRECTIVE_RULE_NAME]: EmbedDirectiveMarkdownNode,
162
140
  [EMPTY_TABLE_CELL_RULE_NAME]: EmptyTableCellMarkdownNode,
163
141
  [TERTIARY_HEADING_RULE_NAME]: TertiaryHeadingMarkdownNode,
142
+ [IGNORE_DIRECTIVE_RULE_NAME]: IgnoreDirectiveMarkdownNode,
164
143
  [ORDERED_LIST_ITEM_RULE_NAME]: OrderedListItemMarkdownNode,
165
144
  [BLOCK_LISTING_END_RULE_NAME]: BlockListingEndMarkdownNode,
166
145
  [SECONDARY_HEADING_RULE_NAME]: SecondaryHeadingMarkdownNode,
146
+ [INCLUDE_DIRECTIVE_RULE_NAME]: IncludeDirectiveMarkdownNode,
167
147
  [QUATERNARY_HEADING_RULE_NAME]: QuaternaryHeadingMarkdownNode,
148
+ [CONTENTS_DIRECTIVE_RULE_NAME]: ContentsDirectiveMarkdownNode,
168
149
  [BLOCK_LISTING_START_RULE_NAME]: BlockListingStartMarkdownNode,
169
150
  [UNORDERED_LIST_ITEM_RULE_NAME]: UnorderedListItemMarkdownNode,
151
+ [FOOTNOTES_DIRECTIVE_RULE_NAME]: FootnotesDirectiveMarkdownNode,
170
152
  [STRONGLY_EMPHASISED_TEXT_RULE_NAME]: StronglyEmphasisedTextMarkdownNode
171
153
  };
172
154
 
package/src/ruleNames.js CHANGED
@@ -1,24 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  export const LINK_RULE_NAME = "link";
4
- export const LINE_RULE_NAME = "line";
5
- export const EMBED_RULE_NAME = "embed";
6
4
  export const IMAGE_RULE_NAME = "image";
7
5
  export const TABLE_RULE_NAME = "table";
8
6
  export const ERROR_RULE_NAME = "error";
9
7
  export const ANCHOR_RULE_NAME = "anchor";
10
- export const MARKER_RULE_NAME = "marker";
11
- export const BULLET_RULE_NAME = "bullet";
12
- export const IGNORE_RULE_NAME = "ignore";
13
- export const INCLUDE_RULE_NAME = "include";
14
- export const CONTENTS_RULE_NAME = "contents";
15
8
  export const DIVISION_RULE_NAME = "division";
16
9
  export const FOOTNOTE_RULE_NAME = "footnote";
17
- export const FOOTNOTES_RULE_NAME = "footnotes";
18
- export const REFERENCE_RULE_NAME = "reference";
19
10
  export const PARAGRAPH_RULE_NAME = "paragraph";
20
11
  export const HYPERLINK_RULE_NAME = "hyperlink";
21
- export const LINE_BREAK_RULE_NAME = "lineBreak";
22
12
  export const TABLE_CELL_RULE_NAME = "tableCell";
23
13
  export const TABLE_HEAD_RULE_NAME = "tableHead";
24
14
  export const TABLE_BODY_RULE_NAME = "tableBody";
@@ -46,39 +36,33 @@ export const FOOTNOTES_LIST_RULE_NAME = "footnotesList";
46
36
  export const VERTICAL_SPACE_RULE_NAME = "verticalSpace";
47
37
  export const TABLE_HEAD_CELL_RULE_NAME = "tableHeadCell";
48
38
  export const TABLE_BODY_CELL_RULE_NAME = "tableBodyCell";
49
- export const TABLE_SEPARATOR_RULE_NAME = "tableSeparator";
50
39
  export const EMPHASISED_TEXT_RULE_NAME = "emphasisedText";
51
40
  export const PRIMARY_HEADING_RULE_NAME = "primaryHeading";
41
+ export const EMBED_DIRECTIVE_RULE_NAME = "embedDirective";
52
42
  export const EMPTY_TABLE_CELL_RULE_NAME = "emptyTableCell";
53
43
  export const TERTIARY_HEADING_RULE_NAME = "tertiaryHeading";
44
+ export const IGNORE_DIRECTIVE_RULE_NAME = "ignoreDirective";
54
45
  export const ORDERED_LIST_ITEM_RULE_NAME = "orderedListItem";
55
46
  export const BLOCK_LISTING_END_RULE_NAME = "blockListingEnd";
56
47
  export const SECONDARY_HEADING_RULE_NAME = "secondaryHeading";
48
+ export const INCLUDE_DIRECTIVE_RULE_NAME = "includeDirective";
57
49
  export const QUATERNARY_HEADING_RULE_NAME = "quaternaryHeading";
50
+ export const CONTENTS_DIRECTIVE_RULE_NAME = "contentsDirective";
58
51
  export const BLOCK_LISTING_START_RULE_NAME = "blockListingStart";
59
52
  export const UNORDERED_LIST_ITEM_RULE_NAME = "unorderedListItem";
53
+ export const FOOTNOTES_DIRECTIVE_RULE_NAME = "footnotesDirective";
60
54
  export const STRONGLY_EMPHASISED_TEXT_RULE_NAME = "stronglyEmphasisedText";
61
55
 
62
56
  const ruleNames = {
63
57
  LINK_RULE_NAME,
64
- LINE_RULE_NAME,
65
- EMBED_RULE_NAME,
66
58
  IMAGE_RULE_NAME,
67
59
  TABLE_RULE_NAME,
68
60
  ERROR_RULE_NAME,
69
61
  ANCHOR_RULE_NAME,
70
- MARKER_RULE_NAME,
71
- BULLET_RULE_NAME,
72
- IGNORE_RULE_NAME,
73
- INCLUDE_RULE_NAME,
74
- CONTENTS_RULE_NAME,
75
62
  DIVISION_RULE_NAME,
76
63
  FOOTNOTE_RULE_NAME,
77
- FOOTNOTES_RULE_NAME,
78
- REFERENCE_RULE_NAME,
79
64
  PARAGRAPH_RULE_NAME,
80
65
  HYPERLINK_RULE_NAME,
81
- LINE_BREAK_RULE_NAME,
82
66
  TABLE_CELL_RULE_NAME,
83
67
  TABLE_HEAD_RULE_NAME,
84
68
  TABLE_BODY_RULE_NAME,
@@ -106,17 +90,21 @@ const ruleNames = {
106
90
  VERTICAL_SPACE_RULE_NAME,
107
91
  TABLE_HEAD_CELL_RULE_NAME,
108
92
  TABLE_BODY_CELL_RULE_NAME,
109
- TABLE_SEPARATOR_RULE_NAME,
110
93
  EMPHASISED_TEXT_RULE_NAME,
111
94
  PRIMARY_HEADING_RULE_NAME,
95
+ EMBED_DIRECTIVE_RULE_NAME,
112
96
  EMPTY_TABLE_CELL_RULE_NAME,
113
97
  TERTIARY_HEADING_RULE_NAME,
98
+ IGNORE_DIRECTIVE_RULE_NAME,
114
99
  ORDERED_LIST_ITEM_RULE_NAME,
115
100
  BLOCK_LISTING_END_RULE_NAME,
116
101
  SECONDARY_HEADING_RULE_NAME,
102
+ INCLUDE_DIRECTIVE_RULE_NAME,
117
103
  QUATERNARY_HEADING_RULE_NAME,
104
+ CONTENTS_DIRECTIVE_RULE_NAME,
118
105
  BLOCK_LISTING_START_RULE_NAME,
119
106
  UNORDERED_LIST_ITEM_RULE_NAME,
107
+ FOOTNOTES_DIRECTIVE_RULE_NAME,
120
108
  STRONGLY_EMPHASISED_TEXT_RULE_NAME
121
109
  };
122
110
 
package/src/tokenTypes.js CHANGED
@@ -3,48 +3,38 @@
3
3
  export const URL_TOKEN_TYPE = "url";
4
4
  export const WORD_TOKEN_TYPE = "word";
5
5
  export const PATH_TOKEN_TYPE = "path";
6
+ export const MARKER_TOKEN_TYPE = "marker";
7
+ export const DASHES_TOKEN_TYPE = "dashes";
8
+ export const HASHES_TOKEN_TYPE = "hashes";
6
9
  export const NUMBER_TOKEN_TYPE = "number";
7
10
  export const SPECIAL_TOKEN_TYPE = "special";
8
11
  export const ESCAPED_TOKEN_TYPE = "escaped";
12
+ export const REFERENCE_TOKEN_TYPE = "reference";
13
+ export const ASTERISKS_TOKEN_TYPE = "asterisks";
9
14
  export const BACKTICKS_TOKEN_TYPE = "backticks";
10
15
  export const IDENTIFIER_TOKEN_TYPE = "identifier";
11
16
  export const UNASSIGNED_TOKEN_TYPE = "unassigned";
12
- export const TWO_DASHES_TOKEN_TYPE = "two-dashes";
13
- export const MANY_DASHES_TOKEN_TYPE = "many-dashes";
14
- export const SINGLE_DASH_TOKEN_TYPE = "single-dash";
15
- export const SINGLE_HASH_TOKEN_TYPE = "single-hash";
16
- export const DOUBLE_HASH_TOKEN_TYPE = "double-hash";
17
- export const TRIPLE_HASH_TOKEN_TYPE = "triple-hash";
18
17
  export const VERTICAL_BAR_TOKEN_TYPE = "vertical-bar";
19
18
  export const EMAIL_ADDRESS_TOKEN_TYPE = "email-address";
20
- export const QUADRUPLE_HASH_TOKEN_TYPE = "quadruple-hash";
21
- export const SINGLE_ASTERISK_TOKEN_TYPE = "single-asterisk";
22
- export const DOUBLE_ASTERISK_TOKEN_TYPE = "double-asterisk";
23
- export const TRIPLE_ASTERISK_TOKEN_TYPE = "triple-asterisk";
24
19
  export const BACKTICKED_LITERAL_TOKEN_TYPE = "backticked-literal";
25
20
 
26
21
  const tokenTypes = {
27
22
  URL_TOKEN_TYPE,
28
23
  WORD_TOKEN_TYPE,
29
24
  PATH_TOKEN_TYPE,
25
+ MARKER_TOKEN_TYPE,
26
+ DASHES_TOKEN_TYPE,
27
+ HASHES_TOKEN_TYPE,
30
28
  NUMBER_TOKEN_TYPE,
31
29
  SPECIAL_TOKEN_TYPE,
32
30
  ESCAPED_TOKEN_TYPE,
31
+ REFERENCE_TOKEN_TYPE,
32
+ ASTERISKS_TOKEN_TYPE,
33
33
  BACKTICKS_TOKEN_TYPE,
34
34
  IDENTIFIER_TOKEN_TYPE,
35
35
  UNASSIGNED_TOKEN_TYPE,
36
- TWO_DASHES_TOKEN_TYPE,
37
- MANY_DASHES_TOKEN_TYPE,
38
- SINGLE_DASH_TOKEN_TYPE,
39
- SINGLE_HASH_TOKEN_TYPE,
40
- DOUBLE_HASH_TOKEN_TYPE,
41
- TRIPLE_HASH_TOKEN_TYPE,
42
36
  VERTICAL_BAR_TOKEN_TYPE,
43
37
  EMAIL_ADDRESS_TOKEN_TYPE,
44
- QUADRUPLE_HASH_TOKEN_TYPE,
45
- SINGLE_ASTERISK_TOKEN_TYPE,
46
- DOUBLE_ASTERISK_TOKEN_TYPE,
47
- TRIPLE_ASTERISK_TOKEN_TYPE,
48
38
  BACKTICKED_LITERAL_TOKEN_TYPE
49
39
  };
50
40
 
@@ -58,6 +58,10 @@ export function htmlFromChildNodes(childNodes, context, leftTrimmed) {
58
58
 
59
59
  html = htmls.join(EMPTY_STRING);
60
60
 
61
+ html = html.replace(/\n$/, EMPTY_STRING);
62
+
63
+ html = `${html}\n`;
64
+
61
65
  return html;
62
66
  }
63
67
 
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ export function isIndexOdd(index) {
4
+ const indexOdd = (index % 2) === 1;
5
+
6
+ return indexOdd;
7
+ }
8
+
9
+ export function isIndexEven(index) {
10
+ const indexEven = (index % 2) === 0;
11
+
12
+ return indexEven;
13
+ }
@@ -5,16 +5,15 @@ import { arrayUtilities } from "necessary";
5
5
 
6
6
  const { first, push } = arrayUtilities;
7
7
 
8
- const linkMarkdownNodesQuery = Query.fromExpression(`//link`),
9
- embedMarkdownNodesQuery = Query.fromExpression(`//embed`),
10
- ignoreMarkdownNodeQuery = Query.fromExpression(`//ignore`),
11
- headingMarkdownNodesQuery = Query.fromExpression(`//primaryHeading|secondaryHeading|tertiaryHeading|quaternaryHeading`),
12
- contentsMarkdownNodeQuery = Query.fromExpression(`//contents`),
13
- footnoteMarkdownNodesQuery = Query.fromExpression(`//footnote`),
14
- footnotesMarkdownNodeQuery = Query.fromExpression(`//footnotes`),
15
- footnotesMarkdownNodesQuery = Query.fromExpression(`//footnotes`),
16
- referenceMarkdownNodesQuery = Query.fromExpression(`//reference`),
17
- linkReferenceOrFootnotesMarkdownNodesQuery = Query.fromExpression(`//link|reference|footnotes`);
8
+ const linkMarkdownNodesQuery = Query.fromExpression("//link"),
9
+ headingMarkdownNodesQuery = Query.fromExpression("//primaryHeading|secondaryHeading|tertiaryHeading|quaternaryHeading"),
10
+ footnoteMarkdownNodesQuery = Query.fromExpression("//footnote"),
11
+ footnotesMarkdownNodesQuery = Query.fromExpression("//footnotes"),
12
+ embedDirectiveMarkdownNodesQuery = Query.fromExpression("//embedDirective"),
13
+ ignoreDirectiveMarkdownNodeQuery = Query.fromExpression("//ignoreDirective"),
14
+ contentsDirectiveMarkdownNodeQuery = Query.fromExpression("//contentsDirective"),
15
+ footnotesDirectiveMarkdownNodeQuery = Query.fromExpression("//footnotesDirective"),
16
+ linkFootnoteOrFootnotesMarkdownNodesQuery = Query.fromExpression("//link|footnote|footnotes");
18
17
 
19
18
  export function nodeQuery(expression) {
20
19
  const query = Query.fromExpression(expression);
@@ -51,71 +50,64 @@ export function linkMarkdownNodesFromNode(node, linkMarkdownNodes = []) {
51
50
  return linkMarkdownNodes;
52
51
  }
53
52
 
54
- export function embedMarkdownNodesFromNode(node, embedMarkdownNodes = []) {
55
- nodesFromNodeAndQuery(node, embedMarkdownNodesQuery, embedMarkdownNodes);
56
-
57
- return embedMarkdownNodes;
58
- }
59
-
60
- export function ignoreMarkdownNodeFromNode(node) {
61
- const ignoreMarkdownNode = nodeFromNodeAndQuery(node, ignoreMarkdownNodeQuery);
53
+ export function headingMarkdownNodesFromNode(node, headingMarkdownNodes = []) {
54
+ nodesFromNodeAndQuery(node, headingMarkdownNodesQuery, headingMarkdownNodes);
62
55
 
63
- return ignoreMarkdownNode;
56
+ return headingMarkdownNodes;
64
57
  }
65
58
 
66
- export function contentsMarkdownNodeFromNode(node) {
67
- const contentsMarkdownNode = nodeFromNodeAndQuery(node, contentsMarkdownNodeQuery);
59
+ export function footnoteMarkdownNodesFromNode(node, footnoteMarkdownNodes = []) {
60
+ nodesFromNodeAndQuery(node, footnoteMarkdownNodesQuery, footnoteMarkdownNodes);
68
61
 
69
- return contentsMarkdownNode;
62
+ return footnoteMarkdownNodes;
70
63
  }
71
64
 
72
- export function footnotesMarkdownNodeFromNode(node) {
73
- const footnotesMarkdownNode = nodeFromNodeAndQuery(node, footnotesMarkdownNodeQuery);
65
+ export function footnotesMarkdownNodesFromNode(node, footnotesMarkdownNodes = []) {
66
+ nodesFromNodeAndQuery(node, footnotesMarkdownNodesQuery, footnotesMarkdownNodes);
74
67
 
75
- return footnotesMarkdownNode;
68
+ return footnotesMarkdownNodes;
76
69
  }
77
70
 
78
- export function headingMarkdownNodesFromNode(node, headingMarkdownNodes = []) {
79
- nodesFromNodeAndQuery(node, headingMarkdownNodesQuery, headingMarkdownNodes);
71
+ export function embedDirectiveMarkdownNodesFromNode(node, embedDirectiveMarkdownNodes = []) {
72
+ nodesFromNodeAndQuery(node, embedDirectiveMarkdownNodesQuery, embedDirectiveMarkdownNodes);
80
73
 
81
- return headingMarkdownNodes;
74
+ return embedDirectiveMarkdownNodes;
82
75
  }
83
76
 
84
- export function footnoteMarkdownNodesFromNode(node, footnoteMarkdownNodes = []) {
85
- nodesFromNodeAndQuery(node, footnoteMarkdownNodesQuery, footnoteMarkdownNodes);
77
+ export function ignoreDirectiveMarkdownNodeFromNode(node) {
78
+ const ignoreDirectiveMarkdownNode = nodeFromNodeAndQuery(node, ignoreDirectiveMarkdownNodeQuery);
86
79
 
87
- return footnoteMarkdownNodes;
80
+ return ignoreDirectiveMarkdownNode;
88
81
  }
89
82
 
90
- export function referenceMarkdownNodesFromNode(node, referenceMarkdownNodes = []) {
91
- nodesFromNodeAndQuery(node, referenceMarkdownNodesQuery, referenceMarkdownNodes);
83
+ export function contentsDirectiveMarkdownNodeFromNode(node) {
84
+ const contentsDirectiveMarkdownNode = nodeFromNodeAndQuery(node, contentsDirectiveMarkdownNodeQuery);
92
85
 
93
- return referenceMarkdownNodes;
86
+ return contentsDirectiveMarkdownNode;
94
87
  }
95
88
 
96
- export function footnotesMarkdownNodesFromNode(node, footnotesMarkdownNodes = []) {
97
- nodesFromNodeAndQuery(node, footnotesMarkdownNodesQuery, footnotesMarkdownNodes);
89
+ export function footnotesDirectiveMarkdownNodeFromNode(node) {
90
+ const footnotesDirectiveMarkdownNode = nodeFromNodeAndQuery(node, footnotesDirectiveMarkdownNodeQuery);
98
91
 
99
- return footnotesMarkdownNodes;
92
+ return footnotesDirectiveMarkdownNode;
100
93
  }
101
94
 
102
- export function linkReferenceOrFootnotesMarkdownNodesFromNode(node, linkReferenceOrFootnotesMarkdownNodes = []) {
103
- nodesFromNodeAndQuery(node, linkReferenceOrFootnotesMarkdownNodesQuery, linkReferenceOrFootnotesMarkdownNodes);
95
+ export function linkFootnoteOrFootnotesMarkdownNodesFromNode(node, linkFootnoteOrFootnotesMarkdownNodes = []) {
96
+ nodesFromNodeAndQuery(node, linkFootnoteOrFootnotesMarkdownNodesQuery, linkFootnoteOrFootnotesMarkdownNodes);
104
97
 
105
- return linkReferenceOrFootnotesMarkdownNodes;
98
+ return linkFootnoteOrFootnotesMarkdownNodes;
106
99
  }
107
100
 
108
101
  export default {
109
102
  linkMarkdownNodesFromNode,
110
- embedMarkdownNodesFromNode,
111
- ignoreMarkdownNodeFromNode,
112
- contentsMarkdownNodeFromNode,
113
- footnotesMarkdownNodeFromNode,
114
103
  headingMarkdownNodesFromNode,
115
104
  footnoteMarkdownNodesFromNode,
116
- referenceMarkdownNodesFromNode,
117
105
  footnotesMarkdownNodesFromNode,
118
- linkReferenceOrFootnotesMarkdownNodesFromNode
106
+ embedDirectiveMarkdownNodesFromNode,
107
+ ignoreDirectiveMarkdownNodeFromNode,
108
+ contentsDirectiveMarkdownNodeFromNode,
109
+ footnotesDirectiveMarkdownNodeFromNode,
110
+ linkFootnoteOrFootnotesMarkdownNodesFromNode
119
111
  };
120
112
 
121
113
  function nodeFromNodeAndQuery(node, query) {