Skip to content

stagas/code-syntax

Repository files navigation

code-syntax

Code syntax highlight Web Component

npm i code-syntax pnpm add code-syntax yarn add code-syntax

Examples

# web

    Try it live

    # view source example/web.ts

    import 'plenty-themes/cobalt2.css'
    import 'plenty-themes/laser.css'
    import 'code-syntax/themes/default.css'
    
    import { CodeSyntaxElement, languages } from 'code-syntax'
    import js from 'code-syntax/languages/js'
    
    customElements.define('code-syntax', CodeSyntaxElement)
    
    languages.js = js // can also be import(code-syntax.) directly
    
    document.body.innerHTML = `
    <code-syntax id="demo" style="display:inline-flex;" language="js" theme="laser">class Vector {
      x: number
      y: number
      constructor(x: number, y: number) {
        this.x = x
        this.y = y
      }
      add(v: Vector): Vector {
        return new Vector(this.x + v.x, this.y + v.y)
      }
    }
    </code-syntax>
    `

API

# CodeSyntaxElement src/element.ts#L45
# PatchOptions src/util.ts#L3
# SyntaxDefinition src/syntax.ts#L6
# RegExpMap src/syntax.ts#L3
# RegExpMapped src/syntax.ts#L4
# SyntaxOrImport src/syntax.ts#L10
# languages  =  {} src/element.ts#L8
# compile(def, keys) – Compiles a syntax definition. src/syntax.ts#L24

    const r = await compile({
      foo: /[a-z]/,
      bar: /[0-9]/,
    })

    # def – The syntax definition to compile. Can be a promise returned by import().
    # keys  =  ...

      Set<string>

    compile(def, keys)  =>

# patchElements(elements, Partial<PatchOptions>) src/util.ts#L8
# patchPreCodeElements(opts) src/util.ts#L27

    # opts

    patchPreCodeElements(opts)  =>

      void

# syntax(regexp, s) – Syntax highlights a string as html with the given syntax. src/syntax.ts#L68

    const regexp = await compile({
      foo: /[a-z]+/,
      bar: [
        /[0-9]+/,
        {
          bar: /[0-5]+/,
        },
      ],
    })
    const html = syntax(regexp, 'hello 123 789 world')

    # regexp – The syntax definition returned by compile()
    # s – The string to highlight.

      string

    syntax(regexp, s)  =>

      string

Credits

Contributing

Fork or edit and submit a PR.

All contributions are welcome!

License

MIT © 2022 stagas