Skip to content

livebud/transpiler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Transpiler

Go Reference

Transform files from one extension to another. Transpiler aims to be a generic module where you can hook in any language you want.

Transpiler was built for and used in Bud.

Features

  • Shortest-path multi-step transforms (e.g. .md -> .svelte -> .html)
  • Transform the same extension (e.g. .md -> .md)

Install

go get github.com/livebud/transpiler

API Usage

tr := transpiler.New()
tr.Add(".md", ".html", func(file *transpiler.File) error {
  html, err := markdown.Compile(file.Data)
  if err != nil {
    return err
  }
  file.Data = html
  return nil
})

tr.Add(".html", ".min.html", func(file *transpiler.File) error {
  html, err := minify.HTML(file.Data)
  if err != nil {
    return err
  }
  file.Data = html
  return nil
})

tr.Add(".html", ".html", func(file *transpiler.File) error {
  html, err := tailwind.Compile(file.Data)
  if err != nil {
    return err
  }
  file.Data = html
})

// Markdown input
code := []byte("# Title")

// Calls (in order):
// 1. .md -> .html
// 2. .html -> .html
// 3. .html -> .min.html
html, err := tr.Transpile(".md", ".min.html", code)

License

MIT

About

Transform files from one extension to another

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages