presently 0.1.0
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.
- checksums.yaml +7 -0
- data/bin/presently +13 -0
- data/lib/presently/application.rb +104 -0
- data/lib/presently/clock.rb +77 -0
- data/lib/presently/display_view.rb +73 -0
- data/lib/presently/environment/application.rb +62 -0
- data/lib/presently/page.rb +38 -0
- data/lib/presently/page.xrb +31 -0
- data/lib/presently/presentation.rb +72 -0
- data/lib/presently/presentation_controller.rb +181 -0
- data/lib/presently/presenter_view.rb +264 -0
- data/lib/presently/slide.rb +148 -0
- data/lib/presently/slide_view.rb +92 -0
- data/lib/presently/state.rb +66 -0
- data/lib/presently/version.rb +9 -0
- data/lib/presently.rb +9 -0
- data/license.md +21 -0
- data/public/_components/@socketry/syntax/Syntax/CodeElement.js +337 -0
- data/public/_components/@socketry/syntax/Syntax/Errors.js +52 -0
- data/public/_components/@socketry/syntax/Syntax/Language/apache.js +49 -0
- data/public/_components/@socketry/syntax/Syntax/Language/applescript.js +157 -0
- data/public/_components/@socketry/syntax/Syntax/Language/assembly.js +42 -0
- data/public/_components/@socketry/syntax/Syntax/Language/bash-script.js +108 -0
- data/public/_components/@socketry/syntax/Syntax/Language/bash.js +32 -0
- data/public/_components/@socketry/syntax/Syntax/Language/basic.js +232 -0
- data/public/_components/@socketry/syntax/Syntax/Language/c++.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/c.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/clang.js +201 -0
- data/public/_components/@socketry/syntax/Syntax/Language/cpp.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/csharp.js +166 -0
- data/public/_components/@socketry/syntax/Syntax/Language/css.js +244 -0
- data/public/_components/@socketry/syntax/Syntax/Language/diff.js +24 -0
- data/public/_components/@socketry/syntax/Syntax/Language/go.js +135 -0
- data/public/_components/@socketry/syntax/Syntax/Language/haskell.js +110 -0
- data/public/_components/@socketry/syntax/Syntax/Language/html.js +69 -0
- data/public/_components/@socketry/syntax/Syntax/Language/io.js +68 -0
- data/public/_components/@socketry/syntax/Syntax/Language/java.js +134 -0
- data/public/_components/@socketry/syntax/Syntax/Language/javascript.js +89 -0
- data/public/_components/@socketry/syntax/Syntax/Language/json.js +36 -0
- data/public/_components/@socketry/syntax/Syntax/Language/lisp.js +38 -0
- data/public/_components/@socketry/syntax/Syntax/Language/lua.js +87 -0
- data/public/_components/@socketry/syntax/Syntax/Language/markdown.js +112 -0
- data/public/_components/@socketry/syntax/Syntax/Language/nginx.js +37 -0
- data/public/_components/@socketry/syntax/Syntax/Language/objective-c.js +1 -0
- data/public/_components/@socketry/syntax/Syntax/Language/ocaml.js +225 -0
- data/public/_components/@socketry/syntax/Syntax/Language/pascal.js +166 -0
- data/public/_components/@socketry/syntax/Syntax/Language/patch.js +2 -0
- data/public/_components/@socketry/syntax/Syntax/Language/perl5.js +317 -0
- data/public/_components/@socketry/syntax/Syntax/Language/php-script.js +112 -0
- data/public/_components/@socketry/syntax/Syntax/Language/php.js +18 -0
- data/public/_components/@socketry/syntax/Syntax/Language/plain.js +20 -0
- data/public/_components/@socketry/syntax/Syntax/Language/protobuf.js +77 -0
- data/public/_components/@socketry/syntax/Syntax/Language/python.js +208 -0
- data/public/_components/@socketry/syntax/Syntax/Language/ruby.js +124 -0
- data/public/_components/@socketry/syntax/Syntax/Language/scala.js +81 -0
- data/public/_components/@socketry/syntax/Syntax/Language/smalltalk.js +30 -0
- data/public/_components/@socketry/syntax/Syntax/Language/sql.js +865 -0
- data/public/_components/@socketry/syntax/Syntax/Language/super-collider.js +70 -0
- data/public/_components/@socketry/syntax/Syntax/Language/swift.js +176 -0
- data/public/_components/@socketry/syntax/Syntax/Language/xml.js +76 -0
- data/public/_components/@socketry/syntax/Syntax/Language/xrb.js +33 -0
- data/public/_components/@socketry/syntax/Syntax/Language/yaml.js +29 -0
- data/public/_components/@socketry/syntax/Syntax/Language.js +276 -0
- data/public/_components/@socketry/syntax/Syntax/Loader.js +78 -0
- data/public/_components/@socketry/syntax/Syntax/Match.js +546 -0
- data/public/_components/@socketry/syntax/Syntax/Rule.js +306 -0
- data/public/_components/@socketry/syntax/Syntax.js +356 -0
- data/public/_components/@socketry/syntax/bin/syntax-ast.js +42 -0
- data/public/_components/@socketry/syntax/examples/_template.html +53 -0
- data/public/_components/@socketry/syntax/examples/apache.html +72 -0
- data/public/_components/@socketry/syntax/examples/applescript.html +72 -0
- data/public/_components/@socketry/syntax/examples/assembly.html +74 -0
- data/public/_components/@socketry/syntax/examples/bash.html +90 -0
- data/public/_components/@socketry/syntax/examples/basic.html +87 -0
- data/public/_components/@socketry/syntax/examples/c.html +141 -0
- data/public/_components/@socketry/syntax/examples/clang.html +202 -0
- data/public/_components/@socketry/syntax/examples/csharp.html +110 -0
- data/public/_components/@socketry/syntax/examples/css-colors.html +179 -0
- data/public/_components/@socketry/syntax/examples/custom-theme.html +155 -0
- data/public/_components/@socketry/syntax/examples/diff.html +142 -0
- data/public/_components/@socketry/syntax/examples/examples.css +216 -0
- data/public/_components/@socketry/syntax/examples/go.html +413 -0
- data/public/_components/@socketry/syntax/examples/haskell.html +373 -0
- data/public/_components/@socketry/syntax/examples/html.html +316 -0
- data/public/_components/@socketry/syntax/examples/index.html +97 -0
- data/public/_components/@socketry/syntax/examples/io.html +552 -0
- data/public/_components/@socketry/syntax/examples/java.html +786 -0
- data/public/_components/@socketry/syntax/examples/javascript.html +199 -0
- data/public/_components/@socketry/syntax/examples/json.html +150 -0
- data/public/_components/@socketry/syntax/examples/lisp.html +476 -0
- data/public/_components/@socketry/syntax/examples/lua.html +737 -0
- data/public/_components/@socketry/syntax/examples/markdown.html +121 -0
- data/public/_components/@socketry/syntax/examples/mixed.html +306 -0
- data/public/_components/@socketry/syntax/examples/nginx.html +554 -0
- data/public/_components/@socketry/syntax/examples/ocaml.html +596 -0
- data/public/_components/@socketry/syntax/examples/pascal.html +762 -0
- data/public/_components/@socketry/syntax/examples/perl5.html +488 -0
- data/public/_components/@socketry/syntax/examples/php-script.html +142 -0
- data/public/_components/@socketry/syntax/examples/php.html +95 -0
- data/public/_components/@socketry/syntax/examples/plain.html +222 -0
- data/public/_components/@socketry/syntax/examples/protobuf.html +405 -0
- data/public/_components/@socketry/syntax/examples/python.html +82 -0
- data/public/_components/@socketry/syntax/examples/readme.md +79 -0
- data/public/_components/@socketry/syntax/examples/ruby.html +58 -0
- data/public/_components/@socketry/syntax/examples/scala.html +41 -0
- data/public/_components/@socketry/syntax/examples/smalltalk.html +436 -0
- data/public/_components/@socketry/syntax/examples/sql.html +373 -0
- data/public/_components/@socketry/syntax/examples/super-collider.html +55 -0
- data/public/_components/@socketry/syntax/examples/swift.html +176 -0
- data/public/_components/@socketry/syntax/examples/wrap-demo.html +103 -0
- data/public/_components/@socketry/syntax/examples/xml.html +112 -0
- data/public/_components/@socketry/syntax/examples/xrb.html +37 -0
- data/public/_components/@socketry/syntax/examples/yaml.html +72 -0
- data/public/_components/@socketry/syntax/license.md +21 -0
- data/public/_components/@socketry/syntax/package-lock.json +834 -0
- data/public/_components/@socketry/syntax/package.json +43 -0
- data/public/_components/@socketry/syntax/readme.md +162 -0
- data/public/_components/@socketry/syntax/test/Syntax/CodeElement.js +306 -0
- data/public/_components/@socketry/syntax/test/Syntax/ErrorHandling.js +85 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/apache.js +153 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/applescript.js +198 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/assembly.js +209 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/bash-script.js +225 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/bash.js +162 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/basic.js +265 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/clang.js +390 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/csharp.js +436 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/css.js +431 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/diff.js +206 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/go.js +386 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/haskell.js +454 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/html.js +111 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/io.js +229 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/java.js +362 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/javascript.js +101 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/json.js +101 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/lisp.js +224 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/lua.js +307 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/markdown.js +163 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/nginx.js +267 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/ocaml.js +299 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/pascal.js +311 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/perl5.js +333 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/php-script.js +197 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/php.js +92 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/plain.js +327 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/protobuf.js +294 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/python.js +213 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/ruby.js +70 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/scala.js +75 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/smalltalk.js +223 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/sql.js +281 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/super-collider.js +66 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/swift.js +71 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/xml.js +170 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/xrb.js +57 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language/yaml.js +123 -0
- data/public/_components/@socketry/syntax/test/Syntax/Language.js +62 -0
- data/public/_components/@socketry/syntax/test/Syntax/Match.js +40 -0
- data/public/_components/@socketry/syntax/test/Syntax/Rule.js +251 -0
- data/public/_components/@socketry/syntax/test/Syntax.js +38 -0
- data/public/_components/@socketry/syntax/test/helpers/ast-matcher.js +90 -0
- data/public/_components/@socketry/syntax/themes/base/apache.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/applescript.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/assembly.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/bash.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/basic.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/c.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/clang.css +0 -0
- data/public/_components/@socketry/syntax/themes/base/csharp.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/css.css +22 -0
- data/public/_components/@socketry/syntax/themes/base/diff.css +48 -0
- data/public/_components/@socketry/syntax/themes/base/go.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/haskell.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/html.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/io.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/java.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/javascript.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/json.css +41 -0
- data/public/_components/@socketry/syntax/themes/base/lisp.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/lua.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/markdown.css +16 -0
- data/public/_components/@socketry/syntax/themes/base/nginx.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/ocaml.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/pascal.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/perl5.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/php-script.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/php.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/plain.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/protobuf.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/python.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/ruby.css +23 -0
- data/public/_components/@socketry/syntax/themes/base/scala.css +3 -0
- data/public/_components/@socketry/syntax/themes/base/smalltalk.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/sql.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/super-collider.css +33 -0
- data/public/_components/@socketry/syntax/themes/base/swift.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/syntax.css +63 -0
- data/public/_components/@socketry/syntax/themes/base/xml.css +1 -0
- data/public/_components/@socketry/syntax/themes/base/xrb.css +29 -0
- data/public/_components/@socketry/syntax/themes/base/yaml.css +1 -0
- data/public/_components/@socketry/syntax/themes/theming.md +233 -0
- data/public/_components/@socketry/syntax/update-examples.js +135 -0
- data/public/_static/index.css +593 -0
- data/public/application.js +147 -0
- data/readme.md +69 -0
- data/releases.md +3 -0
- data/templates/code.xrb +12 -0
- data/templates/default.xrb +5 -0
- data/templates/image.xrb +8 -0
- data/templates/section.xrb +5 -0
- data/templates/title.xrb +8 -0
- data/templates/translation.xrb +8 -0
- data/templates/two_column.xrb +8 -0
- metadata +280 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Markdown Examples - @socketry/syntax</title>
|
|
7
|
+
<link rel="stylesheet" href="examples.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<header>
|
|
11
|
+
<h1>Markdown Examples</h1>
|
|
12
|
+
<p class="subtitle">Markdown syntax with clickable links</p>
|
|
13
|
+
</header>
|
|
14
|
+
|
|
15
|
+
<nav>
|
|
16
|
+
<a href="index.html">Back to Examples</a>
|
|
17
|
+
<a href="javascript.html">JavaScript</a>
|
|
18
|
+
<a href="python.html">Python</a>
|
|
19
|
+
</nav>
|
|
20
|
+
|
|
21
|
+
<div class="example">
|
|
22
|
+
<h2>Complete Markdown Document</h2>
|
|
23
|
+
<p class="description">A full markdown document with various elements:</p>
|
|
24
|
+
|
|
25
|
+
<pre><code class="language-markdown"># Main Heading
|
|
26
|
+
|
|
27
|
+
This is a paragraph with **bold text**, *italic text*, and `inline code`.
|
|
28
|
+
|
|
29
|
+
## Subheading
|
|
30
|
+
|
|
31
|
+
Here's a [link to example](https://example.com) and an .
|
|
32
|
+
|
|
33
|
+
### Code Block
|
|
34
|
+
|
|
35
|
+
```javascript
|
|
36
|
+
const greeting = "Hello, World!";
|
|
37
|
+
console.log(greeting);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Lists
|
|
41
|
+
|
|
42
|
+
- Unordered item 1
|
|
43
|
+
- Unordered item 2
|
|
44
|
+
- Nested item
|
|
45
|
+
|
|
46
|
+
1. Ordered item 1
|
|
47
|
+
2. Ordered item 2
|
|
48
|
+
|
|
49
|
+
### Blockquote
|
|
50
|
+
|
|
51
|
+
> This is a quoted text.
|
|
52
|
+
> It can span multiple lines.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
That's a horizontal rule above.
|
|
57
|
+
</code></pre>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="example">
|
|
61
|
+
<h2>Headers</h2>
|
|
62
|
+
<p class="description">Different heading levels:</p>
|
|
63
|
+
|
|
64
|
+
<pre><code class="language-markdown"># Heading 1
|
|
65
|
+
## Heading 2
|
|
66
|
+
### Heading 3
|
|
67
|
+
#### Heading 4
|
|
68
|
+
##### Heading 5
|
|
69
|
+
###### Heading 6
|
|
70
|
+
</code></pre>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<div class="example">
|
|
74
|
+
<h2>Text Formatting</h2>
|
|
75
|
+
<p class="description">Bold, italic, and code:</p>
|
|
76
|
+
|
|
77
|
+
<pre><code class="language-markdown">**Bold with asterisks**
|
|
78
|
+
__Bold with underscores__
|
|
79
|
+
|
|
80
|
+
*Italic with asterisks*
|
|
81
|
+
_Italic with underscores_
|
|
82
|
+
|
|
83
|
+
`Inline code`
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Code block
|
|
87
|
+
Multiple lines
|
|
88
|
+
```
|
|
89
|
+
</code></pre>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div class="example">
|
|
93
|
+
<h2>Links and Images</h2>
|
|
94
|
+
<p class="description">Markdown link and image syntax (links are clickable!):</p>
|
|
95
|
+
|
|
96
|
+
<pre><code class="language-markdown">[Link text](https://example.com)
|
|
97
|
+
[Link with title](https://example.com "Title")
|
|
98
|
+
|
|
99
|
+

|
|
100
|
+

|
|
101
|
+
|
|
102
|
+
Plain URLs are also clickable:
|
|
103
|
+
https://github.com/socketry/syntax-js
|
|
104
|
+
http://example.com/path?query=value
|
|
105
|
+
</code></pre>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<script type="module">
|
|
109
|
+
import Syntax from '../Syntax.js';
|
|
110
|
+
import registerMarkdown from '../Syntax/Language/markdown.js';
|
|
111
|
+
|
|
112
|
+
// Register the Markdown language
|
|
113
|
+
registerMarkdown(Syntax.default);
|
|
114
|
+
|
|
115
|
+
// Automatically upgrade code blocks
|
|
116
|
+
document.addEventListener('DOMContentLoaded', async function() {
|
|
117
|
+
await Syntax.highlight();
|
|
118
|
+
});
|
|
119
|
+
</script>
|
|
120
|
+
</body>
|
|
121
|
+
</html>
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Mixed Languages Examples - @socketry/syntax</title>
|
|
7
|
+
<link rel="stylesheet" href="examples.css">
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<header>
|
|
11
|
+
<h1>Mixed Languages Examples</h1>
|
|
12
|
+
<p class="subtitle">Mixed Languages syntax highlighting</p>
|
|
13
|
+
</header>
|
|
14
|
+
|
|
15
|
+
<nav>
|
|
16
|
+
<a href="index.html">Back to Examples</a>
|
|
17
|
+
</nav>
|
|
18
|
+
|
|
19
|
+
<h1>Mixed Content Examples</h1>
|
|
20
|
+
|
|
21
|
+
<nav>
|
|
22
|
+
<a href="index.html">← Back</a>
|
|
23
|
+
<a href="javascript.html">JavaScript</a>
|
|
24
|
+
<a href="html.html">HTML</a>
|
|
25
|
+
</nav>
|
|
26
|
+
|
|
27
|
+
<div class="example">
|
|
28
|
+
<h2>HTML with Embedded JavaScript</h2>
|
|
29
|
+
<p class="description">JavaScript code inside <script> tags is highlighted with JavaScript syntax:</p>
|
|
30
|
+
|
|
31
|
+
<syntax-code language="html">
|
|
32
|
+
<!DOCTYPE html>
|
|
33
|
+
<html lang="en">
|
|
34
|
+
<head>
|
|
35
|
+
<meta charset="UTF-8">
|
|
36
|
+
<title>Interactive Page</title>
|
|
37
|
+
<script>
|
|
38
|
+
// This JavaScript code is highlighted!
|
|
39
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
40
|
+
const button = document.querySelector('#myButton');
|
|
41
|
+
const counter = { count: 0 };
|
|
42
|
+
|
|
43
|
+
button.addEventListener('click', () => {
|
|
44
|
+
counter.count++;
|
|
45
|
+
console.log(`Clicked ${counter.count} times`);
|
|
46
|
+
|
|
47
|
+
// Update the UI
|
|
48
|
+
button.textContent = `Clicks: ${counter.count}`;
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
</script>
|
|
52
|
+
</head>
|
|
53
|
+
<body>
|
|
54
|
+
<h1>Click Counter</h1>
|
|
55
|
+
<button id="myButton">Click Me!</button>
|
|
56
|
+
</body>
|
|
57
|
+
</html>
|
|
58
|
+
</syntax-code>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="example">
|
|
62
|
+
<h2>Multiple Script Blocks</h2>
|
|
63
|
+
<p class="description">Multiple <script> tags with different content:</p>
|
|
64
|
+
|
|
65
|
+
<syntax-code language="html">
|
|
66
|
+
<!DOCTYPE html>
|
|
67
|
+
<html>
|
|
68
|
+
<head>
|
|
69
|
+
<!-- External script -->
|
|
70
|
+
<script src="https://cdn.example.com/library.js"></script>
|
|
71
|
+
|
|
72
|
+
<!-- Module script -->
|
|
73
|
+
<script type="module">
|
|
74
|
+
import { helper } from './utils.js';
|
|
75
|
+
|
|
76
|
+
class App {
|
|
77
|
+
constructor() {
|
|
78
|
+
this.data = [];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async init() {
|
|
82
|
+
const response = await fetch('/api/data');
|
|
83
|
+
this.data = await response.json();
|
|
84
|
+
this.render();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const app = new App();
|
|
89
|
+
app.init();
|
|
90
|
+
</script>
|
|
91
|
+
|
|
92
|
+
<!-- Inline event handler (old style) -->
|
|
93
|
+
<script>
|
|
94
|
+
function handleClick(event) {
|
|
95
|
+
alert('Button clicked!');
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
</script>
|
|
99
|
+
</head>
|
|
100
|
+
<body>
|
|
101
|
+
<button onclick="handleClick(event)">Old Style Handler</button>
|
|
102
|
+
</body>
|
|
103
|
+
</html>
|
|
104
|
+
</syntax-code>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
<div class="example">
|
|
108
|
+
<h2>ES6 Modules in HTML</h2>
|
|
109
|
+
<p class="description">Modern JavaScript modules with imports:</p>
|
|
110
|
+
|
|
111
|
+
<syntax-code language="html">
|
|
112
|
+
<!DOCTYPE html>
|
|
113
|
+
<html lang="en">
|
|
114
|
+
<head>
|
|
115
|
+
<meta charset="UTF-8">
|
|
116
|
+
<title>ES Module Example</title>
|
|
117
|
+
</head>
|
|
118
|
+
<body>
|
|
119
|
+
<div id="app"></div>
|
|
120
|
+
|
|
121
|
+
<script type="module">
|
|
122
|
+
// Dynamic imports
|
|
123
|
+
const { createApp } = await import('./framework.js');
|
|
124
|
+
|
|
125
|
+
// App component
|
|
126
|
+
const app = createApp({
|
|
127
|
+
data() {
|
|
128
|
+
return {
|
|
129
|
+
message: 'Hello, World!',
|
|
130
|
+
count: 0
|
|
131
|
+
};
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
methods: {
|
|
135
|
+
increment() {
|
|
136
|
+
this.count++;
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
template: `
|
|
141
|
+
<div>
|
|
142
|
+
<h1>{{ message }}</h1>
|
|
143
|
+
<p>Count: {{ count }}</p>
|
|
144
|
+
<button @click="increment">Increment</button>
|
|
145
|
+
</div>
|
|
146
|
+
`
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
app.mount('#app');
|
|
150
|
+
</script>
|
|
151
|
+
</body>
|
|
152
|
+
</html>
|
|
153
|
+
</syntax-code>
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
<div class="example">
|
|
157
|
+
<h2>Web Components</h2>
|
|
158
|
+
<p class="description">Custom elements with JavaScript:</p>
|
|
159
|
+
|
|
160
|
+
<syntax-code language="html">
|
|
161
|
+
<!DOCTYPE html>
|
|
162
|
+
<html lang="en">
|
|
163
|
+
<head>
|
|
164
|
+
<meta charset="UTF-8">
|
|
165
|
+
<title>Web Components</title>
|
|
166
|
+
<script>
|
|
167
|
+
class MyCounter extends HTMLElement {
|
|
168
|
+
#count = 0;
|
|
169
|
+
#shadow;
|
|
170
|
+
|
|
171
|
+
constructor() {
|
|
172
|
+
super();
|
|
173
|
+
this.#shadow = this.attachShadow({ mode: 'open' });
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
connectedCallback() {
|
|
177
|
+
this.render();
|
|
178
|
+
this.#shadow.querySelector('button').addEventListener('click', () => {
|
|
179
|
+
this.#count++;
|
|
180
|
+
this.render();
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
render() {
|
|
185
|
+
this.#shadow.innerHTML = `
|
|
186
|
+
<style>
|
|
187
|
+
:host { display: block; padding: 1rem; }
|
|
188
|
+
button { padding: 0.5rem 1rem; }
|
|
189
|
+
</style>
|
|
190
|
+
<div>
|
|
191
|
+
<p>Count: ${this.#count}</p>
|
|
192
|
+
<button>Increment</button>
|
|
193
|
+
</div>
|
|
194
|
+
`;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
customElements.define('my-counter', MyCounter);
|
|
199
|
+
</script>
|
|
200
|
+
</head>
|
|
201
|
+
<body>
|
|
202
|
+
<h1>Custom Counter Element</h1>
|
|
203
|
+
<my-counter></my-counter>
|
|
204
|
+
<my-counter></my-counter>
|
|
205
|
+
</body>
|
|
206
|
+
</html>
|
|
207
|
+
</syntax-code>
|
|
208
|
+
</div>
|
|
209
|
+
|
|
210
|
+
<div class="example">
|
|
211
|
+
<h2>Async Script Loading</h2>
|
|
212
|
+
<p class="description">Different script loading strategies:</p>
|
|
213
|
+
|
|
214
|
+
<syntax-code language="html">
|
|
215
|
+
<!DOCTYPE html>
|
|
216
|
+
<html lang="en">
|
|
217
|
+
<head>
|
|
218
|
+
<meta charset="UTF-8">
|
|
219
|
+
<title>Script Loading Strategies</title>
|
|
220
|
+
|
|
221
|
+
<!-- Regular blocking script -->
|
|
222
|
+
<script src="critical.js"></script>
|
|
223
|
+
|
|
224
|
+
<!-- Async: Download in parallel, execute ASAP -->
|
|
225
|
+
<script async src="analytics.js"></script>
|
|
226
|
+
|
|
227
|
+
<!-- Defer: Download in parallel, execute after DOM ready -->
|
|
228
|
+
<script defer src="app.js"></script>
|
|
229
|
+
|
|
230
|
+
<!-- Module: Always deferred by default -->
|
|
231
|
+
<script type="module" src="main.js"></script>
|
|
232
|
+
|
|
233
|
+
<!-- Inline with initialization -->
|
|
234
|
+
<script>
|
|
235
|
+
window.APP_CONFIG = {
|
|
236
|
+
apiUrl: 'https://api.example.com',
|
|
237
|
+
version: '1.0.0',
|
|
238
|
+
features: {
|
|
239
|
+
analytics: true,
|
|
240
|
+
darkMode: true
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
</script>
|
|
244
|
+
</head>
|
|
245
|
+
<body>
|
|
246
|
+
<div id="root"></div>
|
|
247
|
+
</body>
|
|
248
|
+
</html>
|
|
249
|
+
</syntax-code>
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<div class="example">
|
|
253
|
+
<h2>Template Strings in HTML</h2>
|
|
254
|
+
<p class="description">Using template literals for dynamic content:</p>
|
|
255
|
+
|
|
256
|
+
<syntax-code language="html">
|
|
257
|
+
<!DOCTYPE html>
|
|
258
|
+
<html lang="en">
|
|
259
|
+
<head>
|
|
260
|
+
<meta charset="UTF-8">
|
|
261
|
+
<title>Templates</title>
|
|
262
|
+
</head>
|
|
263
|
+
<body>
|
|
264
|
+
<div id="user-list"></div>
|
|
265
|
+
|
|
266
|
+
<script>
|
|
267
|
+
const users = [
|
|
268
|
+
{ id: 1, name: 'Alice', role: 'Admin' },
|
|
269
|
+
{ id: 2, name: 'Bob', role: 'User' },
|
|
270
|
+
{ id: 3, name: 'Charlie', role: 'Moderator' }
|
|
271
|
+
];
|
|
272
|
+
|
|
273
|
+
function renderUsers(users) {
|
|
274
|
+
return users.map(user => `
|
|
275
|
+
<div class="user-card" data-user-id="${user.id}">
|
|
276
|
+
<h3>${user.name}</h3>
|
|
277
|
+
<span class="badge ${user.role.toLowerCase()}">
|
|
278
|
+
${user.role}
|
|
279
|
+
</span>
|
|
280
|
+
<button onclick="editUser(${user.id})">Edit</button>
|
|
281
|
+
</div>
|
|
282
|
+
`).join('');
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
document.getElementById('user-list').innerHTML = renderUsers(users);
|
|
286
|
+
|
|
287
|
+
function editUser(id) {
|
|
288
|
+
console.log(`Editing user ${id}`);
|
|
289
|
+
}
|
|
290
|
+
</script>
|
|
291
|
+
</body>
|
|
292
|
+
</html>
|
|
293
|
+
</syntax-code>
|
|
294
|
+
</div>
|
|
295
|
+
|
|
296
|
+
<script type="module">
|
|
297
|
+
import Syntax from '../Syntax.js';
|
|
298
|
+
|
|
299
|
+
// Initialize highlighting
|
|
300
|
+
await Syntax.highlight({
|
|
301
|
+
autoUpgrade: true,
|
|
302
|
+
syntax: Syntax.default
|
|
303
|
+
});
|
|
304
|
+
</script>
|
|
305
|
+
</body>
|
|
306
|
+
</html>
|