@speed-highlight/core 1.1.7 → 1.1.9
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.
- package/README.md +56 -9
- package/dist/color.js +1 -0
- package/dist/detect.js +1 -1
- package/dist/index.js +3 -3
- package/dist/languages/c.js +1 -1
- package/dist/languages/go.js +1 -1
- package/dist/languages/http.js +1 -1
- package/dist/languages/java.js +1 -1
- package/dist/languages/js.js +1 -1
- package/dist/languages/leanpub-md.js +1 -1
- package/dist/languages/md.js +2 -2
- package/dist/languages/py.js +1 -1
- package/dist/languages/rs.js +1 -1
- package/dist/languages/ts.js +1 -1
- package/dist/node/color.js +1 -0
- package/dist/node/common.js +1 -1
- package/dist/node/detect.js +1 -1
- package/dist/node/index.js +3 -3
- package/dist/node/languages/asm.js +1 -1
- package/dist/node/languages/bash.js +1 -1
- package/dist/node/languages/bf.js +1 -1
- package/dist/node/languages/c.js +1 -1
- package/dist/node/languages/css.js +1 -1
- package/dist/node/languages/csv.js +1 -1
- package/dist/node/languages/diff.js +1 -1
- package/dist/node/languages/docker.js +1 -1
- package/dist/node/languages/git.js +1 -1
- package/dist/node/languages/go.js +1 -1
- package/dist/node/languages/html.js +1 -1
- package/dist/node/languages/http.js +1 -1
- package/dist/node/languages/ini.js +1 -1
- package/dist/node/languages/java.js +1 -1
- package/dist/node/languages/js.js +1 -1
- package/dist/node/languages/js_template_literals.js +1 -1
- package/dist/node/languages/jsdoc.js +1 -1
- package/dist/node/languages/json.js +1 -1
- package/dist/node/languages/leanpub-md.js +2 -2
- package/dist/node/languages/log.js +1 -1
- package/dist/node/languages/lua.js +1 -1
- package/dist/node/languages/make.js +1 -1
- package/dist/node/languages/md.js +2 -2
- package/dist/node/languages/pl.js +1 -1
- package/dist/node/languages/plain.js +1 -1
- package/dist/node/languages/py.js +1 -1
- package/dist/node/languages/regex.js +1 -1
- package/dist/node/languages/rs.js +1 -1
- package/dist/node/languages/sql.js +1 -1
- package/dist/node/languages/todo.js +1 -1
- package/dist/node/languages/toml.js +1 -1
- package/dist/node/languages/ts.js +1 -1
- package/dist/node/languages/uri.js +1 -1
- package/dist/node/languages/xml.js +1 -1
- package/dist/node/languages/yaml.js +1 -1
- package/dist/node/terminal.js +1 -0
- package/dist/node/themes/atom-dark.js +1 -0
- package/dist/node/themes/default.js +1 -1
- package/dist/terminal.js +1 -0
- package/dist/themes/atom-dark.js +1 -0
- package/dist/themes/default.js +1 -1
- package/doc/common.js.html +87 -0
- package/doc/css/jsdoc-template.css +1 -0
- package/doc/css/tomorrow.min.css +2 -0
- package/doc/detect%0ALanguage%20detectormodule_.html +309 -0
- package/doc/detect.js.html +113 -0
- package/doc/global.html +1826 -0
- package/doc/index%0ABase%20scriptmodule_.html +1179 -0
- package/doc/index.html +402 -0
- package/doc/index.js.html +209 -0
- package/doc/js/jsdoc-template.js +2 -0
- package/doc/js/jsdoc-template.js.map +1 -0
- package/doc/js/prettify.min.js +47 -0
- package/doc/term%0ATerminal%20adaptormodule_.html +596 -0
- package/doc/term.js.html +108 -0
- package/examples/{helper/data.js → data.js} +28 -16
- package/examples/deno.js +53 -7
- package/examples/index.html +10 -7
- package/examples/languages/test.c +1 -1
- package/examples/languages/test.go +4 -4
- package/examples/languages/test.java +3 -3
- package/examples/node.js +1 -1
- package/jsdoc.json +16 -0
- package/package.json +42 -38
- package/src/color.js +11 -0
- package/src/detect.js +21 -5
- package/src/index.js +44 -38
- package/src/languages/c.js +1 -1
- package/src/languages/go.js +1 -1
- package/src/languages/java.js +1 -1
- package/src/languages/js.js +1 -1
- package/src/languages/py.js +1 -1
- package/src/languages/rs.js +1 -1
- package/src/terminal.js +42 -0
- package/src/themes/atom-dark.js +18 -0
- package/src/themes/default.js +16 -24
- package/typedef.js +34 -0
- package/assets/screenshot.png +0 -0
- package/dist/node/term.js +0 -1
- package/dist/term.js +0 -1
- package/examples/dist.html +0 -26
- 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 & 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><link rel="stylesheet" href="/path/dist/themes/default.css">
|
|
75
|
+
</code></pre>
|
|
76
|
+
<p>In the body of your html file:</p>
|
|
77
|
+
<pre class="prettyprint source lang-html"><code><div class='shj-lang-[code-language]'>[code]</div>
|
|
78
|
+
or
|
|
79
|
+
<code class='shj-lang-[code-language]'>[inline code]</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><link rel="stylesheet" href="https://unpkg.com/@speed-highlight/core/dist/themes/default.css">
|
|
94
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/speed-highlight/core/dist/themes/default.css">
|
|
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("hello")', '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("hello")', '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('&', '&#38;').replaceAll?.('<', '&lt;').replaceAll?.('>', '&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 ? `<span class="shj-syn-${token}">${str}</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 < 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 < 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] && (cache[m].match.index <= 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
|
+
? `<div><div class="shj-numbers">${'<div></div>'.repeat(!opt.hideLineNumbers && src.split('\n').length)}</div><div>${tmp}</div></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 < 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
|