crunk
9 months ago
27 changed files with 10449 additions and 1 deletions
@ -1,3 +1,13 @@ |
|||||
# mdZines |
# mdZines |
||||
|
|
||||
where you make zines online |
where you make zines online |
||||
|
|
||||
|
- a bit like https://rust-lang.github.io/mdBook/ |
||||
|
- but more as a CMS where you can also edit your markdown and CSS online |
||||
|
- might do server side PDF making too. |
||||
|
|
||||
|
## trying out Go for a webinterface project |
||||
|
- https://gin-gonic.com/docs/quickstart/ |
||||
|
- https://gin-gonic.com/docs/examples/html-rendering/ |
||||
|
- https://github.com/chromedp/chromedp |
||||
|
- https://github.com/go-rod/rod |
||||
|
@ -0,0 +1,38 @@ |
|||||
|
module mdzines.go |
||||
|
|
||||
|
go 1.21.4 |
||||
|
|
||||
|
require ( |
||||
|
github.com/alecthomas/chroma v0.10.0 |
||||
|
github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd |
||||
|
) |
||||
|
|
||||
|
require ( |
||||
|
github.com/bytedance/sonic v1.10.2 // indirect |
||||
|
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect |
||||
|
github.com/chenzhuoyu/iasm v0.9.1 // indirect |
||||
|
github.com/dlclark/regexp2 v1.4.0 // indirect |
||||
|
github.com/gabriel-vasile/mimetype v1.4.3 // indirect |
||||
|
github.com/gin-contrib/sse v0.1.0 // indirect |
||||
|
github.com/gin-gonic/gin v1.9.1 // indirect |
||||
|
github.com/go-playground/locales v0.14.1 // indirect |
||||
|
github.com/go-playground/universal-translator v0.18.1 // indirect |
||||
|
github.com/go-playground/validator/v10 v10.16.0 // indirect |
||||
|
github.com/goccy/go-json v0.10.2 // indirect |
||||
|
github.com/json-iterator/go v1.1.12 // indirect |
||||
|
github.com/klauspost/cpuid/v2 v2.2.6 // indirect |
||||
|
github.com/leodido/go-urn v1.2.4 // indirect |
||||
|
github.com/mattn/go-isatty v0.0.20 // indirect |
||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect |
||||
|
github.com/modern-go/reflect2 v1.0.2 // indirect |
||||
|
github.com/pelletier/go-toml/v2 v2.1.0 // indirect |
||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect |
||||
|
github.com/ugorji/go/codec v1.2.11 // indirect |
||||
|
golang.org/x/arch v0.6.0 // indirect |
||||
|
golang.org/x/crypto v0.16.0 // indirect |
||||
|
golang.org/x/net v0.19.0 // indirect |
||||
|
golang.org/x/sys v0.15.0 // indirect |
||||
|
golang.org/x/text v0.14.0 // indirect |
||||
|
google.golang.org/protobuf v1.31.0 // indirect |
||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect |
||||
|
) |
@ -0,0 +1,95 @@ |
|||||
|
github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= |
||||
|
github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= |
||||
|
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= |
||||
|
github.com/bytedance/sonic v1.10.0-rc/go.mod h1:ElCzW+ufi8qKqNW0FY314xriJhyJhuoJ3gFZdAHF7NM= |
||||
|
github.com/bytedance/sonic v1.10.2 h1:GQebETVBxYB7JGWJtLBi07OVzWwt+8dWA00gEVW2ZFE= |
||||
|
github.com/bytedance/sonic v1.10.2/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4= |
||||
|
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= |
||||
|
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= |
||||
|
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= |
||||
|
github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpVsBuRksnlj1mLy4AWzRNQYxauNi62uWcE3to6eA= |
||||
|
github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= |
||||
|
github.com/chenzhuoyu/iasm v0.9.1 h1:tUHQJXo3NhBqw6s33wkGn9SP3bvrWLdlVIJ3hQBL7P0= |
||||
|
github.com/chenzhuoyu/iasm v0.9.1/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= |
||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= |
||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= |
||||
|
github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= |
||||
|
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= |
||||
|
github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= |
||||
|
github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= |
||||
|
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= |
||||
|
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= |
||||
|
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= |
||||
|
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= |
||||
|
github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= |
||||
|
github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= |
||||
|
github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= |
||||
|
github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= |
||||
|
github.com/go-playground/validator/v10 v10.16.0 h1:x+plE831WK4vaKHO/jpgUGsvLKIqRRkz6M78GuJAfGE= |
||||
|
github.com/go-playground/validator/v10 v10.16.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= |
||||
|
github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= |
||||
|
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= |
||||
|
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= |
||||
|
github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd h1:PppHBegd3uPZ3Y/Iax/2mlCFJm1w4Qf/zP1MdW4ju2o= |
||||
|
github.com/gomarkdown/markdown v0.0.0-20231115200524-a660076da3fd/go.mod h1:JDGcbDT52eL4fju3sZ4TeHGsQwhG9nbDV21aMyhwPoA= |
||||
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= |
||||
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= |
||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= |
||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= |
||||
|
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= |
||||
|
github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= |
||||
|
github.com/klauspost/cpuid/v2 v2.2.6/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= |
||||
|
github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= |
||||
|
github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= |
||||
|
github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= |
||||
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= |
||||
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= |
||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= |
||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= |
||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= |
||||
|
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= |
||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= |
||||
|
github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= |
||||
|
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= |
||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= |
||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= |
||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= |
||||
|
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= |
||||
|
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= |
||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= |
||||
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= |
||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= |
||||
|
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= |
||||
|
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= |
||||
|
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= |
||||
|
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= |
||||
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= |
||||
|
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= |
||||
|
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= |
||||
|
github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= |
||||
|
github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= |
||||
|
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= |
||||
|
golang.org/x/arch v0.6.0 h1:S0JTfE48HbRj80+4tbvZDYsJ3tGv6BUU3XxyZ7CirAc= |
||||
|
golang.org/x/arch v0.6.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= |
||||
|
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= |
||||
|
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= |
||||
|
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= |
||||
|
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= |
||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= |
||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= |
||||
|
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= |
||||
|
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= |
||||
|
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= |
||||
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= |
||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= |
||||
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= |
||||
|
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= |
||||
|
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= |
||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= |
||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= |
||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= |
||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
||||
|
nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= |
||||
|
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= |
@ -0,0 +1,19 @@ |
|||||
|
package main |
||||
|
|
||||
|
import ( |
||||
|
"net/http" |
||||
|
|
||||
|
"github.com/gin-gonic/gin" |
||||
|
) |
||||
|
|
||||
|
func main() { |
||||
|
router := gin.Default() |
||||
|
router.LoadHTMLGlob("templates/*") |
||||
|
router.StaticFS("/static", http.Dir("./files")) |
||||
|
router.GET("/index", func(c *gin.Context) { |
||||
|
c.HTML(http.StatusOK, "index.tmpl", gin.H{ |
||||
|
"title": "CRUNK", |
||||
|
}) |
||||
|
}) |
||||
|
router.Run(":5000") // listen and serve on localhost:5000
|
||||
|
} |
@ -0,0 +1,92 @@ |
|||||
|
package main |
||||
|
|
||||
|
// example for https://blog.kowalczyk.info/article/cxn3/advanced-markdown-processing-in-go.html
|
||||
|
import ( |
||||
|
"fmt" |
||||
|
"io" |
||||
|
|
||||
|
"github.com/gomarkdown/markdown" |
||||
|
"github.com/gomarkdown/markdown/ast" |
||||
|
mdhtml "github.com/gomarkdown/markdown/html" |
||||
|
|
||||
|
"github.com/alecthomas/chroma" |
||||
|
"github.com/alecthomas/chroma/formatters/html" |
||||
|
"github.com/alecthomas/chroma/lexers" |
||||
|
"github.com/alecthomas/chroma/styles" |
||||
|
) |
||||
|
|
||||
|
var ( |
||||
|
htmlFormatter *html.Formatter |
||||
|
highlightStyle *chroma.Style |
||||
|
) |
||||
|
|
||||
|
func init() { |
||||
|
htmlFormatter = html.New(html.WithClasses(true), html.TabWidth(2)) |
||||
|
if htmlFormatter == nil { |
||||
|
panic("couldn't create html formatter") |
||||
|
} |
||||
|
styleName := "monokailight" |
||||
|
highlightStyle = styles.Get(styleName) |
||||
|
if highlightStyle == nil { |
||||
|
panic(fmt.Sprintf("didn't find style '%s'", styleName)) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// based on https://github.com/alecthomas/chroma/blob/master/quick/quick.go
|
||||
|
func htmlHighlight(w io.Writer, source, lang, defaultLang string) error { |
||||
|
if lang == "" { |
||||
|
lang = defaultLang |
||||
|
} |
||||
|
l := lexers.Get(lang) |
||||
|
if l == nil { |
||||
|
l = lexers.Analyse(source) |
||||
|
} |
||||
|
if l == nil { |
||||
|
l = lexers.Fallback |
||||
|
} |
||||
|
l = chroma.Coalesce(l) |
||||
|
|
||||
|
it, err := l.Tokenise(nil, source) |
||||
|
if err != nil { |
||||
|
return err |
||||
|
} |
||||
|
return htmlFormatter.Format(w, highlightStyle, it) |
||||
|
} |
||||
|
|
||||
|
// an actual rendering of Paragraph is more complicated
|
||||
|
func renderCode(w io.Writer, codeBlock *ast.CodeBlock, entering bool) { |
||||
|
defaultLang := "" |
||||
|
lang := string(codeBlock.Info) |
||||
|
htmlHighlight(w, string(codeBlock.Literal), lang, defaultLang) |
||||
|
} |
||||
|
|
||||
|
func myRenderHook(w io.Writer, node ast.Node, entering bool) (ast.WalkStatus, bool) { |
||||
|
if code, ok := node.(*ast.CodeBlock); ok { |
||||
|
renderCode(w, code, entering) |
||||
|
return ast.GoToNext, true |
||||
|
} |
||||
|
return ast.GoToNext, false |
||||
|
} |
||||
|
|
||||
|
func newCustomizedRender() *mdhtml.Renderer { |
||||
|
opts := mdhtml.RendererOptions{ |
||||
|
Flags: mdhtml.CommonFlags, |
||||
|
RenderNodeHook: myRenderHook, |
||||
|
} |
||||
|
return mdhtml.NewRenderer(opts) |
||||
|
} |
||||
|
|
||||
|
var mds = "code block:\n```go\nvar n = 384\n```" |
||||
|
|
||||
|
func codeHighlight() { |
||||
|
md := []byte(mds) |
||||
|
|
||||
|
renderer := newCustomizedRender() |
||||
|
html := markdown.ToHTML(md, nil, renderer) |
||||
|
|
||||
|
fmt.Printf("--- Markdown:\n%s\n\n--- HTML:\n%s\n", md, html) |
||||
|
} |
||||
|
|
||||
|
func main() { |
||||
|
codeHighlight() |
||||
|
} |
@ -0,0 +1,29 @@ |
|||||
|
## Subresource Integrity |
||||
|
|
||||
|
If you are loading Highlight.js via CDN you may wish to use [Subresource Integrity](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity) to guarantee that you are using a legimitate build of the library. |
||||
|
|
||||
|
To do this you simply need to add the `integrity` attribute for each JavaScript file you download via CDN. These digests are used by the browser to confirm the files downloaded have not been modified. |
||||
|
|
||||
|
```html |
||||
|
<script |
||||
|
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js" |
||||
|
integrity="sha384-xBsHBR6BS/LSlO3cOyY2D/4KkmaHjlNn3NnXUMFFc14HLZD7vwVgS3+6U/WkHAra"></script> |
||||
|
<!-- including any other grammars you might need to load --> |
||||
|
<script |
||||
|
src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/languages/go.min.js" |
||||
|
integrity="sha384-WmGkHEmwSI19EhTfO1nrSk3RziUQKRWg3vO0Ur3VYZjWvJRdRnX4/scQg+S2w1fI"></script> |
||||
|
``` |
||||
|
|
||||
|
The full list of digests for every file can be found below. |
||||
|
|
||||
|
### Digests |
||||
|
|
||||
|
``` |
||||
|
sha384-bWwkdmOCj83zZ8/m+oPD9goRMhrPCb25ZA6aTyg7vcsq9IpuyED38kQSw1Na4UTZ /es/languages/markdown.js |
||||
|
sha384-SqGSUq0DMQ0OUQnQnTuVDCJyhANd/MFNj+0PF67S+VXgHpR8A4tPsf/3GoSFRmrx /es/languages/markdown.min.js |
||||
|
sha384-U+zIQPoVdPCO0o4poik2hYNbHtNm+L5OojDTulgIeEZTNz+LooLAm72d66mNjwKD /languages/markdown.js |
||||
|
sha384-mCUujHHbWJEjcupTTfWOk9YR3YCYNHaA578+TTXUd4LPi7fGNuMQbysbl1pmcIGd /languages/markdown.min.js |
||||
|
sha384-T3iuPyfWZPoYqIwEboJ5mGxyhhRxCQ99OlkULesV7CKerMVXEgDyOzWrQmJREI0r /highlight.js |
||||
|
sha384-mgfo9RLqcM7eT8VO/iNHqxvxaYUdFMrThn508chNhk8vGeQL4wWOeALavxswYdCz /highlight.min.js |
||||
|
``` |
||||
|
|
@ -0,0 +1,29 @@ |
|||||
|
BSD 3-Clause License |
||||
|
|
||||
|
Copyright (c) 2006, Ivan Sagalaev. |
||||
|
All rights reserved. |
||||
|
|
||||
|
Redistribution and use in source and binary forms, with or without |
||||
|
modification, are permitted provided that the following conditions are met: |
||||
|
|
||||
|
* Redistributions of source code must retain the above copyright notice, this |
||||
|
list of conditions and the following disclaimer. |
||||
|
|
||||
|
* Redistributions in binary form must reproduce the above copyright notice, |
||||
|
this list of conditions and the following disclaimer in the documentation |
||||
|
and/or other materials provided with the distribution. |
||||
|
|
||||
|
* Neither the name of the copyright holder nor the names of its |
||||
|
contributors may be used to endorse or promote products derived from |
||||
|
this software without specific prior written permission. |
||||
|
|
||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,45 @@ |
|||||
|
# Highlight.js CDN Assets |
||||
|
|
||||
|
[![install size](https://packagephobia.now.sh/badge?p=highlight.js)](https://packagephobia.now.sh/result?p=highlight.js) |
||||
|
|
||||
|
**This package contains only the CDN build assets of highlight.js.** |
||||
|
|
||||
|
This may be what you want if you'd like to install the pre-built distributable highlight.js client-side assets via NPM. If you're wanting to use highlight.js mainly on the server-side you likely want the [highlight.js][1] package instead. |
||||
|
|
||||
|
To access these files via CDN:<br> |
||||
|
https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/ |
||||
|
|
||||
|
**If you just want a single .js file with the common languages built-in: |
||||
|
<https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.js>** |
||||
|
|
||||
|
--- |
||||
|
|
||||
|
## Highlight.js |
||||
|
|
||||
|
Highlight.js is a syntax highlighter written in JavaScript. It works in |
||||
|
the browser as well as on the server. It works with pretty much any |
||||
|
markup, doesn’t depend on any framework, and has automatic language |
||||
|
detection. |
||||
|
|
||||
|
If you'd like to read the full README:<br> |
||||
|
<https://github.com/highlightjs/highlight.js/blob/main/README.md> |
||||
|
|
||||
|
## License |
||||
|
|
||||
|
Highlight.js is released under the BSD License. See [LICENSE][7] file |
||||
|
for details. |
||||
|
|
||||
|
## Links |
||||
|
|
||||
|
The official site for the library is at <https://highlightjs.org/>. |
||||
|
|
||||
|
The Github project may be found at: <https://github.com/highlightjs/highlight.js> |
||||
|
|
||||
|
Further in-depth documentation for the API and other topics is at |
||||
|
<http://highlightjs.readthedocs.io/>. |
||||
|
|
||||
|
A list of the Core Team and contributors can be found in the [CONTRIBUTORS.md][8] file. |
||||
|
|
||||
|
[1]: https://www.npmjs.com/package/highlight.js |
||||
|
[7]: https://github.com/highlightjs/highlight.js/blob/main/LICENSE |
||||
|
[8]: https://github.com/highlightjs/highlight.js/blob/main/CONTRIBUTORS.md |
File diff suppressed because it is too large
@ -0,0 +1,307 @@ |
|||||
|
/*! |
||||
|
Highlight.js v11.9.0 (git: b7ec4bfafc) |
||||
|
(c) 2006-2023 undefined and other contributors |
||||
|
License: BSD-3-Clause |
||||
|
*/ |
||||
|
function e(t){return t instanceof Map?t.clear=t.delete=t.set=()=>{ |
||||
|
throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ |
||||
|
throw Error("set is read-only") |
||||
|
}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ |
||||
|
const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) |
||||
|
})),t}class t{constructor(e){ |
||||
|
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} |
||||
|
ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ |
||||
|
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'") |
||||
|
}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] |
||||
|
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope |
||||
|
;class r{constructor(e,t){ |
||||
|
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ |
||||
|
this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ |
||||
|
if(e.startsWith("language:"))return e.replace("language:","language-") |
||||
|
;if(e.includes(".")){const n=e.split(".") |
||||
|
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") |
||||
|
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} |
||||
|
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){ |
||||
|
this.buffer+=`<span class="${e}">`}}const o=(e={})=>{const t={children:[]} |
||||
|
;return Object.assign(t,e),t};class a{constructor(){ |
||||
|
this.rootNode=o(),this.stack=[this.rootNode]}get top(){ |
||||
|
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ |
||||
|
this.top.children.push(e)}openNode(e){const t=o({scope:e}) |
||||
|
;this.add(t),this.stack.push(t)}closeNode(){ |
||||
|
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ |
||||
|
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} |
||||
|
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ |
||||
|
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), |
||||
|
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ |
||||
|
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ |
||||
|
a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} |
||||
|
addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ |
||||
|
this.closeNode()}__addSublanguage(e,t){const n=e.root |
||||
|
;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ |
||||
|
return new r(this,this.options).value()}finalize(){ |
||||
|
return this.closeAllNodes(),!0}}function l(e){ |
||||
|
return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} |
||||
|
function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} |
||||
|
function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ |
||||
|
const t=e[e.length-1] |
||||
|
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} |
||||
|
})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} |
||||
|
function p(e){return RegExp(e.toString()+"|").exec("").length-1} |
||||
|
const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ |
||||
|
;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n |
||||
|
;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} |
||||
|
s+=i.substring(0,e.index), |
||||
|
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], |
||||
|
"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} |
||||
|
const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={ |
||||
|
begin:"\\\\[\\s\\S]",relevance:0},k={scope:"string",begin:"'",end:"'", |
||||
|
illegal:"\\n",contains:[O]},v={scope:"string",begin:'"',end:'"',illegal:"\\n", |
||||
|
contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, |
||||
|
contains:[]},n);s.contains.push({scope:"doctag", |
||||
|
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", |
||||
|
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) |
||||
|
;const r=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) |
||||
|
;return s.contains.push({begin:h(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s |
||||
|
},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var A=Object.freeze({ |
||||
|
__proto__:null,APOS_STRING_MODE:k,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ |
||||
|
scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, |
||||
|
C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", |
||||
|
begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ |
||||
|
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ |
||||
|
t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, |
||||
|
MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, |
||||
|
NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w, |
||||
|
PHRASAL_WORDS_MODE:{ |
||||
|
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ |
||||
|
},QUOTE_STRING_MODE:v,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, |
||||
|
end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, |
||||
|
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", |
||||
|
SHEBANG:(e={})=>{const t=/^#![ ]*\// |
||||
|
;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, |
||||
|
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, |
||||
|
TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, |
||||
|
UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function j(e,t){ |
||||
|
"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ |
||||
|
void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ |
||||
|
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", |
||||
|
e.__beforeBegin=j,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, |
||||
|
void 0===e.relevance&&(e.relevance=0))}function L(e,t){ |
||||
|
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ |
||||
|
if(e.match){ |
||||
|
if(e.begin||e.end)throw Error("begin & end are not supported with match") |
||||
|
;e.begin=e.match,delete e.match}}function P(e,t){ |
||||
|
void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return |
||||
|
;if(e.starts)throw Error("beforeMatch cannot be used with starts") |
||||
|
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] |
||||
|
})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ |
||||
|
relevance:0,contains:[Object.assign(n,{endsParent:!0})] |
||||
|
},e.relevance=0,delete n.beforeMatch |
||||
|
},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword" |
||||
|
;function $(e,t,n=C){const i=Object.create(null) |
||||
|
;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ |
||||
|
Object.assign(i,$(e[n],t,n))})),i;function s(e,n){ |
||||
|
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") |
||||
|
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){ |
||||
|
return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{ |
||||
|
console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{ |
||||
|
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) |
||||
|
},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],r={},o={} |
||||
|
;for(let e=1;e<=t.length;e++)o[e+i]=s[e],r[e+i]=!0,i+=p(t[e-1]) |
||||
|
;e[n]=o,e[n]._emit=r,e[n]._multi=!0}function Z(e){(e=>{ |
||||
|
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, |
||||
|
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ |
||||
|
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope |
||||
|
}),(e=>{if(Array.isArray(e.begin)){ |
||||
|
if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), |
||||
|
K |
||||
|
;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"), |
||||
|
K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ |
||||
|
if(Array.isArray(e.end)){ |
||||
|
if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"), |
||||
|
K |
||||
|
;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"), |
||||
|
K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){ |
||||
|
function t(t,n){ |
||||
|
return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) |
||||
|
}class n{constructor(){ |
||||
|
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} |
||||
|
addRule(e,t){ |
||||
|
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), |
||||
|
this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) |
||||
|
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" |
||||
|
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex |
||||
|
;const t=this.matcherRe.exec(e);if(!t)return null |
||||
|
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] |
||||
|
;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ |
||||
|
this.rules=[],this.multiRegexes=[], |
||||
|
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ |
||||
|
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n |
||||
|
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), |
||||
|
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ |
||||
|
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ |
||||
|
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ |
||||
|
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex |
||||
|
;let n=t.exec(e) |
||||
|
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ |
||||
|
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} |
||||
|
return n&&(this.regexIndex+=n.position+1, |
||||
|
this.regexIndex===this.count&&this.considerAll()),n}} |
||||
|
if(e.compilerExtensions||(e.compilerExtensions=[]), |
||||
|
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") |
||||
|
;return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){const a=r |
||||
|
;if(r.isCompiled)return a |
||||
|
;[I,B,Z,D].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))), |
||||
|
r.__beforeBegin=null,[T,L,P].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null |
||||
|
;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), |
||||
|
c=r.keywords.$pattern, |
||||
|
delete r.keywords.$pattern),c=c||/\w+/,r.keywords&&(r.keywords=$(r.keywords,e.case_insensitive)), |
||||
|
a.keywordPatternRe=t(c,!0), |
||||
|
o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), |
||||
|
r.end&&(a.endRe=t(a.end)), |
||||
|
a.terminatorEnd=l(a.end)||"",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)), |
||||
|
r.illegal&&(a.illegalRe=t(r.illegal)), |
||||
|
r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ |
||||
|
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ |
||||
|
starts:e.starts?i(e.starts):null |
||||
|
}):Object.isFrozen(e)?i(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{n(e,a) |
||||
|
})),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new s |
||||
|
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" |
||||
|
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" |
||||
|
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){ |
||||
|
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{ |
||||
|
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} |
||||
|
const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{ |
||||
|
const i=Object.create(null),s=Object.create(null),r=[];let o=!0 |
||||
|
;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ |
||||
|
disableAutodetect:!0,name:"Plain text",contains:[]};let p={ |
||||
|
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, |
||||
|
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", |
||||
|
cssSelector:"pre code",languages:null,__emitter:c};function b(e){ |
||||
|
return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" |
||||
|
;"object"==typeof t?(i=e, |
||||
|
n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."), |
||||
|
G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), |
||||
|
s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};N("before:highlight",r) |
||||
|
;const o=r.result?r.result:E(r.language,r.code,n) |
||||
|
;return o.code=r.code,N("after:highlight",o),o}function E(e,n,s,r){ |
||||
|
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) |
||||
|
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" |
||||
|
;for(;t;){n+=R.substring(e,t.index) |
||||
|
;const s=_.case_insensitive?t[0].toLowerCase():t[0],r=(i=s,N.keywords[i]);if(r){ |
||||
|
const[e,i]=r |
||||
|
;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(A+=i),e.startsWith("_"))n+=t[0];else{ |
||||
|
const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] |
||||
|
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i |
||||
|
;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ |
||||
|
if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ |
||||
|
if(!i[N.subLanguage])return void M.addText(R) |
||||
|
;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top |
||||
|
}else e=x(R,N.subLanguage.length?N.subLanguage:null) |
||||
|
;N.relevance>0&&(A+=e.relevance),M.__addSublanguage(e._emitter,e.language) |
||||
|
})():l(),R=""}function u(e,t){ |
||||
|
""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 |
||||
|
;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} |
||||
|
const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} |
||||
|
function h(e,t){ |
||||
|
return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), |
||||
|
e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), |
||||
|
R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ |
||||
|
value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) |
||||
|
;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) |
||||
|
;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ |
||||
|
for(;e.endsParent&&e.parent;)e=e.parent;return e}} |
||||
|
if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ |
||||
|
return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ |
||||
|
const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const r=N |
||||
|
;N.endScope&&N.endScope._wrap?(g(), |
||||
|
u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), |
||||
|
d(N.endScope,e)):r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t), |
||||
|
g(),r.excludeEnd&&(R=t));do{ |
||||
|
N.scope&&M.closeNode(),N.skip||N.subLanguage||(A+=N.relevance),N=N.parent |
||||
|
}while(N!==s.parent);return s.starts&&h(s.starts,e),r.returnEnd?0:t.length} |
||||
|
let w={};function y(i,r){const a=r&&r[0];if(R+=i,null==a)return g(),0 |
||||
|
;if("begin"===w.type&&"end"===r.type&&w.index===r.index&&""===a){ |
||||
|
if(R+=n.slice(r.index,r.index+1),!o){const t=Error(`0 width match regex (${e})`) |
||||
|
;throw t.languageName=e,t.badRule=w.rule,t}return 1} |
||||
|
if(w=r,"begin"===r.type)return(e=>{ |
||||
|
const n=e[0],i=e.rule,s=new t(i),r=[i.__beforeBegin,i["on:begin"]] |
||||
|
;for(const t of r)if(t&&(t(e,s),s.isMatchIgnored))return b(n) |
||||
|
;return i.skip?R+=n:(i.excludeBegin&&(R+=n), |
||||
|
g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(r) |
||||
|
;if("illegal"===r.type&&!s){ |
||||
|
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"') |
||||
|
;throw e.mode=N,e}if("end"===r.type){const e=m(r);if(e!==ee)return e} |
||||
|
if("illegal"===r.type&&""===a)return 1 |
||||
|
;if(I>1e5&&I>3*r.index)throw Error("potential infinite loop, way more iterations than matches") |
||||
|
;return R+=a,a.length}const _=O(e) |
||||
|
;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"') |
||||
|
;const k=V(_);let v="",N=r||k;const S={},M=new p.__emitter(p);(()=>{const e=[] |
||||
|
;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) |
||||
|
;e.forEach((e=>M.openNode(e)))})();let R="",A=0,j=0,I=0,T=!1;try{ |
||||
|
if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ |
||||
|
I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=j |
||||
|
;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(j,e.index),e) |
||||
|
;j=e.index+t}y(n.substring(j))}return M.finalize(),v=M.toHTML(),{language:e, |
||||
|
value:v,relevance:A,illegal:!1,_emitter:M,_top:N}}catch(t){ |
||||
|
if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n), |
||||
|
illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j, |
||||
|
context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:v},_emitter:M};if(o)return{ |
||||
|
language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} |
||||
|
;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ |
||||
|
const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} |
||||
|
;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(v).map((t=>E(t,e,!1))) |
||||
|
;s.unshift(n);const r=s.sort(((e,t)=>{ |
||||
|
if(e.relevance!==t.relevance)return t.relevance-e.relevance |
||||
|
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 |
||||
|
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=r,c=o |
||||
|
;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{ |
||||
|
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" |
||||
|
;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) |
||||
|
;return t||(X(a.replace("{}",n[1])), |
||||
|
X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} |
||||
|
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return |
||||
|
;if(N("before:highlightElement",{el:e,language:n |
||||
|
}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) |
||||
|
;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), |
||||
|
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), |
||||
|
console.warn("The element with unescaped HTML:"), |
||||
|
console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML) |
||||
|
;t=e;const i=t.textContent,r=n?m(i,{language:n,ignoreIllegals:!0}):x(i) |
||||
|
;e.innerHTML=r.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n |
||||
|
;e.classList.add("hljs"),e.classList.add("language-"+i) |
||||
|
})(e,n,r.language),e.result={language:r.language,re:r.relevance, |
||||
|
relevance:r.relevance},r.secondBest&&(e.secondBest={ |
||||
|
language:r.secondBest.language,relevance:r.secondBest.relevance |
||||
|
}),N("after:highlightElement",{el:e,result:r,text:i})}let y=!1;function _(){ |
||||
|
"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 |
||||
|
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} |
||||
|
function k(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ |
||||
|
s[e.toLowerCase()]=t}))}function v(e){const t=O(e) |
||||
|
;return t&&!t.disableAutodetect}function N(e,t){const n=e;r.forEach((e=>{ |
||||
|
e[n]&&e[n](t)}))} |
||||
|
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ |
||||
|
y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, |
||||
|
highlightElement:w, |
||||
|
highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"), |
||||
|
G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)}, |
||||
|
initHighlighting:()=>{ |
||||
|
_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, |
||||
|
initHighlightingOnLoad:()=>{ |
||||
|
_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") |
||||
|
},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ |
||||
|
if(W("Language definition for '{}' could not be registered.".replace("{}",e)), |
||||
|
!o)throw t;W(t),s=l} |
||||
|
s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&k(s.aliases,{ |
||||
|
languageName:e})},unregisterLanguage:e=>{delete i[e] |
||||
|
;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, |
||||
|
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:k, |
||||
|
autoDetection:v,inherit:Q,addPlugin:e=>{(e=>{ |
||||
|
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ |
||||
|
e["before:highlightBlock"](Object.assign({block:t.el},t)) |
||||
|
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ |
||||
|
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),r.push(e)}, |
||||
|
removePlugin:e=>{const t=r.indexOf(e);-1!==t&&r.splice(t,1)}}),n.debugMode=()=>{ |
||||
|
o=!1},n.safeMode=()=>{o=!0},n.versionString="11.9.0",n.regex={concat:h, |
||||
|
lookahead:g,either:f,optional:d,anyNumberOfTimes:u} |
||||
|
;for(const t in A)"object"==typeof A[t]&&e(A[t]);return Object.assign(n,A),n |
||||
|
},ne=te({});ne.newInstance=()=>te({});export{ne as default}; |
File diff suppressed because it is too large
@ -0,0 +1,307 @@ |
|||||
|
/*! |
||||
|
Highlight.js v11.9.0 (git: b7ec4bfafc) |
||||
|
(c) 2006-2023 undefined and other contributors |
||||
|
License: BSD-3-Clause |
||||
|
*/ |
||||
|
function e(t){return t instanceof Map?t.clear=t.delete=t.set=()=>{ |
||||
|
throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ |
||||
|
throw Error("set is read-only") |
||||
|
}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ |
||||
|
const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) |
||||
|
})),t}class t{constructor(e){ |
||||
|
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} |
||||
|
ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ |
||||
|
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'") |
||||
|
}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] |
||||
|
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope |
||||
|
;class r{constructor(e,t){ |
||||
|
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ |
||||
|
this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ |
||||
|
if(e.startsWith("language:"))return e.replace("language:","language-") |
||||
|
;if(e.includes(".")){const n=e.split(".") |
||||
|
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") |
||||
|
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} |
||||
|
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){ |
||||
|
this.buffer+=`<span class="${e}">`}}const o=(e={})=>{const t={children:[]} |
||||
|
;return Object.assign(t,e),t};class a{constructor(){ |
||||
|
this.rootNode=o(),this.stack=[this.rootNode]}get top(){ |
||||
|
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ |
||||
|
this.top.children.push(e)}openNode(e){const t=o({scope:e}) |
||||
|
;this.add(t),this.stack.push(t)}closeNode(){ |
||||
|
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ |
||||
|
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} |
||||
|
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ |
||||
|
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), |
||||
|
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ |
||||
|
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ |
||||
|
a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} |
||||
|
addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ |
||||
|
this.closeNode()}__addSublanguage(e,t){const n=e.root |
||||
|
;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ |
||||
|
return new r(this,this.options).value()}finalize(){ |
||||
|
return this.closeAllNodes(),!0}}function l(e){ |
||||
|
return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} |
||||
|
function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} |
||||
|
function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ |
||||
|
const t=e[e.length-1] |
||||
|
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} |
||||
|
})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} |
||||
|
function p(e){return RegExp(e.toString()+"|").exec("").length-1} |
||||
|
const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ |
||||
|
;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n |
||||
|
;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} |
||||
|
s+=i.substring(0,e.index), |
||||
|
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], |
||||
|
"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} |
||||
|
const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={ |
||||
|
begin:"\\\\[\\s\\S]",relevance:0},k={scope:"string",begin:"'",end:"'", |
||||
|
illegal:"\\n",contains:[O]},v={scope:"string",begin:'"',end:'"',illegal:"\\n", |
||||
|
contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, |
||||
|
contains:[]},n);s.contains.push({scope:"doctag", |
||||
|
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", |
||||
|
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) |
||||
|
;const r=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) |
||||
|
;return s.contains.push({begin:h(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s |
||||
|
},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var A=Object.freeze({ |
||||
|
__proto__:null,APOS_STRING_MODE:k,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ |
||||
|
scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, |
||||
|
C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", |
||||
|
begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ |
||||
|
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ |
||||
|
t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, |
||||
|
MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, |
||||
|
NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w, |
||||
|
PHRASAL_WORDS_MODE:{ |
||||
|
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ |
||||
|
},QUOTE_STRING_MODE:v,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, |
||||
|
end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, |
||||
|
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", |
||||
|
SHEBANG:(e={})=>{const t=/^#![ ]*\// |
||||
|
;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, |
||||
|
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, |
||||
|
TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, |
||||
|
UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function j(e,t){ |
||||
|
"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ |
||||
|
void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ |
||||
|
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", |
||||
|
e.__beforeBegin=j,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, |
||||
|
void 0===e.relevance&&(e.relevance=0))}function L(e,t){ |
||||
|
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ |
||||
|
if(e.match){ |
||||
|
if(e.begin||e.end)throw Error("begin & end are not supported with match") |
||||
|
;e.begin=e.match,delete e.match}}function P(e,t){ |
||||
|
void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return |
||||
|
;if(e.starts)throw Error("beforeMatch cannot be used with starts") |
||||
|
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] |
||||
|
})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ |
||||
|
relevance:0,contains:[Object.assign(n,{endsParent:!0})] |
||||
|
},e.relevance=0,delete n.beforeMatch |
||||
|
},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword" |
||||
|
;function $(e,t,n=C){const i=Object.create(null) |
||||
|
;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ |
||||
|
Object.assign(i,$(e[n],t,n))})),i;function s(e,n){ |
||||
|
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") |
||||
|
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){ |
||||
|
return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{ |
||||
|
console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{ |
||||
|
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) |
||||
|
},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],r={},o={} |
||||
|
;for(let e=1;e<=t.length;e++)o[e+i]=s[e],r[e+i]=!0,i+=p(t[e-1]) |
||||
|
;e[n]=o,e[n]._emit=r,e[n]._multi=!0}function Z(e){(e=>{ |
||||
|
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, |
||||
|
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ |
||||
|
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope |
||||
|
}),(e=>{if(Array.isArray(e.begin)){ |
||||
|
if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), |
||||
|
K |
||||
|
;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"), |
||||
|
K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ |
||||
|
if(Array.isArray(e.end)){ |
||||
|
if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"), |
||||
|
K |
||||
|
;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"), |
||||
|
K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){ |
||||
|
function t(t,n){ |
||||
|
return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) |
||||
|
}class n{constructor(){ |
||||
|
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} |
||||
|
addRule(e,t){ |
||||
|
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), |
||||
|
this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) |
||||
|
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" |
||||
|
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex |
||||
|
;const t=this.matcherRe.exec(e);if(!t)return null |
||||
|
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] |
||||
|
;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ |
||||
|
this.rules=[],this.multiRegexes=[], |
||||
|
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ |
||||
|
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n |
||||
|
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), |
||||
|
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ |
||||
|
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ |
||||
|
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ |
||||
|
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex |
||||
|
;let n=t.exec(e) |
||||
|
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ |
||||
|
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} |
||||
|
return n&&(this.regexIndex+=n.position+1, |
||||
|
this.regexIndex===this.count&&this.considerAll()),n}} |
||||
|
if(e.compilerExtensions||(e.compilerExtensions=[]), |
||||
|
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") |
||||
|
;return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){const a=r |
||||
|
;if(r.isCompiled)return a |
||||
|
;[I,B,Z,D].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))), |
||||
|
r.__beforeBegin=null,[T,L,P].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null |
||||
|
;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), |
||||
|
c=r.keywords.$pattern, |
||||
|
delete r.keywords.$pattern),c=c||/\w+/,r.keywords&&(r.keywords=$(r.keywords,e.case_insensitive)), |
||||
|
a.keywordPatternRe=t(c,!0), |
||||
|
o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), |
||||
|
r.end&&(a.endRe=t(a.end)), |
||||
|
a.terminatorEnd=l(a.end)||"",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)), |
||||
|
r.illegal&&(a.illegalRe=t(r.illegal)), |
||||
|
r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ |
||||
|
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ |
||||
|
starts:e.starts?i(e.starts):null |
||||
|
}):Object.isFrozen(e)?i(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{n(e,a) |
||||
|
})),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new s |
||||
|
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" |
||||
|
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" |
||||
|
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){ |
||||
|
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{ |
||||
|
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} |
||||
|
const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{ |
||||
|
const i=Object.create(null),s=Object.create(null),r=[];let o=!0 |
||||
|
;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ |
||||
|
disableAutodetect:!0,name:"Plain text",contains:[]};let p={ |
||||
|
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, |
||||
|
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", |
||||
|
cssSelector:"pre code",languages:null,__emitter:c};function b(e){ |
||||
|
return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" |
||||
|
;"object"==typeof t?(i=e, |
||||
|
n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."), |
||||
|
G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), |
||||
|
s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};N("before:highlight",r) |
||||
|
;const o=r.result?r.result:E(r.language,r.code,n) |
||||
|
;return o.code=r.code,N("after:highlight",o),o}function E(e,n,s,r){ |
||||
|
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) |
||||
|
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" |
||||
|
;for(;t;){n+=R.substring(e,t.index) |
||||
|
;const s=_.case_insensitive?t[0].toLowerCase():t[0],r=(i=s,N.keywords[i]);if(r){ |
||||
|
const[e,i]=r |
||||
|
;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(A+=i),e.startsWith("_"))n+=t[0];else{ |
||||
|
const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] |
||||
|
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i |
||||
|
;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ |
||||
|
if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ |
||||
|
if(!i[N.subLanguage])return void M.addText(R) |
||||
|
;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top |
||||
|
}else e=x(R,N.subLanguage.length?N.subLanguage:null) |
||||
|
;N.relevance>0&&(A+=e.relevance),M.__addSublanguage(e._emitter,e.language) |
||||
|
})():l(),R=""}function u(e,t){ |
||||
|
""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 |
||||
|
;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} |
||||
|
const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} |
||||
|
function h(e,t){ |
||||
|
return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), |
||||
|
e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), |
||||
|
R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ |
||||
|
value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) |
||||
|
;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) |
||||
|
;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ |
||||
|
for(;e.endsParent&&e.parent;)e=e.parent;return e}} |
||||
|
if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ |
||||
|
return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ |
||||
|
const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const r=N |
||||
|
;N.endScope&&N.endScope._wrap?(g(), |
||||
|
u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), |
||||
|
d(N.endScope,e)):r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t), |
||||
|
g(),r.excludeEnd&&(R=t));do{ |
||||
|
N.scope&&M.closeNode(),N.skip||N.subLanguage||(A+=N.relevance),N=N.parent |
||||
|
}while(N!==s.parent);return s.starts&&h(s.starts,e),r.returnEnd?0:t.length} |
||||
|
let w={};function y(i,r){const a=r&&r[0];if(R+=i,null==a)return g(),0 |
||||
|
;if("begin"===w.type&&"end"===r.type&&w.index===r.index&&""===a){ |
||||
|
if(R+=n.slice(r.index,r.index+1),!o){const t=Error(`0 width match regex (${e})`) |
||||
|
;throw t.languageName=e,t.badRule=w.rule,t}return 1} |
||||
|
if(w=r,"begin"===r.type)return(e=>{ |
||||
|
const n=e[0],i=e.rule,s=new t(i),r=[i.__beforeBegin,i["on:begin"]] |
||||
|
;for(const t of r)if(t&&(t(e,s),s.isMatchIgnored))return b(n) |
||||
|
;return i.skip?R+=n:(i.excludeBegin&&(R+=n), |
||||
|
g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(r) |
||||
|
;if("illegal"===r.type&&!s){ |
||||
|
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"') |
||||
|
;throw e.mode=N,e}if("end"===r.type){const e=m(r);if(e!==ee)return e} |
||||
|
if("illegal"===r.type&&""===a)return 1 |
||||
|
;if(I>1e5&&I>3*r.index)throw Error("potential infinite loop, way more iterations than matches") |
||||
|
;return R+=a,a.length}const _=O(e) |
||||
|
;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"') |
||||
|
;const k=V(_);let v="",N=r||k;const S={},M=new p.__emitter(p);(()=>{const e=[] |
||||
|
;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) |
||||
|
;e.forEach((e=>M.openNode(e)))})();let R="",A=0,j=0,I=0,T=!1;try{ |
||||
|
if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ |
||||
|
I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=j |
||||
|
;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(j,e.index),e) |
||||
|
;j=e.index+t}y(n.substring(j))}return M.finalize(),v=M.toHTML(),{language:e, |
||||
|
value:v,relevance:A,illegal:!1,_emitter:M,_top:N}}catch(t){ |
||||
|
if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n), |
||||
|
illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j, |
||||
|
context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:v},_emitter:M};if(o)return{ |
||||
|
language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} |
||||
|
;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ |
||||
|
const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} |
||||
|
;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(v).map((t=>E(t,e,!1))) |
||||
|
;s.unshift(n);const r=s.sort(((e,t)=>{ |
||||
|
if(e.relevance!==t.relevance)return t.relevance-e.relevance |
||||
|
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 |
||||
|
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=r,c=o |
||||
|
;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{ |
||||
|
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" |
||||
|
;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) |
||||
|
;return t||(X(a.replace("{}",n[1])), |
||||
|
X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} |
||||
|
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return |
||||
|
;if(N("before:highlightElement",{el:e,language:n |
||||
|
}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) |
||||
|
;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), |
||||
|
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), |
||||
|
console.warn("The element with unescaped HTML:"), |
||||
|
console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML) |
||||
|
;t=e;const i=t.textContent,r=n?m(i,{language:n,ignoreIllegals:!0}):x(i) |
||||
|
;e.innerHTML=r.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n |
||||
|
;e.classList.add("hljs"),e.classList.add("language-"+i) |
||||
|
})(e,n,r.language),e.result={language:r.language,re:r.relevance, |
||||
|
relevance:r.relevance},r.secondBest&&(e.secondBest={ |
||||
|
language:r.secondBest.language,relevance:r.secondBest.relevance |
||||
|
}),N("after:highlightElement",{el:e,result:r,text:i})}let y=!1;function _(){ |
||||
|
"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 |
||||
|
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} |
||||
|
function k(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ |
||||
|
s[e.toLowerCase()]=t}))}function v(e){const t=O(e) |
||||
|
;return t&&!t.disableAutodetect}function N(e,t){const n=e;r.forEach((e=>{ |
||||
|
e[n]&&e[n](t)}))} |
||||
|
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ |
||||
|
y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, |
||||
|
highlightElement:w, |
||||
|
highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"), |
||||
|
G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)}, |
||||
|
initHighlighting:()=>{ |
||||
|
_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, |
||||
|
initHighlightingOnLoad:()=>{ |
||||
|
_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") |
||||
|
},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ |
||||
|
if(W("Language definition for '{}' could not be registered.".replace("{}",e)), |
||||
|
!o)throw t;W(t),s=l} |
||||
|
s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&k(s.aliases,{ |
||||
|
languageName:e})},unregisterLanguage:e=>{delete i[e] |
||||
|
;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, |
||||
|
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:k, |
||||
|
autoDetection:v,inherit:Q,addPlugin:e=>{(e=>{ |
||||
|
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ |
||||
|
e["before:highlightBlock"](Object.assign({block:t.el},t)) |
||||
|
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ |
||||
|
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),r.push(e)}, |
||||
|
removePlugin:e=>{const t=r.indexOf(e);-1!==t&&r.splice(t,1)}}),n.debugMode=()=>{ |
||||
|
o=!1},n.safeMode=()=>{o=!0},n.versionString="11.9.0",n.regex={concat:h, |
||||
|
lookahead:g,either:f,optional:d,anyNumberOfTimes:u} |
||||
|
;for(const t in A)"object"==typeof A[t]&&e(A[t]);return Object.assign(n,A),n |
||||
|
},ne=te({});ne.newInstance=()=>te({});export{ne as default}; |
@ -0,0 +1,249 @@ |
|||||
|
/*! `markdown` grammar compiled for Highlight.js 11.9.0 */ |
||||
|
var hljsGrammar = (function () { |
||||
|
'use strict'; |
||||
|
|
||||
|
/* |
||||
|
Language: Markdown |
||||
|
Requires: xml.js |
||||
|
Author: John Crepezzi <john.crepezzi@gmail.com> |
||||
|
Website: https://daringfireball.net/projects/markdown/
|
||||
|
Category: common, markup |
||||
|
*/ |
||||
|
|
||||
|
function markdown(hljs) { |
||||
|
const regex = hljs.regex; |
||||
|
const INLINE_HTML = { |
||||
|
begin: /<\/?[A-Za-z_]/, |
||||
|
end: '>', |
||||
|
subLanguage: 'xml', |
||||
|
relevance: 0 |
||||
|
}; |
||||
|
const HORIZONTAL_RULE = { |
||||
|
begin: '^[-\\*]{3,}', |
||||
|
end: '$' |
||||
|
}; |
||||
|
const CODE = { |
||||
|
className: 'code', |
||||
|
variants: [ |
||||
|
// TODO: fix to allow these to work with sublanguage also
|
||||
|
{ begin: '(`{3,})[^`](.|\\n)*?\\1`*[ ]*' }, |
||||
|
{ begin: '(~{3,})[^~](.|\\n)*?\\1~*[ ]*' }, |
||||
|
// needed to allow markdown as a sublanguage to work
|
||||
|
{ |
||||
|
begin: '```', |
||||
|
end: '```+[ ]*$' |
||||
|
}, |
||||
|
{ |
||||
|
begin: '~~~', |
||||
|
end: '~~~+[ ]*$' |
||||
|
}, |
||||
|
{ begin: '`.+?`' }, |
||||
|
{ |
||||
|
begin: '(?=^( {4}|\\t))', |
||||
|
// use contains to gobble up multiple lines to allow the block to be whatever size
|
||||
|
// but only have a single open/close tag vs one per line
|
||||
|
contains: [ |
||||
|
{ |
||||
|
begin: '^( {4}|\\t)', |
||||
|
end: '(\\n)$' |
||||
|
} |
||||
|
], |
||||
|
relevance: 0 |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const LIST = { |
||||
|
className: 'bullet', |
||||
|
begin: '^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)', |
||||
|
end: '\\s+', |
||||
|
excludeEnd: true |
||||
|
}; |
||||
|
const LINK_REFERENCE = { |
||||
|
begin: /^\[[^\n]+\]:/, |
||||
|
returnBegin: true, |
||||
|
contains: [ |
||||
|
{ |
||||
|
className: 'symbol', |
||||
|
begin: /\[/, |
||||
|
end: /\]/, |
||||
|
excludeBegin: true, |
||||
|
excludeEnd: true |
||||
|
}, |
||||
|
{ |
||||
|
className: 'link', |
||||
|
begin: /:\s*/, |
||||
|
end: /$/, |
||||
|
excludeBegin: true |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/; |
||||
|
const LINK = { |
||||
|
variants: [ |
||||
|
// too much like nested array access in so many languages
|
||||
|
// to have any real relevance
|
||||
|
{ |
||||
|
begin: /\[.+?\]\[.*?\]/, |
||||
|
relevance: 0 |
||||
|
}, |
||||
|
// popular internet URLs
|
||||
|
{ |
||||
|
begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, |
||||
|
relevance: 2 |
||||
|
}, |
||||
|
{ |
||||
|
begin: regex.concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/), |
||||
|
relevance: 2 |
||||
|
}, |
||||
|
// relative urls
|
||||
|
{ |
||||
|
begin: /\[.+?\]\([./?&#].*?\)/, |
||||
|
relevance: 1 |
||||
|
}, |
||||
|
// whatever else, lower relevance (might not be a link at all)
|
||||
|
{ |
||||
|
begin: /\[.*?\]\(.*?\)/, |
||||
|
relevance: 0 |
||||
|
} |
||||
|
], |
||||
|
returnBegin: true, |
||||
|
contains: [ |
||||
|
{ |
||||
|
// empty strings for alt or link text
|
||||
|
match: /\[(?=\])/ }, |
||||
|
{ |
||||
|
className: 'string', |
||||
|
relevance: 0, |
||||
|
begin: '\\[', |
||||
|
end: '\\]', |
||||
|
excludeBegin: true, |
||||
|
returnEnd: true |
||||
|
}, |
||||
|
{ |
||||
|
className: 'link', |
||||
|
relevance: 0, |
||||
|
begin: '\\]\\(', |
||||
|
end: '\\)', |
||||
|
excludeBegin: true, |
||||
|
excludeEnd: true |
||||
|
}, |
||||
|
{ |
||||
|
className: 'symbol', |
||||
|
relevance: 0, |
||||
|
begin: '\\]\\[', |
||||
|
end: '\\]', |
||||
|
excludeBegin: true, |
||||
|
excludeEnd: true |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const BOLD = { |
||||
|
className: 'strong', |
||||
|
contains: [], // defined later
|
||||
|
variants: [ |
||||
|
{ |
||||
|
begin: /_{2}(?!\s)/, |
||||
|
end: /_{2}/ |
||||
|
}, |
||||
|
{ |
||||
|
begin: /\*{2}(?!\s)/, |
||||
|
end: /\*{2}/ |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const ITALIC = { |
||||
|
className: 'emphasis', |
||||
|
contains: [], // defined later
|
||||
|
variants: [ |
||||
|
{ |
||||
|
begin: /\*(?![*\s])/, |
||||
|
end: /\*/ |
||||
|
}, |
||||
|
{ |
||||
|
begin: /_(?![_\s])/, |
||||
|
end: /_/, |
||||
|
relevance: 0 |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
// 3 level deep nesting is not allowed because it would create confusion
|
||||
|
// in cases like `***testing***` because where we don't know if the last
|
||||
|
// `***` is starting a new bold/italic or finishing the last one
|
||||
|
const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] }); |
||||
|
const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] }); |
||||
|
BOLD.contains.push(ITALIC_WITHOUT_BOLD); |
||||
|
ITALIC.contains.push(BOLD_WITHOUT_ITALIC); |
||||
|
|
||||
|
let CONTAINABLE = [ |
||||
|
INLINE_HTML, |
||||
|
LINK |
||||
|
]; |
||||
|
|
||||
|
[ |
||||
|
BOLD, |
||||
|
ITALIC, |
||||
|
BOLD_WITHOUT_ITALIC, |
||||
|
ITALIC_WITHOUT_BOLD |
||||
|
].forEach(m => { |
||||
|
m.contains = m.contains.concat(CONTAINABLE); |
||||
|
}); |
||||
|
|
||||
|
CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC); |
||||
|
|
||||
|
const HEADER = { |
||||
|
className: 'section', |
||||
|
variants: [ |
||||
|
{ |
||||
|
begin: '^#{1,6}', |
||||
|
end: '$', |
||||
|
contains: CONTAINABLE |
||||
|
}, |
||||
|
{ |
||||
|
begin: '(?=^.+?\\n[=-]{2,}$)', |
||||
|
contains: [ |
||||
|
{ begin: '^[=-]*$' }, |
||||
|
{ |
||||
|
begin: '^', |
||||
|
end: "\\n", |
||||
|
contains: CONTAINABLE |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
const BLOCKQUOTE = { |
||||
|
className: 'quote', |
||||
|
begin: '^>\\s+', |
||||
|
contains: CONTAINABLE, |
||||
|
end: '$' |
||||
|
}; |
||||
|
|
||||
|
return { |
||||
|
name: 'Markdown', |
||||
|
aliases: [ |
||||
|
'md', |
||||
|
'mkdown', |
||||
|
'mkd' |
||||
|
], |
||||
|
contains: [ |
||||
|
HEADER, |
||||
|
INLINE_HTML, |
||||
|
LIST, |
||||
|
BOLD, |
||||
|
ITALIC, |
||||
|
BLOCKQUOTE, |
||||
|
CODE, |
||||
|
HORIZONTAL_RULE, |
||||
|
LINK, |
||||
|
LINK_REFERENCE |
||||
|
] |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
return markdown; |
||||
|
|
||||
|
})(); |
||||
|
; |
||||
|
export default hljsGrammar; |
@ -0,0 +1,31 @@ |
|||||
|
/*! `markdown` grammar compiled for Highlight.js 11.9.0 */ |
||||
|
var hljsGrammar=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, |
||||
|
end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, |
||||
|
relevance:0},{ |
||||
|
begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, |
||||
|
relevance:2},{ |
||||
|
begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), |
||||
|
relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ |
||||
|
begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ |
||||
|
},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, |
||||
|
returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", |
||||
|
excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", |
||||
|
end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[], |
||||
|
variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] |
||||
|
},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ |
||||
|
begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[] |
||||
|
}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c) |
||||
|
;let l=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(l) |
||||
|
})),l=l.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ |
||||
|
className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:l},{ |
||||
|
begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", |
||||
|
contains:l}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", |
||||
|
end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:l, |
||||
|
end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ |
||||
|
begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ |
||||
|
begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", |
||||
|
contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ |
||||
|
begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ |
||||
|
className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ |
||||
|
className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() |
||||
|
;export default hljsGrammar; |
@ -0,0 +1 @@ |
|||||
|
{ "type": "module" } |
File diff suppressed because it is too large
@ -0,0 +1,339 @@ |
|||||
|
/*! |
||||
|
Highlight.js v11.9.0 (git: b7ec4bfafc) |
||||
|
(c) 2006-2023 undefined and other contributors |
||||
|
License: BSD-3-Clause |
||||
|
*/ |
||||
|
var hljs=function(){"use strict";function e(t){ |
||||
|
return t instanceof Map?t.clear=t.delete=t.set=()=>{ |
||||
|
throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ |
||||
|
throw Error("set is read-only") |
||||
|
}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ |
||||
|
const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) |
||||
|
})),t}class t{constructor(e){ |
||||
|
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} |
||||
|
ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ |
||||
|
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'") |
||||
|
}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] |
||||
|
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope |
||||
|
;class o{constructor(e,t){ |
||||
|
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ |
||||
|
this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ |
||||
|
if(e.startsWith("language:"))return e.replace("language:","language-") |
||||
|
;if(e.includes(".")){const n=e.split(".") |
||||
|
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") |
||||
|
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} |
||||
|
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){ |
||||
|
this.buffer+=`<span class="${e}">`}}const r=(e={})=>{const t={children:[]} |
||||
|
;return Object.assign(t,e),t};class a{constructor(){ |
||||
|
this.rootNode=r(),this.stack=[this.rootNode]}get top(){ |
||||
|
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ |
||||
|
this.top.children.push(e)}openNode(e){const t=r({scope:e}) |
||||
|
;this.add(t),this.stack.push(t)}closeNode(){ |
||||
|
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ |
||||
|
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} |
||||
|
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ |
||||
|
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), |
||||
|
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ |
||||
|
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ |
||||
|
a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} |
||||
|
addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ |
||||
|
this.closeNode()}__addSublanguage(e,t){const n=e.root |
||||
|
;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ |
||||
|
return new o(this,this.options).value()}finalize(){ |
||||
|
return this.closeAllNodes(),!0}}function l(e){ |
||||
|
return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} |
||||
|
function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} |
||||
|
function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ |
||||
|
const t=e[e.length-1] |
||||
|
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} |
||||
|
})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} |
||||
|
function p(e){return RegExp(e.toString()+"|").exec("").length-1} |
||||
|
const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ |
||||
|
;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n |
||||
|
;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} |
||||
|
s+=i.substring(0,e.index), |
||||
|
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], |
||||
|
"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} |
||||
|
const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={ |
||||
|
begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'", |
||||
|
illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n", |
||||
|
contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, |
||||
|
contains:[]},n);s.contains.push({scope:"doctag", |
||||
|
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", |
||||
|
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) |
||||
|
;const o=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) |
||||
|
;return s.contains.push({begin:h(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s |
||||
|
},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({ |
||||
|
__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ |
||||
|
scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, |
||||
|
C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", |
||||
|
begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ |
||||
|
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ |
||||
|
t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, |
||||
|
MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, |
||||
|
NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w, |
||||
|
PHRASAL_WORDS_MODE:{ |
||||
|
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ |
||||
|
},QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, |
||||
|
end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, |
||||
|
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", |
||||
|
SHEBANG:(e={})=>{const t=/^#![ ]*\// |
||||
|
;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, |
||||
|
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, |
||||
|
TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, |
||||
|
UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){ |
||||
|
"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ |
||||
|
void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ |
||||
|
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", |
||||
|
e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, |
||||
|
void 0===e.relevance&&(e.relevance=0))}function L(e,t){ |
||||
|
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ |
||||
|
if(e.match){ |
||||
|
if(e.begin||e.end)throw Error("begin & end are not supported with match") |
||||
|
;e.begin=e.match,delete e.match}}function P(e,t){ |
||||
|
void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return |
||||
|
;if(e.starts)throw Error("beforeMatch cannot be used with starts") |
||||
|
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] |
||||
|
})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ |
||||
|
relevance:0,contains:[Object.assign(n,{endsParent:!0})] |
||||
|
},e.relevance=0,delete n.beforeMatch |
||||
|
},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword" |
||||
|
;function $(e,t,n=C){const i=Object.create(null) |
||||
|
;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ |
||||
|
Object.assign(i,$(e[n],t,n))})),i;function s(e,n){ |
||||
|
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") |
||||
|
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){ |
||||
|
return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{ |
||||
|
console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{ |
||||
|
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) |
||||
|
},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],o={},r={} |
||||
|
;for(let e=1;e<=t.length;e++)r[e+i]=s[e],o[e+i]=!0,i+=p(t[e-1]) |
||||
|
;e[n]=r,e[n]._emit=o,e[n]._multi=!0}function Z(e){(e=>{ |
||||
|
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, |
||||
|
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ |
||||
|
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope |
||||
|
}),(e=>{if(Array.isArray(e.begin)){ |
||||
|
if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), |
||||
|
K |
||||
|
;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"), |
||||
|
K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ |
||||
|
if(Array.isArray(e.end)){ |
||||
|
if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"), |
||||
|
K |
||||
|
;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"), |
||||
|
K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){ |
||||
|
function t(t,n){ |
||||
|
return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) |
||||
|
}class n{constructor(){ |
||||
|
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} |
||||
|
addRule(e,t){ |
||||
|
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), |
||||
|
this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) |
||||
|
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" |
||||
|
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex |
||||
|
;const t=this.matcherRe.exec(e);if(!t)return null |
||||
|
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] |
||||
|
;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ |
||||
|
this.rules=[],this.multiRegexes=[], |
||||
|
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ |
||||
|
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n |
||||
|
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), |
||||
|
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ |
||||
|
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ |
||||
|
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ |
||||
|
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex |
||||
|
;let n=t.exec(e) |
||||
|
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ |
||||
|
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} |
||||
|
return n&&(this.regexIndex+=n.position+1, |
||||
|
this.regexIndex===this.count&&this.considerAll()),n}} |
||||
|
if(e.compilerExtensions||(e.compilerExtensions=[]), |
||||
|
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") |
||||
|
;return e.classNameAliases=i(e.classNameAliases||{}),function n(o,r){const a=o |
||||
|
;if(o.isCompiled)return a |
||||
|
;[I,B,Z,D].forEach((e=>e(o,r))),e.compilerExtensions.forEach((e=>e(o,r))), |
||||
|
o.__beforeBegin=null,[T,L,P].forEach((e=>e(o,r))),o.isCompiled=!0;let c=null |
||||
|
;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords), |
||||
|
c=o.keywords.$pattern, |
||||
|
delete o.keywords.$pattern),c=c||/\w+/,o.keywords&&(o.keywords=$(o.keywords,e.case_insensitive)), |
||||
|
a.keywordPatternRe=t(c,!0), |
||||
|
r&&(o.begin||(o.begin=/\B|\b/),a.beginRe=t(a.begin),o.end||o.endsWithParent||(o.end=/\B|\b/), |
||||
|
o.end&&(a.endRe=t(a.end)), |
||||
|
a.terminatorEnd=l(a.end)||"",o.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)), |
||||
|
o.illegal&&(a.illegalRe=t(o.illegal)), |
||||
|
o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ |
||||
|
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ |
||||
|
starts:e.starts?i(e.starts):null |
||||
|
}):Object.isFrozen(e)?i(e):e))("self"===e?o:e)))),o.contains.forEach((e=>{n(e,a) |
||||
|
})),o.starts&&n(o.starts,r),a.matcher=(e=>{const t=new s |
||||
|
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" |
||||
|
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" |
||||
|
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){ |
||||
|
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{ |
||||
|
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} |
||||
|
const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{ |
||||
|
const i=Object.create(null),s=Object.create(null),o=[];let r=!0 |
||||
|
;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ |
||||
|
disableAutodetect:!0,name:"Plain text",contains:[]};let p={ |
||||
|
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, |
||||
|
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", |
||||
|
cssSelector:"pre code",languages:null,__emitter:c};function b(e){ |
||||
|
return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" |
||||
|
;"object"==typeof t?(i=e, |
||||
|
n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."), |
||||
|
G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), |
||||
|
s=e,i=t),void 0===n&&(n=!0);const o={code:i,language:s};N("before:highlight",o) |
||||
|
;const r=o.result?o.result:E(o.language,o.code,n) |
||||
|
;return r.code=o.code,N("after:highlight",r),r}function E(e,n,s,o){ |
||||
|
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) |
||||
|
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" |
||||
|
;for(;t;){n+=R.substring(e,t.index) |
||||
|
;const s=_.case_insensitive?t[0].toLowerCase():t[0],o=(i=s,N.keywords[i]);if(o){ |
||||
|
const[e,i]=o |
||||
|
;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{ |
||||
|
const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] |
||||
|
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i |
||||
|
;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ |
||||
|
if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ |
||||
|
if(!i[N.subLanguage])return void M.addText(R) |
||||
|
;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top |
||||
|
}else e=x(R,N.subLanguage.length?N.subLanguage:null) |
||||
|
;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language) |
||||
|
})():l(),R=""}function u(e,t){ |
||||
|
""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 |
||||
|
;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} |
||||
|
const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} |
||||
|
function h(e,t){ |
||||
|
return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), |
||||
|
e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), |
||||
|
R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ |
||||
|
value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) |
||||
|
;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) |
||||
|
;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ |
||||
|
for(;e.endsParent&&e.parent;)e=e.parent;return e}} |
||||
|
if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ |
||||
|
return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ |
||||
|
const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const o=N |
||||
|
;N.endScope&&N.endScope._wrap?(g(), |
||||
|
u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), |
||||
|
d(N.endScope,e)):o.skip?R+=t:(o.returnEnd||o.excludeEnd||(R+=t), |
||||
|
g(),o.excludeEnd&&(R=t));do{ |
||||
|
N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent |
||||
|
}while(N!==s.parent);return s.starts&&h(s.starts,e),o.returnEnd?0:t.length} |
||||
|
let w={};function y(i,o){const a=o&&o[0];if(R+=i,null==a)return g(),0 |
||||
|
;if("begin"===w.type&&"end"===o.type&&w.index===o.index&&""===a){ |
||||
|
if(R+=n.slice(o.index,o.index+1),!r){const t=Error(`0 width match regex (${e})`) |
||||
|
;throw t.languageName=e,t.badRule=w.rule,t}return 1} |
||||
|
if(w=o,"begin"===o.type)return(e=>{ |
||||
|
const n=e[0],i=e.rule,s=new t(i),o=[i.__beforeBegin,i["on:begin"]] |
||||
|
;for(const t of o)if(t&&(t(e,s),s.isMatchIgnored))return b(n) |
||||
|
;return i.skip?R+=n:(i.excludeBegin&&(R+=n), |
||||
|
g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(o) |
||||
|
;if("illegal"===o.type&&!s){ |
||||
|
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"') |
||||
|
;throw e.mode=N,e}if("end"===o.type){const e=m(o);if(e!==ee)return e} |
||||
|
if("illegal"===o.type&&""===a)return 1 |
||||
|
;if(I>1e5&&I>3*o.index)throw Error("potential infinite loop, way more iterations than matches") |
||||
|
;return R+=a,a.length}const _=O(e) |
||||
|
;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"') |
||||
|
;const v=V(_);let k="",N=o||v;const S={},M=new p.__emitter(p);(()=>{const e=[] |
||||
|
;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) |
||||
|
;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{ |
||||
|
if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ |
||||
|
I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A |
||||
|
;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(A,e.index),e) |
||||
|
;A=e.index+t}y(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e, |
||||
|
value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){ |
||||
|
if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n), |
||||
|
illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A, |
||||
|
context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(r)return{ |
||||
|
language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} |
||||
|
;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ |
||||
|
const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} |
||||
|
;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1))) |
||||
|
;s.unshift(n);const o=s.sort(((e,t)=>{ |
||||
|
if(e.relevance!==t.relevance)return t.relevance-e.relevance |
||||
|
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 |
||||
|
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[r,a]=o,c=r |
||||
|
;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{ |
||||
|
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" |
||||
|
;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) |
||||
|
;return t||(X(a.replace("{}",n[1])), |
||||
|
X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} |
||||
|
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return |
||||
|
;if(N("before:highlightElement",{el:e,language:n |
||||
|
}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) |
||||
|
;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), |
||||
|
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), |
||||
|
console.warn("The element with unescaped HTML:"), |
||||
|
console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML) |
||||
|
;t=e;const i=t.textContent,o=n?m(i,{language:n,ignoreIllegals:!0}):x(i) |
||||
|
;e.innerHTML=o.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n |
||||
|
;e.classList.add("hljs"),e.classList.add("language-"+i) |
||||
|
})(e,n,o.language),e.result={language:o.language,re:o.relevance, |
||||
|
relevance:o.relevance},o.secondBest&&(e.secondBest={ |
||||
|
language:o.secondBest.language,relevance:o.secondBest.relevance |
||||
|
}),N("after:highlightElement",{el:e,result:o,text:i})}let y=!1;function _(){ |
||||
|
"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 |
||||
|
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} |
||||
|
function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ |
||||
|
s[e.toLowerCase()]=t}))}function k(e){const t=O(e) |
||||
|
;return t&&!t.disableAutodetect}function N(e,t){const n=e;o.forEach((e=>{ |
||||
|
e[n]&&e[n](t)}))} |
||||
|
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ |
||||
|
y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, |
||||
|
highlightElement:w, |
||||
|
highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"), |
||||
|
G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)}, |
||||
|
initHighlighting:()=>{ |
||||
|
_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, |
||||
|
initHighlightingOnLoad:()=>{ |
||||
|
_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") |
||||
|
},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ |
||||
|
if(W("Language definition for '{}' could not be registered.".replace("{}",e)), |
||||
|
!r)throw t;W(t),s=l} |
||||
|
s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{ |
||||
|
languageName:e})},unregisterLanguage:e=>{delete i[e] |
||||
|
;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, |
||||
|
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v, |
||||
|
autoDetection:k,inherit:Q,addPlugin:e=>{(e=>{ |
||||
|
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ |
||||
|
e["before:highlightBlock"](Object.assign({block:t.el},t)) |
||||
|
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ |
||||
|
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)}, |
||||
|
removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{ |
||||
|
r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h, |
||||
|
lookahead:g,either:f,optional:d,anyNumberOfTimes:u} |
||||
|
;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n |
||||
|
},ne=te({});return ne.newInstance=()=>te({}),ne}() |
||||
|
;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `markdown` grammar compiled for Highlight.js 11.9.0 */ |
||||
|
(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, |
||||
|
end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, |
||||
|
relevance:0},{ |
||||
|
begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, |
||||
|
relevance:2},{ |
||||
|
begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), |
||||
|
relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ |
||||
|
begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ |
||||
|
},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, |
||||
|
returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", |
||||
|
excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", |
||||
|
end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[], |
||||
|
variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] |
||||
|
},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ |
||||
|
begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[] |
||||
|
}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c) |
||||
|
;let g=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(g) |
||||
|
})),g=g.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ |
||||
|
className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{ |
||||
|
begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", |
||||
|
contains:g}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", |
||||
|
end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:g, |
||||
|
end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ |
||||
|
begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ |
||||
|
begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", |
||||
|
contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ |
||||
|
begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ |
||||
|
className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ |
||||
|
className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() |
||||
|
;hljs.registerLanguage("markdown",e)})(); |
@ -0,0 +1,251 @@ |
|||||
|
/*! `markdown` grammar compiled for Highlight.js 11.9.0 */ |
||||
|
(function(){ |
||||
|
var hljsGrammar = (function () { |
||||
|
'use strict'; |
||||
|
|
||||
|
/* |
||||
|
Language: Markdown |
||||
|
Requires: xml.js |
||||
|
Author: John Crepezzi <john.crepezzi@gmail.com> |
||||
|
Website: https://daringfireball.net/projects/markdown/
|
||||
|
Category: common, markup |
||||
|
*/ |
||||
|
|
||||
|
function markdown(hljs) { |
||||
|
const regex = hljs.regex; |
||||
|
const INLINE_HTML = { |
||||
|
begin: /<\/?[A-Za-z_]/, |
||||
|
end: '>', |
||||
|
subLanguage: 'xml', |
||||
|
relevance: 0 |
||||
|
}; |
||||
|
const HORIZONTAL_RULE = { |
||||
|
begin: '^[-\\*]{3,}', |
||||
|
end: '$' |
||||
|
}; |
||||
|
const CODE = { |
||||
|
className: 'code', |
||||
|
variants: [ |
||||
|
// TODO: fix to allow these to work with sublanguage also
|
||||
|
{ begin: '(`{3,})[^`](.|\\n)*?\\1`*[ ]*' }, |
||||
|
{ begin: '(~{3,})[^~](.|\\n)*?\\1~*[ ]*' }, |
||||
|
// needed to allow markdown as a sublanguage to work
|
||||
|
{ |
||||
|
begin: '```', |
||||
|
end: '```+[ ]*$' |
||||
|
}, |
||||
|
{ |
||||
|
begin: '~~~', |
||||
|
end: '~~~+[ ]*$' |
||||
|
}, |
||||
|
{ begin: '`.+?`' }, |
||||
|
{ |
||||
|
begin: '(?=^( {4}|\\t))', |
||||
|
// use contains to gobble up multiple lines to allow the block to be whatever size
|
||||
|
// but only have a single open/close tag vs one per line
|
||||
|
contains: [ |
||||
|
{ |
||||
|
begin: '^( {4}|\\t)', |
||||
|
end: '(\\n)$' |
||||
|
} |
||||
|
], |
||||
|
relevance: 0 |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const LIST = { |
||||
|
className: 'bullet', |
||||
|
begin: '^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)', |
||||
|
end: '\\s+', |
||||
|
excludeEnd: true |
||||
|
}; |
||||
|
const LINK_REFERENCE = { |
||||
|
begin: /^\[[^\n]+\]:/, |
||||
|
returnBegin: true, |
||||
|
contains: [ |
||||
|
{ |
||||
|
className: 'symbol', |
||||
|
begin: /\[/, |
||||
|
end: /\]/, |
||||
|
excludeBegin: true, |
||||
|
excludeEnd: true |
||||
|
}, |
||||
|
{ |
||||
|
className: 'link', |
||||
|
begin: /:\s*/, |
||||
|
end: /$/, |
||||
|
excludeBegin: true |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/; |
||||
|
const LINK = { |
||||
|
variants: [ |
||||
|
// too much like nested array access in so many languages
|
||||
|
// to have any real relevance
|
||||
|
{ |
||||
|
begin: /\[.+?\]\[.*?\]/, |
||||
|
relevance: 0 |
||||
|
}, |
||||
|
// popular internet URLs
|
||||
|
{ |
||||
|
begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, |
||||
|
relevance: 2 |
||||
|
}, |
||||
|
{ |
||||
|
begin: regex.concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/), |
||||
|
relevance: 2 |
||||
|
}, |
||||
|
// relative urls
|
||||
|
{ |
||||
|
begin: /\[.+?\]\([./?&#].*?\)/, |
||||
|
relevance: 1 |
||||
|
}, |
||||
|
// whatever else, lower relevance (might not be a link at all)
|
||||
|
{ |
||||
|
begin: /\[.*?\]\(.*?\)/, |
||||
|
relevance: 0 |
||||
|
} |
||||
|
], |
||||
|
returnBegin: true, |
||||
|
contains: [ |
||||
|
{ |
||||
|
// empty strings for alt or link text
|
||||
|
match: /\[(?=\])/ }, |
||||
|
{ |
||||
|
className: 'string', |
||||
|
relevance: 0, |
||||
|
begin: '\\[', |
||||
|
end: '\\]', |
||||
|
excludeBegin: true, |
||||
|
returnEnd: true |
||||
|
}, |
||||
|
{ |
||||
|
className: 'link', |
||||
|
relevance: 0, |
||||
|
begin: '\\]\\(', |
||||
|
end: '\\)', |
||||
|
excludeBegin: true, |
||||
|
excludeEnd: true |
||||
|
}, |
||||
|
{ |
||||
|
className: 'symbol', |
||||
|
relevance: 0, |
||||
|
begin: '\\]\\[', |
||||
|
end: '\\]', |
||||
|
excludeBegin: true, |
||||
|
excludeEnd: true |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const BOLD = { |
||||
|
className: 'strong', |
||||
|
contains: [], // defined later
|
||||
|
variants: [ |
||||
|
{ |
||||
|
begin: /_{2}(?!\s)/, |
||||
|
end: /_{2}/ |
||||
|
}, |
||||
|
{ |
||||
|
begin: /\*{2}(?!\s)/, |
||||
|
end: /\*{2}/ |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
const ITALIC = { |
||||
|
className: 'emphasis', |
||||
|
contains: [], // defined later
|
||||
|
variants: [ |
||||
|
{ |
||||
|
begin: /\*(?![*\s])/, |
||||
|
end: /\*/ |
||||
|
}, |
||||
|
{ |
||||
|
begin: /_(?![_\s])/, |
||||
|
end: /_/, |
||||
|
relevance: 0 |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
// 3 level deep nesting is not allowed because it would create confusion
|
||||
|
// in cases like `***testing***` because where we don't know if the last
|
||||
|
// `***` is starting a new bold/italic or finishing the last one
|
||||
|
const BOLD_WITHOUT_ITALIC = hljs.inherit(BOLD, { contains: [] }); |
||||
|
const ITALIC_WITHOUT_BOLD = hljs.inherit(ITALIC, { contains: [] }); |
||||
|
BOLD.contains.push(ITALIC_WITHOUT_BOLD); |
||||
|
ITALIC.contains.push(BOLD_WITHOUT_ITALIC); |
||||
|
|
||||
|
let CONTAINABLE = [ |
||||
|
INLINE_HTML, |
||||
|
LINK |
||||
|
]; |
||||
|
|
||||
|
[ |
||||
|
BOLD, |
||||
|
ITALIC, |
||||
|
BOLD_WITHOUT_ITALIC, |
||||
|
ITALIC_WITHOUT_BOLD |
||||
|
].forEach(m => { |
||||
|
m.contains = m.contains.concat(CONTAINABLE); |
||||
|
}); |
||||
|
|
||||
|
CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC); |
||||
|
|
||||
|
const HEADER = { |
||||
|
className: 'section', |
||||
|
variants: [ |
||||
|
{ |
||||
|
begin: '^#{1,6}', |
||||
|
end: '$', |
||||
|
contains: CONTAINABLE |
||||
|
}, |
||||
|
{ |
||||
|
begin: '(?=^.+?\\n[=-]{2,}$)', |
||||
|
contains: [ |
||||
|
{ begin: '^[=-]*$' }, |
||||
|
{ |
||||
|
begin: '^', |
||||
|
end: "\\n", |
||||
|
contains: CONTAINABLE |
||||
|
} |
||||
|
] |
||||
|
} |
||||
|
] |
||||
|
}; |
||||
|
|
||||
|
const BLOCKQUOTE = { |
||||
|
className: 'quote', |
||||
|
begin: '^>\\s+', |
||||
|
contains: CONTAINABLE, |
||||
|
end: '$' |
||||
|
}; |
||||
|
|
||||
|
return { |
||||
|
name: 'Markdown', |
||||
|
aliases: [ |
||||
|
'md', |
||||
|
'mkdown', |
||||
|
'mkd' |
||||
|
], |
||||
|
contains: [ |
||||
|
HEADER, |
||||
|
INLINE_HTML, |
||||
|
LIST, |
||||
|
BOLD, |
||||
|
ITALIC, |
||||
|
BLOCKQUOTE, |
||||
|
CODE, |
||||
|
HORIZONTAL_RULE, |
||||
|
LINK, |
||||
|
LINK_REFERENCE |
||||
|
] |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
return markdown; |
||||
|
|
||||
|
})(); |
||||
|
|
||||
|
hljs.registerLanguage('markdown', hljsGrammar); |
||||
|
})(); |
@ -0,0 +1,31 @@ |
|||||
|
/*! `markdown` grammar compiled for Highlight.js 11.9.0 */ |
||||
|
(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, |
||||
|
end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, |
||||
|
relevance:0},{ |
||||
|
begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, |
||||
|
relevance:2},{ |
||||
|
begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), |
||||
|
relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ |
||||
|
begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ |
||||
|
},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, |
||||
|
returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", |
||||
|
excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", |
||||
|
end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[], |
||||
|
variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] |
||||
|
},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ |
||||
|
begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[] |
||||
|
}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c) |
||||
|
;let g=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(g) |
||||
|
})),g=g.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ |
||||
|
className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{ |
||||
|
begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", |
||||
|
contains:g}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", |
||||
|
end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:g, |
||||
|
end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ |
||||
|
begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ |
||||
|
begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", |
||||
|
contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ |
||||
|
begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ |
||||
|
className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ |
||||
|
className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() |
||||
|
;hljs.registerLanguage("markdown",e)})(); |
@ -0,0 +1,93 @@ |
|||||
|
{ |
||||
|
"name": "@highlightjs/cdn-assets", |
||||
|
"description": "Syntax highlighting with language autodetection. (pre-compiled CDN assets)", |
||||
|
"keywords": [ |
||||
|
"highlight", |
||||
|
"syntax" |
||||
|
], |
||||
|
"homepage": "https://highlightjs.org/", |
||||
|
"version": "11.9.0", |
||||
|
"author": "Josh Goebel <hello@joshgoebel.com>", |
||||
|
"contributors": [ |
||||
|
"Josh Goebel <hello@joshgoebel.com>", |
||||
|
"Egor Rogov <e.rogov@postgrespro.ru>", |
||||
|
"Vladimir Jimenez <me@allejo.io>", |
||||
|
"Ivan Sagalaev <maniac@softwaremaniacs.org>", |
||||
|
"Jeremy Hull <sourdrums@gmail.com>", |
||||
|
"Oleg Efimov <efimovov@gmail.com>", |
||||
|
"Gidi Meir Morris <gidi@gidi.io>", |
||||
|
"Jan T. Sott <git@idleberg.com>", |
||||
|
"Li Xuanji <xuanji@gmail.com>", |
||||
|
"Marcos Cáceres <marcos@marcosc.com>", |
||||
|
"Sang Dang <sang.dang@polku.io>" |
||||
|
], |
||||
|
"bugs": { |
||||
|
"url": "https://github.com/highlightjs/highlight.js/issues" |
||||
|
}, |
||||
|
"license": "BSD-3-Clause", |
||||
|
"repository": { |
||||
|
"type": "git", |
||||
|
"url": "git://github.com/highlightjs/highlight.js.git" |
||||
|
}, |
||||
|
"sideEffects": [ |
||||
|
"./es/common.js", |
||||
|
"./lib/common.js", |
||||
|
"*.css", |
||||
|
"*.scss" |
||||
|
], |
||||
|
"scripts": { |
||||
|
"mocha": "mocha", |
||||
|
"lint": "eslint src/*.js src/lib/*.js demo/*.js tools/**/*.js --ignore-pattern vendor", |
||||
|
"lint-languages": "eslint --no-eslintrc -c .eslintrc.lang.js src/languages/**/*.js", |
||||
|
"build_and_test": "npm run build && npm run test", |
||||
|
"build_and_test_browser": "npm run build-browser && npm run test-browser", |
||||
|
"build": "node ./tools/build.js -t node", |
||||
|
"build-cdn": "node ./tools/build.js -t cdn", |
||||
|
"build-browser": "node ./tools/build.js -t browser :common", |
||||
|
"devtool": "npx http-server", |
||||
|
"test": "mocha test", |
||||
|
"test-markup": "mocha test/markup", |
||||
|
"test-detect": "mocha test/detect", |
||||
|
"test-browser": "mocha test/browser", |
||||
|
"test-parser": "mocha test/parser" |
||||
|
}, |
||||
|
"engines": { |
||||
|
"node": ">=12.0.0" |
||||
|
}, |
||||
|
"devDependencies": { |
||||
|
"@colors/colors": "^1.6.0", |
||||
|
"@rollup/plugin-commonjs": "^25.0.5", |
||||
|
"@rollup/plugin-json": "^6.0.1", |
||||
|
"@rollup/plugin-node-resolve": "^15.2.3", |
||||
|
"@types/mocha": "^10.0.2", |
||||
|
"@typescript-eslint/eslint-plugin": "^6.7.4", |
||||
|
"@typescript-eslint/parser": "^6.7.4", |
||||
|
"clean-css": "^5.3.2", |
||||
|
"cli-table": "^0.3.1", |
||||
|
"commander": "^11.0.0", |
||||
|
"css": "^3.0.0", |
||||
|
"css-color-names": "^1.0.1", |
||||
|
"deep-freeze-es6": "^3.0.2", |
||||
|
"del": "^7.1.0", |
||||
|
"dependency-resolver": "^2.0.1", |
||||
|
"eslint": "^8.51.0", |
||||
|
"eslint-config-standard": "^17.1.0", |
||||
|
"eslint-plugin-import": "^2.28.1", |
||||
|
"eslint-plugin-node": "^11.1.0", |
||||
|
"eslint-plugin-promise": "^6.1.1", |
||||
|
"glob": "^8.1.0", |
||||
|
"glob-promise": "^6.0.5", |
||||
|
"handlebars": "^4.7.8", |
||||
|
"http-server": "^14.1.1", |
||||
|
"jsdom": "^22.1.0", |
||||
|
"lodash": "^4.17.20", |
||||
|
"mocha": "^10.2.0", |
||||
|
"refa": "^0.4.1", |
||||
|
"rollup": "^4.0.2", |
||||
|
"should": "^13.2.3", |
||||
|
"terser": "^5.21.0", |
||||
|
"tiny-worker": "^2.3.0", |
||||
|
"typescript": "^5.2.2", |
||||
|
"wcag-contrast": "^3.0.0" |
||||
|
} |
||||
|
} |
@ -0,0 +1,163 @@ |
|||||
|
pre code.hljs { |
||||
|
display: block; |
||||
|
overflow-x: auto; |
||||
|
padding: 1em |
||||
|
} |
||||
|
code.hljs { |
||||
|
padding: 3px 5px |
||||
|
} |
||||
|
/*! |
||||
|
Theme: Windows 95 Light |
||||
|
Author: Fergus Collins (https://github.com/C-Fergus) |
||||
|
License: ~ MIT (or more permissive) [via base16-schemes-source] |
||||
|
Maintainer: @highlightjs/core-team |
||||
|
Version: 2021.09.0 |
||||
|
*/ |
||||
|
/* |
||||
|
WARNING: DO NOT EDIT THIS FILE DIRECTLY. |
||||
|
|
||||
|
This theme file was auto-generated from the Base16 scheme windows-95-light |
||||
|
by the Highlight.js Base16 template builder. |
||||
|
|
||||
|
- https://github.com/highlightjs/base16-highlightjs |
||||
|
*/ |
||||
|
/* |
||||
|
base00 #fcfcfc Default Background |
||||
|
base01 #e0e0e0 Lighter Background (Used for status bars, line number and folding marks) |
||||
|
base02 #c4c4c4 Selection Background |
||||
|
base03 #a8a8a8 Comments, Invisibles, Line Highlighting |
||||
|
base04 #7e7e7e Dark Foreground (Used for status bars) |
||||
|
base05 #545454 Default Foreground, Caret, Delimiters, Operators |
||||
|
base06 #2a2a2a Light Foreground (Not often used) |
||||
|
base07 #000000 Light Background (Not often used) |
||||
|
base08 #a80000 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted |
||||
|
base09 #fcfc54 Integers, Boolean, Constants, XML Attributes, Markup Link Url |
||||
|
base0A #a85400 Classes, Markup Bold, Search Text Background |
||||
|
base0B #00a800 Strings, Inherited Class, Markup Code, Diff Inserted |
||||
|
base0C #00a8a8 Support, Regular Expressions, Escape Characters, Markup Quotes |
||||
|
base0D #0000a8 Functions, Methods, Attribute IDs, Headings |
||||
|
base0E #a800a8 Keywords, Storage, Selector, Markup Italic, Diff Changed |
||||
|
base0F #54fc54 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> |
||||
|
*/ |
||||
|
pre code.hljs { |
||||
|
display: block; |
||||
|
overflow-x: auto; |
||||
|
padding: 1em |
||||
|
} |
||||
|
code.hljs { |
||||
|
padding: 3px 5px |
||||
|
} |
||||
|
.hljs { |
||||
|
color: #545454; |
||||
|
background: #fcfcfc |
||||
|
} |
||||
|
.hljs::selection, |
||||
|
.hljs ::selection { |
||||
|
background-color: #c4c4c4; |
||||
|
color: #545454 |
||||
|
} |
||||
|
/* purposely do not highlight these things */ |
||||
|
.hljs-formula, |
||||
|
.hljs-params, |
||||
|
.hljs-property { |
||||
|
|
||||
|
} |
||||
|
/* base03 - #a8a8a8 - Comments, Invisibles, Line Highlighting */ |
||||
|
.hljs-comment { |
||||
|
color: #a8a8a8 |
||||
|
} |
||||
|
/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ |
||||
|
.hljs-tag { |
||||
|
color: #7e7e7e |
||||
|
} |
||||
|
/* base05 - #545454 - Default Foreground, Caret, Delimiters, Operators */ |
||||
|
.hljs-subst, |
||||
|
.hljs-punctuation, |
||||
|
.hljs-operator { |
||||
|
color: #545454 |
||||
|
} |
||||
|
.hljs-operator { |
||||
|
opacity: 0.7 |
||||
|
} |
||||
|
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ |
||||
|
.hljs-bullet, |
||||
|
.hljs-variable, |
||||
|
.hljs-template-variable, |
||||
|
.hljs-selector-tag, |
||||
|
.hljs-name, |
||||
|
.hljs-deletion { |
||||
|
color: #a80000 |
||||
|
} |
||||
|
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ |
||||
|
.hljs-symbol, |
||||
|
.hljs-number, |
||||
|
.hljs-link, |
||||
|
.hljs-attr, |
||||
|
.hljs-variable.constant_, |
||||
|
.hljs-literal { |
||||
|
color: #fcfc54 |
||||
|
} |
||||
|
/* base0A - Classes, Markup Bold, Search Text Background */ |
||||
|
.hljs-title, |
||||
|
.hljs-class .hljs-title, |
||||
|
.hljs-title.class_ { |
||||
|
color: #a85400 |
||||
|
} |
||||
|
.hljs-strong { |
||||
|
font-weight: bold; |
||||
|
color: #a85400 |
||||
|
} |
||||
|
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ |
||||
|
.hljs-code, |
||||
|
.hljs-addition, |
||||
|
.hljs-title.class_.inherited__, |
||||
|
.hljs-string { |
||||
|
color: #00a800 |
||||
|
} |
||||
|
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ |
||||
|
/* guessing */ |
||||
|
.hljs-built_in, |
||||
|
.hljs-doctag, |
||||
|
.hljs-quote, |
||||
|
.hljs-keyword.hljs-atrule, |
||||
|
.hljs-regexp { |
||||
|
color: #00a8a8 |
||||
|
} |
||||
|
/* base0D - Functions, Methods, Attribute IDs, Headings */ |
||||
|
.hljs-function .hljs-title, |
||||
|
.hljs-attribute, |
||||
|
.ruby .hljs-property, |
||||
|
.hljs-title.function_, |
||||
|
.hljs-section { |
||||
|
color: #0000a8 |
||||
|
} |
||||
|
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ |
||||
|
/* .hljs-selector-id, */ |
||||
|
/* .hljs-selector-class, */ |
||||
|
/* .hljs-selector-attr, */ |
||||
|
/* .hljs-selector-pseudo, */ |
||||
|
.hljs-type, |
||||
|
.hljs-template-tag, |
||||
|
.diff .hljs-meta, |
||||
|
.hljs-keyword { |
||||
|
color: #a800a8 |
||||
|
} |
||||
|
.hljs-emphasis { |
||||
|
color: #a800a8; |
||||
|
font-style: italic |
||||
|
} |
||||
|
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */ |
||||
|
/* |
||||
|
prevent top level .keyword and .string scopes |
||||
|
from leaking into meta by accident |
||||
|
*/ |
||||
|
.hljs-meta, |
||||
|
.hljs-meta .hljs-keyword, |
||||
|
.hljs-meta .hljs-string { |
||||
|
color: #54fc54 |
||||
|
} |
||||
|
/* for v10 compatible themes */ |
||||
|
.hljs-meta .hljs-keyword, |
||||
|
.hljs-meta-keyword { |
||||
|
font-weight: bold |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
/*! |
||||
|
Theme: Windows 95 Light |
||||
|
Author: Fergus Collins (https://github.com/C-Fergus) |
||||
|
License: ~ MIT (or more permissive) [via base16-schemes-source] |
||||
|
Maintainer: @highlightjs/core-team |
||||
|
Version: 2021.09.0 |
||||
|
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#545454;background:#fcfcfc}.hljs ::selection,.hljs::selection{background-color:#c4c4c4;color:#545454}.hljs-comment{color:#a8a8a8}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#545454}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#a80000}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#fcfc54}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#a85400}.hljs-strong{font-weight:700;color:#a85400}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#00a800}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#00a8a8}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#0000a8}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#a800a8}.hljs-emphasis{color:#a800a8;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#54fc54}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} |
@ -0,0 +1,163 @@ |
|||||
|
pre code.hljs { |
||||
|
display: block; |
||||
|
overflow-x: auto; |
||||
|
padding: 1em |
||||
|
} |
||||
|
code.hljs { |
||||
|
padding: 3px 5px |
||||
|
} |
||||
|
/*! |
||||
|
Theme: Windows 95 |
||||
|
Author: Fergus Collins (https://github.com/C-Fergus) |
||||
|
License: ~ MIT (or more permissive) [via base16-schemes-source] |
||||
|
Maintainer: @highlightjs/core-team |
||||
|
Version: 2021.09.0 |
||||
|
*/ |
||||
|
/* |
||||
|
WARNING: DO NOT EDIT THIS FILE DIRECTLY. |
||||
|
|
||||
|
This theme file was auto-generated from the Base16 scheme windows-95 |
||||
|
by the Highlight.js Base16 template builder. |
||||
|
|
||||
|
- https://github.com/highlightjs/base16-highlightjs |
||||
|
*/ |
||||
|
/* |
||||
|
base00 #000000 Default Background |
||||
|
base01 #1C1C1C Lighter Background (Used for status bars, line number and folding marks) |
||||
|
base02 #383838 Selection Background |
||||
|
base03 #545454 Comments, Invisibles, Line Highlighting |
||||
|
base04 #7e7e7e Dark Foreground (Used for status bars) |
||||
|
base05 #a8a8a8 Default Foreground, Caret, Delimiters, Operators |
||||
|
base06 #d2d2d2 Light Foreground (Not often used) |
||||
|
base07 #fcfcfc Light Background (Not often used) |
||||
|
base08 #fc5454 Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted |
||||
|
base09 #a85400 Integers, Boolean, Constants, XML Attributes, Markup Link Url |
||||
|
base0A #fcfc54 Classes, Markup Bold, Search Text Background |
||||
|
base0B #54fc54 Strings, Inherited Class, Markup Code, Diff Inserted |
||||
|
base0C #54fcfc Support, Regular Expressions, Escape Characters, Markup Quotes |
||||
|
base0D #5454fc Functions, Methods, Attribute IDs, Headings |
||||
|
base0E #fc54fc Keywords, Storage, Selector, Markup Italic, Diff Changed |
||||
|
base0F #00a800 Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> |
||||
|
*/ |
||||
|
pre code.hljs { |
||||
|
display: block; |
||||
|
overflow-x: auto; |
||||
|
padding: 1em |
||||
|
} |
||||
|
code.hljs { |
||||
|
padding: 3px 5px |
||||
|
} |
||||
|
.hljs { |
||||
|
color: #a8a8a8; |
||||
|
background: #000000 |
||||
|
} |
||||
|
.hljs::selection, |
||||
|
.hljs ::selection { |
||||
|
background-color: #383838; |
||||
|
color: #a8a8a8 |
||||
|
} |
||||
|
/* purposely do not highlight these things */ |
||||
|
.hljs-formula, |
||||
|
.hljs-params, |
||||
|
.hljs-property { |
||||
|
|
||||
|
} |
||||
|
/* base03 - #545454 - Comments, Invisibles, Line Highlighting */ |
||||
|
.hljs-comment { |
||||
|
color: #545454 |
||||
|
} |
||||
|
/* base04 - #7e7e7e - Dark Foreground (Used for status bars) */ |
||||
|
.hljs-tag { |
||||
|
color: #7e7e7e |
||||
|
} |
||||
|
/* base05 - #a8a8a8 - Default Foreground, Caret, Delimiters, Operators */ |
||||
|
.hljs-subst, |
||||
|
.hljs-punctuation, |
||||
|
.hljs-operator { |
||||
|
color: #a8a8a8 |
||||
|
} |
||||
|
.hljs-operator { |
||||
|
opacity: 0.7 |
||||
|
} |
||||
|
/* base08 - Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted */ |
||||
|
.hljs-bullet, |
||||
|
.hljs-variable, |
||||
|
.hljs-template-variable, |
||||
|
.hljs-selector-tag, |
||||
|
.hljs-name, |
||||
|
.hljs-deletion { |
||||
|
color: #fc5454 |
||||
|
} |
||||
|
/* base09 - Integers, Boolean, Constants, XML Attributes, Markup Link Url */ |
||||
|
.hljs-symbol, |
||||
|
.hljs-number, |
||||
|
.hljs-link, |
||||
|
.hljs-attr, |
||||
|
.hljs-variable.constant_, |
||||
|
.hljs-literal { |
||||
|
color: #a85400 |
||||
|
} |
||||
|
/* base0A - Classes, Markup Bold, Search Text Background */ |
||||
|
.hljs-title, |
||||
|
.hljs-class .hljs-title, |
||||
|
.hljs-title.class_ { |
||||
|
color: #fcfc54 |
||||
|
} |
||||
|
.hljs-strong { |
||||
|
font-weight: bold; |
||||
|
color: #fcfc54 |
||||
|
} |
||||
|
/* base0B - Strings, Inherited Class, Markup Code, Diff Inserted */ |
||||
|
.hljs-code, |
||||
|
.hljs-addition, |
||||
|
.hljs-title.class_.inherited__, |
||||
|
.hljs-string { |
||||
|
color: #54fc54 |
||||
|
} |
||||
|
/* base0C - Support, Regular Expressions, Escape Characters, Markup Quotes */ |
||||
|
/* guessing */ |
||||
|
.hljs-built_in, |
||||
|
.hljs-doctag, |
||||
|
.hljs-quote, |
||||
|
.hljs-keyword.hljs-atrule, |
||||
|
.hljs-regexp { |
||||
|
color: #54fcfc |
||||
|
} |
||||
|
/* base0D - Functions, Methods, Attribute IDs, Headings */ |
||||
|
.hljs-function .hljs-title, |
||||
|
.hljs-attribute, |
||||
|
.ruby .hljs-property, |
||||
|
.hljs-title.function_, |
||||
|
.hljs-section { |
||||
|
color: #5454fc |
||||
|
} |
||||
|
/* base0E - Keywords, Storage, Selector, Markup Italic, Diff Changed */ |
||||
|
/* .hljs-selector-id, */ |
||||
|
/* .hljs-selector-class, */ |
||||
|
/* .hljs-selector-attr, */ |
||||
|
/* .hljs-selector-pseudo, */ |
||||
|
.hljs-type, |
||||
|
.hljs-template-tag, |
||||
|
.diff .hljs-meta, |
||||
|
.hljs-keyword { |
||||
|
color: #fc54fc |
||||
|
} |
||||
|
.hljs-emphasis { |
||||
|
color: #fc54fc; |
||||
|
font-style: italic |
||||
|
} |
||||
|
/* base0F - Deprecated, Opening/Closing Embedded Language Tags, e.g. <?php ?> */ |
||||
|
/* |
||||
|
prevent top level .keyword and .string scopes |
||||
|
from leaking into meta by accident |
||||
|
*/ |
||||
|
.hljs-meta, |
||||
|
.hljs-meta .hljs-keyword, |
||||
|
.hljs-meta .hljs-string { |
||||
|
color: #00a800 |
||||
|
} |
||||
|
/* for v10 compatible themes */ |
||||
|
.hljs-meta .hljs-keyword, |
||||
|
.hljs-meta-keyword { |
||||
|
font-weight: bold |
||||
|
} |
@ -0,0 +1,7 @@ |
|||||
|
/*! |
||||
|
Theme: Windows 95 |
||||
|
Author: Fergus Collins (https://github.com/C-Fergus) |
||||
|
License: ~ MIT (or more permissive) [via base16-schemes-source] |
||||
|
Maintainer: @highlightjs/core-team |
||||
|
Version: 2021.09.0 |
||||
|
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#a8a8a8;background:#000}.hljs ::selection,.hljs::selection{background-color:#383838;color:#a8a8a8}.hljs-comment{color:#545454}.hljs-tag{color:#7e7e7e}.hljs-operator,.hljs-punctuation,.hljs-subst{color:#a8a8a8}.hljs-operator{opacity:.7}.hljs-bullet,.hljs-deletion,.hljs-name,.hljs-selector-tag,.hljs-template-variable,.hljs-variable{color:#fc5454}.hljs-attr,.hljs-link,.hljs-literal,.hljs-number,.hljs-symbol,.hljs-variable.constant_{color:#a85400}.hljs-class .hljs-title,.hljs-title,.hljs-title.class_{color:#fcfc54}.hljs-strong{font-weight:700;color:#fcfc54}.hljs-addition,.hljs-code,.hljs-string,.hljs-title.class_.inherited__{color:#54fc54}.hljs-built_in,.hljs-doctag,.hljs-keyword.hljs-atrule,.hljs-quote,.hljs-regexp{color:#54fcfc}.hljs-attribute,.hljs-function .hljs-title,.hljs-section,.hljs-title.function_,.ruby .hljs-property{color:#5454fc}.diff .hljs-meta,.hljs-keyword,.hljs-template-tag,.hljs-type{color:#fc54fc}.hljs-emphasis{color:#fc54fc;font-style:italic}.hljs-meta,.hljs-meta .hljs-keyword,.hljs-meta .hljs-string{color:#00a800}.hljs-meta .hljs-keyword,.hljs-meta-keyword{font-weight:700} |
@ -0,0 +1,79 @@ |
|||||
|
pre code.hljs { |
||||
|
display: block; |
||||
|
overflow-x: auto; |
||||
|
padding: 1em |
||||
|
} |
||||
|
code.hljs { |
||||
|
padding: 3px 5px |
||||
|
} |
||||
|
/* |
||||
|
xt256.css |
||||
|
|
||||
|
Contact: initbar [at] protonmail [dot] ch |
||||
|
: github.com/initbar |
||||
|
*/ |
||||
|
.hljs { |
||||
|
color: #eaeaea; |
||||
|
background: #000 |
||||
|
} |
||||
|
.hljs-subst { |
||||
|
color: #eaeaea |
||||
|
} |
||||
|
.hljs-emphasis { |
||||
|
font-style: italic |
||||
|
} |
||||
|
.hljs-strong { |
||||
|
font-weight: bold |
||||
|
} |
||||
|
.hljs-type { |
||||
|
color: #eaeaea |
||||
|
} |
||||
|
.hljs-params { |
||||
|
color: #da0000 |
||||
|
} |
||||
|
.hljs-literal, |
||||
|
.hljs-number, |
||||
|
.hljs-name { |
||||
|
color: #ff0000; |
||||
|
font-weight: bolder |
||||
|
} |
||||
|
.hljs-comment { |
||||
|
color: #969896 |
||||
|
} |
||||
|
.hljs-selector-id, |
||||
|
.hljs-quote { |
||||
|
color: #00ffff |
||||
|
} |
||||
|
.hljs-template-variable, |
||||
|
.hljs-variable, |
||||
|
.hljs-title { |
||||
|
color: #00ffff; |
||||
|
font-weight: bold |
||||
|
} |
||||
|
.hljs-selector-class, |
||||
|
.hljs-keyword, |
||||
|
.hljs-symbol { |
||||
|
color: #fff000 |
||||
|
} |
||||
|
.hljs-string, |
||||
|
.hljs-bullet { |
||||
|
color: #00ff00 |
||||
|
} |
||||
|
.hljs-tag, |
||||
|
.hljs-section { |
||||
|
color: #000fff |
||||
|
} |
||||
|
.hljs-selector-tag { |
||||
|
color: #000fff; |
||||
|
font-weight: bold |
||||
|
} |
||||
|
.hljs-attribute, |
||||
|
.hljs-built_in, |
||||
|
.hljs-regexp, |
||||
|
.hljs-link { |
||||
|
color: #ff00ff |
||||
|
} |
||||
|
.hljs-meta { |
||||
|
color: #fff; |
||||
|
font-weight: bolder |
||||
|
} |
@ -0,0 +1 @@ |
|||||
|
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#eaeaea;background:#000}.hljs-subst{color:#eaeaea}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-type{color:#eaeaea}.hljs-params{color:#da0000}.hljs-literal,.hljs-name,.hljs-number{color:red;font-weight:bolder}.hljs-comment{color:#969896}.hljs-quote,.hljs-selector-id{color:#0ff}.hljs-template-variable,.hljs-title,.hljs-variable{color:#0ff;font-weight:700}.hljs-keyword,.hljs-selector-class,.hljs-symbol{color:#fff000}.hljs-bullet,.hljs-string{color:#0f0}.hljs-section,.hljs-tag{color:#000fff}.hljs-selector-tag{color:#000fff;font-weight:700}.hljs-attribute,.hljs-built_in,.hljs-link,.hljs-regexp{color:#f0f}.hljs-meta{color:#fff;font-weight:bolder} |
@ -0,0 +1,5 @@ |
|||||
|
<link rel="stylesheet" href="/path/to/styles/default.css"> |
||||
|
<script src="/path/to/highlight.min.js"></script> |
||||
|
|
||||
|
|
||||
|
<script>hljs.highlightAll();</script> |
Loading…
Reference in new issue