@speed-highlight/core 1.1.7 → 1.1.8

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 (127) hide show
  1. package/README.md +56 -9
  2. package/doc/common.js.html +87 -0
  3. package/doc/css/jsdoc-template.css +1 -0
  4. package/doc/css/tomorrow.min.css +2 -0
  5. package/doc/detect%0ALanguage%20detectormodule_.html +309 -0
  6. package/doc/detect.js.html +113 -0
  7. package/doc/global.html +1826 -0
  8. package/doc/index%0ABase%20scriptmodule_.html +1179 -0
  9. package/doc/index.html +402 -0
  10. package/doc/index.js.html +209 -0
  11. package/doc/js/jsdoc-template.js +2 -0
  12. package/doc/js/jsdoc-template.js.map +1 -0
  13. package/doc/js/prettify.min.js +47 -0
  14. package/doc/term%0ATerminal%20adaptormodule_.html +596 -0
  15. package/doc/term.js.html +108 -0
  16. package/examples/{helper/data.js → data.js} +28 -16
  17. package/examples/deno.js +53 -7
  18. package/examples/index.html +10 -7
  19. package/examples/languages/test.c +1 -1
  20. package/examples/languages/test.go +4 -4
  21. package/examples/languages/test.java +3 -3
  22. package/examples/node.js +1 -1
  23. package/jsdoc.json +16 -0
  24. package/package.json +42 -38
  25. package/src/color.js +11 -0
  26. package/src/detect.js +21 -5
  27. package/src/index.js +44 -38
  28. package/src/languages/c.js +1 -1
  29. package/src/languages/go.js +1 -1
  30. package/src/languages/java.js +1 -1
  31. package/src/languages/js.js +1 -1
  32. package/src/languages/py.js +1 -1
  33. package/src/languages/rs.js +1 -1
  34. package/src/terminal.js +42 -0
  35. package/src/themes/atom-dark.js +18 -0
  36. package/src/themes/default.js +16 -24
  37. package/typedef.js +34 -0
  38. package/assets/screenshot.png +0 -0
  39. package/dist/common.js +0 -1
  40. package/dist/detect.js +0 -1
  41. package/dist/index.js +0 -3
  42. package/dist/languages/asm.js +0 -1
  43. package/dist/languages/bash.js +0 -1
  44. package/dist/languages/bf.js +0 -1
  45. package/dist/languages/c.js +0 -1
  46. package/dist/languages/css.js +0 -1
  47. package/dist/languages/csv.js +0 -1
  48. package/dist/languages/diff.js +0 -1
  49. package/dist/languages/docker.js +0 -1
  50. package/dist/languages/git.js +0 -1
  51. package/dist/languages/go.js +0 -1
  52. package/dist/languages/html.js +0 -1
  53. package/dist/languages/http.js +0 -1
  54. package/dist/languages/ini.js +0 -1
  55. package/dist/languages/java.js +0 -1
  56. package/dist/languages/js.js +0 -1
  57. package/dist/languages/js_template_literals.js +0 -1
  58. package/dist/languages/jsdoc.js +0 -1
  59. package/dist/languages/json.js +0 -1
  60. package/dist/languages/leanpub-md.js +0 -2
  61. package/dist/languages/log.js +0 -1
  62. package/dist/languages/lua.js +0 -1
  63. package/dist/languages/make.js +0 -1
  64. package/dist/languages/md.js +0 -2
  65. package/dist/languages/pl.js +0 -1
  66. package/dist/languages/plain.js +0 -1
  67. package/dist/languages/py.js +0 -1
  68. package/dist/languages/regex.js +0 -1
  69. package/dist/languages/rs.js +0 -1
  70. package/dist/languages/sql.js +0 -1
  71. package/dist/languages/todo.js +0 -1
  72. package/dist/languages/toml.js +0 -1
  73. package/dist/languages/ts.js +0 -1
  74. package/dist/languages/uri.js +0 -1
  75. package/dist/languages/xml.js +0 -1
  76. package/dist/languages/yaml.js +0 -1
  77. package/dist/node/common.js +0 -1
  78. package/dist/node/detect.js +0 -1
  79. package/dist/node/index.js +0 -3
  80. package/dist/node/languages/asm.js +0 -1
  81. package/dist/node/languages/bash.js +0 -1
  82. package/dist/node/languages/bf.js +0 -1
  83. package/dist/node/languages/c.js +0 -1
  84. package/dist/node/languages/css.js +0 -1
  85. package/dist/node/languages/csv.js +0 -1
  86. package/dist/node/languages/diff.js +0 -1
  87. package/dist/node/languages/docker.js +0 -1
  88. package/dist/node/languages/git.js +0 -1
  89. package/dist/node/languages/go.js +0 -1
  90. package/dist/node/languages/html.js +0 -1
  91. package/dist/node/languages/http.js +0 -1
  92. package/dist/node/languages/ini.js +0 -1
  93. package/dist/node/languages/java.js +0 -1
  94. package/dist/node/languages/js.js +0 -1
  95. package/dist/node/languages/js_template_literals.js +0 -1
  96. package/dist/node/languages/jsdoc.js +0 -1
  97. package/dist/node/languages/json.js +0 -1
  98. package/dist/node/languages/leanpub-md.js +0 -2
  99. package/dist/node/languages/log.js +0 -1
  100. package/dist/node/languages/lua.js +0 -1
  101. package/dist/node/languages/make.js +0 -1
  102. package/dist/node/languages/md.js +0 -2
  103. package/dist/node/languages/pl.js +0 -1
  104. package/dist/node/languages/plain.js +0 -1
  105. package/dist/node/languages/py.js +0 -1
  106. package/dist/node/languages/regex.js +0 -1
  107. package/dist/node/languages/rs.js +0 -1
  108. package/dist/node/languages/sql.js +0 -1
  109. package/dist/node/languages/todo.js +0 -1
  110. package/dist/node/languages/toml.js +0 -1
  111. package/dist/node/languages/ts.js +0 -1
  112. package/dist/node/languages/uri.js +0 -1
  113. package/dist/node/languages/xml.js +0 -1
  114. package/dist/node/languages/yaml.js +0 -1
  115. package/dist/node/term.js +0 -1
  116. package/dist/node/themes/default.js +0 -1
  117. package/dist/term.js +0 -1
  118. package/dist/themes/atom-dark.css +0 -1
  119. package/dist/themes/dark.css +0 -1
  120. package/dist/themes/default.css +0 -1
  121. package/dist/themes/default.js +0 -1
  122. package/dist/themes/github-dark.css +0 -1
  123. package/dist/themes/github-dim.css +0 -1
  124. package/dist/themes/github-light.css +0 -1
  125. package/dist/themes/visual-studio-dark.css +0 -1
  126. package/examples/dist.html +0 -26
  127. package/src/term.js +0 -19
