(ruby,bibliography) use directives

This commit is contained in:
Maciej Jur 2023-06-17 15:37:34 +02:00
parent d128c55364
commit 4e1508c826
8 changed files with 449 additions and 65 deletions

View file

@ -2,10 +2,12 @@ import { defineConfig } from 'astro/config';
import rehypeKatex from 'rehype-katex';
import remarkMath from 'remark-math';
import remarkEmoji from 'remark-emoji';
import remarkRuby from './src/utils/ruby';
import mdx from '@astrojs/mdx';
import solid from '@astrojs/solid-js';
import pagefind from 'astro-pagefind';
import remarkDirective from 'remark-directive';
import remarkBibliography from "./src/utils/remark/bibliography";
import remarkRuby from "./src/utils/remark/ruby";
// https://astro.build/config
@ -15,9 +17,11 @@ export default defineConfig({
compressHTML: true,
markdown: {
remarkPlugins: [
[(remarkEmoji as any), {accessible: true}],
remarkDirective,
[remarkRuby, {separator: ';'}],
remarkBibliography,
[remarkEmoji as any, {accessible: true}],
remarkMath,
remarkRuby,
],
rehypePlugins: [
[rehypeKatex, {output: 'mathml'}]

View file

@ -12,18 +12,22 @@
"dependencies": {
"@astrojs/mdx": "^0.19.7",
"@astrojs/solid-js": "^2.2.0",
"@citation-js/plugin-bibtex": "^0.6.8",
"@js-temporal/polyfill": "^0.4.4",
"astro": "^2.6.3",
"astro": "^2.6.4",
"astro-pagefind": "^1.2.0",
"chart.js": "^4.3.0",
"citation-js": "^0.6.8",
"dayjs": "^1.11.8",
"leaflet": "^1.9.4",
"leaflet.markercluster": "^1.5.3",
"mdast-util-to-string": "^3.2.0",
"purify-ts": "^2.0.1",
"rehype-katex": "^6.0.3",
"rehype-raw": "^6.1.1",
"rehype-stringify": "^9.0.3",
"remark-emoji": "^3.1.1",
"remark-directive": "^2.0.1",
"remark-emoji": "^3.1.2",
"remark-gfm": "^3.0.1",
"remark-math": "^5.1.1",
"remark-parse": "^10.0.2",
@ -40,6 +44,6 @@
"@types/reveal.js": "^4.4.2",
"@types/unist": "^2.0.6",
"pagefind": "^0.12.0",
"sass": "^1.63.3"
"sass": "^1.63.4"
}
}

View file

@ -7,22 +7,28 @@ settings:
dependencies:
'@astrojs/mdx':
specifier: ^0.19.7
version: 0.19.7(astro@2.6.3)
version: 0.19.7(astro@2.6.4)
'@astrojs/solid-js':
specifier: ^2.2.0
version: 2.2.0(@babel/core@7.22.5)(solid-js@1.7.6)
'@citation-js/plugin-bibtex':
specifier: ^0.6.8
version: 0.6.8(@citation-js/core@0.6.8)
'@js-temporal/polyfill':
specifier: ^0.4.4
version: 0.4.4
astro:
specifier: ^2.6.3
version: 2.6.3(sass@1.63.3)
specifier: ^2.6.4
version: 2.6.4(sass@1.63.4)
astro-pagefind:
specifier: ^1.2.0
version: 1.2.0(astro@2.6.3)
version: 1.2.0(astro@2.6.4)
chart.js:
specifier: ^4.3.0
version: 4.3.0
citation-js:
specifier: ^0.6.8
version: 0.6.8
dayjs:
specifier: ^1.11.8
version: 1.11.8
@ -32,6 +38,9 @@ dependencies:
leaflet.markercluster:
specifier: ^1.5.3
version: 1.5.3(leaflet@1.9.4)
mdast-util-to-string:
specifier: ^3.2.0
version: 3.2.0
purify-ts:
specifier: ^2.0.1
version: 2.0.1
@ -44,9 +53,12 @@ dependencies:
rehype-stringify:
specifier: ^9.0.3
version: 9.0.3
remark-directive:
specifier: ^2.0.1
version: 2.0.1
remark-emoji:
specifier: ^3.1.1
version: 3.1.1
specifier: ^3.1.2
version: 3.1.2
remark-gfm:
specifier: ^3.0.1
version: 3.0.1
@ -92,8 +104,8 @@ devDependencies:
specifier: ^0.12.0
version: 0.12.0
sass:
specifier: ^1.63.3
version: 1.63.3
specifier: ^1.63.4
version: 1.63.4
packages:
@ -132,13 +144,13 @@ packages:
vscode-uri: 3.0.7
dev: false
/@astrojs/markdown-remark@2.2.1(astro@2.6.3):
/@astrojs/markdown-remark@2.2.1(astro@2.6.4):
resolution: {integrity: sha512-VF0HRv4GpC1XEMLnsKf6jth7JSmlt9qpqP0josQgA2eSpCIAC/Et+y94mgdBIZVBYH/yFnMoIxgKVe93xfO2GA==}
peerDependencies:
astro: ^2.5.0
dependencies:
'@astrojs/prism': 2.1.2
astro: 2.6.3(sass@1.63.3)
astro: 2.6.4(sass@1.63.4)
github-slugger: 1.5.0
import-meta-resolve: 2.2.2
rehype-raw: 6.1.1
@ -155,14 +167,14 @@ packages:
- supports-color
dev: false
/@astrojs/mdx@0.19.7(astro@2.6.3):
/@astrojs/mdx@0.19.7(astro@2.6.4):
resolution: {integrity: sha512-mfEbBD7oi8yBHhcJucEjnrquREkJ3os+jioURP8BR2B8tOV2rV2j8trvmLUgfS+P/+HevGObxCTjcRYxn6T7eg==}
engines: {node: '>=16.12.0'}
dependencies:
'@astrojs/markdown-remark': 2.2.1(astro@2.6.3)
'@astrojs/markdown-remark': 2.2.1(astro@2.6.4)
'@astrojs/prism': 2.1.2
'@mdx-js/mdx': 2.3.0
acorn: 8.8.2
acorn: 8.9.0
es-module-lexer: 1.3.0
estree-util-visit: 1.2.1
github-slugger: 1.5.0
@ -182,13 +194,13 @@ packages:
- supports-color
dev: false
/@astrojs/node@5.2.0(astro@2.6.3):
/@astrojs/node@5.2.0(astro@2.6.4):
resolution: {integrity: sha512-WWrQuxvdrD2Jd9np8vpS8/zCNEm0JnGv+oaojXzbfW36R8/09L827t/acYxLuguLufiV3U16QAqEwpS8VFS9TA==}
peerDependencies:
astro: ^2.6.0
dependencies:
'@astrojs/webapi': 2.2.0
astro: 2.6.3(sass@1.63.3)
astro: 2.6.4(sass@1.63.4)
send: 0.18.0
server-destroy: 1.0.1
transitivePeerDependencies:
@ -299,7 +311,7 @@ packages:
'@babel/compat-data': 7.22.5
'@babel/core': 7.22.5
'@babel/helper-validator-option': 7.22.5
browserslist: 4.21.7
browserslist: 4.21.9
lru-cache: 5.1.1
semver: 6.3.0
dev: false
@ -476,6 +488,112 @@ packages:
to-fast-properties: 2.0.0
dev: false
/@citation-js/cli@0.6.8:
resolution: {integrity: sha512-UAtYlWfdK0p7pXDutEQ7qlia+rV9CBh7kWllrA5mSqHEte7/q2VMfmTSqzcSEC0pCQZZsQo415WkQFMPtqTtCA==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/plugin-bibjson': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-bibtex': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-csl': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-doi': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-ris': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-wikidata': 0.6.8(@citation-js/core@0.6.8)
commander: 10.0.1
transitivePeerDependencies:
- encoding
dev: false
/@citation-js/core@0.6.8:
resolution: {integrity: sha512-EqnEj+0OR9t0pU0d/CQ4TKNSxxALTSm5gXxg56dQ2nnod9esIwNVDWztX5LXstiHj7k8VjUSo/TZw7O2AXFdBQ==}
engines: {node: '>=14.0.0'}
dependencies:
'@citation-js/date': 0.5.1
'@citation-js/name': 0.4.2
fetch-ponyfill: 7.1.0
sync-fetch: 0.4.5
transitivePeerDependencies:
- encoding
dev: false
/@citation-js/date@0.5.1:
resolution: {integrity: sha512-1iDKAZ4ie48PVhovsOXQ+C6o55dWJloXqtznnnKy6CltJBQLIuLLuUqa8zlIvma0ZigjVjgDUhnVaNU1MErtZw==}
engines: {node: '>=10.0.0'}
dev: false
/@citation-js/name@0.4.2:
resolution: {integrity: sha512-brSPsjs2fOVzSnARLKu0qncn6suWjHVQtrqSUrnqyaRH95r/Ad4wPF5EsoWr+Dx8HzkCGb/ogmoAzfCsqlTwTQ==}
engines: {node: '>=6'}
dev: false
/@citation-js/plugin-bibjson@0.6.8(@citation-js/core@0.6.8):
resolution: {integrity: sha512-ubMJVvJ1WWR/GJqyxO+EJY6XAk7vOKV7n3RgfbWvNvhWLxWNh/eZiL44xbwRqyhqgsbWoqBrr7PD7D2p/PeHaQ==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@citation-js/core': ^0.6.0
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
'@citation-js/name': 0.4.2
dev: false
/@citation-js/plugin-bibtex@0.6.8(@citation-js/core@0.6.8):
resolution: {integrity: sha512-ERCHi4TTZ/8TM/Y6lul/pcLHfMltcZqn0BrATCXwVrndwXdUfj8Z6bQdXgaOAhHjo7ngp9T0DC7skgofEGBSTA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@citation-js/core': ^0.6.0
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
'@citation-js/name': 0.4.2
moo: 0.5.2
dev: false
/@citation-js/plugin-csl@0.6.8(@citation-js/core@0.6.8):
resolution: {integrity: sha512-X3cTCKWvhD580YSVcS55XhwVgPppzDIiaYgiJopAa/MAvzogt1ODqy6dbBPtb07ttdVQm8VG8FHRD2LsGViTGg==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@citation-js/core': ^0.6.0
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
citeproc: 2.4.63
dev: false
/@citation-js/plugin-doi@0.6.8(@citation-js/core@0.6.8):
resolution: {integrity: sha512-d9F0MX2FomU6YU1kWZ7SRvl3nv2f2C7PEhNI590By5e97oc0pbsQomdW8VmJU3YgWrg/QD1XNcdCl5G/BlxTMA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@citation-js/core': ^0.6.0
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
dev: false
/@citation-js/plugin-ris@0.6.8(@citation-js/core@0.6.8):
resolution: {integrity: sha512-pDHdOjdrn25riXEwF3XK1fcU2o5/lxV2vbK+CxiFCiV2C2bRtNJRBN/97xIkHBWuqI5mr8ts93b3ijHvp3576Q==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@citation-js/core': ^0.6.0
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
'@citation-js/name': 0.4.2
dev: false
/@citation-js/plugin-wikidata@0.6.8(@citation-js/core@0.6.8):
resolution: {integrity: sha512-XUSczpIGJgnWySzb5Z1sbfxyX3RSENsDWDAWZVxMD8f3LjUF52XIT+50ZjpDrE0p8p6TWkyK6Q3kUa0vScIL8w==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@citation-js/core': ^0.6.0
dependencies:
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
'@citation-js/name': 0.4.2
wikidata-sdk: 8.1.1
dev: false
/@emmetio/abbreviation@2.3.3:
resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==}
dependencies:
@ -951,16 +1069,16 @@ packages:
resolution: {integrity: sha512-/yrv59IEnmh655z1oeDnGcvMYwnEzNzHLgeYcQCkhYX0xBvYWrAuefoiLcPBUkMpJsb46bqQ6Yv4pwTTQ4d3Qg==}
dev: false
/acorn-jsx@5.3.2(acorn@8.8.2):
/acorn-jsx@5.3.2(acorn@8.9.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
acorn: 8.8.2
acorn: 8.9.0
dev: false
/acorn@8.8.2:
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
/acorn@8.9.0:
resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: false
@ -1038,22 +1156,22 @@ packages:
hasBin: true
dev: false
/astro-pagefind@1.2.0(astro@2.6.3):
/astro-pagefind@1.2.0(astro@2.6.4):
resolution: {integrity: sha512-1l4RSz/Cm5jIHbgN+mZZ2jOjpB5gK0qWJDZ0zWqUcguX3NJxaS+pai/snGmBoxtEbOGXx/SjrhlSAq2inqwdQw==}
peerDependencies:
astro: ^2.0.4
dependencies:
'@astrojs/node': 5.2.0(astro@2.6.3)
'@astrojs/node': 5.2.0(astro@2.6.4)
'@pagefind/default-ui': 0.12.0
astro: 2.6.3(sass@1.63.3)
astro: 2.6.4(sass@1.63.4)
pagefind: 0.12.0
sirv: 2.0.3
transitivePeerDependencies:
- supports-color
dev: false
/astro@2.6.3(sass@1.63.3):
resolution: {integrity: sha512-gJoBX+t11qAeYDjterGEaQZx7qqlGOigWhE0zkcEBv4zy7l4IpKx6nGGUNzD/l8x6WomZxkdZROsOsiEaWSJmQ==}
/astro@2.6.4(sass@1.63.4):
resolution: {integrity: sha512-YM5H9SLHflxCB/3H8S2Bi+1Lbwn/MA9Vl/eOZmkCT491gvBsyuKCTsoUas6fwggeKn+fIR2XpdYd2F+unQve3g==}
engines: {node: '>=16.12.0', npm: '>=6.14.0'}
hasBin: true
peerDependencies:
@ -1065,7 +1183,7 @@ packages:
'@astrojs/compiler': 1.5.1
'@astrojs/internal-helpers': 0.1.0
'@astrojs/language-server': 1.0.8
'@astrojs/markdown-remark': 2.2.1(astro@2.6.3)
'@astrojs/markdown-remark': 2.2.1(astro@2.6.4)
'@astrojs/telemetry': 2.1.1
'@astrojs/webapi': 2.2.0
'@babel/core': 7.22.5
@ -1076,7 +1194,7 @@ packages:
'@babel/types': 7.22.5
'@types/babel__core': 7.20.1
'@types/yargs-parser': 21.0.0
acorn: 8.8.2
acorn: 8.9.0
boxen: 6.2.1
chokidar: 3.5.3
ci-info: 3.8.0
@ -1104,7 +1222,7 @@ packages:
preferred-pm: 3.0.3
prompts: 2.4.2
rehype: 12.0.1
semver: 7.5.1
semver: 7.5.2
server-destroy: 1.0.1
shiki: 0.14.2
slash: 4.0.0
@ -1115,7 +1233,7 @@ packages:
typescript: 5.1.3
unist-util-visit: 4.1.2
vfile: 5.3.7
vite: 4.3.9(sass@1.63.3)
vite: 4.3.9(sass@1.63.4)
vitefu: 0.2.4(vite@4.3.9)
yargs-parser: 21.1.1
zod: 3.21.4
@ -1203,15 +1321,22 @@ packages:
dependencies:
fill-range: 7.0.1
/browserslist@4.21.7:
resolution: {integrity: sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==}
/browserslist@4.21.9:
resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001499
electron-to-chromium: 1.4.427
caniuse-lite: 1.0.30001503
electron-to-chromium: 1.4.433
node-releases: 2.0.12
update-browserslist-db: 1.0.11(browserslist@4.21.7)
update-browserslist-db: 1.0.11(browserslist@4.21.9)
dev: false
/buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
dev: false
/buffer@6.0.3:
@ -1240,8 +1365,8 @@ packages:
engines: {node: '>=10'}
dev: false
/caniuse-lite@1.0.30001499:
resolution: {integrity: sha512-IhoQqRrW6WiecFcfZgoJS1YLEN1/HR1vHP5WNgjCARRW7KUNToHHTX3FrwCM+y4zkRa48D9rE90WFYc2IWhDWQ==}
/caniuse-lite@1.0.30001503:
resolution: {integrity: sha512-Sf9NiF+wZxPfzv8Z3iS0rXM1Do+iOy2Lxvib38glFX+08TCYYYGR5fRJXk4d77C4AYwhUjgYgMsMudbh2TqCKw==}
dev: false
/ccount@2.0.1:
@ -1312,6 +1437,30 @@ packages:
engines: {node: '>=8'}
dev: false
/citation-js@0.6.8:
resolution: {integrity: sha512-/7n806dzjmi4dXHAeZ+V+YJZfrGAVf4uUPb/B/C808qX0vemKmxYnu4GPQqwZRYcL6V/vXfqfGzQQuXnAun9oA==}
engines: {node: '>=14'}
hasBin: true
dependencies:
'@citation-js/cli': 0.6.8
'@citation-js/core': 0.6.8
'@citation-js/date': 0.5.1
'@citation-js/name': 0.4.2
'@citation-js/plugin-bibjson': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-bibtex': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-csl': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-doi': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-ris': 0.6.8(@citation-js/core@0.6.8)
'@citation-js/plugin-wikidata': 0.6.8(@citation-js/core@0.6.8)
citeproc: 2.4.63
transitivePeerDependencies:
- encoding
dev: false
/citeproc@2.4.63:
resolution: {integrity: sha512-68F95Bp4UbgZU/DBUGQn0qV3HDZLCdI9+Bb2ByrTaNJDL5VEm9LqaiNaxljsvoaExSLEXe1/r6n2Z06SCzW3/Q==}
dev: false
/cli-boxes@3.0.0:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
@ -1359,6 +1508,11 @@ packages:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
dev: false
/commander@10.0.1:
resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
engines: {node: '>=14'}
dev: false
/commander@8.3.0:
resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
engines: {node: '>= 12'}
@ -1497,8 +1651,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false
/electron-to-chromium@1.4.427:
resolution: {integrity: sha512-HK3r9l+Jm8dYAm1ctXEWIC+hV60zfcjS9UA5BDlYvnI5S7PU/yytjpvSrTNrSSRRkuu3tDyZhdkwIczh+0DWaw==}
/electron-to-chromium@1.4.433:
resolution: {integrity: sha512-MGO1k0w1RgrfdbLVwmXcDhHHuxCn2qRgR7dYsJvWFKDttvYPx6FNzCGG0c/fBBvzK2LDh3UV7Tt9awnHnvAAUQ==}
dev: false
/emmet@2.4.4:
@ -1721,6 +1875,14 @@ packages:
format: 0.2.2
dev: false
/fetch-ponyfill@7.1.0:
resolution: {integrity: sha512-FhbbL55dj/qdVO3YNK7ZEkshvj3eQ7EuIGV2I6ic/2YiocvyWv+7jg2s4AyS0wdRU75s3tA8ZxI/xPigb0v5Aw==}
dependencies:
node-fetch: 2.6.11
transitivePeerDependencies:
- encoding
dev: false
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
@ -2318,6 +2480,20 @@ packages:
unist-util-visit: 4.1.2
dev: false
/mdast-util-directive@2.2.4:
resolution: {integrity: sha512-sK3ojFP+jpj1n7Zo5ZKvoxP1MvLyzVG63+gm40Z/qI00avzdPCYxt7RBMgofwAva9gBjbDBWVRB/i+UD+fUCzQ==}
dependencies:
'@types/mdast': 3.0.11
'@types/unist': 2.0.6
mdast-util-from-markdown: 1.3.1
mdast-util-to-markdown: 1.5.0
parse-entities: 4.0.1
stringify-entities: 4.0.3
unist-util-visit-parents: 5.1.3
transitivePeerDependencies:
- supports-color
dev: false
/mdast-util-find-and-replace@2.2.2:
resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==}
dependencies:
@ -2542,6 +2718,18 @@ packages:
uvu: 0.5.6
dev: false
/micromark-extension-directive@2.2.1:
resolution: {integrity: sha512-ZFKZkNaEqAP86IghX1X7sE8NNnx6kFNq9mSBRvEHjArutTCJZ3LYg6VH151lXVb1JHpmIcW/7rX25oMoIHuSug==}
dependencies:
micromark-factory-space: 1.1.0
micromark-factory-whitespace: 1.1.0
micromark-util-character: 1.2.0
micromark-util-symbol: 1.1.0
micromark-util-types: 1.1.0
parse-entities: 4.0.1
uvu: 0.5.6
dev: false
/micromark-extension-frontmatter@1.1.1:
resolution: {integrity: sha512-m2UH9a7n3W8VAH9JO9y01APpPKmNNNs71P0RbknEmYSaZU5Ghogv38BYO94AI5Xw6OYfxZRdHZZ2nYjs/Z+SZQ==}
dependencies:
@ -2686,8 +2874,8 @@ packages:
/micromark-extension-mdxjs@1.0.1:
resolution: {integrity: sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==}
dependencies:
acorn: 8.8.2
acorn-jsx: 5.3.2(acorn@8.8.2)
acorn: 8.9.0
acorn-jsx: 5.3.2(acorn@8.9.0)
micromark-extension-mdx-expression: 1.0.8
micromark-extension-mdx-jsx: 1.0.5
micromark-extension-mdx-md: 1.0.1
@ -2906,6 +3094,10 @@ packages:
engines: {node: '>=12'}
dev: false
/moo@0.5.2:
resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==}
dev: false
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
@ -2945,6 +3137,18 @@ packages:
lodash: 4.17.21
dev: false
/node-fetch@2.6.11:
resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==}
engines: {node: 4.x || >=6.0.0}
peerDependencies:
encoding: ^0.1.0
peerDependenciesMeta:
encoding:
optional: true
dependencies:
whatwg-url: 5.0.0
dev: false
/node-releases@2.0.12:
resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==}
dev: false
@ -3275,8 +3479,19 @@ packages:
unified: 10.1.2
dev: false
/remark-emoji@3.1.1:
resolution: {integrity: sha512-kVCTaHzX+/ls67mE8JsGd3ZX511p2FlAPmKhdGpRCb5z6GSwp+3sAIB5oTySIetPh7CtqfGf7JBUt5fyMjgOHw==}
/remark-directive@2.0.1:
resolution: {integrity: sha512-oosbsUAkU/qmUE78anLaJePnPis4ihsE7Agp0T/oqTzvTea8pOiaYEtfInU/+xMOVTS9PN5AhGOiaIVe4GD8gw==}
dependencies:
'@types/mdast': 3.0.11
mdast-util-directive: 2.2.4
micromark-extension-directive: 2.2.1
unified: 10.1.2
transitivePeerDependencies:
- supports-color
dev: false
/remark-emoji@3.1.2:
resolution: {integrity: sha512-QwhAzNk27Ol64uV4z/3n55MKrNz9bhr8wg+mO5aGqIYDS+jUarS1d8Y0ZIeEBVhfGkXj6gGYM+727sOgAPvV/A==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dependencies:
emoticon: 4.0.1
@ -3412,8 +3627,8 @@ packages:
engines: {node: '>=10.0.0'}
dev: false
/rollup@3.25.0:
resolution: {integrity: sha512-FnJkNRst2jEZGw7f+v4hFo6UTzpDKrAKcHZWcEfm5/GJQ5CK7wgb4moNLNAe7npKUev7yQn1AY/YbZRIxOv6Qg==}
/rollup@3.25.1:
resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
@ -3454,8 +3669,8 @@ packages:
suf-log: 2.5.3
dev: false
/sass@1.63.3:
resolution: {integrity: sha512-ySdXN+DVpfwq49jG1+hmtDslYqpS7SkOR5GpF6o2bmb1RL/xS+wvPmegMvMywyfsmAV6p7TgwXYGrCZIFFbAHg==}
/sass@1.63.4:
resolution: {integrity: sha512-Sx/+weUmK+oiIlI+9sdD0wZHsqpbgQg8wSwSnGBjwb5GwqFhYNwwnI+UWZtLjKvKyFlKkatRK235qQ3mokyPoQ==}
engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
@ -3476,8 +3691,8 @@ packages:
hasBin: true
dev: false
/semver@7.5.1:
resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==}
/semver@7.5.2:
resolution: {integrity: sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==}
engines: {node: '>=10'}
hasBin: true
dependencies:
@ -3709,6 +3924,16 @@ packages:
engines: {node: '>= 0.4'}
dev: false
/sync-fetch@0.4.5:
resolution: {integrity: sha512-esiWJ7ixSKGpd9DJPBTC4ckChqdOjIwJfYhVHkcQ2Gnm41323p1TRmEI+esTQ9ppD+b5opps2OTEGTCGX5kF+g==}
engines: {node: '>=14'}
dependencies:
buffer: 5.7.1
node-fetch: 2.6.11
transitivePeerDependencies:
- encoding
dev: false
/synckit@0.8.5:
resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==}
engines: {node: ^14.18.0 || >=16.0.0}
@ -3743,6 +3968,10 @@ packages:
engines: {node: '>=6'}
dev: false
/tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: false
/trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
dev: false
@ -3880,13 +4109,13 @@ packages:
engines: {node: '>=8'}
dev: false
/update-browserslist-db@1.0.11(browserslist@4.21.7):
/update-browserslist-db@1.0.11(browserslist@4.21.9):
resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
dependencies:
browserslist: 4.21.7
browserslist: 4.21.9
escalade: 3.1.1
picocolors: 1.0.0
dev: false
@ -3933,7 +4162,7 @@ packages:
vfile-message: 3.1.4
dev: false
/vite@4.3.9(sass@1.63.3):
/vite@4.3.9(sass@1.63.4):
resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@ -3960,8 +4189,8 @@ packages:
dependencies:
esbuild: 0.17.19
postcss: 8.4.24
rollup: 3.25.0
sass: 1.63.3
rollup: 3.25.1
sass: 1.63.4
optionalDependencies:
fsevents: 2.3.2
dev: false
@ -3974,7 +4203,7 @@ packages:
vite:
optional: true
dependencies:
vite: 4.3.9(sass@1.63.3)
vite: 4.3.9(sass@1.63.4)
dev: false
/vscode-css-languageservice@6.2.6:
@ -4048,6 +4277,17 @@ packages:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
dev: false
/webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: false
/whatwg-url@5.0.0:
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
dependencies:
tr46: 0.0.3
webidl-conversions: 3.0.1
dev: false
/which-pm-runs@1.1.0:
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
engines: {node: '>=4'}
@ -4076,6 +4316,19 @@ packages:
string-width: 5.1.2
dev: false
/wikibase-sdk@8.1.1:
resolution: {integrity: sha512-1NjMnfNQ4OaLh0dFAeTMvV3vGAq6HXsNKGfYUJYOVyBPGBDMunlY3QZ8+72hLV5FiKmc6Bzg1xbI0jCHfHmIew==}
engines: {node: '>= 10.0.0'}
dev: false
/wikidata-sdk@8.1.1:
resolution: {integrity: sha512-KOUhJtpCHg32k/tz7pFj/BaqiYAvYGz4sGzcT15t120832WtfNTGCSeohmln40/JOjpxzfzud/6q2x6Q0Ji5hg==}
engines: {node: '>= 6.4'}
deprecated: wikidata-sdk has been renamed wikibase-sdk
dependencies:
wikibase-sdk: 8.1.1
dev: false
/wrap-ansi@8.1.0:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}

View file

@ -11,11 +11,11 @@ Sadly, as far as I know CommonMark currently doesn't include anything about ruby
| Language | Example |
| -------- | ------- |
| Japanese | [日本語]{にほんご}の[文法]{ぶんぽう}は[難]{むずか}しい |
| Chinese | [北]{Běi}[京]{jīng}<br/>[北]{ㄅㄟˇ}[京]{ㄐㄧㄥ} |
| Korean | [韓]{한}[國]{국} |
| Vietnamese | [河]{Hà}[內]{Nội} |
| Other | I [love]{like} ruby! |
| Japanese | :ruby[日本語]{help=;ほん;ご}の:ruby[文法]{help=ぶん;ぽう}は:ruby[難]{help=むずか}しい |
| Chinese | :ruby[北京]{help=Běi;jīng}<br/>:ruby[北京]{help=ㄅㄟˇ;ㄐㄧㄥ} |
| Korean | :ruby[韓國]{help=한;국} |
| Vietnamese | :ruby[河內]{help=Hà;Nội} |
| Other | I :ruby[love]{help=like} ruby! |
## Remark

View file

@ -0,0 +1,5 @@
.csl-bib-body {
display: flex;
flex-direction: column;
gap: 0.5em;
}

View file

@ -13,6 +13,7 @@
@use 'components/song';
@use 'components/album-grid';
@use 'components/link-tree';
@use 'components/bibliography';
// Partials
@use 'partials/nav';

View file

@ -0,0 +1,67 @@
import "@citation-js/plugin-bibtex";
// @ts-ignore
import Cite from "citation-js";
import type { Root } from "remark-directive";
import type { Plugin } from "unified";
import { visit, EXIT, CONTINUE } from "unist-util-visit";
import { toString } from "mdast-util-to-string";
import { Maybe } from "purify-ts";
function locateBibliography(tree: any) {
let bibliography: Maybe<Cite> = Maybe.empty();
visit(tree, "containerDirective", (node, index, parent) => {
if (node.name !== "bib")
return CONTINUE;
const data = new Cite(toString(node));
const html = data.format("bibliography", {
format: "html",
type: "string",
template: "apa",
lang: "en-US"
});
parent.children.splice(index, 1, {
type: "html",
value: html,
position: node.position,
});
bibliography = Maybe.of(data);
return EXIT;
});
return bibliography;
}
function convertCitations(tree: any, data: Cite) {
visit(tree, "textDirective", (node, index, parent) => {
if (node.name !== "cite")
return CONTINUE;
const refs = new Set(toString(node).split(','));
const cite = new Cite(data.data.filter((el: any) => refs.has(el.id)));
const html = cite.format("citation", {
format: "html",
template: "apa",
})
parent.children.splice(index, 1, {
type: "html",
value: `<cite>${html}</cite>`,
position: node.position,
});
})
}
export const remarkBibliography: Plugin<[], Root> = (options?: any) => {
return (tree: any) => {
locateBibliography(tree)
.ifJust(data => convertCitations(tree, data));
}
}
export default remarkBibliography;

50
src/utils/remark/ruby.ts Normal file
View file

@ -0,0 +1,50 @@
import type { Root } from "remark-directive";
import type { Plugin } from "unified";
import { CONTINUE, SKIP, visit } from "unist-util-visit";
import { toString } from "mdast-util-to-string";
interface Options {
separator: string;
}
type Pair = [string, string];
function toHtml([text, help]: Pair) {
return `<ruby>${text}<rp>(</rp><rt>${help}</rt><rp>)</rp></ruby>`;
}
function createRuby(text: string, help: string, options?: Options) {
const splitText = text.split('');
const splitHelp = help.split(options?.separator || ';');
const pairs = (splitText.length === splitHelp.length)
? splitText.map((e, i) => [e, splitHelp[i]] as Pair)
: [[text, help]] as Pair[];
return pairs.map(toHtml).join('');
}
export const remarkRuby: Plugin<[Options?], Root> = (options?: Options) => {
return (tree: any) => {
visit(tree, "textDirective", (node, index, parent) => {
if (node.name !== 'ruby')
return CONTINUE;
const text: string = toString(node);
const help: string = node.attributes?.help;
const ruby = {
type: "html",
value: createRuby(text, help, options),
position: node.position,
};
parent.children.splice(index, 1, ruby);
return SKIP;
})
}
}
export default remarkRuby;