utkit 0.1.0__tar.gz → 0.3.0__tar.gz
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.
- utkit-0.3.0/PKG-INFO +17 -0
- utkit-0.3.0/README.md +6 -0
- {utkit-0.1.0 → utkit-0.3.0}/pyproject.toml +2 -1
- {utkit-0.1.0 → utkit-0.3.0}/src/utkit/cli/__init__.py +19 -0
- utkit-0.3.0/src/utkit/communication/mail/__init__.py +0 -0
- utkit-0.3.0/src/utkit/communication/mail/smtp.py +63 -0
- utkit-0.3.0/src/utkit/documentation/.cache/.gitignore +1 -0
- utkit-0.3.0/src/utkit/documentation/.cache/15661711846603463071 +207 -0
- utkit-0.3.0/src/utkit/documentation/.cache/3226154870166803660 +4 -0
- utkit-0.3.0/src/utkit/documentation/.cache/326316130724058699 +176 -0
- utkit-0.3.0/src/utkit/documentation/.cache/3476900567878811119 +4 -0
- utkit-0.3.0/src/utkit/documentation/.cache/3541202890535126406 +95 -0
- utkit-0.3.0/src/utkit/documentation/.cache/9033698058957892258 +4 -0
- utkit-0.3.0/src/utkit/documentation/.github/workflows/docs.yml +29 -0
- utkit-0.3.0/src/utkit/documentation/.gitignore +1 -0
- utkit-0.3.0/src/utkit/documentation/docs/communication/mail.md +143 -0
- utkit-0.3.0/src/utkit/documentation/docs/index.md +68 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/images/favicon.png +0 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/javascripts/LICENSE +29 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/javascripts/bundle.dbc0afdc.min.js +3 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/javascripts/workers/search.e2d2d235.min.js +1 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/stylesheets/classic/main.a2001754.min.css +1 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/stylesheets/classic/palette.7dc9a0ad.min.css +1 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/stylesheets/modern/main.1e981d71.min.css +1 -0
- utkit-0.3.0/src/utkit/documentation/site/assets/stylesheets/modern/palette.dfe2e883.min.css +1 -0
- utkit-0.3.0/src/utkit/documentation/site/communication/mail/index.html +995 -0
- utkit-0.3.0/src/utkit/documentation/site/index.html +697 -0
- utkit-0.3.0/src/utkit/documentation/site/objects.inv +0 -0
- utkit-0.3.0/src/utkit/documentation/site/search.json +1 -0
- utkit-0.3.0/src/utkit/documentation/site/sitemap.xml +13 -0
- utkit-0.3.0/src/utkit/documentation/zensical.toml +351 -0
- utkit-0.1.0/PKG-INFO +0 -10
- {utkit-0.1.0 → utkit-0.3.0}/src/utkit/__init__.py +0 -0
- /utkit-0.1.0/README.md → /utkit-0.3.0/src/utkit/communication/__init__.py +0 -0
utkit-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: utkit
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: core libraries for development
|
|
5
|
+
Author: TINS PJ
|
|
6
|
+
Author-email: TINS PJ <tinspj1997@gmail.com>
|
|
7
|
+
Requires-Dist: typer>=0.20.0
|
|
8
|
+
Requires-Dist: zensical>=0.0.37
|
|
9
|
+
Requires-Python: >=3.12
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
|
|
12
|
+
uv build
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
uv version --bump minor
|
|
16
|
+
|
|
17
|
+
uv publish --username __token__ --password pypi-AgEIcHlwaS5vcmcCJDQ4NTQ4Yjc0LTE5NjMtNDI0Ny1iMWE3LTljMTE1OTNhOTQzOAACKlszLCI5YjY0M2VmZC0wMzk4LTQ1MzItYWFjYi03YzhmOTg0ZTJjM2QiXQAABiBILwZri7R_gbslfvDTm4PkeMccTpigF8atUyjt4pPZjg
|
utkit-0.3.0/README.md
ADDED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "utkit"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "core libraries for development"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -9,6 +9,7 @@ authors = [
|
|
|
9
9
|
requires-python = ">=3.12"
|
|
10
10
|
dependencies = [
|
|
11
11
|
"typer>=0.20.0",
|
|
12
|
+
"zensical>=0.0.37",
|
|
12
13
|
]
|
|
13
14
|
|
|
14
15
|
[project.scripts]
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
from pathlib import Path
|
|
3
|
+
|
|
1
4
|
import typer
|
|
2
5
|
from importlib.metadata import version as get_version
|
|
3
6
|
|
|
@@ -29,5 +32,21 @@ def version() -> None:
|
|
|
29
32
|
typer.echo(f"utkit v{get_version('utkit')}")
|
|
30
33
|
|
|
31
34
|
|
|
35
|
+
@app.command()
|
|
36
|
+
def docs() -> None:
|
|
37
|
+
"""Serve the utkit documentation locally on port 8005 and open in browser."""
|
|
38
|
+
docs_dir = Path(__file__).parent.parent / "documentation"
|
|
39
|
+
if not docs_dir.exists():
|
|
40
|
+
typer.echo(f"Documentation folder not found: {docs_dir}", err=True)
|
|
41
|
+
raise typer.Exit(code=1)
|
|
42
|
+
|
|
43
|
+
typer.echo("Starting docs server at http://localhost:8005 ...")
|
|
44
|
+
subprocess.run(
|
|
45
|
+
["zensical", "serve", "--dev-addr", "localhost:8005", "--open"],
|
|
46
|
+
cwd=docs_dir,
|
|
47
|
+
check=True,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
32
51
|
def main() -> None:
|
|
33
52
|
app()
|
|
File without changes
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import smtplib
|
|
4
|
+
from dataclasses import dataclass, field
|
|
5
|
+
from email.mime.multipart import MIMEMultipart
|
|
6
|
+
from email.mime.text import MIMEText
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class SMTPConfig:
|
|
11
|
+
"""SMTP connection configuration."""
|
|
12
|
+
|
|
13
|
+
host: str
|
|
14
|
+
port: int
|
|
15
|
+
username: str
|
|
16
|
+
password: str
|
|
17
|
+
use_tls: bool = True
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class MailMessage:
|
|
22
|
+
"""Email message parameters."""
|
|
23
|
+
|
|
24
|
+
subject: str
|
|
25
|
+
from_address: str
|
|
26
|
+
to: list[str]
|
|
27
|
+
html: str
|
|
28
|
+
cc: list[str] = field(default_factory=list)
|
|
29
|
+
bcc: list[str] = field(default_factory=list)
|
|
30
|
+
reply_to: str | None = None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def send_mail(config: SMTPConfig, message: MailMessage) -> None:
|
|
34
|
+
"""Send an HTML email via SMTP.
|
|
35
|
+
|
|
36
|
+
Args:
|
|
37
|
+
config: SMTP server connection settings.
|
|
38
|
+
message: Email content and addressing details.
|
|
39
|
+
"""
|
|
40
|
+
msg = MIMEMultipart("alternative")
|
|
41
|
+
msg["Subject"] = message.subject
|
|
42
|
+
msg["From"] = message.from_address
|
|
43
|
+
msg["To"] = ", ".join(message.to)
|
|
44
|
+
|
|
45
|
+
if message.cc:
|
|
46
|
+
msg["Cc"] = ", ".join(message.cc)
|
|
47
|
+
if message.reply_to:
|
|
48
|
+
msg["Reply-To"] = message.reply_to
|
|
49
|
+
|
|
50
|
+
msg.attach(MIMEText(message.html, "html"))
|
|
51
|
+
|
|
52
|
+
all_recipients = message.to + message.cc + message.bcc
|
|
53
|
+
|
|
54
|
+
if config.use_tls:
|
|
55
|
+
with smtplib.SMTP(config.host, config.port) as server:
|
|
56
|
+
server.ehlo()
|
|
57
|
+
server.starttls()
|
|
58
|
+
server.login(config.username, config.password)
|
|
59
|
+
server.sendmail(message.from_address, all_recipients, msg.as_string())
|
|
60
|
+
else:
|
|
61
|
+
with smtplib.SMTP_SSL(config.host, config.port) as server:
|
|
62
|
+
server.login(config.username, config.password)
|
|
63
|
+
server.sendmail(message.from_address, all_recipients, msg.as_string())
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"meta": {
|
|
4
|
+
"icon": "simple/markdown"
|
|
5
|
+
},
|
|
6
|
+
"content": "<h1 id=\"markdown-in-5min\">Markdown in 5min<a class=\"headerlink\" href=\"#markdown-in-5min\" title=\"Permanent link\">¶</a></h1>\n<h2 id=\"headers\">Headers<a class=\"headerlink\" href=\"#headers\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a># H1 Header\n</span><span id=\"__span-0-2\"><a id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"></a>## H2 Header\n</span><span id=\"__span-0-3\"><a id=\"__codelineno-0-3\" name=\"__codelineno-0-3\" href=\"#__codelineno-0-3\"></a>### H3 Header\n</span><span id=\"__span-0-4\"><a id=\"__codelineno-0-4\" name=\"__codelineno-0-4\" href=\"#__codelineno-0-4\"></a>#### H4 Header\n</span><span id=\"__span-0-5\"><a id=\"__codelineno-0-5\" name=\"__codelineno-0-5\" href=\"#__codelineno-0-5\"></a>##### H5 Header\n</span><span id=\"__span-0-6\"><a id=\"__codelineno-0-6\" name=\"__codelineno-0-6\" href=\"#__codelineno-0-6\"></a>###### H6 Header\n</span></code></pre></div>\n<h2 id=\"text-formatting\">Text formatting<a class=\"headerlink\" href=\"#text-formatting\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-1-1\"><a id=\"__codelineno-1-1\" name=\"__codelineno-1-1\" href=\"#__codelineno-1-1\"></a>**bold text**\n</span><span id=\"__span-1-2\"><a id=\"__codelineno-1-2\" name=\"__codelineno-1-2\" href=\"#__codelineno-1-2\"></a>*italic text*\n</span><span id=\"__span-1-3\"><a id=\"__codelineno-1-3\" name=\"__codelineno-1-3\" href=\"#__codelineno-1-3\"></a>***bold and italic***\n</span><span id=\"__span-1-4\"><a id=\"__codelineno-1-4\" name=\"__codelineno-1-4\" href=\"#__codelineno-1-4\"></a>~~strikethrough~~\n</span><span id=\"__span-1-5\"><a id=\"__codelineno-1-5\" name=\"__codelineno-1-5\" href=\"#__codelineno-1-5\"></a>`inline code`\n</span></code></pre></div>\n<h2 id=\"links-and-images\">Links and images<a class=\"headerlink\" href=\"#links-and-images\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-2-1\"><a id=\"__codelineno-2-1\" name=\"__codelineno-2-1\" href=\"#__codelineno-2-1\"></a>[Link text](https://example.com)\n</span><span id=\"__span-2-2\"><a id=\"__codelineno-2-2\" name=\"__codelineno-2-2\" href=\"#__codelineno-2-2\"></a>[Link with title](https://example.com "Hover title")\n</span><span id=\"__span-2-3\"><a id=\"__codelineno-2-3\" name=\"__codelineno-2-3\" href=\"#__codelineno-2-3\"></a>\n</span><span id=\"__span-2-4\"><a id=\"__codelineno-2-4\" name=\"__codelineno-2-4\" href=\"#__codelineno-2-4\"></a>\n</span></code></pre></div>\n<h2 id=\"lists\">Lists<a class=\"headerlink\" href=\"#lists\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-3-1\"><a id=\"__codelineno-3-1\" name=\"__codelineno-3-1\" href=\"#__codelineno-3-1\"></a>Unordered:\n</span><span id=\"__span-3-2\"><a id=\"__codelineno-3-2\" name=\"__codelineno-3-2\" href=\"#__codelineno-3-2\"></a>\n</span><span id=\"__span-3-3\"><a id=\"__codelineno-3-3\" name=\"__codelineno-3-3\" href=\"#__codelineno-3-3\"></a>- Item 1\n</span><span id=\"__span-3-4\"><a id=\"__codelineno-3-4\" name=\"__codelineno-3-4\" href=\"#__codelineno-3-4\"></a>- Item 2\n</span><span id=\"__span-3-5\"><a id=\"__codelineno-3-5\" name=\"__codelineno-3-5\" href=\"#__codelineno-3-5\"></a> - Nested item\n</span><span id=\"__span-3-6\"><a id=\"__codelineno-3-6\" name=\"__codelineno-3-6\" href=\"#__codelineno-3-6\"></a>\n</span><span id=\"__span-3-7\"><a id=\"__codelineno-3-7\" name=\"__codelineno-3-7\" href=\"#__codelineno-3-7\"></a>Ordered:\n</span><span id=\"__span-3-8\"><a id=\"__codelineno-3-8\" name=\"__codelineno-3-8\" href=\"#__codelineno-3-8\"></a>\n</span><span id=\"__span-3-9\"><a id=\"__codelineno-3-9\" name=\"__codelineno-3-9\" href=\"#__codelineno-3-9\"></a>1. First item\n</span><span id=\"__span-3-10\"><a id=\"__codelineno-3-10\" name=\"__codelineno-3-10\" href=\"#__codelineno-3-10\"></a>2. Second item\n</span><span id=\"__span-3-11\"><a id=\"__codelineno-3-11\" name=\"__codelineno-3-11\" href=\"#__codelineno-3-11\"></a>3. Third item\n</span></code></pre></div>\n<h2 id=\"blockquotes\">Blockquotes<a class=\"headerlink\" href=\"#blockquotes\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-4-1\"><a id=\"__codelineno-4-1\" name=\"__codelineno-4-1\" href=\"#__codelineno-4-1\"></a>> This is a blockquote\n</span><span id=\"__span-4-2\"><a id=\"__codelineno-4-2\" name=\"__codelineno-4-2\" href=\"#__codelineno-4-2\"></a>> Multiple lines\n</span><span id=\"__span-4-3\"><a id=\"__codelineno-4-3\" name=\"__codelineno-4-3\" href=\"#__codelineno-4-3\"></a>>> Nested quote\n</span></code></pre></div>\n<h2 id=\"code-blocks\">Code blocks<a class=\"headerlink\" href=\"#code-blocks\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-5-1\"><a id=\"__codelineno-5-1\" name=\"__codelineno-5-1\" href=\"#__codelineno-5-1\"></a>```javascript\n</span><span id=\"__span-5-2\"><a id=\"__codelineno-5-2\" name=\"__codelineno-5-2\" href=\"#__codelineno-5-2\"></a>function hello() {\n</span><span id=\"__span-5-3\"><a id=\"__codelineno-5-3\" name=\"__codelineno-5-3\" href=\"#__codelineno-5-3\"></a> console.log("Hello, world!");\n</span><span id=\"__span-5-4\"><a id=\"__codelineno-5-4\" name=\"__codelineno-5-4\" href=\"#__codelineno-5-4\"></a>}\n</span><span id=\"__span-5-5\"><a id=\"__codelineno-5-5\" name=\"__codelineno-5-5\" href=\"#__codelineno-5-5\"></a>```\n</span></code></pre></div>\n<h2 id=\"tables\">Tables<a class=\"headerlink\" href=\"#tables\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-6-1\"><a id=\"__codelineno-6-1\" name=\"__codelineno-6-1\" href=\"#__codelineno-6-1\"></a>| Header 1 | Header 2 | Header 3 |\n</span><span id=\"__span-6-2\"><a id=\"__codelineno-6-2\" name=\"__codelineno-6-2\" href=\"#__codelineno-6-2\"></a>|----------|----------|----------|\n</span><span id=\"__span-6-3\"><a id=\"__codelineno-6-3\" name=\"__codelineno-6-3\" href=\"#__codelineno-6-3\"></a>| Row 1 | Data | Data |\n</span><span id=\"__span-6-4\"><a id=\"__codelineno-6-4\" name=\"__codelineno-6-4\" href=\"#__codelineno-6-4\"></a>| Row 2 | Data | Data |\n</span></code></pre></div>\n<h2 id=\"horizontal-rule\">Horizontal rule<a class=\"headerlink\" href=\"#horizontal-rule\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-7-1\"><a id=\"__codelineno-7-1\" name=\"__codelineno-7-1\" href=\"#__codelineno-7-1\"></a>---\n</span><span id=\"__span-7-2\"><a id=\"__codelineno-7-2\" name=\"__codelineno-7-2\" href=\"#__codelineno-7-2\"></a>or\n</span><span id=\"__span-7-3\"><a id=\"__codelineno-7-3\" name=\"__codelineno-7-3\" href=\"#__codelineno-7-3\"></a>***\n</span><span id=\"__span-7-4\"><a id=\"__codelineno-7-4\" name=\"__codelineno-7-4\" href=\"#__codelineno-7-4\"></a>or\n</span><span id=\"__span-7-5\"><a id=\"__codelineno-7-5\" name=\"__codelineno-7-5\" href=\"#__codelineno-7-5\"></a>___\n</span></code></pre></div>\n<h2 id=\"task-lists\">Task lists<a class=\"headerlink\" href=\"#task-lists\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-8-1\"><a id=\"__codelineno-8-1\" name=\"__codelineno-8-1\" href=\"#__codelineno-8-1\"></a>- [x] Completed task\n</span><span id=\"__span-8-2\"><a id=\"__codelineno-8-2\" name=\"__codelineno-8-2\" href=\"#__codelineno-8-2\"></a>- [ ] Incomplete task\n</span><span id=\"__span-8-3\"><a id=\"__codelineno-8-3\" name=\"__codelineno-8-3\" href=\"#__codelineno-8-3\"></a>- [ ] Another task\n</span></code></pre></div>\n<h2 id=\"escaping-characters\">Escaping characters<a class=\"headerlink\" href=\"#escaping-characters\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-9-1\"><a id=\"__codelineno-9-1\" name=\"__codelineno-9-1\" href=\"#__codelineno-9-1\"></a>Use backslash to escape: \\* \\_ \\# \\`\n</span></code></pre></div>\n<h2 id=\"line-breaks\">Line breaks<a class=\"headerlink\" href=\"#line-breaks\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-10-1\"><a id=\"__codelineno-10-1\" name=\"__codelineno-10-1\" href=\"#__codelineno-10-1\"></a>End a line with two spaces \n</span><span id=\"__span-10-2\"><a id=\"__codelineno-10-2\" name=\"__codelineno-10-2\" href=\"#__codelineno-10-2\"></a>to create a line break.\n</span><span id=\"__span-10-3\"><a id=\"__codelineno-10-3\" name=\"__codelineno-10-3\" href=\"#__codelineno-10-3\"></a>\n</span><span id=\"__span-10-4\"><a id=\"__codelineno-10-4\" name=\"__codelineno-10-4\" href=\"#__codelineno-10-4\"></a>Or use a blank line for a new paragraph.\n</span></code></pre></div>",
|
|
7
|
+
"search": [
|
|
8
|
+
{
|
|
9
|
+
"location": null,
|
|
10
|
+
"level": 1,
|
|
11
|
+
"title": "Markdown in 5min",
|
|
12
|
+
"text": "",
|
|
13
|
+
"path": [],
|
|
14
|
+
"tags": []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"location": "headers",
|
|
18
|
+
"level": 2,
|
|
19
|
+
"title": "Headers",
|
|
20
|
+
"text": "<pre><code># H1 Header\n## H2 Header\n### H3 Header\n#### H4 Header\n##### H5 Header\n###### H6 Header\n</code></pre>",
|
|
21
|
+
"path": [],
|
|
22
|
+
"tags": []
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"location": "text-formatting",
|
|
26
|
+
"level": 2,
|
|
27
|
+
"title": "Text formatting",
|
|
28
|
+
"text": "<pre><code>**bold text**\n*italic text*\n***bold and italic***\n~~strikethrough~~\n`inline code`\n</code></pre>",
|
|
29
|
+
"path": [],
|
|
30
|
+
"tags": []
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"location": "links-and-images",
|
|
34
|
+
"level": 2,
|
|
35
|
+
"title": "Links and images",
|
|
36
|
+
"text": "<pre><code>[Link text](https://example.com)\n[Link with title](https://example.com \"Hover title\")\n\n\n</code></pre>",
|
|
37
|
+
"path": [],
|
|
38
|
+
"tags": []
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"location": "lists",
|
|
42
|
+
"level": 2,
|
|
43
|
+
"title": "Lists",
|
|
44
|
+
"text": "<pre><code>Unordered:\n\n- Item 1\n- Item 2\n - Nested item\n\nOrdered:\n\n1. First item\n2. Second item\n3. Third item\n</code></pre>",
|
|
45
|
+
"path": [],
|
|
46
|
+
"tags": []
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"location": "blockquotes",
|
|
50
|
+
"level": 2,
|
|
51
|
+
"title": "Blockquotes",
|
|
52
|
+
"text": "<pre><code>> This is a blockquote\n> Multiple lines\n>> Nested quote\n</code></pre>",
|
|
53
|
+
"path": [],
|
|
54
|
+
"tags": []
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"location": "code-blocks",
|
|
58
|
+
"level": 2,
|
|
59
|
+
"title": "Code blocks",
|
|
60
|
+
"text": "<pre><code>```javascript\nfunction hello() {\n console.log(\"Hello, world!\");\n}\n```\n</code></pre>",
|
|
61
|
+
"path": [],
|
|
62
|
+
"tags": []
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"location": "tables",
|
|
66
|
+
"level": 2,
|
|
67
|
+
"title": "Tables",
|
|
68
|
+
"text": "<pre><code>| Header 1 | Header 2 | Header 3 |\n|----------|----------|----------|\n| Row 1 | Data | Data |\n| Row 2 | Data | Data |\n</code></pre>",
|
|
69
|
+
"path": [],
|
|
70
|
+
"tags": []
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"location": "horizontal-rule",
|
|
74
|
+
"level": 2,
|
|
75
|
+
"title": "Horizontal rule",
|
|
76
|
+
"text": "<pre><code>---\nor\n***\nor\n___\n</code></pre>",
|
|
77
|
+
"path": [],
|
|
78
|
+
"tags": []
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"location": "task-lists",
|
|
82
|
+
"level": 2,
|
|
83
|
+
"title": "Task lists",
|
|
84
|
+
"text": "<pre><code>- [x] Completed task\n- [ ] Incomplete task\n- [ ] Another task\n</code></pre>",
|
|
85
|
+
"path": [],
|
|
86
|
+
"tags": []
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"location": "escaping-characters",
|
|
90
|
+
"level": 2,
|
|
91
|
+
"title": "Escaping characters",
|
|
92
|
+
"text": "<pre><code>Use backslash to escape: \\* \\_ \\# \\`\n</code></pre>",
|
|
93
|
+
"path": [],
|
|
94
|
+
"tags": []
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"location": "line-breaks",
|
|
98
|
+
"level": 2,
|
|
99
|
+
"title": "Line breaks",
|
|
100
|
+
"text": "<pre><code>End a line with two spaces \nto create a line break.\n\nOr use a blank line for a new paragraph.\n</code></pre>",
|
|
101
|
+
"path": [],
|
|
102
|
+
"tags": []
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"title": "Markdown in 5min",
|
|
106
|
+
"toc": [
|
|
107
|
+
{
|
|
108
|
+
"title": "Markdown in 5min",
|
|
109
|
+
"content": "Markdown in 5min",
|
|
110
|
+
"id": "markdown-in-5min",
|
|
111
|
+
"url": "#markdown-in-5min",
|
|
112
|
+
"children": [
|
|
113
|
+
{
|
|
114
|
+
"title": "Headers",
|
|
115
|
+
"content": "Headers",
|
|
116
|
+
"id": "headers",
|
|
117
|
+
"url": "#headers",
|
|
118
|
+
"children": [],
|
|
119
|
+
"level": 2
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"title": "Text formatting",
|
|
123
|
+
"content": "Text formatting",
|
|
124
|
+
"id": "text-formatting",
|
|
125
|
+
"url": "#text-formatting",
|
|
126
|
+
"children": [],
|
|
127
|
+
"level": 2
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"title": "Links and images",
|
|
131
|
+
"content": "Links and images",
|
|
132
|
+
"id": "links-and-images",
|
|
133
|
+
"url": "#links-and-images",
|
|
134
|
+
"children": [],
|
|
135
|
+
"level": 2
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"title": "Lists",
|
|
139
|
+
"content": "Lists",
|
|
140
|
+
"id": "lists",
|
|
141
|
+
"url": "#lists",
|
|
142
|
+
"children": [],
|
|
143
|
+
"level": 2
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"title": "Blockquotes",
|
|
147
|
+
"content": "Blockquotes",
|
|
148
|
+
"id": "blockquotes",
|
|
149
|
+
"url": "#blockquotes",
|
|
150
|
+
"children": [],
|
|
151
|
+
"level": 2
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"title": "Code blocks",
|
|
155
|
+
"content": "Code blocks",
|
|
156
|
+
"id": "code-blocks",
|
|
157
|
+
"url": "#code-blocks",
|
|
158
|
+
"children": [],
|
|
159
|
+
"level": 2
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"title": "Tables",
|
|
163
|
+
"content": "Tables",
|
|
164
|
+
"id": "tables",
|
|
165
|
+
"url": "#tables",
|
|
166
|
+
"children": [],
|
|
167
|
+
"level": 2
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"title": "Horizontal rule",
|
|
171
|
+
"content": "Horizontal rule",
|
|
172
|
+
"id": "horizontal-rule",
|
|
173
|
+
"url": "#horizontal-rule",
|
|
174
|
+
"children": [],
|
|
175
|
+
"level": 2
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"title": "Task lists",
|
|
179
|
+
"content": "Task lists",
|
|
180
|
+
"id": "task-lists",
|
|
181
|
+
"url": "#task-lists",
|
|
182
|
+
"children": [],
|
|
183
|
+
"level": 2
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"title": "Escaping characters",
|
|
187
|
+
"content": "Escaping characters",
|
|
188
|
+
"id": "escaping-characters",
|
|
189
|
+
"url": "#escaping-characters",
|
|
190
|
+
"children": [],
|
|
191
|
+
"level": 2
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"title": "Line breaks",
|
|
195
|
+
"content": "Line breaks",
|
|
196
|
+
"id": "line-breaks",
|
|
197
|
+
"url": "#line-breaks",
|
|
198
|
+
"children": [],
|
|
199
|
+
"level": 2
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"level": 1
|
|
203
|
+
}
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
"hash": 11658624899987527590
|
|
207
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": "\n<!doctype html>\n<html lang=\"en\" class=\"no-js\">\n <head>\n \n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n \n <meta name=\"description\" content=\"Core libraries for development.\">\n \n \n <meta name=\"author\" content=\"TINS PJ\">\n \n \n \n \n \n \n \n \n <link rel=\"icon\" href=\"../assets/images/favicon.png\">\n <meta name=\"generator\" content=\"zensical-0.0.37\">\n \n \n \n <title>Markdown in 5min - Utkit</title>\n \n \n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/main.1e981d71.min.css\">\n \n \n \n \n <link rel=\"stylesheet\" href=\"../assets/stylesheets/modern/palette.dfe2e883.min.css\">\n \n \n\n\n \n \n \n \n \n \n \n \n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Inter:300,300i,400,400i,500,500i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback\">\n <style>:root{--md-text-font:\"Inter\";--md-code-font:\"JetBrains Mono\"}</style>\n \n \n \n <script>__md_scope=new URL(\"..\",location),__md_hash=e=>[...e].reduce(((e,t)=>(e<<5)-e+t.charCodeAt(0)),0),__md_get=(e,t=localStorage,a=__md_scope)=>JSON.parse(t.getItem(a.pathname+\".\"+e)),__md_set=(e,t,a=localStorage,_=__md_scope)=>{try{a.setItem(_.pathname+\".\"+e,JSON.stringify(t))}catch(e){}},document.documentElement.setAttribute(\"data-platform\",navigator.platform)</script>\n \n \n\n \n \n </head>\n \n \n \n \n \n \n \n \n \n <body dir=\"ltr\" data-md-color-scheme=\"default\" data-md-color-primary=\"indigo\" data-md-color-accent=\"indigo\">\n \n \n <input class=\"md-toggle\" data-md-toggle=\"drawer\" type=\"checkbox\" id=\"__drawer\" autocomplete=\"off\">\n <input class=\"md-toggle\" data-md-toggle=\"search\" type=\"checkbox\" id=\"__search\" autocomplete=\"off\">\n <label class=\"md-overlay\" for=\"__drawer\" aria-label=\"Navigation\"></label>\n <div data-md-component=\"skip\">\n \n \n <a href=\"#markdown-in-5min\" class=\"md-skip\">\n Skip to content\n </a>\n \n </div>\n <div data-md-component=\"announce\">\n \n </div>\n \n \n \n\n \n\n<header class=\"md-header md-header--shadow\" data-md-component=\"header\">\n <nav class=\"md-header__inner md-grid\" aria-label=\"Header\">\n <a href=\"./..\" title=\"Utkit\" class=\"md-header__button md-logo\" aria-label=\"Utkit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n <label class=\"md-header__button md-icon\" for=\"__drawer\" aria-label=\"Navigation\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-menu\" viewBox=\"0 0 24 24\"><path d=\"M4 5h16M4 12h16M4 19h16\"/></svg>\n </label>\n <div class=\"md-header__title\" data-md-component=\"header-title\">\n <div class=\"md-header__ellipsis\">\n <div class=\"md-header__topic\">\n <span class=\"md-ellipsis\">\n Utkit\n </span>\n </div>\n <div class=\"md-header__topic\" data-md-component=\"header-topic\">\n <span class=\"md-ellipsis\">\n \n Markdown in 5min\n \n </span>\n </div>\n </div>\n </div>\n \n \n <form class=\"md-header__option\" data-md-component=\"palette\">\n \n \n \n \n <input class=\"md-option\" data-md-color-media=\"none\" data-md-color-scheme=\"default\" data-md-color-primary=\"indigo\" data-md-color-accent=\"indigo\" aria-label=\"Switch to dark mode\" type=\"radio\" name=\"__palette\" id=\"__palette_0\">\n \n <label class=\"md-header__button md-icon\" title=\"Switch to dark mode\" for=\"__palette_1\" hidden>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-sun\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"/></svg>\n </label>\n \n \n \n \n \n <input class=\"md-option\" data-md-color-media=\"none\" data-md-color-scheme=\"slate\" data-md-color-primary=\"indigo\" data-md-color-accent=\"indigo\" aria-label=\"Switch to light mode\" type=\"radio\" name=\"__palette\" id=\"__palette_1\">\n \n <label class=\"md-header__button md-icon\" title=\"Switch to light mode\" for=\"__palette_0\" hidden>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-moon\" viewBox=\"0 0 24 24\"><path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/></svg>\n </label>\n \n \n</form>\n \n \n \n <script>var palette=__md_get(\"__palette\");if(palette&&palette.color){if(\"(prefers-color-scheme)\"===palette.color.media){var media=matchMedia(\"(prefers-color-scheme: light)\"),input=document.querySelector(media.matches?\"[data-md-color-media='(prefers-color-scheme: light)']\":\"[data-md-color-media='(prefers-color-scheme: dark)']\");palette.color.media=input.getAttribute(\"data-md-color-media\"),palette.color.scheme=input.getAttribute(\"data-md-color-scheme\"),palette.color.primary=input.getAttribute(\"data-md-color-primary\"),palette.color.accent=input.getAttribute(\"data-md-color-accent\")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute(\"data-md-color-\"+key,value)}</script>\n \n \n \n \n \n <label class=\"md-header__button md-icon\" for=\"__search\" aria-label=\"Search\">\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-search\" viewBox=\"0 0 24 24\"><path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/></svg>\n </label>\n <div class=\"md-search\" data-md-component=\"search\" role=\"dialog\" aria-label=\"Search\">\n <button type=\"button\" class=\"md-search__button\">\n Search\n </button>\n</div>\n \n \n <div class=\"md-header__source\">\n \n </div>\n </nav>\n \n</header>\n \n <div class=\"md-container\" data-md-component=\"container\">\n \n \n \n \n \n \n <main class=\"md-main\" data-md-component=\"main\">\n <div class=\"md-main__inner md-grid\">\n \n \n \n <div class=\"md-sidebar md-sidebar--primary\" data-md-component=\"sidebar\" data-md-type=\"navigation\" >\n <div class=\"md-sidebar__scrollwrap\">\n <div class=\"md-sidebar__inner\">\n \n\n\n\n<nav class=\"md-nav md-nav--primary\" aria-label=\"Navigation\" data-md-level=\"0\">\n <label class=\"md-nav__title\" for=\"__drawer\">\n <a href=\"./..\" title=\"Utkit\" class=\"md-nav__button md-logo\" aria-label=\"Utkit\" data-md-component=\"logo\">\n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-book-open\" viewBox=\"0 0 24 24\"><path d=\"M12 7v14M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z\"/></svg>\n\n </a>\n Utkit\n </label>\n \n <ul class=\"md-nav__list\" data-md-scrollfix>\n \n \n \n \n \n \n \n <li class=\"md-nav__item\">\n <a href=\"./..\" class=\"md-nav__link\">\n \n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-rocket\" viewBox=\"0 0 24 24\"><path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"/><path d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"/><path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"/></svg>\n \n <span class=\"md-ellipsis\">\n \n \n Get started\n \n\n \n </span>\n \n \n\n </a>\n </li>\n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <li class=\"md-nav__item md-nav__item--section md-nav__item--nested\">\n \n \n \n <input class=\"md-nav__toggle md-toggle \" type=\"checkbox\" id=\"__nav_2\" >\n \n \n <label class=\"md-nav__link\" for=\"__nav_2\" id=\"__nav_2_label\" tabindex=\"\">\n \n \n \n <span class=\"md-ellipsis\">\n \n \n Communication\n \n\n \n </span>\n \n \n\n <span class=\"md-nav__icon md-icon\"></span>\n </label>\n \n <nav class=\"md-nav\" data-md-level=\"1\" aria-labelledby=\"__nav_2_label\" aria-expanded=\"false\">\n <label class=\"md-nav__title\" for=\"__nav_2\">\n <span class=\"md-nav__icon md-icon\"></span>\n \n \n Communication\n \n\n </label>\n <ul class=\"md-nav__list\" data-md-scrollfix>\n \n \n \n \n \n \n \n <li class=\"md-nav__item\">\n <a href=\"../communication/mail/\" class=\"md-nav__link\">\n \n \n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-mail\" viewBox=\"0 0 24 24\"><path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"/><rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"/></svg>\n \n <span class=\"md-ellipsis\">\n \n \n Mail (SMTP)\n \n\n \n </span>\n \n \n\n </a>\n </li>\n \n\n \n \n </ul>\n </nav>\n \n </li>\n \n\n \n </ul>\n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-sidebar md-sidebar--secondary\" data-md-component=\"sidebar\" data-md-type=\"toc\" >\n <div class=\"md-sidebar__scrollwrap\">\n \n \n \n \n \n \n \n <input class=\"md-nav__toggle md-toggle\" type=\"checkbox\" id=\"__toc\">\n <div class=\"md-sidebar-button__wrapper\">\n <label class=\"md-sidebar-button\" for=\"__toc\"></label>\n </div>\n \n \n <div class=\"md-sidebar__inner\">\n \n\n\n<nav class=\"md-nav md-nav--secondary\" aria-label=\"On this page\">\n \n \n \n \n \n \n <label class=\"md-nav__title\" for=\"__toc\">\n <span class=\"md-nav__icon md-icon\"></span>\n On this page\n </label>\n <ul class=\"md-nav__list\" data-md-component=\"toc\" data-md-scrollfix>\n \n <li class=\"md-nav__item\">\n <a href=\"#headers\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Headers\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#text-formatting\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Text formatting\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#links-and-images\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Links and images\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#lists\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Lists\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#blockquotes\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Blockquotes\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#code-blocks\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Code blocks\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#tables\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Tables\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#horizontal-rule\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Horizontal rule\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#task-lists\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Task lists\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#escaping-characters\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Escaping characters\n </span>\n </span>\n </a>\n \n</li>\n \n <li class=\"md-nav__item\">\n <a href=\"#line-breaks\" class=\"md-nav__link\">\n <span class=\"md-ellipsis\">\n <span class=\"md-typeset\">\n Line breaks\n </span>\n </span>\n </a>\n \n</li>\n \n </ul>\n \n</nav>\n </div>\n </div>\n </div>\n \n \n \n <div class=\"md-content\" data-md-component=\"content\">\n \n \n\n\n\n \n\n\n \n <article class=\"md-content__inner md-typeset\">\n \n \n\n<h1 id=\"markdown-in-5min\">Markdown in 5min<a class=\"headerlink\" href=\"#markdown-in-5min\" title=\"Permanent link\">¶</a></h1>\n<h2 id=\"headers\">Headers<a class=\"headerlink\" href=\"#headers\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-0-1\"><a id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"></a># H1 Header\n</span><span id=\"__span-0-2\"><a id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"></a>## H2 Header\n</span><span id=\"__span-0-3\"><a id=\"__codelineno-0-3\" name=\"__codelineno-0-3\" href=\"#__codelineno-0-3\"></a>### H3 Header\n</span><span id=\"__span-0-4\"><a id=\"__codelineno-0-4\" name=\"__codelineno-0-4\" href=\"#__codelineno-0-4\"></a>#### H4 Header\n</span><span id=\"__span-0-5\"><a id=\"__codelineno-0-5\" name=\"__codelineno-0-5\" href=\"#__codelineno-0-5\"></a>##### H5 Header\n</span><span id=\"__span-0-6\"><a id=\"__codelineno-0-6\" name=\"__codelineno-0-6\" href=\"#__codelineno-0-6\"></a>###### H6 Header\n</span></code></pre></div>\n<h2 id=\"text-formatting\">Text formatting<a class=\"headerlink\" href=\"#text-formatting\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-1-1\"><a id=\"__codelineno-1-1\" name=\"__codelineno-1-1\" href=\"#__codelineno-1-1\"></a>**bold text**\n</span><span id=\"__span-1-2\"><a id=\"__codelineno-1-2\" name=\"__codelineno-1-2\" href=\"#__codelineno-1-2\"></a>*italic text*\n</span><span id=\"__span-1-3\"><a id=\"__codelineno-1-3\" name=\"__codelineno-1-3\" href=\"#__codelineno-1-3\"></a>***bold and italic***\n</span><span id=\"__span-1-4\"><a id=\"__codelineno-1-4\" name=\"__codelineno-1-4\" href=\"#__codelineno-1-4\"></a>~~strikethrough~~\n</span><span id=\"__span-1-5\"><a id=\"__codelineno-1-5\" name=\"__codelineno-1-5\" href=\"#__codelineno-1-5\"></a>`inline code`\n</span></code></pre></div>\n<h2 id=\"links-and-images\">Links and images<a class=\"headerlink\" href=\"#links-and-images\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-2-1\"><a id=\"__codelineno-2-1\" name=\"__codelineno-2-1\" href=\"#__codelineno-2-1\"></a>[Link text](https://example.com)\n</span><span id=\"__span-2-2\"><a id=\"__codelineno-2-2\" name=\"__codelineno-2-2\" href=\"#__codelineno-2-2\"></a>[Link with title](https://example.com "Hover title")\n</span><span id=\"__span-2-3\"><a id=\"__codelineno-2-3\" name=\"__codelineno-2-3\" href=\"#__codelineno-2-3\"></a>\n</span><span id=\"__span-2-4\"><a id=\"__codelineno-2-4\" name=\"__codelineno-2-4\" href=\"#__codelineno-2-4\"></a>\n</span></code></pre></div>\n<h2 id=\"lists\">Lists<a class=\"headerlink\" href=\"#lists\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-3-1\"><a id=\"__codelineno-3-1\" name=\"__codelineno-3-1\" href=\"#__codelineno-3-1\"></a>Unordered:\n</span><span id=\"__span-3-2\"><a id=\"__codelineno-3-2\" name=\"__codelineno-3-2\" href=\"#__codelineno-3-2\"></a>\n</span><span id=\"__span-3-3\"><a id=\"__codelineno-3-3\" name=\"__codelineno-3-3\" href=\"#__codelineno-3-3\"></a>- Item 1\n</span><span id=\"__span-3-4\"><a id=\"__codelineno-3-4\" name=\"__codelineno-3-4\" href=\"#__codelineno-3-4\"></a>- Item 2\n</span><span id=\"__span-3-5\"><a id=\"__codelineno-3-5\" name=\"__codelineno-3-5\" href=\"#__codelineno-3-5\"></a> - Nested item\n</span><span id=\"__span-3-6\"><a id=\"__codelineno-3-6\" name=\"__codelineno-3-6\" href=\"#__codelineno-3-6\"></a>\n</span><span id=\"__span-3-7\"><a id=\"__codelineno-3-7\" name=\"__codelineno-3-7\" href=\"#__codelineno-3-7\"></a>Ordered:\n</span><span id=\"__span-3-8\"><a id=\"__codelineno-3-8\" name=\"__codelineno-3-8\" href=\"#__codelineno-3-8\"></a>\n</span><span id=\"__span-3-9\"><a id=\"__codelineno-3-9\" name=\"__codelineno-3-9\" href=\"#__codelineno-3-9\"></a>1. First item\n</span><span id=\"__span-3-10\"><a id=\"__codelineno-3-10\" name=\"__codelineno-3-10\" href=\"#__codelineno-3-10\"></a>2. Second item\n</span><span id=\"__span-3-11\"><a id=\"__codelineno-3-11\" name=\"__codelineno-3-11\" href=\"#__codelineno-3-11\"></a>3. Third item\n</span></code></pre></div>\n<h2 id=\"blockquotes\">Blockquotes<a class=\"headerlink\" href=\"#blockquotes\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-4-1\"><a id=\"__codelineno-4-1\" name=\"__codelineno-4-1\" href=\"#__codelineno-4-1\"></a>> This is a blockquote\n</span><span id=\"__span-4-2\"><a id=\"__codelineno-4-2\" name=\"__codelineno-4-2\" href=\"#__codelineno-4-2\"></a>> Multiple lines\n</span><span id=\"__span-4-3\"><a id=\"__codelineno-4-3\" name=\"__codelineno-4-3\" href=\"#__codelineno-4-3\"></a>>> Nested quote\n</span></code></pre></div>\n<h2 id=\"code-blocks\">Code blocks<a class=\"headerlink\" href=\"#code-blocks\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-5-1\"><a id=\"__codelineno-5-1\" name=\"__codelineno-5-1\" href=\"#__codelineno-5-1\"></a>```javascript\n</span><span id=\"__span-5-2\"><a id=\"__codelineno-5-2\" name=\"__codelineno-5-2\" href=\"#__codelineno-5-2\"></a>function hello() {\n</span><span id=\"__span-5-3\"><a id=\"__codelineno-5-3\" name=\"__codelineno-5-3\" href=\"#__codelineno-5-3\"></a> console.log("Hello, world!");\n</span><span id=\"__span-5-4\"><a id=\"__codelineno-5-4\" name=\"__codelineno-5-4\" href=\"#__codelineno-5-4\"></a>}\n</span><span id=\"__span-5-5\"><a id=\"__codelineno-5-5\" name=\"__codelineno-5-5\" href=\"#__codelineno-5-5\"></a>```\n</span></code></pre></div>\n<h2 id=\"tables\">Tables<a class=\"headerlink\" href=\"#tables\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-6-1\"><a id=\"__codelineno-6-1\" name=\"__codelineno-6-1\" href=\"#__codelineno-6-1\"></a>| Header 1 | Header 2 | Header 3 |\n</span><span id=\"__span-6-2\"><a id=\"__codelineno-6-2\" name=\"__codelineno-6-2\" href=\"#__codelineno-6-2\"></a>|----------|----------|----------|\n</span><span id=\"__span-6-3\"><a id=\"__codelineno-6-3\" name=\"__codelineno-6-3\" href=\"#__codelineno-6-3\"></a>| Row 1 | Data | Data |\n</span><span id=\"__span-6-4\"><a id=\"__codelineno-6-4\" name=\"__codelineno-6-4\" href=\"#__codelineno-6-4\"></a>| Row 2 | Data | Data |\n</span></code></pre></div>\n<h2 id=\"horizontal-rule\">Horizontal rule<a class=\"headerlink\" href=\"#horizontal-rule\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-7-1\"><a id=\"__codelineno-7-1\" name=\"__codelineno-7-1\" href=\"#__codelineno-7-1\"></a>---\n</span><span id=\"__span-7-2\"><a id=\"__codelineno-7-2\" name=\"__codelineno-7-2\" href=\"#__codelineno-7-2\"></a>or\n</span><span id=\"__span-7-3\"><a id=\"__codelineno-7-3\" name=\"__codelineno-7-3\" href=\"#__codelineno-7-3\"></a>***\n</span><span id=\"__span-7-4\"><a id=\"__codelineno-7-4\" name=\"__codelineno-7-4\" href=\"#__codelineno-7-4\"></a>or\n</span><span id=\"__span-7-5\"><a id=\"__codelineno-7-5\" name=\"__codelineno-7-5\" href=\"#__codelineno-7-5\"></a>___\n</span></code></pre></div>\n<h2 id=\"task-lists\">Task lists<a class=\"headerlink\" href=\"#task-lists\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-8-1\"><a id=\"__codelineno-8-1\" name=\"__codelineno-8-1\" href=\"#__codelineno-8-1\"></a>- [x] Completed task\n</span><span id=\"__span-8-2\"><a id=\"__codelineno-8-2\" name=\"__codelineno-8-2\" href=\"#__codelineno-8-2\"></a>- [ ] Incomplete task\n</span><span id=\"__span-8-3\"><a id=\"__codelineno-8-3\" name=\"__codelineno-8-3\" href=\"#__codelineno-8-3\"></a>- [ ] Another task\n</span></code></pre></div>\n<h2 id=\"escaping-characters\">Escaping characters<a class=\"headerlink\" href=\"#escaping-characters\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-9-1\"><a id=\"__codelineno-9-1\" name=\"__codelineno-9-1\" href=\"#__codelineno-9-1\"></a>Use backslash to escape: \\* \\_ \\# \\`\n</span></code></pre></div>\n<h2 id=\"line-breaks\">Line breaks<a class=\"headerlink\" href=\"#line-breaks\" title=\"Permanent link\">¶</a></h2>\n<div class=\"language-text highlight\"><pre><span></span><code><span id=\"__span-10-1\"><a id=\"__codelineno-10-1\" name=\"__codelineno-10-1\" href=\"#__codelineno-10-1\"></a>End a line with two spaces \n</span><span id=\"__span-10-2\"><a id=\"__codelineno-10-2\" name=\"__codelineno-10-2\" href=\"#__codelineno-10-2\"></a>to create a line break.\n</span><span id=\"__span-10-3\"><a id=\"__codelineno-10-3\" name=\"__codelineno-10-3\" href=\"#__codelineno-10-3\"></a>\n</span><span id=\"__span-10-4\"><a id=\"__codelineno-10-4\" name=\"__codelineno-10-4\" href=\"#__codelineno-10-4\"></a>Or use a blank line for a new paragraph.\n</span></code></pre></div>\n\n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n \n </article>\n </div>\n \n \n <script>var tabs=__md_get(\"__tabs\");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(\".tabbed-set\")){var labels=set.querySelector(\".tabbed-labels\");for(var tab of tabs)for(var label of labels.getElementsByTagName(\"label\"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>\n\n<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith(\"__tabbed_\"))</script>\n </div>\n \n <button type=\"button\" class=\"md-top md-icon\" data-md-component=\"top\" hidden>\n \n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" class=\"lucide lucide-circle-arrow-up\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m16 12-4-4-4 4M12 16V8\"/></svg>\n Back to top\n</button>\n \n </main>\n \n <footer class=\"md-footer\">\n \n \n \n <div class=\"md-footer-meta md-typeset\">\n <div class=\"md-footer-meta__inner md-grid\">\n <div class=\"md-copyright\">\n \n <div class=\"md-copyright__highlight\">\n Copyright © 2026 TINS PJ. All rights reserved.\n\n </div>\n \n \n Made with\n <a href=\"https://zensical.org/\" target=\"_blank\" rel=\"noopener\">\n Zensical\n </a>\n \n</div>\n \n </div>\n </div>\n</footer>\n \n </div>\n <div class=\"md-dialog\" data-md-component=\"dialog\">\n <div class=\"md-dialog__inner md-typeset\"></div>\n </div>\n \n \n \n \n \n <script id=\"__config\" type=\"application/json\">{\"annotate\":null,\"base\":\"..\",\"features\":[\"announce.dismiss\",\"content.code.annotate\",\"content.code.copy\",\"content.code.select\",\"content.footnote.tooltips\",\"content.tabs.link\",\"content.tooltips\",\"navigation.footer\",\"navigation.indexes\",\"navigation.instant\",\"navigation.instant.prefetch\",\"navigation.path\",\"navigation.sections\",\"navigation.top\",\"navigation.tracking\",\"search.highlight\"],\"search\":\"../assets/javascripts/workers/search.e2d2d235.min.js\",\"tags\":null,\"translations\":{\"clipboard.copied\":\"Copied to clipboard\",\"clipboard.copy\":\"Copy to clipboard\",\"search.result.more.one\":\"1 more on this page\",\"search.result.more.other\":\"# more on this page\",\"search.result.none\":\"No matching documents\",\"search.result.one\":\"1 matching document\",\"search.result.other\":\"# matching documents\",\"search.result.placeholder\":\"Type to start searching\",\"search.result.term.missing\":\"Missing\",\"select.version\":\"Select version\"},\"version\":null}</script>\n \n \n <script src=\"../assets/javascripts/bundle.dbc0afdc.min.js\"></script>\n \n \n </body>\n</html>",
|
|
3
|
+
"hash": 12234949330847330709
|
|
4
|
+
}
|