package/doc/index.html ADDED
@@ -0,0 +1,402 @@
1
+ <!DOCTYPE html>
2
+ <html lang='en'>
3
+ <head>
4
+ <meta charset='utf-8'/>
5
+ <title>Home - JSDoc</title>
6
+ <link type='text/css' rel='stylesheet' href='css/jsdoc-template.css'/>
7
+ <meta name="viewport" content="width=device-width,
8
+ initial-scale=1"/>
9
+ </head>
10
+ <body data-gs='{"openPageHeader": "is-page-header-open", "searching": "is-searching"}'>
11
+ <div id='page-wrapper'>
12
+ <header id='page-header' data-gs-target='openPageHeader'>
13
+
14
+ <h1 id='page-title'>
15
+ <a href="/">JSDoc</a>
16
+ </h1>
17
+
18
+ <nav id='content-nav'>
19
+ <header>
20
+ <div id='search'>
21
+ <div class='textfield-wrapper'>
22
+ <input type='search' name='q' placeholder='Search...' data-internal-search='#content-nav li a' data-gs-search='searching'/>
23
+ </div>
24
+ </div>
25
+ </header>
26
+ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><abbr title="Module">Mod</abbr> <a href="detect%250ALanguage%2520detectormodule_.html">detect
27
+ Language detector</a></li><li><abbr title="Module">Mod</abbr> <a href="index%250ABase%2520scriptmodule_.html">index
28
+ Base script</a></li><li><abbr title="Module">Mod</abbr> <a href="term%250ATerminal%2520adaptormodule_.html">term
29
+ Terminal adaptor</a></li></ul>
30
+ </nav>
31
+ </header>
32
+ <div id='main-wrapper'>
33
+ <button id='page-header-opener' title='Toggle left bar' class='has-icon' data-css-icon='menu' type='button' data-gs-toggle='openPageHeader'>Toggle left bar</button>
34
+ <main id='content'>
35
+ <header>
36
+ <h1 id='content-title'>Home</h1>
37
+ </header>
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+ <article id='readme'><h1>Speed-highlight JS</h1>
60
+ <p>Light, fast, and easy to use, dependencies free javascript syntax highlighter, with automatic language detection, <a href="https://speed-highlight.github.io/core/examples/" target="_blank" rel="noopener noreferrer">try it out here</a></p>
61
+ <p><img src="https://raw.githubusercontent.com/speed-highlight/core/main/assets/screenshot.png" alt=""></p>
62
+ <h2>Light 📦</h2>
63
+ <ul>
64
+ <li>The core is about <strong>1kB</strong> (gzipped &amp; minified)</li>
65
+ <li>Languages definition are from <strong>a few bytes</strong> to <strong>1kB</strong></li>
66
+ <li>Themes are about <strong>1kB</strong></li>
67
+ <li>Language rules needed are automatically loaded</li>
68
+ </ul>
69
+ <h2>Fast ⚡</h2>
70
+ <p>Blazing fast highlighting using regex</p>
71
+ <h2>Simple setup 🚀</h2>
72
+ <h3>Web</h3>
73
+ <p>Style/theme (in the header of your html file):</p>
74
+ <pre class="prettyprint source lang-html"><code>&lt;link rel=&quot;stylesheet&quot; href=&quot;/path/dist/themes/default.css&quot;>
75
+ </code></pre>
76
+ <p>In the body of your html file:</p>
77
+ <pre class="prettyprint source lang-html"><code>&lt;div class='shj-lang-[code-language]'>[code]&lt;/div>
78
+ or
79
+ &lt;code class='shj-lang-[code-language]'>[inline code]&lt;/code>
80
+ </code></pre>
81
+ <p>Highlight the code (in your javascript):</p>
82
+ <pre class="prettyprint source lang-js"><code>import { highlightAll } from '/path/dist/index.js'
83
+ highlightAll();
84
+ </code></pre>
85
+ <p>Auto language detection</p>
86
+ <pre class="prettyprint source lang-js"><code>import { highlightElement } from '../src/index.js';
87
+ import { detectLanguage } from '../src/detect.js';
88
+
89
+ elm.textContent = code;
90
+ highlightElement(elm, detectLanguage(code));
91
+ </code></pre>
92
+ <h4>CDN</h4>
93
+ <pre class="prettyprint source lang-html"><code>&lt;link rel=&quot;stylesheet&quot; href=&quot;https://unpkg.com/@speed-highlight/core/dist/themes/default.css&quot;>
94
+ &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/speed-highlight/core/dist/themes/default.css&quot;>
95
+ </code></pre>
96
+ <pre class="prettyprint source lang-js"><code>import ... from 'https://unpkg.com/@speed-highlight/core/dist/index.js'
97
+ import ... from 'https://cdn.jsdelivr.net/gh/speed-highlight/core/dist/index.js'
98
+ </code></pre>
99
+ <h3>Deno</h3>
100
+ <p>Use the <a href="https://deno.land/x/speed_highlight_js" target="_blank" rel="noopener noreferrer">deno module</a></p>
101
+ <pre class="prettyprint source lang-js"><code>import { setTheme, printHighlight } from 'https://x.nest.land/speed_highlight_js/dist/term.js';
102
+
103
+ await setTheme('[theme-name]')
104
+ printHighlight('console.log(&quot;hello&quot;)', 'js')
105
+ </code></pre>
106
+ <h2>Node</h2>
107
+ <p>Use the <a href="https://www.npmjs.com/package/@speed-highlight/core" target="_blank" rel="noopener noreferrer">npm package</a></p>
108
+ <pre class="prettyprint source lang-bash"><code>npm i @speed-highlight/core
109
+ </code></pre>
110
+ <pre class="prettyprint source lang-js"><code>const { setTheme, printHighlight } = require('@speed-highlight/core/dist/node/term.js');
111
+
112
+ setTheme('[theme-name]')
113
+ printHighlight('console.log(&quot;hello&quot;)', 'js')
114
+ </code></pre>
115
+ <h2>Languages supported 🌐</h2>
116
+ <table>
117
+ <thead>
118
+ <tr>
119
+ <th>Name</th>
120
+ <th>Class name</th>
121
+ <th>Support</th>
122
+ <th>Language detection</th>
123
+ </tr>
124
+ </thead>
125
+ <tbody>
126
+ <tr>
127
+ <td>bash</td>
128
+ <td>shj-lang-bash</td>
129
+ <td></td>
130
+ <td>✅</td>
131
+ </tr>
132
+ <tr>
133
+ <td>brainfuck</td>
134
+ <td>shj-lang-bf</td>
135
+ <td>increment, operator, print, comment</td>
136
+ <td>❌</td>
137
+ </tr>
138
+ <tr>
139
+ <td>css</td>
140
+ <td>shj-lang-css</td>
141
+ <td>comment, str, selector, units, function, ...</td>
142
+ <td>✅</td>
143
+ </tr>
144
+ <tr>
145
+ <td>csv</td>
146
+ <td>shj-lang-csv</td>
147
+ <td>punctuation, ...</td>
148
+ <td>❌</td>
149
+ </tr>
150
+ <tr>
151
+ <td>diff</td>
152
+ <td>shj-lang-diff</td>
153
+ <td></td>
154
+ <td>✅</td>
155
+ </tr>
156
+ <tr>
157
+ <td>git</td>
158
+ <td>shj-lang-git</td>
159
+ <td>comment, insert, deleted, string, ...</td>
160
+ <td>❌</td>
161
+ </tr>
162
+ <tr>
163
+ <td>html</td>
164
+ <td>shj-lang-html</td>
165
+ <td></td>
166
+ <td>✅</td>
167
+ </tr>
168
+ <tr>
169
+ <td>http</td>
170
+ <td>shj-lang-http</td>
171
+ <td>keywork, string, punctuation, variable, version</td>
172
+ <td>✅</td>
173
+ </tr>
174
+ <tr>
175
+ <td>ini</td>
176
+ <td>shj-lang-ini</td>
177
+ <td></td>
178
+ <td>❌</td>
179
+ </tr>
180
+ <tr>
181
+ <td>javascipt</td>
182
+ <td>shj-lang-js</td>
183
+ <td>basic syntax, regex, jsdoc, json, template literals</td>
184
+ <td>✅</td>
185
+ </tr>
186
+ <tr>
187
+ <td>jsdoc</td>
188
+ <td>shj-lang-jsdoc</td>
189
+ <td></td>
190
+ <td>❌</td>
191
+ </tr>
192
+ <tr>
193
+ <td>json</td>
194
+ <td>shj-lang-json</td>
195
+ <td>string, number, bool, ...</td>
196
+ <td>❌</td>
197
+ </tr>
198
+ <tr>
199
+ <td>leanpub-md</td>
200
+ <td>shj-lang-leanpub-md</td>
201
+ <td></td>
202
+ <td>❌</td>
203
+ </tr>
204
+ <tr>
205
+ <td>log</td>
206
+ <td>shj-lang-log</td>
207
+ <td>number, string, comment, errors</td>
208
+ <td>❌</td>
209
+ </tr>
210
+ <tr>
211
+ <td>lua</td>
212
+ <td>shj-lang-lua</td>
213
+ <td></td>
214
+ <td>✅</td>
215
+ </tr>
216
+ <tr>
217
+ <td>makefile</td>
218
+ <td>shj-lang-make</td>
219
+ <td></td>
220
+ <td>✅</td>
221
+ </tr>
222
+ <tr>
223
+ <td>markdown</td>
224
+ <td>shj-lang-md</td>
225
+ <td></td>
226
+ <td>✅</td>
227
+ </tr>
228
+ <tr>
229
+ <td>perl</td>
230
+ <td>shj-lang-pl</td>
231
+ <td></td>
232
+ <td>✅</td>
233
+ </tr>
234
+ <tr>
235
+ <td>plain</td>
236
+ <td>shj-lang-plain</td>
237
+ <td></td>
238
+ <td>❌</td>
239
+ </tr>
240
+ <tr>
241
+ <td>python</td>
242
+ <td>shj-lang-py</td>
243
+ <td></td>
244
+ <td>✅</td>
245
+ </tr>
246
+ <tr>
247
+ <td>regex</td>
248
+ <td>shj-lang-regex</td>
249
+ <td>count, set, ...</td>
250
+ <td>❌</td>
251
+ </tr>
252
+ <tr>
253
+ <td>sql</td>
254
+ <td>shj-lang-sql</td>
255
+ <td>number, string, function, ...</td>
256
+ <td>✅</td>
257
+ </tr>
258
+ <tr>
259
+ <td>todo</td>
260
+ <td>shj-lang-todo</td>
261
+ <td></td>
262
+ <td>❌</td>
263
+ </tr>
264
+ <tr>
265
+ <td>toml</td>
266
+ <td>shj-lang-toml</td>
267
+ <td>comment, table, string, bool, variable</td>
268
+ <td>❌</td>
269
+ </tr>
270
+ <tr>
271
+ <td>typescript</td>
272
+ <td>shj-lang-ts</td>
273
+ <td>js syntax, ts keyword, types</td>
274
+ <td>✅</td>
275
+ </tr>
276
+ <tr>
277
+ <td>uri</td>
278
+ <td>shj-lang-uri</td>
279
+ <td></td>
280
+ <td>✅</td>
281
+ </tr>
282
+ <tr>
283
+ <td>yaml</td>
284
+ <td>shj-lang-yaml</td>
285
+ <td>comment, numbers, variable, string, bool</td>
286
+ <td>❌</td>
287
+ </tr>
288
+ <tr>
289
+ <td>docker</td>
290
+ <td>shj-lang-docker</td>
291
+ <td></td>
292
+ <td>✅</td>
293
+ </tr>
294
+ <tr>
295
+ <td>c</td>
296
+ <td>shj-lang-c</td>
297
+ <td></td>
298
+ <td>✅</td>
299
+ </tr>
300
+ <tr>
301
+ <td>xml</td>
302
+ <td>shj-lang-xml</td>
303
+ <td></td>
304
+ <td>✅</td>
305
+ </tr>
306
+ <tr>
307
+ <td>rust</td>
308
+ <td>shj-lang-rs</td>
309
+ <td></td>
310
+ <td>✅</td>
311
+ </tr>
312
+ <tr>
313
+ <td>go</td>
314
+ <td>shj-lang-go</td>
315
+ <td></td>
316
+ <td>✅</td>
317
+ </tr>
318
+ <tr>
319
+ <td>java</td>
320
+ <td>shj-lang-java</td>
321
+ <td></td>
322
+ <td>✅</td>
323
+ </tr>
324
+ <tr>
325
+ <td>asm</td>
326
+ <td>shj-lang-asm</td>
327
+ <td></td>
328
+ <td>✅</td>
329
+ </tr>
330
+ </tbody>
331
+ </table>
332
+ <h2>Themes 🌈</h2>
333
+ <p>A modern theme by default</p>
334
+ <table>
335
+ <thead>
336
+ <tr>
337
+ <th>Name</th>
338
+ <th>Terminal</th>
339
+ <th>Web</th>
340
+ </tr>
341
+ </thead>
342
+ <tbody>
343
+ <tr>
344
+ <td>default</td>
345
+ <td>✅</td>
346
+ <td>✅</td>
347
+ </tr>
348
+ <tr>
349
+ <td>github-dark</td>
350
+ <td>❌</td>
351
+ <td>✅</td>
352
+ </tr>
353
+ <tr>
354
+ <td>github-light</td>
355
+ <td>❌</td>
356
+ <td>✅</td>
357
+ </tr>
358
+ <tr>
359
+ <td>github-dim</td>
360
+ <td>❌</td>
361
+ <td>✅</td>
362
+ </tr>
363
+ <tr>
364
+ <td>atom-dark</td>
365
+ <td>❌</td>
366
+ <td>✅</td>
367
+ </tr>
368
+ <tr>
369
+ <td>visual-studio-dark</td>
370
+ <td>❌</td>
371
+ <td>✅</td>
372
+ </tr>
373
+ </tbody>
374
+ </table>
375
+ <h2>Documentation 👀</h2>
376
+ <p>Further in-depth documentation for the API and other topics is in our <a href="https://github.com/speed-highlight/core/wiki" target="_blank" rel="noopener noreferrer">Wiki</a> and our <a href="https://speed-highlight.github.io/core/doc/" target="_blank" rel="noopener noreferrer">Documentation</a></p>
377
+ <h2>License 📃</h2>
378
+ <p>Shj is released under the Creative Commons Zero License. See our <a href="https://github.com/speed-highlight/core/blob/main/LICENSE" target="_blank" rel="noopener noreferrer">LICENSE</a> file for details.</p></article>
379
+
380
+
381
+
382
+
383
+
384
+
385
+ </main>
386
+ <footer id='page-footer'>
387
+ <small>Documentation generated by <a href='https://github.com/jsdoc/jsdoc' rel='noreferrer noopener' target='_blank'>JSDoc 3.6.7</a>.</small>
388
+ <small style='margin-left: 1em;'>Design by <a
389
+ href='https://github.com/AlexisPuga'
390
+ target='_blank'
391
+ rel="noopener noreferrer">Alexis Puga</a>.</small>
392
+ </footer>
393
+ </div>
394
+ </div>
395
+ <script src='js/jsdoc-template.js' async></script>
396
+
397
+ <script src='js/prettify.min.js' async></script>
398
+ <link rel='stylesheet' type='text/css' href='css/tomorrow.min.css'/>
399
+
400
+
401
+ </body>
402
+ </html>
@@ -0,0 +1,209 @@
1
+
2
+ <!DOCTYPE html>
3
+ <html lang='en'>
4
+ <head>
5
+ <meta charset='utf-8'/>
6
+ <title>Source: index.js - JSDoc</title>
7
+ <link type='text/css' rel='stylesheet' href='css/jsdoc-template.css'/>
8
+ <meta name="viewport" content="width=device-width,
9
+ initial-scale=1"/>
10
+ </head>
11
+ <body data-gs='{"openPageHeader": "is-page-header-open", "searching": "is-searching"}'>
12
+ <div id='page-wrapper'>
13
+ <header id='page-header' data-gs-target='openPageHeader'>
14
+
15
+ <h1 id='page-title'>
16
+ <a href="/">JSDoc</a>
17
+ </h1>
18
+
19
+ <nav id='content-nav'>
20
+ <header>
21
+ <div id='search'>
22
+ <div class='textfield-wrapper'>
23
+ <input type='search' name='q' placeholder='Search...' data-internal-search='#content-nav li a' data-gs-search='searching'/>
24
+ </div>
25
+ </div>
26
+ </header>
27
+ <h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><abbr title="Module">Mod</abbr> <a href="detect%250ALanguage%2520detectormodule_.html">detect
28
+ Language detector</a></li><li><abbr title="Module">Mod</abbr> <a href="index%250ABase%2520scriptmodule_.html">index
29
+ Base script</a></li><li><abbr title="Module">Mod</abbr> <a href="term%250ATerminal%2520adaptormodule_.html">term
30
+ Terminal adaptor</a></li></ul>
31
+ </nav>
32
+ </header>
33
+ <div id='main-wrapper'>
34
+ <button id='page-header-opener' title='Toggle left bar' class='has-icon' data-css-icon='menu' type='button' data-gs-toggle='openPageHeader'>Toggle left bar</button>
35
+ <main id='content'>
36
+ <header>
37
+ <h1 id='content-title'>Source: index.js</h1>
38
+ </header>
39
+
40
+
41
+
42
+
43
+
44
+ <figure class='source-code-wrapper'>
45
+ <pre class="prettyprint source linenums"><code>/**
46
+ * @module index
47
+ * Base script
48
+ */
49
+
50
+ import expandData from './common.js';
51
+
52
+ const langs = {},
53
+ sanitize = (str = '') =>
54
+ str.replaceAll('&amp;', '&amp;#38;').replaceAll?.('&lt;', '&amp;lt;').replaceAll?.('>', '&amp;gt;'),
55
+ /**
56
+ * @function
57
+ * @private
58
+ * Create a HTML element with the right token styling
59
+ * @param {String} str The content (need to be sanitized)
60
+ * @param {String} [token] The type of token
61
+ * @returns A HMTL string
62
+ */
63
+ toSpan = (str, token) => token ? `&lt;span class="shj-syn-${token}">${str}&lt;/span>` : str;
64
+
65
+ /**
66
+ * @function tokenize
67
+ * Find the tokens in the given code and call the callback
68
+ * @param {String} src The code
69
+ * @param {String|Object} lang The language of the code
70
+ * @param {Function} token The callback function
71
+ * this function will be given
72
+ * * the text of the token
73
+ * * the type of the token
74
+ */
75
+ export async function tokenize(src, lang, token) {
76
+ try {
77
+ let m,
78
+ part,
79
+ first = {},
80
+ match,
81
+ cache = [],
82
+ i = 0,
83
+ data = typeof lang === 'string' ? (await (langs[lang] ??= import(`./languages/${lang}.js`))) : lang,
84
+ // make a fast shallow copy to bee able to splice lang without change the original one
85
+ arr = [...typeof lang === 'string' ? data.default : lang.sub];
86
+
87
+ while (i &lt; src.length) {
88
+ first.index = null;
89
+ for (m = arr.length; m-- > 0;) {
90
+ part = arr[m].expand ? expandData[arr[m].expand] : arr[m];
91
+ // do not call again exec if the previous result is sufficient
92
+ if (cache[m] === undefined || cache[m].match.index &lt; i) {
93
+ part.match.lastIndex = i;
94
+ match = part.match.exec(src);
95
+ if (match === null) {
96
+ // no more match with this regex can be disposed
97
+ arr.splice(m, 1);
98
+ cache.splice(m, 1);
99
+ continue;
100
+ }
101
+ // save match for later use to decrease performance cost
102
+ cache[m] = { match, lastIndex: part.match.lastIndex };
103
+ }
104
+ // check if it the first match in the string
105
+ if (cache[m].match[0] &amp;&amp; (cache[m].match.index &lt;= first.index || first.index === null))
106
+ first = {
107
+ part: part,
108
+ index: cache[m].match.index,
109
+ match: cache[m].match[0],
110
+ end: cache[m].lastIndex
111
+ }
112
+ }
113
+ if (first.index === null)
114
+ break;
115
+ token(src.slice(i, first.index), data.type);
116
+ i = first.end;
117
+ if (first.part.sub)
118
+ await tokenize(first.match, typeof first.part.sub === 'string' ? first.part.sub : (typeof first.part.sub === 'function' ? first.part.sub(first.match) : first.part), token);
119
+ else
120
+ token(first.match, first.part.type);
121
+ }
122
+ token(src.slice(i, src.length), data.type);
123
+ }
124
+ catch {
125
+ token(src);
126
+ }
127
+ }
128
+
129
+ /**
130
+ * @typedef {Object} HighlightOptions
131
+ * @property {Boolean} [hideLineNumbers=false] Indicates whether to hide line numbers
132
+ */
133
+
134
+ /**
135
+ * @function highlightText
136
+ * @async
137
+ * Highlight a string passed as argument and return it
138
+ * @example
139
+ * elm.innerHTML = await highlightText(code, 'js');
140
+ * @param {String} src The code
141
+ * @param {String} lang The language of the code
142
+ * @param {Boolean} [multiline=true] If it is multiline, it will add a wrapper for the line numbering and header
143
+ * @param {HighlightOptions} [opt={}] Customization options
144
+ * @returns {String} The highlighted string
145
+ */
146
+ export async function highlightText(src, lang, multiline = true, opt = {}) {
147
+ let tmp = ''
148
+ await tokenize(src, lang, (str, type) => tmp += toSpan(sanitize(str), type))
149
+
150
+ return multiline
151
+ ? `&lt;div>&lt;div class="shj-numbers">${'&lt;div>&lt;/div>'.repeat(!opt.hideLineNumbers &amp;&amp; src.split('\n').length)}&lt;/div>&lt;div>${tmp}&lt;/div>&lt;/div>`
152
+ : tmp;
153
+ }
154
+
155
+ /**
156
+ * @function highlightElement
157
+ * @async
158
+ * Highlight a DOM element by getting the new innerHTML with highlightText
159
+ * @param {HTMLElement} elm The DOM element
160
+ * @param {String} [lang] The language of the code (seaching by default on `elm` for a 'shj-lang-' class)
161
+ * @param {String} [mode] The display mode (guessed by default)
162
+ * * inline inside `code` element
163
+ * * oneline inside `div` element and containing only one line
164
+ * * multiline inside `div` element
165
+ * @param {HighlightOptions} [opt={}] Customization options
166
+ */
167
+ export async function highlightElement(elm, lang = elm.className.match(/shj-lang-([\w-]+)/)?.[1], mode, opt) {
168
+ let txt = elm.textContent;
169
+ mode ??= `${elm.tagName == 'CODE' ? 'in' : (txt.split('\n').length &lt; 2 ? 'one' : 'multi')}line`;
170
+ elm.dataset.lang = lang;
171
+ elm.className = `${[...elm.classList].filter(className => !className.startsWith('shj-') || className.startsWith('shj-mode-')).join(' ')} shj-lang-${lang} shj-${mode}`;
172
+ elm.innerHTML = await highlightText(txt, lang, mode == 'multiline', opt);
173
+ }
174
+
175
+ /**
176
+ * @function highlightAll
177
+ * @async
178
+ * Call highlightElement on element with a css class starting with `shj-lang-`
179
+ * @param {HighlightOptions} [opt={}] Customization options
180
+ */
181
+ export let highlightAll = async (opt) =>
182
+ document
183
+ .querySelectorAll('[class*="shj-lang-"]')
184
+ .forEach(elm => highlightElement(elm, undefined, undefined, opt))
185
+ </code></pre>
186
+ </figure>
187
+
188
+
189
+
190
+
191
+
192
+ </main>
193
+ <footer id='page-footer'>
194
+ <small>Documentation generated by <a href='https://github.com/jsdoc/jsdoc' rel='noreferrer noopener' target='_blank'>JSDoc 3.6.7</a>.</small>
195
+ <small style='margin-left: 1em;'>Design by <a
196
+ href='https://github.com/AlexisPuga'
197
+ target='_blank'
198
+ rel="noopener noreferrer">Alexis Puga</a>.</small>
199
+ </footer>
200
+ </div>
201
+ </div>
202
+ <script src='js/jsdoc-template.js' async></script>
203
+
204
+ <script src='js/prettify.min.js' async></script>
205
+ <link rel='stylesheet' type='text/css' href='css/tomorrow.min.css'/>
206
+
207
+
208
+ </body>
209
+ </html>
@@ -0,0 +1,2 @@
1
+ !function(t){var e={};function n(a){if(e[a])return e[a].exports;var r=e[a]={i:a,l:!1,exports:{}};return t[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=t,n.c=e,n.d=function(t,e,a){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)n.d(a,r,function(e){return t[e]}.bind(null,r));return a},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=1)}([function(t,e){e.toArray=function(t){return[].slice.call(t)},e.find=function(t,n){return e.toArray((n||document).querySelectorAll(String(t)))},e.findParent=function(t,e){for(var n=t;(n=n.parentNode)&&!e.call(n););return n},e.on=function(t,n,a,r){"string"==typeof t&&(t=e.find(t)),Array.isArray(t)||(t=[t]),Array.isArray(n)||(n=[n]),t.forEach(function(t){n.forEach(function(e){t.addEventListener(e,a,r||!1)})})},e.onState=function(t,n,a,r){return e.on(t,":"+n,a,r)},e.onGlobalState=function(t,n,a){var r=e.getGlobalStates()[t],o=e.getGlobalElement();return e.onState(o,r,n,a)},e.hasState=function(t,e){return t.classList.contains(e)},e.hasGlobalState=function(t){return e.hasState(e.getGlobalElement(),t)},e.getGlobalElement=function(){return document.body},e.triggerCustomEvent=function(t,e,n){return t.dispatchEvent(new CustomEvent(e,n))},e.triggerState=function(t,n,a,r){return e.triggerCustomEvent(t,":"+n,{detail:{action:a,data:r}})},e.triggerGlobalState=function(t,n,a){return e.triggerState(e.getGlobalElement(),t,n,a)},e.getRawState=function(t,e){return t.getAttribute(e)},e.changeState=function(t,n,a,r){var o,i="data-s-"+n;return a||(a=e.getRawState(t,i))||(a="is-active"),!!/(add|remove|toggle)/.test(n)&&((o=!1!==e.triggerState(t,a,n,r))&&t.classList[n](a),o)},e.addState=function(t,n,a){return e.changeState(t,"add",n,a)},e.addGlobalState=function(t,n,a){return e.addState(e.getGlobalElement(),"add",n,a)},e.removeState=function(t,n,a){return e.changeState(t,"remove",n,a)},e.removeGlobalState=function(t,n,a){return e.removeState(e.getGlobalElement(),"remove",n,a)},e.toggleState=function(t,n,a){return e.changeState(t,"toggle",n,a)},e.toggleGlobalState=function(t,n,a){return e.toggleState(e.getGlobalElement(),"toggle",n,a)},e.getStates=function(t,n){var a,r=e.getRawState(t,n||"data-s");try{a=JSON.parse(r)}catch(t){return{}}return a instanceof Object?a:{}},e.getState=function(t,n,a){return e.getStates(t,n,a)},e.getGlobalStates=function(t){return e.getStates(e.getGlobalElement(),t||"data-gs")},e.changeGlobalState=function(t,n,a){return e.changeState(e.getGlobalElement(),t,n,a)},e.escapeRegExp=function(t){return t.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")}},function(t,e,n){"use strict";n.r(e);var a,r;n(2),n(3),n(4),n(5),n(6),n(7);a=n(0),r=function(){var t=location.href.split(/.+\//)[1];a.find('nav li > a[href="'+t+'"]').forEach(function(t){a.addState(t.parentNode)})},a.on(window,"hashchange",function(){a.find("nav li.is-active > a").forEach(function(t){a.removeState(t.parentNode)}),r()}),a.on("a","click",function(){var t=a.find("#page-header-opener")[0];this.hash&&a.hasState(t,"is-active")&&t.click()}),r()},function(t,e,n){},function(t,e,n){},function(t,e,n){var a,r;a=n(0),r=a.getGlobalStates(),a.onState("[data-gs-toggle]","is-active",function(){var t=r[a.getRawState(this,"data-gs-toggle")];a.changeGlobalState("toggle",t)})},function(t,e,n){var a;(a=n(0)).on("[data-gs-toggle]","click",function(){a.toggleState(this)})},function(t,e,n){var a,r;a=n(0),r=a.getGlobalStates(),a.on("input[data-internal-search]",["input","focus","blur"],function(t){var e=this.value.trim(),n=this.getAttribute("data-internal-search"),o=new RegExp("^"+a.escapeRegExp(e),"igm"),i=a.find(n),l="blur"!==t.type,u=e;a.changeGlobalState(u?"add":"remove",r.searching),i.forEach(function(t){var n=t.textContent;o.test(n)&&l?(t.innerHTML=n.replace(o,"<b>"+n.slice(0,e.length)+"</b>"),a.findParent(t.firstChild,function(){return a.addState(this,"matches"),/ul|ol/i.test(this.tagName)})):(t.innerHTML=n,l&&a.findParent(t.firstChild,function(){return!!/ul|ol/i.test(this.tagName)||(a.removeState(this,"matches"),!1)}))})})},function(t,e){window.addEventListener("load",function(){var t,e,n,a,r=document.getElementsByClassName("prettyprint source linenums"),o=0,i=0;if(r&&r[0])for(a=document.location.hash.substring(1),n=(e=r[0].getElementsByTagName("li")).length;o<n;o++)t="line"+ ++i,e[o].id=t,t===a&&(e[o].className+=" selected",e[o].scrollIntoView())})}]);
2
+ //# sourceMappingURL=jsdoc-template.js.map