Sha256: 614a3764e5ce2310c2cc1c7484719f3ebc8f54f06cc9a8724318da5b167bf414
Contents?: true
Size: 1.55 KB
Versions: 1
Compression:
Stored size: 1.55 KB
Contents
module Less class ParseError < StandardError; end # Convert lesscss source into an abstract syntax Tree class Parser class << self def backend @backend ||= ExecJS::ExternalRuntime.new( :name => 'Node.js (V8)', :command => ["nodejs", "node"], :runner_path => File.expand_path("../runner.js", __FILE__) ) end end # Construct and configure new Less::Parser # # @param [Hash] opts configuration options # @option opts [Array] :paths a list of directories to search when handling \@import statements # @option opts [String] :filename to associate with resulting parse trees (useful for generating errors) def initialize(options = {}) @options = Less.defaults.merge(options) @context = self.class.backend.compile(compiler_source) end # Convert `less` source into a abstract syntaxt tree # @param [String] less the source to parse # @return [Less::Tree] the parsed tree def parse(less) Tree.new(less, @context, @options) end protected def compiler_source File.read(File.expand_path("../compiler.js", __FILE__)) end end # Abstract LessCSS syntax tree Less. Mainly used to emit CSS class Tree def initialize(less, context, options) @less = less @context = context @options = options end def to_css(options = {}) @result ||= @context.call("render", @less, @options.merge(options)) rescue ExecJS::ProgramError => e raise ParseError.new(e.message) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
less-rb-0.0.1 | lib/less/parser.rb |