Class: Less::Engine

Inherits:
Object show all
Defined in:
lib/less/engine.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj) ⇒ Engine

Returns a new instance of Engine.



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/less/engine.rb', line 16

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

Instance Attribute Details

#cssObject (readonly)

Returns the value of attribute css.



14
15
16
# File 'lib/less/engine.rb', line 14

def css
  @css
end

#lessObject (readonly)

Returns the value of attribute less.



14
15
16
# File 'lib/less/engine.rb', line 14

def less
  @less
end

Instance Method Details

#parse(env = Node::Element.new) ⇒ Object Also known as: to_tree



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/less/engine.rb', line 29

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

#prepareObject



46
47
48
# File 'lib/less/engine.rb', line 46

def prepare
  @less.gsub(/\r\n/, "\n").gsub(/\t/, '  ')
end

#to_cssObject



42
43
44
# File 'lib/less/engine.rb', line 42

def to_css
  @css || @css = self.parse.to_css
end