@speed-highlight/core 1.1.6

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 (187) hide show
  1. package/.gitattributes +2 -0
  2. package/CODE_OF_CONDUCT.md +128 -0
  3. package/CONTRIBUTING.md +34 -0
  4. package/LICENSE +121 -0
  5. package/README.md +140 -0
  6. package/assets/screenshot.png +0 -0
  7. package/dist/common.js +1 -0
  8. package/dist/detect.js +1 -0
  9. package/dist/index.js +3 -0
  10. package/dist/languages/asm.js +1 -0
  11. package/dist/languages/bash.js +1 -0
  12. package/dist/languages/bf.js +1 -0
  13. package/dist/languages/c.js +1 -0
  14. package/dist/languages/css.js +1 -0
  15. package/dist/languages/csv.js +1 -0
  16. package/dist/languages/diff.js +1 -0
  17. package/dist/languages/docker.js +1 -0
  18. package/dist/languages/git.js +1 -0
  19. package/dist/languages/go.js +1 -0
  20. package/dist/languages/html.js +1 -0
  21. package/dist/languages/http.js +1 -0
  22. package/dist/languages/ini.js +1 -0
  23. package/dist/languages/java.js +1 -0
  24. package/dist/languages/js.js +1 -0
  25. package/dist/languages/js_template_literals.js +1 -0
  26. package/dist/languages/jsdoc.js +1 -0
  27. package/dist/languages/json.js +1 -0
  28. package/dist/languages/leanpub-md.js +2 -0
  29. package/dist/languages/log.js +1 -0
  30. package/dist/languages/lua.js +1 -0
  31. package/dist/languages/make.js +1 -0
  32. package/dist/languages/md.js +2 -0
  33. package/dist/languages/pl.js +1 -0
  34. package/dist/languages/plain.js +1 -0
  35. package/dist/languages/py.js +1 -0
  36. package/dist/languages/regex.js +1 -0
  37. package/dist/languages/rs.js +1 -0
  38. package/dist/languages/sql.js +1 -0
  39. package/dist/languages/todo.js +1 -0
  40. package/dist/languages/toml.js +1 -0
  41. package/dist/languages/ts.js +1 -0
  42. package/dist/languages/uri.js +1 -0
  43. package/dist/languages/xml.js +1 -0
  44. package/dist/languages/yaml.js +1 -0
  45. package/dist/node/common.js +1 -0
  46. package/dist/node/detect.js +1 -0
  47. package/dist/node/index.js +3 -0
  48. package/dist/node/languages/asm.js +1 -0
  49. package/dist/node/languages/bash.js +1 -0
  50. package/dist/node/languages/bf.js +1 -0
  51. package/dist/node/languages/c.js +1 -0
  52. package/dist/node/languages/css.js +1 -0
  53. package/dist/node/languages/csv.js +1 -0
  54. package/dist/node/languages/diff.js +1 -0
  55. package/dist/node/languages/docker.js +1 -0
  56. package/dist/node/languages/git.js +1 -0
  57. package/dist/node/languages/go.js +1 -0
  58. package/dist/node/languages/html.js +1 -0
  59. package/dist/node/languages/http.js +1 -0
  60. package/dist/node/languages/ini.js +1 -0
  61. package/dist/node/languages/java.js +1 -0
  62. package/dist/node/languages/js.js +1 -0
  63. package/dist/node/languages/js_template_literals.js +1 -0
  64. package/dist/node/languages/jsdoc.js +1 -0
  65. package/dist/node/languages/json.js +1 -0
  66. package/dist/node/languages/leanpub-md.js +2 -0
  67. package/dist/node/languages/log.js +1 -0
  68. package/dist/node/languages/lua.js +1 -0
  69. package/dist/node/languages/make.js +1 -0
  70. package/dist/node/languages/md.js +2 -0
  71. package/dist/node/languages/pl.js +1 -0
  72. package/dist/node/languages/plain.js +1 -0
  73. package/dist/node/languages/py.js +1 -0
  74. package/dist/node/languages/regex.js +1 -0
  75. package/dist/node/languages/rs.js +1 -0
  76. package/dist/node/languages/sql.js +1 -0
  77. package/dist/node/languages/todo.js +1 -0
  78. package/dist/node/languages/toml.js +1 -0
  79. package/dist/node/languages/ts.js +1 -0
  80. package/dist/node/languages/uri.js +1 -0
  81. package/dist/node/languages/xml.js +1 -0
  82. package/dist/node/languages/yaml.js +1 -0
  83. package/dist/node/term.js +1 -0
  84. package/dist/node/themes/default.js +1 -0
  85. package/dist/term.js +1 -0
  86. package/dist/themes/atom-dark.css +1 -0
  87. package/dist/themes/dark.css +1 -0
  88. package/dist/themes/default.css +1 -0
  89. package/dist/themes/default.js +1 -0
  90. package/dist/themes/github-dark.css +1 -0
  91. package/dist/themes/github-dim.css +1 -0
  92. package/dist/themes/github-light.css +1 -0
  93. package/dist/themes/visual-studio-dark.css +1 -0
  94. package/examples/deno.js +14 -0
  95. package/examples/dist.html +27 -0
  96. package/examples/helper/data.js +51 -0
  97. package/examples/helper/elm.js +58 -0
  98. package/examples/index.html +52 -0
  99. package/examples/languages/oneline.bash +1 -0
  100. package/examples/languages/oneline.http +1 -0
  101. package/examples/languages/screenshot.js +18 -0
  102. package/examples/languages/test.asm +17 -0
  103. package/examples/languages/test.bash +32 -0
  104. package/examples/languages/test.bf +21 -0
  105. package/examples/languages/test.c +57 -0
  106. package/examples/languages/test.css +20 -0
  107. package/examples/languages/test.csv +4 -0
  108. package/examples/languages/test.diff +27 -0
  109. package/examples/languages/test.docker +23 -0
  110. package/examples/languages/test.git +10 -0
  111. package/examples/languages/test.go +21 -0
  112. package/examples/languages/test.html +27 -0
  113. package/examples/languages/test.http +17 -0
  114. package/examples/languages/test.ini +6 -0
  115. package/examples/languages/test.java +52 -0
  116. package/examples/languages/test.js +34 -0
  117. package/examples/languages/test.jsdoc +2 -0
  118. package/examples/languages/test.json +24 -0
  119. package/examples/languages/test.leanpub-md +21 -0
  120. package/examples/languages/test.log +32 -0
  121. package/examples/languages/test.lua +62 -0
  122. package/examples/languages/test.make +51 -0
  123. package/examples/languages/test.md +62 -0
  124. package/examples/languages/test.pl +25 -0
  125. package/examples/languages/test.plain +3 -0
  126. package/examples/languages/test.py +38 -0
  127. package/examples/languages/test.regex +2 -0
  128. package/examples/languages/test.rs +38 -0
  129. package/examples/languages/test.sql +6 -0
  130. package/examples/languages/test.todo +18 -0
  131. package/examples/languages/test.toml +16 -0
  132. package/examples/languages/test.ts +43 -0
  133. package/examples/languages/test.uri +9 -0
  134. package/examples/languages/test.xml +44 -0
  135. package/examples/languages/test.yaml +18 -0
  136. package/examples/node.js +11 -0
  137. package/examples/style.css +28 -0
  138. package/examples/worker.html +19 -0
  139. package/examples/worker.js +6 -0
  140. package/package.json +40 -0
  141. package/src/common.js +18 -0
  142. package/src/detect.js +33 -0
  143. package/src/index.js +129 -0
  144. package/src/languages/asm.js +30 -0
  145. package/src/languages/bash.js +44 -0
  146. package/src/languages/bf.js +18 -0
  147. package/src/languages/c.js +52 -0
  148. package/src/languages/css.js +56 -0
  149. package/src/languages/csv.js +9 -0
  150. package/src/languages/diff.js +18 -0
  151. package/src/languages/docker.js +9 -0
  152. package/src/languages/git.js +20 -0
  153. package/src/languages/go.js +28 -0
  154. package/src/languages/html.js +51 -0
  155. package/src/languages/http.js +30 -0
  156. package/src/languages/ini.js +22 -0
  157. package/src/languages/java.js +28 -0
  158. package/src/languages/js.js +48 -0
  159. package/src/languages/js_template_literals.js +34 -0
  160. package/src/languages/jsdoc.js +18 -0
  161. package/src/languages/json.js +20 -0
  162. package/src/languages/leanpub-md.js +34 -0
  163. package/src/languages/log.js +28 -0
  164. package/src/languages/lua.js +28 -0
  165. package/src/languages/make.js +36 -0
  166. package/src/languages/md.js +48 -0
  167. package/src/languages/pl.js +25 -0
  168. package/src/languages/plain.js +5 -0
  169. package/src/languages/py.js +52 -0
  170. package/src/languages/regex.js +19 -0
  171. package/src/languages/rs.js +28 -0
  172. package/src/languages/sql.js +33 -0
  173. package/src/languages/todo.js +19 -0
  174. package/src/languages/toml.js +36 -0
  175. package/src/languages/ts.js +13 -0
  176. package/src/languages/uri.js +26 -0
  177. package/src/languages/xml.js +68 -0
  178. package/src/languages/yaml.js +32 -0
  179. package/src/term.js +19 -0
  180. package/src/themes/atom-dark.css +23 -0
  181. package/src/themes/dark.css +23 -0
  182. package/src/themes/default.css +87 -0
  183. package/src/themes/default.js +26 -0
  184. package/src/themes/github-dark.css +23 -0
  185. package/src/themes/github-dim.css +3 -0
  186. package/src/themes/github-light.css +21 -0
  187. package/src/themes/visual-studio-dark.css +23 -0
