Sha256: 1e60fe38cf55ce7e0455912097bb3a0ed58c96220b1688f575e9ac3c5dce262b

Contents?: true

Size: 997 Bytes

Versions: 13

Compression:

Stored size: 997 Bytes

Contents

$:.unshift File.dirname(__FILE__)

require 'engine/builder'
require 'engine/nodes'

begin
  require 'engine/parser'
rescue LoadError
  Treetop.load LESS_GRAMMAR
end

module Less
  class Engine
    attr_reader :css, :less
    
    def initialize obj
      @less = if obj.is_a? File
        @path = File.dirname(File.expand_path obj.path)
        obj.read
      elsif obj.is_a? String
        obj.dup
      else
        raise ArgumentError, "argument must be an instance of File or String!"
      end
      
      @parser = LessParser.new
    end
    
    def parse env = Node::Element.new
      root = @parser.parse(self.prepare)
      
      if root
        @tree = root.build env.tap {|e| e.file = @path }
      else
        raise SyntaxError, @parser.failure_message
      end
                  
      @tree
    end
    alias :to_tree :parse
    
    def to_css
      @css || @css = self.parse.to_css
    end
    
    def prepare
      @less.gsub(/\r\n/, "\n").gsub(/\t/, '  ')
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
cloudhead-less-1.0.10 lib/less/engine.rb
cloudhead-less-1.0.4 lib/less/engine.rb
cloudhead-less-1.0.5 lib/less/engine.rb
cloudhead-less-1.0.6 lib/less/engine.rb
cloudhead-less-1.0.8 lib/less/engine.rb
cloudhead-less-1.0.9 lib/less/engine.rb
less-1.0.4 lib/less/engine.rb
less-1.0.5 lib/less/engine.rb
less-1.0.6 lib/less/engine.rb
less-1.0.8 lib/less/engine.rb
less-1.0.9 lib/less/engine.rb
less-1.0.10 lib/less/engine.rb
less-1.0.11 lib/less/engine.rb