highmark-markdown 0.0.206 → 0.0.209

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 (66) hide show
  1. package/example.js +9414 -7797
  2. package/lib/constants.js +13 -1
  3. package/lib/defaultMarkdownStyle.js +14 -0
  4. package/lib/example/constants.js +5 -1
  5. package/lib/example/view/div/preview.js +5 -3
  6. package/lib/example/view/div/sizeable/left.js +2 -2
  7. package/lib/example/view/textarea/{bnf.js → css.js} +17 -17
  8. package/lib/example/view/textarea/{lexicalEntries.js → markdownStyle.js} +25 -19
  9. package/lib/example/view/xmp.js +2 -2
  10. package/lib/example/view.js +30 -21
  11. package/lib/example.js +9 -2
  12. package/lib/index.js +25 -1
  13. package/lib/markdownStyle/bnf.js +14 -0
  14. package/lib/markdownStyle/entries.js +50 -0
  15. package/lib/markdownStyle/lexer.js +162 -0
  16. package/lib/{example/view/div/sizeable/right.js → markdownStyle/parser.js} +46 -34
  17. package/lib/style/declaration.js +72 -0
  18. package/lib/style/declarations.js +89 -0
  19. package/lib/style/division.js +83 -0
  20. package/lib/style/ruleSet.js +85 -0
  21. package/lib/style/ruleSets.js +89 -0
  22. package/lib/style/selector.js +131 -0
  23. package/lib/style/selectors.js +134 -0
  24. package/lib/style/selectorsList.js +128 -0
  25. package/lib/styleElement/markdown/default.js +163 -0
  26. package/lib/styleElement/markdown.js +195 -0
  27. package/lib/styleElement.js +100 -0
  28. package/lib/utilities/content.js +29 -4
  29. package/lib/utilities/css.js +51 -0
  30. package/lib/utilities/entries.js +24 -0
  31. package/lib/utilities/query.js +27 -1
  32. package/package.json +1 -1
  33. package/src/constants.js +3 -0
  34. package/src/defaultMarkdownStyle.js +143 -0
  35. package/src/example/constants.js +1 -0
  36. package/src/example/view/div/preview.js +5 -2
  37. package/src/example/view/div/sizeable/left.js +1 -1
  38. package/src/example/view/textarea/{bnf.js → css.js} +10 -10
  39. package/src/example/view/textarea/markdownStyle.js +41 -0
  40. package/src/example/view/xmp.js +0 -3
  41. package/src/example/view.js +52 -48
  42. package/src/example.js +10 -1
  43. package/src/index.js +6 -0
  44. package/src/markdownStyle/bnf.js +81 -0
  45. package/src/markdownStyle/entries.js +39 -0
  46. package/src/markdownStyle/lexer.js +43 -0
  47. package/src/markdownStyle/parser.js +15 -0
  48. package/src/style/declaration.js +42 -0
  49. package/src/style/declarations.js +64 -0
  50. package/src/style/division.js +46 -0
  51. package/src/style/ruleSet.js +48 -0
  52. package/src/style/ruleSets.js +57 -0
  53. package/src/style/selector.js +126 -0
  54. package/src/style/selectors.js +121 -0
  55. package/src/style/selectorsList.js +95 -0
  56. package/src/styleElement/markdown/default.js +28 -0
  57. package/src/styleElement/markdown.js +48 -0
  58. package/src/styleElement.js +49 -0
  59. package/src/utilities/content.js +27 -0
  60. package/src/utilities/css.js +41 -0
  61. package/src/utilities/entries.js +23 -0
  62. package/src/utilities/query.js +29 -0
  63. package/lib/example/view/textarea/parseTree.js +0 -183
  64. package/src/example/view/div/sizeable/right.js +0 -19
  65. package/src/example/view/textarea/lexicalEntries.js +0 -36
  66. package/src/example/view/textarea/parseTree.js +0 -50