@@ -0,0 +1,36 @@
1
+ export default [
2
+ {
3
+ match: /#.*/g,
4
+ sub: 'todo'
5
+ },
6
+ {
7
+ type: 'str',
8
+ match: /("""|''')((?!\1)[^]|\\[^])*\1?/g
9
+ },
10
+ {
11
+ expand: 'str'
12
+ },
13
+ {
14
+ type: 'section',
15
+ match: /^\[.+\]\s*$/gm
16
+ },
17
+ {
18
+ type: 'num',
19
+ match: /\b(inf|nan)\b|\d[\d:ZT.-]*/g
20
+ },
21
+ {
22
+ expand: 'num'
23
+ },
24
+ {
25
+ type: 'bool',
26
+ match: /\b(true|false)\b/g
27
+ },
28
+ {
29
+ type: 'oper',
30
+ match: /[+,.=-]/g
31
+ },
32
+ {
33
+ type: 'var',
34
+ match: /\w+(?= \=)/g
35
+ }
36
+ ]
@@ -0,0 +1,13 @@
1
+ import js from './js.js'
2
+
3
+ export default [
4
+ {
5
+ type: 'type',
6
+ match: /:\s*(any|void|number|boolean|string|object|never|enum)\b/g
7
+ },
8
+ {
9
+ type: 'kwd',
10
+ match: /\b(type|namespace|typedef|interface|public|private|protected|implements|declare|abstract|readonly)\b/g
11
+ },
12
+ ...js
13
+ ]
@@ -0,0 +1,26 @@
1
+ export default [
2
+ {
3
+ match: /^#.*/gm,
4
+ sub: 'todo'
5
+ },
6
+ {
7
+ type: 'class',
8
+ match: /^\w+(?=:?)/gm
9
+ },
10
+ {
11
+ type: 'num',
12
+ match: /:\d+/g
13
+ },
14
+ {
15
+ type: 'oper',
16
+ match: /[:/&?]|\w+=/g
17
+ },
18
+ {
19
+ type: 'func',
20
+ match: /[.\w]+@|#[\w]+$/gm
21
+ },
22
+ {
23
+ type: 'var',
24
+ match: /\w+\.\w+(\.\w+)*/g
25
+ }
26
+ ]
@@ -0,0 +1,68 @@
1
+ export let property = '\\s*(\\s+[a-z-]+\\s*(=\\s*([^"\']\\S*|("|\')(\\\\[^]|(?!\\4)[^])*\\4?)?)?\\s*)*',
2
+ xmlElement = {
3
+ match: RegExp(`<\/?[a-z_-]+${property}\/?>`, 'g'),
4
+ sub: [
5
+ {
6
+ type: 'var',
7
+ match: /^<\/?[^\s>\/]+/g,
8
+ sub: [
9
+ {
10
+ type: 'oper',
11
+ match: /^<\/?/g
12
+ }
13
+ ]
14
+ },
15
+ {
16
+ type: 'str',
17
+ match: /=\s*([^"']\S*|("|')(\\[^]|(?!\2)[^])*\2?)/g,
18
+ sub: [
19
+ {
20
+ type: 'oper',
21
+ match: /^=/g
22
+ }
23
+ ]
24
+ },
25
+ {
26
+ type: 'oper',
27
+ match: /\/?>/g
28
+ },
29
+ {
30
+ type: 'class',
31
+ match: /[a-z-]+/gi
32
+ }
33
+ ]
34
+ };
35
+
36
+ export default [
37
+ {
38
+ match: /<!--((?!-->)[^])*-->/g,
39
+ sub: 'todo'
40
+ },
41
+ {
42
+ type: 'class',
43
+ match: RegExp(`<\\?xml${property}\\?>`, 'gi'),
44
+ sub: [
45
+ {
46
+ type: 'oper',
47
+ match: /^<\?|\?>$/g
48
+ },
49
+ {
50
+ type: 'str',
51
+ match: /"[^"]*"|'[^']*'/g
52
+ },
53
+ {
54
+ type: 'var',
55
+ match: /xml/gi
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ type: 'class',
61
+ match: /<!\[CDATA\[[\s\S]*?\]\]>/gi
62
+ },
63
+ xmlElement,
64
+ {
65
+ type: 'var',
66
+ match: /&(#x?)?[\da-z]{1,8};/gi
67
+ }
68
+ ]
@@ -0,0 +1,32 @@
1
+ export default [
2
+ {
3
+ match: /#.*/g,
4
+ sub: 'todo'
5
+ },
6
+ {
7
+ expand: 'str'
8
+ },
9
+ {
10
+ type: 'str',
11
+ match: /(>|\|)\r?\n((\s[^\n]*)?(\r?\n|$))*/g
12
+ },
13
+ {
14
+ type: 'type',
15
+ match: /!![a-z]+/g
16
+ },
17
+ {
18
+ type: 'bool',
19
+ match: /\b(Yes|No)\b/g
20
+ },
21
+ {
22
+ type: 'oper',
23
+ match: /[+:-]/g
24
+ },
25
+ {
26
+ expand: 'num'
27
+ },
28
+ {
29
+ type: 'var',
30
+ match: /[a-zA-Z]\w*(?=:)/g
31
+ }
32
+ ]
package/src/term.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Deno adaptation
3
+ */
4
+
5
+ import { tokenize } from './index.js';
6
+
7
+ let theme = import('./themes/default.js').default;
8
+
9
+ export const highlightText = async (src, lang) => {
10
+ let res = '', theme = await theme;
11
+
12
+ await tokenize(src, lang, (str, token) => res += token ? `${theme[token] ?? ''}${str}\x1b[0m` : str);
13
+
14
+ return res;
15
+ };
16
+
17
+ export const printHighlight = async (...arg) => console.log(await highlightText(...arg));
18
+
19
+ export const setTheme = async name => theme = (await import(`./themes/${name}.js`)).default;
@@ -0,0 +1,23 @@
1
+ @import 'default.css';
2
+
3
+ [class*="shj-lang-"] {
4
+ color: #abb2bf;
5
+ background: #161b22
6
+ }
7
+ [class*="shj-lang-"]:before {color: #6f9aff}
8
+
9
+ .shj-syn-deleted,
10
+ .shj-syn-err,
11
+ .shj-syn-var {color: #e06c75}
12
+ .shj-syn-section,
13
+ .shj-syn-oper,
14
+ .shj-syn-kwd {color: #c678dd}
15
+ .shj-syn-class {color: #e5c07b}
16
+ .shj-numbers,
17
+ .shj-syn-cmnt {color: #5c6370}
18
+ .shj-syn-insert {color: #98c379}
19
+ .shj-syn-type {color: #56b6c2}
20
+ .shj-syn-num,
21
+ .shj-syn-bool {color: #d19a66}
22
+ .shj-syn-str,
23
+ .shj-syn-func {color: #61afef}
@@ -0,0 +1,23 @@
1
+ @import 'default.css';
2
+
3
+ [class*="shj-lang-"] {
4
+ color: #f8f8f2;
5
+ background: #1a1a1c
6
+ }
7
+ [class*="shj-lang-"]:before {color: #6f9aff}
8
+
9
+ .shj-syn-deleted,
10
+ .shj-syn-err,
11
+ .shj-syn-var {color: #ff5261}
12
+ .shj-syn-section,
13
+ .shj-syn-kwd {color: #ff7cc6}
14
+ .shj-syn-class {color: #eab07c}
15
+ .shj-numbers,
16
+ .shj-syn-cmnt {color: #7d828b}
17
+ .shj-syn-insert,
18
+ .shj-syn-type,
19
+ .shj-syn-func,
20
+ .shj-syn-bool {color: #71d58a}
21
+ .shj-syn-num {color: #b581fd}
22
+ .shj-syn-oper {color: #80c6ff}
23
+ .shj-syn-str {color: #4dacfa}
@@ -0,0 +1,87 @@
1
+ [class*="shj-lang-"] {
2
+ white-space: pre;
3
+ margin: 10px 0;
4
+ border-radius: 10px;
5
+ padding: 30px 20px;
6
+ background: white;
7
+ color: #112;
8
+ box-shadow: 0 0 5px #0001;
9
+ text-shadow: none;
10
+ font-size: 14px;
11
+ font-weight: normal;
12
+ line-height: 19px;
13
+ font-family: Consolas, "Courier New", Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
14
+ box-sizing: border-box;
15
+ max-width: min(100%, 100vw)
16
+ }
17
+ .shj-inline {
18
+ margin: 0;
19
+ padding: 2px 5px;
20
+ display: inline-block;
21
+ border-radius: 5px
22
+ }
23
+
24
+ [class*="shj-lang-"]::selection,
25
+ [class*="shj-lang-"] ::selection {background: #bdf5}
26
+ [class*="shj-lang-"] > div {
27
+ display: flex;
28
+ overflow: auto
29
+ }
30
+ [class*="shj-lang-"] > div :last-child {
31
+ flex: 1;
32
+ outline: none
33
+ }
34
+ .shj-numbers {
35
+ padding-left: 5px;
36
+ counter-reset: line
37
+ }
38
+ .shj-numbers div {padding-right: 5px}
39
+ .shj-numbers div::before {
40
+ color: #999;
41
+ display: block;
42
+ content: counter(line);
43
+ opacity: .5;
44
+ text-align: right;
45
+ margin-right: 5px;
46
+ counter-increment: line
47
+ }
48
+
49
+ .shj-syn-cmnt {font-style: italic}
50
+
51
+ .shj-syn-err,
52
+ .shj-syn-kwd {color: #e16}
53
+ .shj-syn-num,
54
+ .shj-syn-class {color: #f60}
55
+ .shj-numbers,
56
+ .shj-syn-cmnt {color: #999}
57
+ .shj-syn-insert,
58
+ .shj-syn-str {color: #7d8}
59
+ .shj-syn-bool {color: #3bf}
60
+ .shj-syn-type,
61
+ .shj-syn-oper {color: #5af}
62
+ .shj-syn-section,
63
+ .shj-syn-func {color: #84f}
64
+ .shj-syn-deleted,
65
+ .shj-syn-var {color: #f44}
66
+
67
+ .shj-oneline {padding: 12px 10px}
68
+ .shj-lang-http.shj-oneline .shj-syn-kwd {
69
+ background: #25f;
70
+ color: #fff;
71
+ padding: 5px 7px;
72
+ border-radius: 5px
73
+ }
74
+
75
+ .shj-multiline.shj-mode-header {padding: 20px;}
76
+ .shj-multiline.shj-mode-header:before {
77
+ content: attr(data-lang);
78
+ color: #58f;
79
+ height: 32px;
80
+ display: block;
81
+ padding: 2px 12px;
82
+ overflow: hidden;
83
+ background: #58f3;
84
+ line-height: 32px;
85
+ border-radius: 5px;
86
+ margin-bottom: 10px
87
+ }
@@ -0,0 +1,26 @@
1
+ const black = '\x1b[30m',
2
+ red = '\x1b[31m',
3
+ green = '\x1b[32m',
4
+ gray = '\x1b[90m',
5
+ yellow = '\x1b[33m',
6
+ blue = '\x1b[34m',
7
+ magenta = '\x1b[35m',
8
+ cyan = '\x1b[36m',
9
+ white = '\x1b[37m';
10
+
11
+ export default {
12
+ deleted: red,
13
+ var: red,
14
+ err: red,
15
+ kwd: red,
16
+ num: yellow,
17
+ class: yellow,
18
+ cmnt: gray,
19
+ insert: green,
20
+ str: green,
21
+ bool: cyan,
22
+ type: blue,
23
+ oper: blue,
24
+ section: magenta,
25
+ func: magenta
26
+ };
@@ -0,0 +1,23 @@
1
+ @import 'default.css';
2
+
3
+ [class*="shj-lang-"] {
4
+ color: #c9d1d9;
5
+ background: #161b22
6
+ }
7
+ [class*="shj-lang-"]:before {color: #6f9aff}
8
+
9
+ .shj-syn-insert {color: #98c379}
10
+ .shj-syn-deleted,
11
+ .shj-syn-err,
12
+ .shj-syn-kwd {color: #ff7b72}
13
+ .shj-syn-class {color: #ffa657}
14
+ .shj-numbers,
15
+ .shj-syn-cmnt {color: #8b949e}
16
+ .shj-syn-type,
17
+ .shj-syn-oper,
18
+ .shj-syn-num,
19
+ .shj-syn-section,
20
+ .shj-syn-var,
21
+ .shj-syn-bool {color: #79c0ff}
22
+ .shj-syn-str {color: #a5d6ff}
23
+ .shj-syn-func {color: #d2a8ff}
@@ -0,0 +1,3 @@
1
+ @import 'github-dark.css';
2
+
3
+ [class*="shj-lang-"] {background: #22272e}
@@ -0,0 +1,21 @@
1
+ @import 'default.css';
2
+
3
+ [class*="shj-lang-"] {
4
+ color: #24292f;
5
+ background: #fff
6
+ }
7
+
8
+ .shj-syn-deleted,
9
+ .shj-syn-err,
10
+ .shj-syn-kwd {color: #cf222e}
11
+ .shj-syn-class {color: #953800}
12
+ .shj-numbers,
13
+ .shj-syn-cmnt {color: #6e7781}
14
+ .shj-syn-type,
15
+ .shj-syn-oper,
16
+ .shj-syn-num,
17
+ .shj-syn-section,
18
+ .shj-syn-var,
19
+ .shj-syn-bool {color: #0550ae}
20
+ .shj-syn-str {color: #0a3069}
21
+ .shj-syn-func {color: #8250df}
@@ -0,0 +1,23 @@
1
+ @import 'default.css';
2
+
3
+ [class*="shj-lang-"] {
4
+ color: #d4d4d4;
5
+ background: #1e1e1e
6
+ }
7
+ [class*="shj-lang-"]:before {color: #6f9aff}
8
+
9
+ .shj-syn-insert {color: #98c379}
10
+ .shj-syn-var {color: #9cdcfe}
11
+ .shj-syn-oper {color: #d4d4d4}
12
+ .shj-syn-num,
13
+ .shj-syn-kwd {color: #569cd6}
14
+ .shj-syn-section,
15
+ .shj-syn-type,
16
+ .shj-syn-class {color: #4fc1ff}
17
+ .shj-numbers,
18
+ .shj-syn-cmnt {color: #6a9955}
19
+ .shj-syn-bool {color: #b5cea8}
20
+ .shj-syn-deleted,
21
+ .shj-syn-err,
22
+ .shj-syn-str {color: #ce9178}
23
+ .shj-syn-func {color: #dcdcaa}