Browse Source

Extend Asciidoctor for custom parsing

master
buttercat1791 2 years ago
parent
commit
7f84d4130b
  1. 1
      package.json
  2. 54
      pnpm-lock.yaml
  3. 31
      src/lib/parser.ts

1
package.json

@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
"@sveltejs/adapter-auto": "^3.1.1",
"@sveltejs/kit": "^2.4.3",
"@types/markdown-it": "^13.0.7",
"@types/node": "^22.5.4",
"@types/showdown": "^2.0.6",
"autoprefixer": "^10.4.17",
"eslint-plugin-svelte": "^2.35.1",

54
pnpm-lock.yaml

@ -19,7 +19,7 @@ importers: @@ -19,7 +19,7 @@ importers:
version: 2.11.8
'@sveltejs/vite-plugin-svelte':
specifier: ^3.0.1
version: 3.1.2(svelte@4.2.19)(vite@5.4.2)
version: 3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))
'@tailwindcss/forms':
specifier: ^0.5.7
version: 0.5.8(tailwindcss@3.4.10)
@ -53,13 +53,16 @@ importers: @@ -53,13 +53,16 @@ importers:
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^3.1.1
version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2))
version: 3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))
'@sveltejs/kit':
specifier: ^2.4.3
version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)
version: 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))
'@types/markdown-it':
specifier: ^13.0.7
version: 13.0.9
'@types/node':
specifier: ^22.5.4
version: 22.5.4
'@types/showdown':
specifier: ^2.0.6
version: 2.0.6
@ -107,7 +110,7 @@ importers: @@ -107,7 +110,7 @@ importers:
version: 5.5.4
vite:
specifier: ^5.0.12
version: 5.4.2
version: 5.4.2(@types/node@22.5.4)
packages:
@ -578,6 +581,9 @@ packages: @@ -578,6 +581,9 @@ packages:
'@types/mdurl@1.0.5':
resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==}
'@types/node@22.5.4':
resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==}
'@types/pug@2.0.10':
resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==}
@ -2073,6 +2079,9 @@ packages: @@ -2073,6 +2079,9 @@ packages:
engines: {node: '>=0.8.0'}
hasBin: true
undici-types@6.19.8:
resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
unxhr@1.2.0:
resolution: {integrity: sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==}
engines: {node: '>=8.11'}
@ -2542,14 +2551,14 @@ snapshots: @@ -2542,14 +2551,14 @@ snapshots:
'@noble/hashes': 1.3.1
'@scure/base': 1.1.1
'@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2))':
'@sveltejs/adapter-auto@3.2.4(@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))':
dependencies:
'@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)
'@sveltejs/kit': 2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))
import-meta-resolve: 4.1.0
'@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)':
'@sveltejs/kit@2.5.25(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))':
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2)
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))
'@types/cookie': 0.6.0
cookie: 0.6.0
devalue: 5.0.0
@ -2563,28 +2572,28 @@ snapshots: @@ -2563,28 +2572,28 @@ snapshots:
sirv: 2.0.4
svelte: 4.2.19
tiny-glob: 0.2.9
vite: 5.4.2
vite: 5.4.2(@types/node@22.5.4)
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)':
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))':
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2)
'@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))
debug: 4.3.6
svelte: 4.2.19
vite: 5.4.2
vite: 5.4.2(@types/node@22.5.4)
transitivePeerDependencies:
- supports-color
'@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2)':
'@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))':
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2))(svelte@4.2.19)(vite@5.4.2)
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4)))(svelte@4.2.19)(vite@5.4.2(@types/node@22.5.4))
debug: 4.3.6
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.11
svelte: 4.2.19
svelte-hmr: 0.16.0(svelte@4.2.19)
vite: 5.4.2
vitefu: 0.2.5(vite@5.4.2)
vite: 5.4.2(@types/node@22.5.4)
vitefu: 0.2.5(vite@5.4.2(@types/node@22.5.4))
transitivePeerDependencies:
- supports-color
@ -2614,6 +2623,10 @@ snapshots: @@ -2614,6 +2623,10 @@ snapshots:
'@types/mdurl@1.0.5': {}
'@types/node@22.5.4':
dependencies:
undici-types: 6.19.8
'@types/pug@2.0.10': {}
'@types/resolve@1.20.2': {}
@ -4176,6 +4189,8 @@ snapshots: @@ -4176,6 +4189,8 @@ snapshots:
uglify-js@3.19.3:
optional: true
undici-types@6.19.8: {}
unxhr@1.2.0: {}
update-browserslist-db@1.1.0(browserslist@4.23.3):
@ -4196,17 +4211,18 @@ snapshots: @@ -4196,17 +4211,18 @@ snapshots:
util-deprecate@1.0.2: {}
vite@5.4.2:
vite@5.4.2(@types/node@22.5.4):
dependencies:
esbuild: 0.21.5
postcss: 8.4.44
rollup: 4.21.2
optionalDependencies:
'@types/node': 22.5.4
fsevents: 2.3.3
vitefu@0.2.5(vite@5.4.2):
vitefu@0.2.5(vite@5.4.2(@types/node@22.5.4)):
optionalDependencies:
vite: 5.4.2
vite: 5.4.2(@types/node@22.5.4)
void-elements@3.1.0: {}

31
src/lib/parser.ts

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
import { Asciidoctor, Document, Extensions, type ProcessorOptions } from 'asciidoctor';
class Pharos extends Asciidoctor {
private html?: string | Document;
constructor() {
super();
const pharos = this;
this.Extensions.register(function () {
const registry = this;
registry.treeProcessor(function () {
const dsl = this;
dsl.process(function (document) {
const treeProcessor = this;
pharos.pharosTreeProcessor(treeProcessor, document);
});
})
});
}
parse(content: string, options?: ProcessorOptions | undefined): void {
this.html = this.convert(content, options) as string | Document | undefined;
this.Block
}
private pharosTreeProcessor(treeProcessor: Extensions.TreeProcessor, document: Document) {
// Recursively map sections to their note kinds down to five levels of depth.
document.getSections();
}
}
Loading…
Cancel
Save