highmark-occam 1.0.1

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 (123) hide show
  1. package/README.md +139 -0
  2. package/lib/blockListing.js +40 -0
  3. package/lib/constants.js +13 -0
  4. package/lib/div/container.js +44 -0
  5. package/lib/div/line.js +48 -0
  6. package/lib/div/lines.js +61 -0
  7. package/lib/div/syntax.js +50 -0
  8. package/lib/document/bnf.js +32 -0
  9. package/lib/document/furtle.js +37 -0
  10. package/lib/document/json.js +33 -0
  11. package/lib/document/markdown.js +45 -0
  12. package/lib/document/markdownStyle.js +39 -0
  13. package/lib/document/nominal.js +50 -0
  14. package/lib/document/plainText.js +28 -0
  15. package/lib/document.js +55 -0
  16. package/lib/documentTypes.js +54 -0
  17. package/lib/example/customGrammarsJSON/firstOrderLogic.js +28 -0
  18. package/lib/example/preamble.js +18 -0
  19. package/lib/example/view/div/column.js +24 -0
  20. package/lib/example/view/div/markdown.js +84 -0
  21. package/lib/example/view/div/sizeable.js +25 -0
  22. package/lib/example/view/heading.js +27 -0
  23. package/lib/example/view/input.js +28 -0
  24. package/lib/example/view/listing.js +26 -0
  25. package/lib/example/view/subHeading.js +29 -0
  26. package/lib/example/view/textarea/content.js +46 -0
  27. package/lib/example/view/textarea.js +30 -0
  28. package/lib/example/view.js +73 -0
  29. package/lib/example.js +23 -0
  30. package/lib/index.js +31 -0
  31. package/lib/line.js +42 -0
  32. package/lib/map/node/html.js +24 -0
  33. package/lib/node/html/listing/block.js +56 -0
  34. package/lib/overlay.js +65 -0
  35. package/lib/overlayTokenTypes.js +89 -0
  36. package/lib/prettyPrinter.js +55 -0
  37. package/lib/styles.js +22 -0
  38. package/lib/token/overlay/common/content.js +25 -0
  39. package/lib/token/overlay/common/error.js +25 -0
  40. package/lib/token/overlay/common/labelName.js +25 -0
  41. package/lib/token/overlay/common/nonsense.js +25 -0
  42. package/lib/token/overlay/common/procedureReferenceName.js +25 -0
  43. package/lib/token/overlay/common/referenceName.js +25 -0
  44. package/lib/token/overlay/common/stuff.js +25 -0
  45. package/lib/token/overlay/markdown/heading.js +25 -0
  46. package/lib/token/overlay/markdown/link.js +25 -0
  47. package/lib/token/overlay/markdown/listing.js +25 -0
  48. package/lib/token/overlay/markdown/path.js +25 -0
  49. package/lib/token/overlay/markdown/reference.js +25 -0
  50. package/lib/token/overlay/markdown/table.js +25 -0
  51. package/lib/token/overlay/markdownStyle/name.js +25 -0
  52. package/lib/token/overlay/markdownStyle/value.js +25 -0
  53. package/lib/token/overlay/nonTerminalNode.js +25 -0
  54. package/lib/token/overlay/terminalNode.js +25 -0
  55. package/lib/utilities/character.js +18 -0
  56. package/lib/utilities/customGrammars.js +48 -0
  57. package/lib/utilities/document.js +57 -0
  58. package/lib/utilities/grammar.js +51 -0
  59. package/lib/utilities/lines.js +32 -0
  60. package/lib/utilities/query.js +20 -0
  61. package/lib/utilities/tokens.js +19 -0
  62. package/license.txt +48 -0
  63. package/package.json +52 -0
  64. package/src/blockListing.js +39 -0
  65. package/src/constants.js +3 -0
  66. package/src/div/container.js +37 -0
  67. package/src/div/line.js +43 -0
  68. package/src/div/lines.js +68 -0
  69. package/src/div/syntax.js +45 -0
  70. package/src/document/bnf.js +27 -0
  71. package/src/document/furtle.js +32 -0
  72. package/src/document/json.js +28 -0
  73. package/src/document/markdown.js +40 -0
  74. package/src/document/markdownStyle.js +34 -0
  75. package/src/document/nominal.js +56 -0
  76. package/src/document/plainText.js +23 -0
  77. package/src/document.js +54 -0
  78. package/src/documentTypes.js +19 -0
  79. package/src/example/customGrammarsJSON/firstOrderLogic.js +18 -0
  80. package/src/example/preamble.js +13 -0
  81. package/src/example/view/div/column.js +11 -0
  82. package/src/example/view/div/markdown.js +99 -0
  83. package/src/example/view/div/sizeable.js +12 -0
  84. package/src/example/view/heading.js +14 -0
  85. package/src/example/view/input.js +15 -0
  86. package/src/example/view/listing.js +14 -0
  87. package/src/example/view/subHeading.js +16 -0
  88. package/src/example/view/textarea/content.js +43 -0
  89. package/src/example/view/textarea.js +17 -0
  90. package/src/example/view.js +93 -0
  91. package/src/example.js +28 -0
  92. package/src/index.js +5 -0
  93. package/src/line.js +47 -0
  94. package/src/map/node/html.js +13 -0
  95. package/src/node/html/listing/block.js +68 -0
  96. package/src/overlay.js +87 -0
  97. package/src/overlayTokenTypes.js +33 -0
  98. package/src/prettyPrinter.js +54 -0
  99. package/src/styles.js +4 -0
  100. package/src/token/overlay/common/content.js +11 -0
  101. package/src/token/overlay/common/error.js +11 -0
  102. package/src/token/overlay/common/labelName.js +11 -0
  103. package/src/token/overlay/common/nonsense.js +11 -0
  104. package/src/token/overlay/common/procedureReferenceName.js +11 -0
  105. package/src/token/overlay/common/referenceName.js +11 -0
  106. package/src/token/overlay/common/stuff.js +11 -0
  107. package/src/token/overlay/markdown/heading.js +11 -0
  108. package/src/token/overlay/markdown/link.js +11 -0
  109. package/src/token/overlay/markdown/listing.js +11 -0
  110. package/src/token/overlay/markdown/path.js +11 -0
  111. package/src/token/overlay/markdown/reference.js +11 -0
  112. package/src/token/overlay/markdown/table.js +11 -0
  113. package/src/token/overlay/markdownStyle/name.js +11 -0
  114. package/src/token/overlay/markdownStyle/value.js +11 -0
  115. package/src/token/overlay/nonTerminalNode.js +17 -0
  116. package/src/token/overlay/terminalNode.js +17 -0
  117. package/src/utilities/character.js +11 -0
  118. package/src/utilities/customGrammars.js +34 -0
  119. package/src/utilities/document.js +44 -0
  120. package/src/utilities/grammar.js +38 -0
  121. package/src/utilities/lines.js +31 -0
  122. package/src/utilities/query.js +13 -0
  123. package/src/utilities/tokens.js +12 -0
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style"; ///
4
+
5
+ import { Element } from "easy";
6
+ import { juliaMonoFontMixin, editorScheme, prettyPrinterScheme } from "occam-styles";
7
+
8
+ import LinesDiv from "./div/lines";
9
+
10
+ import { padding, fontSize } from "./styles";
11
+
12
+ const { borderColour } = editorScheme,
13
+ { backgroundColour } = prettyPrinterScheme;
14
+
15
+ class PrettyPrinter extends Element {
16
+ constructor(selector, document) {
17
+ super(selector);
18
+
19
+ this.document = document;
20
+ }
21
+
22
+ getDocument() {
23
+ return this.document;
24
+ }
25
+
26
+ childElements() {
27
+ return (
28
+
29
+ <LinesDiv document={this.document} />
30
+
31
+ );
32
+ }
33
+
34
+ static tagName = "div";
35
+
36
+ static defaultProperties = {
37
+ className: "pretty-printer"
38
+ };
39
+ }
40
+
41
+ export default withStyle(PrettyPrinter)`
42
+
43
+ width: 100%;
44
+ border: 1px solid ${borderColour};
45
+ padding: ${padding};
46
+ font-size: ${fontSize};
47
+ tab-size: 2;
48
+ overflow: hidden;
49
+ user-select: none;
50
+ background-color: ${backgroundColour};
51
+
52
+ ${juliaMonoFontMixin}
53
+
54
+ `;
package/src/styles.js ADDED
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export const padding = "1rem";
4
+ export const fontSize = "13px";
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { contentOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ContentOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = contentOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(ContentOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { errorOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ErrorOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = errorOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(ErrorOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import TerminalNodeOverlayToken from "../../../token/overlay/terminalNode";
4
+
5
+ import { labelNameOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class LabelNameOverlayToken extends TerminalNodeOverlayToken {
8
+ static type = labelNameOverlayTokenType;
9
+
10
+ static fromContentAndTerminalNode(content, terminalNode) { return TerminalNodeOverlayToken.fromContentAndTerminalNode(LabelNameOverlayToken, content, terminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { nonsenseOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class NonsenseOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = nonsenseOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(NonsenseOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import TerminalNodeOverlayToken from "../../../token/overlay/terminalNode";
4
+
5
+ import { procedureReferenceNameOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ProcedureReferenceNameOverlayToken extends TerminalNodeOverlayToken {
8
+ static type = procedureReferenceNameOverlayTokenType;
9
+
10
+ static fromContentAndTerminalNode(content, terminalNode) { return TerminalNodeOverlayToken.fromContentAndTerminalNode(ProcedureReferenceNameOverlayToken, content, terminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import TerminalNodeOverlayToken from "../../../token/overlay/terminalNode";
4
+
5
+ import { referenceNameOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ReferenceNameOverlayToken extends TerminalNodeOverlayToken {
8
+ static type = referenceNameOverlayTokenType;
9
+
10
+ static fromContentAndTerminalNode(content, terminalNode) { return TerminalNodeOverlayToken.fromContentAndTerminalNode(ReferenceNameOverlayToken, content, terminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { stuffOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class StuffOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = stuffOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(StuffOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { headingOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class HeadingOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = headingOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(HeadingOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { linkOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class LinkOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = linkOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(LinkOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { listingOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ListingOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = listingOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(ListingOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { pathOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class PathOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = pathOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(PathOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { referenceOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ReferenceOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = referenceOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(ReferenceOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { tableOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class TableOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = tableOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(TableOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { nameOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class NameOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = nameOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(NameOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNodeOverlayToken from "../../../token/overlay/nonTerminalNode";
4
+
5
+ import { valueOverlayTokenType } from "../../../overlayTokenTypes";
6
+
7
+ export default class ValueOverlayToken extends NonTerminalNodeOverlayToken {
8
+ static type = valueOverlayTokenType;
9
+
10
+ static fromContentAndNonTerminalNode(content, nonTerminalNode) { return NonTerminalNodeOverlayToken.fromContentAndNonTerminalNode(ValueOverlayToken, content, nonTerminalNode); }
11
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ import { SignificantToken } from "occam-lexers";
4
+
5
+ export default class NonTerminalNodeOverlayToken extends SignificantToken {
6
+ constructor(type, content, significant, nonTerminalNode) {
7
+ super(type, content, significant)
8
+
9
+ this.nonTerminalNode = nonTerminalNode;
10
+ }
11
+
12
+ getNonTerminalNode() {
13
+ return this.nonTerminalNode;
14
+ }
15
+
16
+ static fromContentAndNonTerminalNode(Class, content, nonTerminalNode) { return SignificantToken.fromContent(Class, content, nonTerminalNode); }
17
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ import { SignificantToken } from "occam-lexers";
4
+
5
+ export default class TerminalNodeOverlayToken extends SignificantToken {
6
+ constructor(type, content, significant, terminalNode) {
7
+ super(type, content, significant)
8
+
9
+ this.terminalNode = terminalNode;
10
+ }
11
+
12
+ getTerminalNode() {
13
+ return this.terminalNode;
14
+ }
15
+
16
+ static fromContentAndTerminalNode(Class, content, terminalNode) { return SignificantToken.fromContent(Class, content, terminalNode); }
17
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { styles } from "occam-styles";
4
+
5
+ const { juliaMonoLineHeight } = styles;
6
+
7
+ export function characterHeightFromFontSize(fontSize) {
8
+ const characterHeight = juliaMonoLineHeight * fontSize;
9
+
10
+ return characterHeight;
11
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ import { customGrammarUtilities } from "occam-custom-grammars";
4
+
5
+ const { combinedCustomGrammarFromJSON } = customGrammarUtilities;
6
+
7
+ let map = {};
8
+
9
+ export function registerCustomGrammarsMap(customGrammarsJSONMap) {
10
+ map = customGrammarsJSONMap; ///
11
+ }
12
+
13
+ export function registerCustomGrammarsJSON(releaseName, customGrammarsJSON) {
14
+ map[releaseName] = customGrammarsJSON;
15
+ }
16
+
17
+ export function combinedCustomGrammarFromReleaseName(releaseName) {
18
+ let combinedCustomGrammar = null;
19
+
20
+ const customGrammarsJSON = map[releaseName] || null;
21
+
22
+ if (customGrammarsJSON !== null) {
23
+ const json = customGrammarsJSON; ///
24
+
25
+ combinedCustomGrammar = combinedCustomGrammarFromJSON(json);
26
+ }
27
+
28
+ return combinedCustomGrammar;
29
+ }
30
+
31
+ export default {
32
+ registerCustomGrammarsMap,
33
+ registerCustomGrammarsJSON
34
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ import BNFDcoument from "../document/bnf";
4
+ import JSONDocument from "../document/json";
5
+ import FurtleDocument from "../document/furtle";
6
+ import NominalDocument from "../document/nominal";
7
+ import MarkdownDocument from "../document/markdown";
8
+ import PlainTextDocument from "../document/plainText";
9
+ import MarkdownStyleDocument from "../document/markdownStyle";
10
+
11
+ import { BNF_DOCUMENT_TYPE,
12
+ JSON_DOCUMENT_TYPE,
13
+ FURTLE_DOCUMENT_TYPE,
14
+ NOMINAL_DOCUMENT_TYPE,
15
+ MARKDOWN_DOCUMENT_TYPE,
16
+ PLAIN_TEXT_DOCUMENT_TYPE,
17
+ MARKDOWN_STYLE_DOCUMENT_TYPE } from "../documentTypes";
18
+
19
+ export function documentFromContentLanguageNameAndReleaseName(content, languageName, releaesName) {
20
+ let document;
21
+
22
+ const type = languageName; ///
23
+
24
+ if (type === NOMINAL_DOCUMENT_TYPE) {
25
+ const nominalDocument = NominalDocument.fromContentAndReleaseName(content, releaesName);
26
+
27
+ document = nominalDocument; ///
28
+ } else {
29
+ let Document;
30
+
31
+ switch (type) {
32
+ case BNF_DOCUMENT_TYPE: Document = BNFDcoument; break;
33
+ case JSON_DOCUMENT_TYPE: Document = JSONDocument; break;
34
+ case FURTLE_DOCUMENT_TYPE: Document = FurtleDocument; break;
35
+ case MARKDOWN_DOCUMENT_TYPE: Document = MarkdownDocument; break;
36
+ case PLAIN_TEXT_DOCUMENT_TYPE: Document = PlainTextDocument; break;
37
+ case MARKDOWN_STYLE_DOCUMENT_TYPE: Document = MarkdownStyleDocument; break;
38
+ }
39
+
40
+ document = Document.fromContent(content);
41
+ }
42
+
43
+ return document;
44
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import { HTMLNode, TopmostHTMLNode, grammarUtilities } from "highmark-markdown";
4
+
5
+ import htmlNodeMap from "../map/node/html";
6
+
7
+ const { tokensFromMarkdown,
8
+ documentMarkdownNodeFromTokens,
9
+ topmostHTMLNodeFromDocumentMarkdownNode: topmostHTMLNodeFromDocumentMarkdownNodeBase } = grammarUtilities;
10
+
11
+ export function HTMLClassFromMarkdownNode(markdownNode) {
12
+ let Class;
13
+
14
+ if (markdownNode === null) {
15
+ Class = TopmostHTMLNode; ///
16
+ } else {
17
+ const nonTerminalNode = markdownNode, ///
18
+ ruleName = nonTerminalNode.getRuleName();
19
+
20
+ Class = htmlNodeMap[ruleName] || HTMLNode;
21
+ }
22
+
23
+ return Class;
24
+ }
25
+
26
+ export function topmostHTMLNodeFromDocumentMarkdownNode(markdownNode) {
27
+ const ClassFromOuterNode = HTMLClassFromMarkdownNode, ///
28
+ topmostHTMLNode = topmostHTMLNodeFromDocumentMarkdownNodeBase(markdownNode, ClassFromOuterNode);
29
+
30
+ return topmostHTMLNode;
31
+ }
32
+
33
+ export default {
34
+ tokensFromMarkdown,
35
+ documentMarkdownNodeFromTokens,
36
+ HTMLClassFromMarkdownNode,
37
+ topmostHTMLNodeFromDocumentMarkdownNode
38
+ };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ import Line from "../line";
4
+
5
+ export function linesFromContent(content, lexer) {
6
+ const lines = [],
7
+ contentsAndEndOfLines = content.split(/(\r\n|\r|\n)/),
8
+ contentsAndEndOfLinesLength = contentsAndEndOfLines.length,
9
+ length = (contentsAndEndOfLinesLength + 1) / 2;
10
+
11
+ for (let index = 0; index < length; index++) {
12
+ const contentIndex = index * 2,
13
+ endOfLineIndex = contentIndex + 1,
14
+ endOfLine = contentsAndEndOfLines[endOfLineIndex] || null;
15
+
16
+ let content = contentsAndEndOfLines[contentIndex];
17
+
18
+ if (endOfLine !== null) {
19
+ content += endOfLine;
20
+ }
21
+
22
+ const line = Line.fromContent(content);
23
+
24
+ line.tokenise(lexer);
25
+
26
+ lines.push(line);
27
+ }
28
+
29
+ return lines;
30
+ }
31
+
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import { Query } from "occam-query";
4
+
5
+ export function queriesFromExpressionStrings(expressionStrings) {
6
+ const queries = expressionStrings.map((expressionString) => {
7
+ const query = Query.fromExpressionString(expressionString);
8
+
9
+ return query;
10
+ });
11
+
12
+ return queries;
13
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ export function tokensFromLines(lines) {
4
+ const tokens = [];
5
+
6
+ lines.forEach((line) => {
7
+ line.getTokens(tokens);
8
+ });
9
+
10
+ return tokens;
11
+ }
12
+