@@ -24,6 +24,12 @@ _export(exports, {
24
24
  linkMarkdownNodesFromNode: function() {
25
25
  return linkMarkdownNodesFromNode;
26
26
  },
27
+ nodeQuery: function() {
28
+ return nodeQuery;
29
+ },
30
+ nodesQuery: function() {
31
+ return nodesQuery;
32
+ },
27
33
  referenceMarkdownNodesFromNode: function() {
28
34
  return referenceMarkdownNodesFromNode;
29
35
  }
@@ -32,6 +38,26 @@ var _occamquery = require("occam-query");
32
38
  var _necessary = require("necessary");
33
39
  var first = _necessary.arrayUtilities.first, push = _necessary.arrayUtilities.push;
34
40
  var linkMarkdownNodesQuery = _occamquery.Query.fromExpression("//link"), contentMarkdownNodeQuery = _occamquery.Query.fromExpression("//contents"), headingMarkdownNodesQuery = _occamquery.Query.fromExpression("//primaryHeading|secondaryHeading|tertiaryHeading|quaternaryHeading"), footnoteMarkdownNodesQuery = _occamquery.Query.fromExpression("//footnote"), referenceMarkdownNodesQuery = _occamquery.Query.fromExpression("//reference");
41
+ function nodeQuery(expression) {
42
+ var query = _occamquery.Query.fromExpression(expression);
43
+ return function(node) {
44
+ var nodes = query.execute(node), nodesLength = nodes.length;
45
+ if (nodesLength > 0) {
46
+ var firstNode = first(nodes);
47
+ node = firstNode; ///
48
+ } else {
49
+ node = null;
50
+ }
51
+ return node;
52
+ };
53
+ }
54
+ function nodesQuery(expression) {
55
+ var query = _occamquery.Query.fromExpression(expression);
56
+ return function(node) {
57
+ var nodes = query.execute(node);
58
+ return nodes;
59
+ };
60
+ }
35
61
  function linkMarkdownNodesFromNode(node) {
36
62
  var linkMarkdownNodes = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
37
63
  nodesFromNodeAndQuery(node, linkMarkdownNodesQuery, linkMarkdownNodes);
@@ -79,4 +105,4 @@ function nodesFromNodeAndQuery(node, query, nodes) {
79
105
  return nodes;
80
106
  }
81
107
 
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCwgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGxpbmtNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihgLy9saW5rYCksXG4gICAgICBjb250ZW50TWFya2Rvd25Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihgLy9jb250ZW50c2ApLFxuICAgICAgaGVhZGluZ01hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKGAvL3ByaW1hcnlIZWFkaW5nfHNlY29uZGFyeUhlYWRpbmd8dGVydGlhcnlIZWFkaW5nfHF1YXRlcm5hcnlIZWFkaW5nYCksXG4gICAgICBmb290bm90ZU1hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKGAvL2Zvb3Rub3RlYCksXG4gICAgICByZWZlcmVuY2VNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihgLy9yZWZlcmVuY2VgKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtNYXJrZG93bk5vZGVzRnJvbU5vZGUobm9kZSwgbGlua01hcmtkb3duTm9kZXMgPSBbXSkge1xuICBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgbGlua01hcmtkb3duTm9kZXNRdWVyeSwgbGlua01hcmtkb3duTm9kZXMpO1xuXG4gIHJldHVybiBsaW5rTWFya2Rvd25Ob2Rlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRlbnRzTWFya2Rvd25Ob2RlRnJvbU5vZGUobm9kZSkge1xuICBjb25zdCBjb250ZW50c01hcmtkb3duTm9kZSA9IG5vZGVGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGNvbnRlbnRNYXJrZG93bk5vZGVRdWVyeSk7XG5cbiAgcmV0dXJuIGNvbnRlbnRzTWFya2Rvd25Ob2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGVhZGluZ01hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBoZWFkaW5nTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBoZWFkaW5nTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBoZWFkaW5nTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGhlYWRpbmdNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9vdG5vdGVNYXJrZG93bk5vZGVzRnJvbU5vZGUobm9kZSwgZm9vdG5vdGVNYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGZvb3Rub3RlTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBmb290bm90ZU1hcmtkb3duTm9kZXMpO1xuXG4gIHJldHVybiBmb290bm90ZU1hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VNYXJrZG93bk5vZGVzRnJvbU5vZGUobm9kZSwgcmVmZXJlbmNlTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCByZWZlcmVuY2VNYXJrZG93bk5vZGVzUXVlcnksIHJlZmVyZW5jZU1hcmtkb3duTm9kZXMpO1xuXG4gIHJldHVybiByZWZlcmVuY2VNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGxpbmtNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIGNvbnRlbnRzTWFya2Rvd25Ob2RlRnJvbU5vZGUsXG4gIGhlYWRpbmdNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIGZvb3Rub3RlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlLFxuICByZWZlcmVuY2VNYXJrZG93bk5vZGVzRnJvbU5vZGVcbn07XG5cbmZ1bmN0aW9uIG5vZGVGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIHF1ZXJ5KSB7XG4gIGNvbnN0IHF1ZXJ5Tm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpLFxuICAgICAgICBxdWVyeU5vZGVzTGVuZ3RoID0gcXVlcnlOb2Rlcy5sZW5ndGg7XG5cbiAgaWYgKHF1ZXJ5Tm9kZXNMZW5ndGggPT09IDApIHtcbiAgICBub2RlID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmaXJzdFF1ZXJ5Tm9kZSA9IGZpcnN0KHF1ZXJ5Tm9kZXMpO1xuXG4gICAgbm9kZSA9IGZpcnN0UXVlcnlOb2RlOyAgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZTtcbn1cblxuZnVuY3Rpb24gbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIHF1ZXJ5LCBub2Rlcykge1xuICBjb25zdCBxdWVyeU5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcblxuICBwdXNoKG5vZGVzLCBxdWVyeU5vZGVzKTtcblxuICByZXR1cm4gbm9kZXM7XG59XG4iXSwibmFtZXMiOlsiY29udGVudHNNYXJrZG93bk5vZGVGcm9tTm9kZSIsImZvb3Rub3RlTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwiaGVhZGluZ01hcmtkb3duTm9kZXNGcm9tTm9kZSIsImxpbmtNYXJrZG93bk5vZGVzRnJvbU5vZGUiLCJyZWZlcmVuY2VNYXJrZG93bk5vZGVzRnJvbU5vZGUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwicHVzaCIsImxpbmtNYXJrZG93bk5vZGVzUXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uIiwiY29udGVudE1hcmtkb3duTm9kZVF1ZXJ5IiwiaGVhZGluZ01hcmtkb3duTm9kZXNRdWVyeSIsImZvb3Rub3RlTWFya2Rvd25Ob2Rlc1F1ZXJ5IiwicmVmZXJlbmNlTWFya2Rvd25Ob2Rlc1F1ZXJ5Iiwibm9kZSIsImxpbmtNYXJrZG93bk5vZGVzIiwibm9kZXNGcm9tTm9kZUFuZFF1ZXJ5IiwiY29udGVudHNNYXJrZG93bk5vZGUiLCJub2RlRnJvbU5vZGVBbmRRdWVyeSIsImhlYWRpbmdNYXJrZG93bk5vZGVzIiwiZm9vdG5vdGVNYXJrZG93bk5vZGVzIiwicmVmZXJlbmNlTWFya2Rvd25Ob2RlcyIsInF1ZXJ5IiwicXVlcnlOb2RlcyIsImV4ZWN1dGUiLCJxdWVyeU5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RRdWVyeU5vZGUiLCJub2RlcyJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFtQmdCQSw0QkFBNEI7ZUFBNUJBOztJQXdCaEIsT0FNRTtlQU5GOztJQVpnQkMsNkJBQTZCO2VBQTdCQTs7SUFOQUMsNEJBQTRCO2VBQTVCQTs7SUFaQUMseUJBQXlCO2VBQXpCQTs7SUF3QkFDLDhCQUE4QjtlQUE5QkE7OzswQkFuQ007eUJBQ1M7QUFFL0IsSUFBUUMsUUFBZ0JDLHlCQUFjLENBQTlCRCxPQUFPRSxPQUFTRCx5QkFBYyxDQUF2QkM7QUFFZixJQUFNQyx5QkFBeUJDLGlCQUFLLENBQUNDLGNBQWMsQ0FBRSxXQUMvQ0MsMkJBQTJCRixpQkFBSyxDQUFDQyxjQUFjLENBQUUsZUFDakRFLDRCQUE0QkgsaUJBQUssQ0FBQ0MsY0FBYyxDQUFFLHdFQUNsREcsNkJBQTZCSixpQkFBSyxDQUFDQyxjQUFjLENBQUUsZUFDbkRJLDhCQUE4QkwsaUJBQUssQ0FBQ0MsY0FBYyxDQUFFO0FBRW5ELFNBQVNQLDBCQUEwQlksSUFBSTtRQUFFQyxvQkFBQUEsaUVBQW9CLEVBQUU7SUFDcEVDLHNCQUFzQkYsTUFBTVAsd0JBQXdCUTtJQUVwRCxPQUFPQTtBQUNUO0FBRU8sU0FBU2hCLDZCQUE2QmUsSUFBSTtJQUMvQyxJQUFNRyx1QkFBdUJDLHFCQUFxQkosTUFBTUo7SUFFeEQsT0FBT087QUFDVDtBQUVPLFNBQVNoQiw2QkFBNkJhLElBQUk7UUFBRUssdUJBQUFBLGlFQUF1QixFQUFFO0lBQzFFSCxzQkFBc0JGLE1BQU1ILDJCQUEyQlE7SUFFdkQsT0FBT0E7QUFDVDtBQUVPLFNBQVNuQiw4QkFBOEJjLElBQUk7UUFBRU0sd0JBQUFBLGlFQUF3QixFQUFFO0lBQzVFSixzQkFBc0JGLE1BQU1GLDRCQUE0QlE7SUFFeEQsT0FBT0E7QUFDVDtBQUVPLFNBQVNqQiwrQkFBK0JXLElBQUk7UUFBRU8seUJBQUFBLGlFQUF5QixFQUFFO0lBQzlFTCxzQkFBc0JGLE1BQU1ELDZCQUE2QlE7SUFFekQsT0FBT0E7QUFDVDtJQUVBLFdBQWU7SUFDYm5CLDJCQUFBQTtJQUNBSCw4QkFBQUE7SUFDQUUsOEJBQUFBO0lBQ0FELCtCQUFBQTtJQUNBRyxnQ0FBQUE7QUFDRjtBQUVBLFNBQVNlLHFCQUFxQkosSUFBSSxFQUFFUSxLQUFLO0lBQ3ZDLElBQU1DLGFBQWFELE1BQU1FLE9BQU8sQ0FBQ1YsT0FDM0JXLG1CQUFtQkYsV0FBV0csTUFBTTtJQUUxQyxJQUFJRCxxQkFBcUIsR0FBRztRQUMxQlgsT0FBTztJQUNULE9BQU87UUFDTCxJQUFNYSxpQkFBaUJ2QixNQUFNbUI7UUFFN0JULE9BQU9hLGdCQUFpQixHQUFHO0lBQzdCO0lBRUEsT0FBT2I7QUFDVDtBQUVBLFNBQVNFLHNCQUFzQkYsSUFBSSxFQUFFUSxLQUFLLEVBQUVNLEtBQUs7SUFDL0MsSUFBTUwsYUFBYUQsTUFBTUUsT0FBTyxDQUFDVjtJQUVqQ1IsS0FBS3NCLE9BQU9MO0lBRVosT0FBT0s7QUFDVCJ9
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvcXVlcnkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIm9jY2FtLXF1ZXJ5XCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuY29uc3QgeyBmaXJzdCwgcHVzaCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IGxpbmtNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihgLy9saW5rYCksXG4gICAgICBjb250ZW50TWFya2Rvd25Ob2RlUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihgLy9jb250ZW50c2ApLFxuICAgICAgaGVhZGluZ01hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKGAvL3ByaW1hcnlIZWFkaW5nfHNlY29uZGFyeUhlYWRpbmd8dGVydGlhcnlIZWFkaW5nfHF1YXRlcm5hcnlIZWFkaW5nYCksXG4gICAgICBmb290bm90ZU1hcmtkb3duTm9kZXNRdWVyeSA9IFF1ZXJ5LmZyb21FeHByZXNzaW9uKGAvL2Zvb3Rub3RlYCksXG4gICAgICByZWZlcmVuY2VNYXJrZG93bk5vZGVzUXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihgLy9yZWZlcmVuY2VgKTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vZGVRdWVyeShleHByZXNzaW9uKSB7XG4gIGNvbnN0IHF1ZXJ5ID0gUXVlcnkuZnJvbUV4cHJlc3Npb24oZXhwcmVzc2lvbik7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKG5vZGUpIHtcbiAgICBjb25zdCBub2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSksXG4gICAgICBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aDtcblxuICAgIGlmIChub2Rlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0Tm9kZSA9IGZpcnN0KG5vZGVzKTtcblxuICAgICAgbm9kZSA9IGZpcnN0Tm9kZTsgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUgPSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBub2RlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub2Rlc1F1ZXJ5KGV4cHJlc3Npb24pIHtcbiAgY29uc3QgcXVlcnkgPSBRdWVyeS5mcm9tRXhwcmVzc2lvbihleHByZXNzaW9uKTtcblxuICByZXR1cm4gZnVuY3Rpb24obm9kZSkge1xuICAgIGNvbnN0IG5vZGVzID0gcXVlcnkuZXhlY3V0ZShub2RlKTtcblxuICAgIHJldHVybiBub2RlcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlua01hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBsaW5rTWFya2Rvd25Ob2RlcyA9IFtdKSB7XG4gIG5vZGVzRnJvbU5vZGVBbmRRdWVyeShub2RlLCBsaW5rTWFya2Rvd25Ob2Rlc1F1ZXJ5LCBsaW5rTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGxpbmtNYXJrZG93bk5vZGVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGVudHNNYXJrZG93bk5vZGVGcm9tTm9kZShub2RlKSB7XG4gIGNvbnN0IGNvbnRlbnRzTWFya2Rvd25Ob2RlID0gbm9kZUZyb21Ob2RlQW5kUXVlcnkobm9kZSwgY29udGVudE1hcmtkb3duTm9kZVF1ZXJ5KTtcblxuICByZXR1cm4gY29udGVudHNNYXJrZG93bk5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZWFkaW5nTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlKG5vZGUsIGhlYWRpbmdNYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIGhlYWRpbmdNYXJrZG93bk5vZGVzUXVlcnksIGhlYWRpbmdNYXJrZG93bk5vZGVzKTtcblxuICByZXR1cm4gaGVhZGluZ01hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb290bm90ZU1hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCBmb290bm90ZU1hcmtkb3duTm9kZXMgPSBbXSkge1xuICBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgZm9vdG5vdGVNYXJrZG93bk5vZGVzUXVlcnksIGZvb3Rub3RlTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIGZvb3Rub3RlTWFya2Rvd25Ob2Rlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZmVyZW5jZU1hcmtkb3duTm9kZXNGcm9tTm9kZShub2RlLCByZWZlcmVuY2VNYXJrZG93bk5vZGVzID0gW10pIHtcbiAgbm9kZXNGcm9tTm9kZUFuZFF1ZXJ5KG5vZGUsIHJlZmVyZW5jZU1hcmtkb3duTm9kZXNRdWVyeSwgcmVmZXJlbmNlTWFya2Rvd25Ob2Rlcyk7XG5cbiAgcmV0dXJuIHJlZmVyZW5jZU1hcmtkb3duTm9kZXM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbGlua01hcmtkb3duTm9kZXNGcm9tTm9kZSxcbiAgY29udGVudHNNYXJrZG93bk5vZGVGcm9tTm9kZSxcbiAgaGVhZGluZ01hcmtkb3duTm9kZXNGcm9tTm9kZSxcbiAgZm9vdG5vdGVNYXJrZG93bk5vZGVzRnJvbU5vZGUsXG4gIHJlZmVyZW5jZU1hcmtkb3duTm9kZXNGcm9tTm9kZVxufTtcblxuZnVuY3Rpb24gbm9kZUZyb21Ob2RlQW5kUXVlcnkobm9kZSwgcXVlcnkpIHtcbiAgY29uc3QgcXVlcnlOb2RlcyA9IHF1ZXJ5LmV4ZWN1dGUobm9kZSksXG4gICAgICAgIHF1ZXJ5Tm9kZXNMZW5ndGggPSBxdWVyeU5vZGVzLmxlbmd0aDtcblxuICBpZiAocXVlcnlOb2Rlc0xlbmd0aCA9PT0gMCkge1xuICAgIG5vZGUgPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGZpcnN0UXVlcnlOb2RlID0gZmlyc3QocXVlcnlOb2Rlcyk7XG5cbiAgICBub2RlID0gZmlyc3RRdWVyeU5vZGU7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBub2RlO1xufVxuXG5mdW5jdGlvbiBub2Rlc0Zyb21Ob2RlQW5kUXVlcnkobm9kZSwgcXVlcnksIG5vZGVzKSB7XG4gIGNvbnN0IHF1ZXJ5Tm9kZXMgPSBxdWVyeS5leGVjdXRlKG5vZGUpO1xuXG4gIHB1c2gobm9kZXMsIHF1ZXJ5Tm9kZXMpO1xuXG4gIHJldHVybiBub2Rlcztcbn1cbiJdLCJuYW1lcyI6WyJjb250ZW50c01hcmtkb3duTm9kZUZyb21Ob2RlIiwiZm9vdG5vdGVNYXJrZG93bk5vZGVzRnJvbU5vZGUiLCJoZWFkaW5nTWFya2Rvd25Ob2Rlc0Zyb21Ob2RlIiwibGlua01hcmtkb3duTm9kZXNGcm9tTm9kZSIsIm5vZGVRdWVyeSIsIm5vZGVzUXVlcnkiLCJyZWZlcmVuY2VNYXJrZG93bk5vZGVzRnJvbU5vZGUiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwicHVzaCIsImxpbmtNYXJrZG93bk5vZGVzUXVlcnkiLCJRdWVyeSIsImZyb21FeHByZXNzaW9uIiwiY29udGVudE1hcmtkb3duTm9kZVF1ZXJ5IiwiaGVhZGluZ01hcmtkb3duTm9kZXNRdWVyeSIsImZvb3Rub3RlTWFya2Rvd25Ob2Rlc1F1ZXJ5IiwicmVmZXJlbmNlTWFya2Rvd25Ob2Rlc1F1ZXJ5IiwiZXhwcmVzc2lvbiIsInF1ZXJ5Iiwibm9kZSIsIm5vZGVzIiwiZXhlY3V0ZSIsIm5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3ROb2RlIiwibGlua01hcmtkb3duTm9kZXMiLCJub2Rlc0Zyb21Ob2RlQW5kUXVlcnkiLCJjb250ZW50c01hcmtkb3duTm9kZSIsIm5vZGVGcm9tTm9kZUFuZFF1ZXJ5IiwiaGVhZGluZ01hcmtkb3duTm9kZXMiLCJmb290bm90ZU1hcmtkb3duTm9kZXMiLCJyZWZlcmVuY2VNYXJrZG93bk5vZGVzIiwicXVlcnlOb2RlcyIsInF1ZXJ5Tm9kZXNMZW5ndGgiLCJmaXJzdFF1ZXJ5Tm9kZSJdLCJyYW5nZU1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "highmark-markdown",
3
3
  "author": "James Smith",
4
- "version": "0.0.206",
4
+ "version": "0.0.209",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/highmark-markdown",
7
7
  "description": "Highmark's Markdown.",
package/src/constants.js CHANGED
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ export const HEAD = "head";
4
+ export const STYLE = "style";
5
+ export const COLOUR = "color"; ///
3
6
  export const HYPHEN = "-";
4
7
  export const EMPTY_STRING = "";
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ const defaultMarkdownStyle = `
4
+ colour: black;
5
+ padding: 12pt;
6
+ min-height: 100%;
7
+ font-family: "Computer Modern Serif";
8
+ background-colour: white;
9
+
10
+ primaryHeading {
11
+ font-size: 32pt;
12
+ margin: 12pt 0 12pt 0;
13
+ }
14
+
15
+ secondaryHeading {
16
+ font-size: 24pt;
17
+ margin: 12pt 0 12pt 0;
18
+ }
19
+
20
+ tertiaryHeading {
21
+ font-size: 16pt;
22
+ margin: 12pt 0 12pt 0;
23
+ }
24
+
25
+ table,
26
+ paragraph,
27
+ orderedList,
28
+ unorderedList,
29
+ blockListing,
30
+ quaternaryHeading {
31
+ font-size: 12pt;
32
+ line-height: 15pt;
33
+ margin: 12pt 0 12pt 0;
34
+ }
35
+
36
+ orderedListItem,
37
+ unorderedListItem {
38
+ margin: 6pt 0 6pt 0;z
39
+ margin-left: 12pt;
40
+ }
41
+
42
+ table,
43
+ paragraph,
44
+ orderedList,
45
+ unorderedList,
46
+ orderedListItem,
47
+ unorderedListItem,
48
+ blockListing,
49
+ primaryHeading,
50
+ secondaryHeading,
51
+ tertiaryHeading,
52
+ quaternaryHeading {
53
+ :first-child {
54
+ margin-top: 0;
55
+ }
56
+
57
+ :last-child {
58
+ margin-bottom: 0;
59
+ }
60
+ }
61
+
62
+ primaryHeading,
63
+ secondaryHeading,
64
+ tertiaryHeading,
65
+ quaternaryHeading {
66
+ font-weight: bold;
67
+ }
68
+
69
+ blockListing,
70
+ inlineListing {
71
+ colour: white;
72
+ background-colour: black;
73
+ font-family: "Computer Modern Typewriter";
74
+ }
75
+
76
+ blockListing {
77
+ padding: 6pt;
78
+ overflow-x: scroll;
79
+ }
80
+
81
+ inlineListing {
82
+ display: inline-block;
83
+ padding: 0 3pt 0 3pt;
84
+ font-size: 12pt;
85
+ line-height: 15pt;
86
+ }
87
+
88
+ table {
89
+ border-collapsed: collapse;
90
+ }
91
+
92
+ tableHead {
93
+ border: 1pt solid black;
94
+ }
95
+
96
+ tableBodyCell,
97
+ tableHeadCell {
98
+ padding: 12pt;
99
+ }
100
+
101
+ strongText {
102
+ font-weight: bold;
103
+ }
104
+
105
+ emphasisedText {
106
+ font-style: italic;
107
+ }
108
+
109
+ stronglyEmphasisedText {
110
+ font-style: italic;
111
+ font-weight: bold;
112
+ }
113
+
114
+ footnotesList {
115
+ border-top: 1pt solid black;
116
+ padding-top: 12pt;
117
+ }
118
+
119
+ footnoteItem {
120
+ font-size: 9pt;
121
+ line-height: 12pt;
122
+ margin-left: 12pt;
123
+
124
+ paragraph {
125
+ margin: 0;
126
+ font-size: 9pt;
127
+ line-height: 12pt;
128
+ }
129
+ }
130
+
131
+ link {
132
+ font-size: 9pt;
133
+ line-height: 12pt;
134
+ margin-left: 3pt;
135
+ vertical-align: super;
136
+ }
137
+
138
+ error {
139
+ text-decoration: underline red;
140
+ }
141
+ `;
142
+
143
+ export default defaultMarkdownStyle;
@@ -2,3 +2,4 @@
2
2
 
3
3
  export const EMPTY_STRING = "";
4
4
  export const DOUBLE_SPACE = " ";
5
+ export const PREVIEW_DIV_SELECTORS_STRING = "div.preview";
@@ -15,9 +15,12 @@ class PreviewDiv extends Element {
15
15
  }
16
16
 
17
17
  clear() {
18
- const html = EMPTY_STRING;
18
+ const parentDOMElement = this.getParentDOMElement(),
19
+ innerHTML = EMPTY_STRING; ///
19
20
 
20
- this.html(html);
21
+ Object.assign(parentDOMElement, {
22
+ innerHTML
23
+ });
21
24
  }
22
25
 
23
26
  update(domElement) {
@@ -12,7 +12,7 @@ class LeftSizeableDiv extends SizeableDiv {
12
12
 
13
13
  export default withStyle(LeftSizeableDiv)`
14
14
 
15
- width: 96rem;
15
+ width: 48rem;
16
16
  min-width: 12rem;
17
17
  flex-direction: column;
18
18
 
@@ -4,30 +4,30 @@ import withStyle from "easy-with-style"; ///
4
4
 
5
5
  import Textarea from "../textarea";
6
6
 
7
- class BNFTextarea extends Textarea {
8
- setBNF(bnf) {
9
- const value = bnf;
7
+ class CSSTreeTextarea extends Textarea {
8
+ setCSS(css) {
9
+ const value = css; ///
10
10
 
11
11
  this.setValue(value);
12
12
  }
13
13
 
14
14
  parentContext() {
15
- const setBNF = this.setBNF.bind(this);
15
+ const setCSS = this.setCSS.bind(this);
16
16
 
17
17
  return ({
18
- setBNF
18
+ setCSS
19
19
  });
20
20
  }
21
21
 
22
22
  static defaultProperties = {
23
23
  readOnly: true,
24
- className: "bnf",
24
+ className: "css",
25
25
  spellCheck: "false"
26
26
  };
27
27
  }
28
28
 
29
- export default withStyle(BNFTextarea)`
29
+ export default withStyle(CSSTreeTextarea)`
30
30
 
31
- height: 16rem;
32
-
33
- `;
31
+ height: 24rem;
32
+
33
+ `;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ import withStyle from "easy-with-style";
4
+
5
+ import Textarea from "../textarea";
6
+
7
+ class MarkdownStyleTextarea extends Textarea {
8
+ getMarkdownStyle() {
9
+ const value = this.getValue(),
10
+ markdownStyle = value; ///
11
+
12
+ return markdownStyle;
13
+ }
14
+
15
+ setMarkdownStyle(markdownStyle) {
16
+ const value = markdownStyle; ///
17
+
18
+ this.setValue(value);
19
+ }
20
+
21
+ parentContext() {
22
+ const getMarkdownStyle = this.getMarkdownStyle.bind(this),
23
+ setMarkdownStyle = this.setMarkdownStyle.bind(this);
24
+
25
+ return ({
26
+ getMarkdownStyle,
27
+ setMarkdownStyle
28
+ });
29
+ }
30
+
31
+ static defaultProperties = {
32
+ className: "markdown-style",
33
+ spellCheck: "false"
34
+ };
35
+ }
36
+
37
+ export default withStyle(MarkdownStyleTextarea)`
38
+
39
+ height: 24rem;
40
+
41
+ `;
@@ -28,12 +28,9 @@ class XMP extends Element {
28
28
 
29
29
  export default withStyle(XMP)`
30
30
 
31
- width: 100%;
32
- height: 100%;
33
31
  border: 1px solid darkgrey;
34
32
  padding: 0.25rem;
35
33
  overflow: scroll;
36
- position: absolute;
37
34
  font-size: 1.2rem;
38
35
  line-height: 1.5rem;
39
36
  font-family: monospace;
@@ -3,22 +3,16 @@
3
3
  import withStyle from "easy-with-style"; ///
4
4
 
5
5
  import { Element } from "easy";
6
- import { RowDiv, RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv, HorizontalSplitterDiv } from "easy-layout";
6
+ import { MarkdownLexer, MarkdownParser } from "../index";
7
+ import { RowDiv, RowsDiv, ColumnDiv, ColumnsDiv, VerticalSplitterDiv } from "easy-layout";
7
8
 
8
9
  import XMP from "./view/xmp";
9
10
  import PreviewDiv from "./view/div/preview";
10
11
  import SubHeading from "./view/subHeading";
11
- import BNFTextarea from "./view/textarea/bnf";
12
+ import CSSTextarea from "./view/textarea/css";
12
13
  import LeftSizeableDiv from "./view/div/sizeable/left";
13
- import RightSizeableDiv from "./view/div/sizeable/right";
14
14
  import MarkdownTextarea from "./view/textarea/markdown";
15
- import ParseTreeTextarea from "./view/textarea/parseTree";
16
- import LexicalEntriesTextarea from "./view/textarea/lexicalEntries";
17
-
18
- import { MarkdownLexer, MarkdownParser } from "../index";
19
-
20
- const { bnf } = MarkdownParser,
21
- { entries } = MarkdownLexer;
15
+ import MarkdownStyleTextarea from "./view/textarea/markdownStyle";
22
16
 
23
17
  const markdownLexer = MarkdownLexer.fromNothing(),
24
18
  markdownParser = MarkdownParser.fromNothing();
@@ -28,16 +22,22 @@ class View extends Element {
28
22
  this.update();
29
23
  }
30
24
 
31
- update() {
25
+ updateMarkdownStyle() {
26
+ const { markdownStyleElement } = this.properties,
27
+ markdownStyle = this.getMarkdownStyle(),
28
+ css = markdownStyleElement.update(markdownStyle);
29
+
30
+ this.setCSS(css);
31
+ }
32
+
33
+ updateMarkdown() {
32
34
  const markdown = this.getMarkdown(),
33
- lexer = markdownLexer, ///
34
- parser = markdownParser, ///
35
35
  content = markdown, ///
36
+ lexer = markdownLexer,
37
+ parser = markdownParser,
36
38
  tokens = lexer.tokenise(content),
37
39
  node = parser.parse(tokens);
38
40
 
39
- let parseTree = null;
40
-
41
41
  if (node !== null) {
42
42
  const divisionMarkdownNode = node, ///
43
43
  parentNode = null,
@@ -58,15 +58,16 @@ class View extends Element {
58
58
  this.xmpHTML(html);
59
59
 
60
60
  this.updatePreviewDiv(domElement);
61
-
62
- parseTree = node.asParseTree(tokens);
63
61
  } else {
64
62
  this.clearXMP();
65
63
 
66
64
  this.clearPreviewDiv();
67
65
  }
66
+ }
68
67
 
69
- this.setParseTree(parseTree);
68
+ update() {
69
+ this.updateMarkdown();
70
+ this.updateMarkdownStyle();
70
71
  }
71
72
 
72
73
  childElements() {
@@ -75,37 +76,29 @@ class View extends Element {
75
76
  <ColumnsDiv>
76
77
  <LeftSizeableDiv>
77
78
  <SubHeading>
78
- Lexical entries
79
- </SubHeading>
80
- <LexicalEntriesTextarea onKeyUp={this.keyUpHandler} />
81
- <SubHeading>
82
- BNF
79
+ Markdown
83
80
  </SubHeading>
84
- <BNFTextarea onKeyUp={this.keyUpHandler} />
81
+ <MarkdownTextarea onKeyUp={this.keyUpHandler} />
85
82
  <SubHeading>
86
- Parse tree
83
+ Markdown style
87
84
  </SubHeading>
88
- <ParseTreeTextarea/>
85
+ <MarkdownStyleTextarea onKeyUp={this.keyUpHandler} />
89
86
  </LeftSizeableDiv>
90
87
  <VerticalSplitterDiv/>
91
88
  <ColumnDiv>
92
89
  <RowsDiv>
93
- <RightSizeableDiv>
94
- <XMP/>
95
- </RightSizeableDiv>
96
- <HorizontalSplitterDiv/>
97
- <RowDiv>
98
- <RowsDiv>
99
- <SubHeading>
100
- Preview
101
- </SubHeading>
102
- <PreviewDiv/>
103
- <SubHeading>
104
- Markdown
105
- </SubHeading>
106
- <MarkdownTextarea onKeyUp={this.keyUpHandler} />
107
- </RowsDiv>
108
- </RowDiv>
90
+ <SubHeading>
91
+ HTML
92
+ </SubHeading>
93
+ <XMP/>
94
+ <SubHeading>
95
+ CSS
96
+ </SubHeading>
97
+ <CSSTextarea/>
98
+ <SubHeading>
99
+ Preview
100
+ </SubHeading>
101
+ <PreviewDiv/>
109
102
  </RowsDiv>
110
103
  </ColumnDiv>
111
104
  </ColumnsDiv>
@@ -116,25 +109,36 @@ class View extends Element {
116
109
  initialise() {
117
110
  this.assignContext();
118
111
 
119
- const { initialMarkdown } = this.constructor,
120
- markdown = initialMarkdown, ///
121
- lexicalEntries = entries; ///
122
-
123
- this.setBNF(bnf);
112
+ const { initialMarkdown, initialMarkdownStyle } = this.constructor,
113
+ markdownStyle = initialMarkdownStyle, ///
114
+ markdown = initialMarkdown; ///
124
115
 
125
116
  this.setMarkdown(markdown);
126
117
 
127
- this.setLexicalEntries(lexicalEntries);
118
+ this.setMarkdownStyle(markdownStyle);
128
119
 
129
120
  this.update();
130
121
  }
131
122
 
123
+ static initialMarkdownStyle = `
124
+ min-height: initial;
125
+
126
+ paragraph {
127
+ colour: red;
128
+ }
129
+
130
+ `;
131
+
132
132
  static initialMarkdown = `1. First item.
133
133
  3. Third item.
134
134
  `;
135
135
 
136
136
  static tagName = "div";
137
137
 
138
+ static ignoredProperties = [
139
+ "markdownStyleElement"
140
+ ];
141
+
138
142
  static defaultProperties = {
139
143
  className: "view"
140
144
  };
package/src/example.js CHANGED
@@ -5,17 +5,26 @@ import "juxtapose";
5
5
  import withStyle from "easy-with-style"; ///
6
6
 
7
7
  import { Body } from "easy";
8
+ import { MarkdownStyleElement, DefaultMarkdownStyleElement } from "./index"; ///
8
9
 
9
10
  import View from "./example/view";
10
11
 
12
+ import { PREVIEW_DIV_SELECTORS_STRING } from "./example/constants";
13
+
11
14
  const { renderStyles } = withStyle;
12
15
 
16
+ const selectorSString = PREVIEW_DIV_SELECTORS_STRING;
17
+
18
+ DefaultMarkdownStyleElement.fromSelectorsString(selectorSString);
19
+
20
+ const markdownStyleElement = MarkdownStyleElement.fromSelectorsString(selectorSString);
21
+
13
22
  renderStyles();
14
23
 
15
24
  const body = new Body();
16
25
 
17
26
  body.mount(
18
27
 
19
- <View/>
28
+ <View markdownStyleElement={markdownStyleElement} />
20
29
 
21
30
  );
package/src/index.js CHANGED
@@ -4,7 +4,13 @@ export { default as nodeMap } from "./nodeMap";
4
4
  export { default as ruleNames } from "./ruleNames";
5
5
  export { default as tokenTypes } from "./tokenTypes";
6
6
  export { default as elementMap } from "./elementMap";
7
+ export { default as cssUtilities } from "./utilities/css";
7
8
  export { default as MarkdownNode } from "./node/markdown";
8
9
  export { default as MarkdownLexer } from "./markdown/lexer";
9
10
  export { default as MarkdownParser } from "./markdown/parser";
10
11
  export { default as queryUtilities } from "./utilities/query";
12
+ export { default as MarkdownStyleLexer } from "./markdownStyle/lexer";
13
+ export { default as MarkdownStyleParser } from "./markdownStyle/parser";
14
+ export { default as MarkdownStyleElement } from "./styleElement/markdown";
15
+ export { default as defaultMarkdownStyle } from "./defaultMarkdownStyle";
16
+ export { default as DefaultMarkdownStyleElement } from "./styleElement/markdown/default";
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ const bnf = `
4
+
5
+ style ::= ( ruleSet | declaration | nonsense | error )+ ;
6
+
7
+
8
+ ruleSet.. ::= selectorsList "{" ( ruleSet | declaration | nonsense )* "}" ;
9
+
10
+
11
+ declaration ::= name ":" values ";" ;
12
+
13
+
14
+ nonsense. ::= [string-literal] | [escaped] | [rule-name] | [number] | [colour] | [unit] | [name] | [special] | [unassigned] ;
15
+
16
+
17
+ error. ::= . ;
18
+
19
+
20
+ selectorsList ::= selectors ( "," selectors )* ;
21
+
22
+
23
+ selectors ::= selector+ ;
24
+
25
+
26
+ selector ::= [rule-name] class* pseudoClass*
27
+
28
+ | class+ pseudoClass*
29
+
30
+ | pseudoClass+
31
+
32
+ ;
33
+
34
+
35
+ values ::= value+ ;
36
+
37
+
38
+ class ::= <NO_WHITESPACE>"."<NO_WHITESPACE>identifier ;
39
+
40
+
41
+ pseudoClass ::= <NO_WHITESPACE>":"<NO_WHITESPACE>identifier ;
42
+
43
+
44
+ name. ::= identifier ;
45
+
46
+
47
+ value. ::= identifier ( <NO_WHITESPACE>"(" arguments ")" )?
48
+
49
+ | [number]<NO_WHITESPACE>[unit]
50
+
51
+ | [string-literal]
52
+
53
+ | [number]
54
+
55
+ | [colour]
56
+
57
+ ;
58
+
59
+
60
+ arguments ::= argument ( "," argument )* ;
61
+
62
+
63
+ argument ::= identifier
64
+
65
+ | [number]<NO_WHITESPACE>[unit]
66
+
67
+ | [string-literal]
68
+
69
+ | [number]
70
+
71
+ | [colour]
72
+
73
+ ;
74
+
75
+
76
+ identifier ::= ( [rule-name] | [name] ) ( <NO_WHITESPACE>"-"<NO_WHITESPACE>( [rule-name] | [name] ) )* ;
77
+
78
+
79
+ `;
80
+
81
+ export default bnf;