highmark-markdown 1.0.217 → 1.0.219

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.
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ import { nodeUtilities } from "occam-dom";
4
+
5
+ import CSSNode from "../node/css";
6
+ import HTMLNode from "../node/html";
7
+ import cssNodeMap from "../map/node/css";
8
+ import htmlNodeMap from "../map/node/html";
9
+ import MarkdownLexer from "../markdown/lexer";
10
+ import MarkdownParser from "../markdown/parser";
11
+ import TopmostCSSNode from "../node/css/topmost";
12
+ import TopmostHTMLNode from "../node/html/topmost";
13
+ import markdownQueries from "../queries/markdown";
14
+ import MarkdownStyleLexer from "../markdownStyle/lexer";
15
+ import MarkdownStyleParser from "../markdownStyle/parser";
16
+ import markdownStyleQueries from "../queries/markdownStyle";
17
+
18
+ import { nodesFromNodeAndQueries } from "../utilities/query";
19
+
20
+ const { topmostNodeFromOuterNodes } = nodeUtilities;
21
+
22
+ const markdownLexer = MarkdownLexer.fromNothing(),
23
+ markdownParser = MarkdownParser.fromNothing(),
24
+ markdownStyleLexer = MarkdownStyleLexer.fromNothing(),
25
+ markdownStyleParser = MarkdownStyleParser.fromNothing();
26
+
27
+ export function tokensFromMarkdown(markdown) {
28
+ const lexer = markdownLexer, ///
29
+ content = markdown, ///
30
+ tokens = lexer.tokenise(content);
31
+
32
+ return tokens;
33
+ }
34
+
35
+ export function markdownNodeFromTokens(tokens) {
36
+ const parser = markdownParser, ///
37
+ startRule = parser.getStartRule(),
38
+ node = parser.parse(tokens, startRule),
39
+ markdownNode = node; ///
40
+
41
+ return node;
42
+ }
43
+
44
+ export function tokensFromMarkdownStyle(markdownStyle) {
45
+ const lexer = markdownStyleLexer, ///
46
+ content = markdownStyle, ///
47
+ tokens = lexer.tokenise(content);
48
+
49
+ return tokens;
50
+ }
51
+
52
+ export function HTMLClassFromMarkdownNode(markdownNode) {
53
+ let Class;
54
+
55
+ if (markdownNode === null) {
56
+ Class = TopmostHTMLNode; ///
57
+ } else {
58
+ const nonTerminalNode = markdownNode, ///
59
+ ruleName = nonTerminalNode.getRuleName();
60
+
61
+ Class = htmlNodeMap[ruleName] || HTMLNode;
62
+ }
63
+
64
+ return Class;
65
+ }
66
+
67
+ export function markdownStyleNodeFromTokens(tokens) {
68
+ const parser = markdownStyleParser, ///
69
+ startRule = parser.getStartRule(),
70
+ node = parser.parse(tokens, startRule),
71
+ markdownStyleNode = node; ///
72
+
73
+ return markdownStyleNode;
74
+ }
75
+
76
+ export function CSSClassFromMarkdownStyleNode(markdownStyleNode) {
77
+ let Class;
78
+
79
+ if (markdownStyleNode === null) {
80
+ Class = TopmostCSSNode; ///
81
+ } else {
82
+ const nonTerminalNode = markdownStyleNode, ///
83
+ ruleName = nonTerminalNode.getRuleName();
84
+
85
+ Class = cssNodeMap[ruleName] || CSSNode;
86
+ }
87
+
88
+ return Class;
89
+ }
90
+
91
+ export function topmostHTMLNodeFromMarkdownNode(markdownNode) {
92
+ const node = markdownNode, ///
93
+ queries = markdownQueries, ///
94
+ nodes = nodesFromNodeAndQueries(node, queries),
95
+ outerNodes = nodes, ///
96
+ topmostNode = topmostNodeFromOuterNodes(HTMLClassFromMarkdownNode, outerNodes),
97
+ topmostHTMLNode = topmostNode; ///
98
+
99
+ return topmostHTMLNode;
100
+ }
101
+
102
+ export function topmostHTMLNodeFromMarkdownNodes(markdownNodes) {
103
+ const nodes = [],
104
+ queries = markdownQueries; ///
105
+
106
+ markdownNodes.forEach((markdownNode) => {
107
+ const node = markdownNode; ///
108
+
109
+ nodesFromNodeAndQueries(node, queries, nodes);
110
+ });
111
+
112
+ const outerNodes = nodes, ///
113
+ topmostNode = topmostNodeFromOuterNodes(HTMLClassFromMarkdownNode, outerNodes),
114
+ topmostHTMLNode = topmostNode; ///
115
+
116
+ return topmostHTMLNode;
117
+ }
118
+
119
+ export function topmostCSSNodeFromMarkdownStyleNode(markdownStyleNode) {
120
+ const node = markdownStyleNode, ///
121
+ queries = markdownStyleQueries, ///
122
+ nodes = nodesFromNodeAndQueries(node, queries),
123
+ outerNodes = nodes, ///
124
+ topmostNode = topmostNodeFromOuterNodes(CSSClassFromMarkdownStyleNode, outerNodes),
125
+ topmostCSSNode = topmostNode; ///
126
+
127
+ return topmostCSSNode;
128
+ }
129
+
130
+ export function topmostCSSNodeFromMarkdownStyleNodes(markdownStyleNodes) {
131
+ const nodes = [],
132
+ queries = markdownStyleQueries; ///
133
+
134
+ markdownStyleNodes.forEach((markdownStyleNode) => {
135
+ const node = markdownStyleNode; ///
136
+
137
+ nodesFromNodeAndQueries(node, queries, nodes);
138
+ });
139
+
140
+ const outerNodes = nodes, ///
141
+ topmostNode = topmostNodeFromOuterNodes(CSSClassFromMarkdownStyleNode, outerNodes),
142
+ topmostCSSNode = topmostNode; ///
143
+
144
+ return topmostCSSNode;
145
+ }
146
+
147
+ export function cssFromMarkdownStyleAndSelectorsString(markdownStyle, selectorsString) {
148
+ markdownStyle = `${selectorsString} {
149
+ ${markdownStyle}
150
+ }`;
151
+
152
+ const tokens = tokensFromMarkdownStyle(markdownStyle),
153
+ markdownStyleNode = markdownStyleNodeFromTokens(tokens),
154
+ topmostCSSNode = topmostCSSNodeFromMarkdownStyleNode(markdownStyleNode),
155
+ context = {
156
+ tokens
157
+ };
158
+
159
+ topmostCSSNode.resolve(context);
160
+
161
+ const css = topmostCSSNode.asCSS(context);
162
+
163
+ return css;
164
+ }
165
+
166
+ export default {
167
+ tokensFromMarkdown,
168
+ markdownNodeFromTokens,
169
+ tokensFromMarkdownStyle,
170
+ HTMLClassFromMarkdownNode,
171
+ markdownStyleNodeFromTokens,
172
+ CSSClassFromMarkdownStyleNode,
173
+ topmostHTMLNodeFromMarkdownNode,
174
+ topmostHTMLNodeFromMarkdownNodes,
175
+ topmostCSSNodeFromMarkdownStyleNode,
176
+ topmostCSSNodeFromMarkdownStyleNodes,
177
+ cssFromMarkdownStyleAndSelectorsString
178
+ };