medcat/liquidscript

View on GitHub
lib/liquidscript.rb

Summary

Maintainability
A
0 mins
Test Coverage
require "forwardable"
require "liquidscript/icr"
require "liquidscript/errors"
require "liquidscript/version"
require "liquidscript/scanner"
require "liquidscript/compiler"
require "liquidscript/generator"

if defined? ::Sprockets
  require "liquidscript/template"
end

module Liquidscript
  def self.compile(data, options = {})
    scanner = Scanner::Liquidscript.new(data, options[:file])
    if options[:tokens]
      return scanner.each.to_a.to_sexp
    end

    compiler = Compiler::ICR.new(scanner)
    compiler.compile
    if options[:ast]
      return compiler.top.to_sexp
    end

    Generator::Javascript.new(compiler.top).generate
  end
end