cloudhead-less 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. data/Rakefile +1 -1
  2. data/VERSION +1 -1
  3. data/less.gemspec +92 -2
  4. data/lib/less.rb +6 -4
  5. data/lib/less/engine.rb +1 -1
  6. data/lib/less/engine/less.tt +4 -4
  7. data/lib/less/engine/nodes/element.rb +3 -1
  8. data/lib/less/engine/nodes/entity.rb +18 -4
  9. data/lib/less/engine/nodes/function.rb +24 -3
  10. data/lib/less/engine/nodes/literal.rb +4 -1
  11. data/lib/less/engine/parser.rb +39 -43
  12. data/lib/vendor/treetop/.gitignore +7 -0
  13. data/lib/vendor/treetop/LICENSE +19 -0
  14. data/lib/vendor/treetop/README +164 -0
  15. data/lib/vendor/treetop/Rakefile +19 -0
  16. data/lib/vendor/treetop/benchmark/seqpar.gnuplot +15 -0
  17. data/lib/vendor/treetop/benchmark/seqpar.treetop +16 -0
  18. data/lib/vendor/treetop/benchmark/seqpar_benchmark.rb +107 -0
  19. data/lib/vendor/treetop/bin/tt +28 -0
  20. data/lib/vendor/treetop/lib/treetop.rb +11 -0
  21. data/lib/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +45 -0
  22. data/lib/vendor/treetop/lib/treetop/compiler.rb +6 -0
  23. data/lib/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +42 -0
  24. data/lib/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +17 -0
  25. data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb +3097 -0
  26. data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +408 -0
  27. data/lib/vendor/treetop/lib/treetop/compiler/node_classes.rb +19 -0
  28. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +18 -0
  29. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
  30. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +23 -0
  31. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +31 -0
  32. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
  33. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +28 -0
  34. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
  35. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
  36. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +19 -0
  37. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
  38. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +146 -0
  39. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +55 -0
  40. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +45 -0
  41. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +55 -0
  42. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +68 -0
  43. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +20 -0
  44. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
  45. data/lib/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
  46. data/lib/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +113 -0
  47. data/lib/vendor/treetop/lib/treetop/ruby_extensions.rb +2 -0
  48. data/lib/vendor/treetop/lib/treetop/ruby_extensions/string.rb +42 -0
  49. data/lib/vendor/treetop/lib/treetop/runtime.rb +5 -0
  50. data/lib/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +109 -0
  51. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +4 -0
  52. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
  53. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
  54. data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
  55. data/lib/vendor/treetop/lib/treetop/runtime/syntax_node.rb +86 -0
  56. data/lib/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
  57. data/lib/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
  58. data/lib/vendor/treetop/lib/treetop/version.rb +9 -0
  59. data/lib/vendor/treetop/spec/compiler/and_predicate_spec.rb +36 -0
  60. data/lib/vendor/treetop/spec/compiler/anything_symbol_spec.rb +44 -0
  61. data/lib/vendor/treetop/spec/compiler/character_class_spec.rb +239 -0
  62. data/lib/vendor/treetop/spec/compiler/choice_spec.rb +80 -0
  63. data/lib/vendor/treetop/spec/compiler/circular_compilation_spec.rb +28 -0
  64. data/lib/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +21 -0
  65. data/lib/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +84 -0
  66. data/lib/vendor/treetop/spec/compiler/grammar_spec.rb +41 -0
  67. data/lib/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +40 -0
  68. data/lib/vendor/treetop/spec/compiler/not_predicate_spec.rb +38 -0
  69. data/lib/vendor/treetop/spec/compiler/one_or_more_spec.rb +35 -0
  70. data/lib/vendor/treetop/spec/compiler/optional_spec.rb +37 -0
  71. data/lib/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +19 -0
  72. data/lib/vendor/treetop/spec/compiler/parsing_rule_spec.rb +32 -0
  73. data/lib/vendor/treetop/spec/compiler/sequence_spec.rb +115 -0
  74. data/lib/vendor/treetop/spec/compiler/terminal_spec.rb +81 -0
  75. data/lib/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +37 -0
  76. data/lib/vendor/treetop/spec/compiler/test_grammar.treetop +7 -0
  77. data/lib/vendor/treetop/spec/compiler/test_grammar.tt +7 -0
  78. data/lib/vendor/treetop/spec/compiler/test_grammar_do.treetop +7 -0
  79. data/lib/vendor/treetop/spec/compiler/zero_or_more_spec.rb +56 -0
  80. data/lib/vendor/treetop/spec/composition/a.treetop +11 -0
  81. data/lib/vendor/treetop/spec/composition/b.treetop +11 -0
  82. data/lib/vendor/treetop/spec/composition/c.treetop +10 -0
  83. data/lib/vendor/treetop/spec/composition/d.treetop +10 -0
  84. data/lib/vendor/treetop/spec/composition/f.treetop +17 -0
  85. data/lib/vendor/treetop/spec/composition/grammar_composition_spec.rb +40 -0
  86. data/lib/vendor/treetop/spec/composition/subfolder/e_includes_c.treetop +15 -0
  87. data/lib/vendor/treetop/spec/ruby_extensions/string_spec.rb +32 -0
  88. data/lib/vendor/treetop/spec/runtime/compiled_parser_spec.rb +101 -0
  89. data/lib/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +147 -0
  90. data/lib/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +349 -0
  91. data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +385 -0
  92. data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +660 -0
  93. data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +6175 -0
  94. data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +58 -0
  95. data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +23 -0
  96. data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +164 -0
  97. data/lib/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +84 -0
  98. data/lib/vendor/treetop/spec/runtime/syntax_node_spec.rb +68 -0
  99. data/lib/vendor/treetop/spec/spec_helper.rb +106 -0
  100. data/lib/vendor/treetop/spec/spec_suite.rb +4 -0
  101. data/lib/vendor/treetop/treetop.gemspec +18 -0
  102. data/spec/less/variables-1.0.less +1 -1
  103. metadata +92 -2
data/Rakefile CHANGED
@@ -64,7 +64,7 @@ begin
64
64
  require 'lib/less'
65
65
 
66
66
  task :compile do
67
- puts "compiling #{Less::GRAMMAR}..."
67
+ puts "compiling #{Less::GRAMMAR.split('/').last}..."
68
68
  File.open(Less::PARSER, 'w') {|f| f.write Treetop::Compiler::GrammarCompiler.new.ruby_source(Less::GRAMMAR) }
69
69
  end
70
70
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
data/less.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{less}
5
- s.version = "1.0.0"
5
+ s.version = "1.0.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["cloudhead"]
9
- s.date = %q{2009-07-08}
9
+ s.date = %q{2009-07-09}
10
10
  s.default_executable = %q{lessc}
11
11
  s.description = %q{LESS is leaner CSS}
12
12
  s.email = %q{self@cloudhead.net}
@@ -36,6 +36,96 @@ Gem::Specification.new do |s|
36
36
  "lib/less/engine/nodes/property.rb",
37
37
  "lib/less/engine/nodes/selector.rb",
38
38
  "lib/less/engine/parser.rb",
39
+ "lib/vendor/treetop/.gitignore",
40
+ "lib/vendor/treetop/LICENSE",
41
+ "lib/vendor/treetop/README",
42
+ "lib/vendor/treetop/Rakefile",
43
+ "lib/vendor/treetop/benchmark/seqpar.gnuplot",
44
+ "lib/vendor/treetop/benchmark/seqpar.treetop",
45
+ "lib/vendor/treetop/benchmark/seqpar_benchmark.rb",
46
+ "lib/vendor/treetop/bin/tt",
47
+ "lib/vendor/treetop/lib/treetop.rb",
48
+ "lib/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb",
49
+ "lib/vendor/treetop/lib/treetop/compiler.rb",
50
+ "lib/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb",
51
+ "lib/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb",
52
+ "lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb",
53
+ "lib/vendor/treetop/lib/treetop/compiler/metagrammar.treetop",
54
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes.rb",
55
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb",
56
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb",
57
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb",
58
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb",
59
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb",
60
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb",
61
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb",
62
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb",
63
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb",
64
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb",
65
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb",
66
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb",
67
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb",
68
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb",
69
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb",
70
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb",
71
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb",
72
+ "lib/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb",
73
+ "lib/vendor/treetop/lib/treetop/compiler/ruby_builder.rb",
74
+ "lib/vendor/treetop/lib/treetop/ruby_extensions.rb",
75
+ "lib/vendor/treetop/lib/treetop/ruby_extensions/string.rb",
76
+ "lib/vendor/treetop/lib/treetop/runtime.rb",
77
+ "lib/vendor/treetop/lib/treetop/runtime/compiled_parser.rb",
78
+ "lib/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb",
79
+ "lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb",
80
+ "lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb",
81
+ "lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb",
82
+ "lib/vendor/treetop/lib/treetop/runtime/syntax_node.rb",
83
+ "lib/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb",
84
+ "lib/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb",
85
+ "lib/vendor/treetop/lib/treetop/version.rb",
86
+ "lib/vendor/treetop/spec/compiler/and_predicate_spec.rb",
87
+ "lib/vendor/treetop/spec/compiler/anything_symbol_spec.rb",
88
+ "lib/vendor/treetop/spec/compiler/character_class_spec.rb",
89
+ "lib/vendor/treetop/spec/compiler/choice_spec.rb",
90
+ "lib/vendor/treetop/spec/compiler/circular_compilation_spec.rb",
91
+ "lib/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb",
92
+ "lib/vendor/treetop/spec/compiler/grammar_compiler_spec.rb",
93
+ "lib/vendor/treetop/spec/compiler/grammar_spec.rb",
94
+ "lib/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb",
95
+ "lib/vendor/treetop/spec/compiler/not_predicate_spec.rb",
96
+ "lib/vendor/treetop/spec/compiler/one_or_more_spec.rb",
97
+ "lib/vendor/treetop/spec/compiler/optional_spec.rb",
98
+ "lib/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb",
99
+ "lib/vendor/treetop/spec/compiler/parsing_rule_spec.rb",
100
+ "lib/vendor/treetop/spec/compiler/sequence_spec.rb",
101
+ "lib/vendor/treetop/spec/compiler/terminal_spec.rb",
102
+ "lib/vendor/treetop/spec/compiler/terminal_symbol_spec.rb",
103
+ "lib/vendor/treetop/spec/compiler/test_grammar.treetop",
104
+ "lib/vendor/treetop/spec/compiler/test_grammar.tt",
105
+ "lib/vendor/treetop/spec/compiler/test_grammar_do.treetop",
106
+ "lib/vendor/treetop/spec/compiler/zero_or_more_spec.rb",
107
+ "lib/vendor/treetop/spec/composition/a.treetop",
108
+ "lib/vendor/treetop/spec/composition/b.treetop",
109
+ "lib/vendor/treetop/spec/composition/c.treetop",
110
+ "lib/vendor/treetop/spec/composition/d.treetop",
111
+ "lib/vendor/treetop/spec/composition/f.treetop",
112
+ "lib/vendor/treetop/spec/composition/grammar_composition_spec.rb",
113
+ "lib/vendor/treetop/spec/composition/subfolder/e_includes_c.treetop",
114
+ "lib/vendor/treetop/spec/ruby_extensions/string_spec.rb",
115
+ "lib/vendor/treetop/spec/runtime/compiled_parser_spec.rb",
116
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb",
117
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb",
118
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb",
119
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb",
120
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle",
121
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb",
122
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb",
123
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb",
124
+ "lib/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb",
125
+ "lib/vendor/treetop/spec/runtime/syntax_node_spec.rb",
126
+ "lib/vendor/treetop/spec/spec_helper.rb",
127
+ "lib/vendor/treetop/spec/spec_suite.rb",
128
+ "lib/vendor/treetop/treetop.gemspec",
39
129
  "spec/command_spec.rb",
40
130
  "spec/css/accessors-1.0.css",
41
131
  "spec/css/big-1.0.css",
data/lib/less.rb CHANGED
@@ -1,4 +1,5 @@
1
- $:.unshift File.dirname(__FILE__), File.join(File.dirname(__FILE__), 'vendor', 'treetop', 'lib')
1
+ $:.unshift File.dirname(__FILE__),
2
+ File.join(File.dirname(__FILE__), 'vendor', 'treetop', 'lib')
2
3
 
3
4
  require 'rubygems'
4
5
  require 'cgi'
@@ -9,8 +10,9 @@ require 'less/command'
9
10
  require 'less/engine'
10
11
 
11
12
  module Less
12
- PARSER = 'lib/less/engine/parser.rb'
13
- GRAMMAR = 'lib/less/engine/less.tt'
13
+ ROOT = File.expand_path(File.dirname(__FILE__))
14
+ PARSER = File.join(ROOT, 'less', 'engine', 'parser.rb')
15
+ GRAMMAR = File.join(ROOT, 'less', 'engine', 'less.tt')
14
16
 
15
17
  MixedUnitsError = Class.new(Exception)
16
18
  PathError = Class.new(Exception)
@@ -63,7 +65,7 @@ class Object
63
65
  def log(s = '') puts "* #{s}" if $verbose end
64
66
  def log!(s = '') puts "* #{s}" end
65
67
  def error(s) $stderr.puts s end
66
- def error!(s) raise CradleError, s end
68
+ def error!(s) raise Exception, s end
67
69
  end
68
70
 
69
71
  class Class
data/lib/less/engine.rb CHANGED
@@ -18,7 +18,7 @@ module Less
18
18
  end
19
19
 
20
20
  begin
21
- require Less::PARSER
21
+ require 'engine/parser'
22
22
  rescue LoadError
23
23
  Treetop.load Less::GRAMMAR
24
24
  end
@@ -210,9 +210,9 @@ grammar Less
210
210
  end
211
211
 
212
212
  rule operator
213
- S op:([-+*/]) S {
213
+ S [-+*/] S {
214
214
  def build env
215
- env.identifiers.last << Node::Operator.new(op.text_value)
215
+ env.identifiers.last << Node::Operator.new(text_value.strip)
216
216
  end
217
217
  } / [-+*/] {
218
218
  def build env
@@ -270,11 +270,11 @@ grammar Less
270
270
  rule string
271
271
  "'" content:(!"'" . )* "'" {
272
272
  def value
273
- content.text_value
273
+ text_value[1...-1]
274
274
  end
275
275
  } / ["] content:(!["] . )* ["] {
276
276
  def value
277
- content.text_value
277
+ text_value[1...-1]
278
278
  end
279
279
  }
280
280
  end
@@ -85,8 +85,10 @@ module Less
85
85
  def last; elements.last end
86
86
  def first; elements.first end
87
87
  def to_s; super end
88
-
88
+
89
+ #
89
90
  # Entry point for the css conversion
91
+ #
90
92
  def to_css path = []
91
93
  path << @selector.to_css << self unless root?
92
94
 
@@ -1,10 +1,10 @@
1
1
  module Less
2
2
  #
3
3
  # Node::Entity
4
+ #
5
+ # Everything in the tree is an Entity
4
6
  #
5
- # TODO: Use delegate class -> @rules
6
- #
7
- # Class hierarchy
7
+ # Mixin/Class hierarchy
8
8
  #
9
9
  # - Entity
10
10
  # - Element
@@ -19,6 +19,8 @@ module Less
19
19
  # - Property
20
20
  # - Variable
21
21
  #
22
+ # TODO: Use delegate class -> @rules
23
+ #
22
24
  module Node
23
25
  module Entity
24
26
  attr_accessor :parent
@@ -27,7 +29,12 @@ module Less
27
29
  super value
28
30
  @parent = parent
29
31
  end
30
-
32
+
33
+ #
34
+ # Returns the path from any given node, to the root
35
+ #
36
+ # ex: ['color', 'p', '#header', 'body', '*']
37
+ #
31
38
  def path node = self
32
39
  path = []
33
40
  while node do
@@ -46,10 +53,17 @@ module Less
46
53
  def to_s; super end
47
54
  end
48
55
 
56
+ #
57
+ # An anonymous node, for all the 'other' stuff
58
+ # which doesn't need any specific functionality.
59
+ #
49
60
  class Anonymous < ::String
50
61
  include Entity
51
62
  end
52
63
 
64
+ #
65
+ # + * - /
66
+ #
53
67
  class Operator < ::String
54
68
  def to_ruby
55
69
  self
@@ -1,4 +1,7 @@
1
1
  module Less
2
+ #
3
+ # Functions useable from within the style-sheet go here
4
+ #
2
5
  module Functions
3
6
  def rgb *rgb
4
7
  rgba rgb, 1.0
@@ -8,6 +11,9 @@ module Less
8
11
  hsla args, 1.0
9
12
  end
10
13
 
14
+ #
15
+ # RGBA to Node::Color
16
+ #
11
17
  def rgba *rgba
12
18
  r, g, b, a = rgba.flatten
13
19
  hex = [r, g, b].inject("") do |str, c|
@@ -17,7 +23,10 @@ module Less
17
23
  end
18
24
  Node::Color.new hex, a
19
25
  end
20
-
26
+
27
+ #
28
+ # HSLA to RGBA
29
+ #
21
30
  def hsla h, s, l, a = 1.0
22
31
  m2 = ( l <= 0.5 ) ? l * ( s + 1 ) : l + s - l * s
23
32
  m1 = l * 2 - m2;
@@ -36,6 +45,11 @@ module Less
36
45
  end
37
46
 
38
47
  module Node
48
+ #
49
+ # A CSS function, like rgb() or url()
50
+ #
51
+ # it calls functions from the Functions module
52
+ #
39
53
  class Function < ::String
40
54
  include Functions
41
55
  include Entity
@@ -48,11 +62,18 @@ module Less
48
62
  def to_css
49
63
  self.evaluate.to_css
50
64
  end
51
-
65
+
66
+ #
67
+ # Call the function
68
+ #
52
69
  def evaluate
53
70
  send self.to_sym, *@args
54
71
  end
55
-
72
+
73
+ #
74
+ # If the function isn't found, we just print it out,
75
+ # this is the case for url(), for example,
76
+ #
56
77
  def method_missing meth, *args
57
78
  Node::Anonymous.new("#{meth}(#{args.map(&:to_css) * ', '})")
58
79
  end
@@ -84,6 +84,7 @@ module Less
84
84
 
85
85
  attr_reader :quotes, :content
86
86
 
87
+ # Strip quotes if necessary, and save them in @quotes
87
88
  def initialize str
88
89
  @quotes, @content = unless str.nil? or str.empty?
89
90
  str.match(/('|")(.*?)(\1)/).captures rescue [nil, str]
@@ -115,7 +116,9 @@ module Less
115
116
  end
116
117
 
117
118
  #
118
- # red small border-collapse
119
+ # Any un-quoted word
120
+ #
121
+ # ex: red, small, border-collapse
119
122
  #
120
123
  class Keyword < ::String
121
124
  include Entity
@@ -627,7 +627,7 @@ module Less
627
627
  s4, i4 = [], index
628
628
  loop do
629
629
  if has_terminal?('[-a-zA-Z0-9_%$/.&=:;#+?]', true, index)
630
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
630
+ r5 = true
631
631
  @index += 1
632
632
  else
633
633
  r5 = nil
@@ -703,7 +703,7 @@ module Less
703
703
  s1, i1 = [], index
704
704
  loop do
705
705
  if has_terminal?('[-a-z]', true, index)
706
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
706
+ r2 = true
707
707
  @index += 1
708
708
  else
709
709
  r2 = nil
@@ -743,7 +743,7 @@ module Less
743
743
  s8, i8 = [], index
744
744
  loop do
745
745
  if has_terminal?('[a-z]', true, index)
746
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
746
+ r9 = true
747
747
  @index += 1
748
748
  else
749
749
  r9 = nil
@@ -1485,7 +1485,7 @@ module Less
1485
1485
  i0 = index
1486
1486
  i1, s1 = index, []
1487
1487
  if has_terminal?('[a-zA-Z]', true, index)
1488
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1488
+ r2 = true
1489
1489
  @index += 1
1490
1490
  else
1491
1491
  r2 = nil
@@ -1495,7 +1495,7 @@ module Less
1495
1495
  s3, i3 = [], index
1496
1496
  loop do
1497
1497
  if has_terminal?('[-a-zA-Z0-9]', true, index)
1498
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1498
+ r4 = true
1499
1499
  @index += 1
1500
1500
  else
1501
1501
  r4 = nil
@@ -1564,7 +1564,7 @@ module Less
1564
1564
  s3, i3 = [], index
1565
1565
  loop do
1566
1566
  if has_terminal?('[-a-z0-9_]', true, index)
1567
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1567
+ r4 = true
1568
1568
  @index += 1
1569
1569
  else
1570
1570
  r4 = nil
@@ -1626,7 +1626,7 @@ module Less
1626
1626
  s2, i2 = [], index
1627
1627
  loop do
1628
1628
  if has_terminal?('[-a-zA-Z0-9_]', true, index)
1629
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1629
+ r3 = true
1630
1630
  @index += 1
1631
1631
  else
1632
1632
  r3 = nil
@@ -1898,7 +1898,7 @@ module Less
1898
1898
  s2, i2 = [], index
1899
1899
  loop do
1900
1900
  if has_terminal?('[a-z]', true, index)
1901
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1901
+ r3 = true
1902
1902
  @index += 1
1903
1903
  else
1904
1904
  r3 = nil
@@ -1919,7 +1919,7 @@ module Less
1919
1919
  if r2
1920
1920
  i5, s5 = index, []
1921
1921
  if has_terminal?('[|~]', true, index)
1922
- r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1922
+ r7 = true
1923
1923
  @index += 1
1924
1924
  else
1925
1925
  r7 = nil
@@ -2016,7 +2016,7 @@ module Less
2016
2016
  s0 << r1
2017
2017
  if r1
2018
2018
  if has_terminal?('[_a-z]', true, index)
2019
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2019
+ r2 = true
2020
2020
  @index += 1
2021
2021
  else
2022
2022
  r2 = nil
@@ -2026,7 +2026,7 @@ module Less
2026
2026
  s3, i3 = [], index
2027
2027
  loop do
2028
2028
  if has_terminal?('[-a-zA-Z0-9_]', true, index)
2029
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2029
+ r4 = true
2030
2030
  @index += 1
2031
2031
  else
2032
2032
  r4 = nil
@@ -2076,7 +2076,7 @@ module Less
2076
2076
  s0 << r1
2077
2077
  if r1
2078
2078
  if has_terminal?('[_a-z]', true, index)
2079
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2079
+ r2 = true
2080
2080
  @index += 1
2081
2081
  else
2082
2082
  r2 = nil
@@ -2086,7 +2086,7 @@ module Less
2086
2086
  s3, i3 = [], index
2087
2087
  loop do
2088
2088
  if has_terminal?('[-a-zA-Z0-9_]', true, index)
2089
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2089
+ r4 = true
2090
2090
  @index += 1
2091
2091
  else
2092
2092
  r4 = nil
@@ -2128,7 +2128,7 @@ module Less
2128
2128
  i0 = index
2129
2129
  i1, s1 = index, []
2130
2130
  if has_terminal?('[a-zA-Z]', true, index)
2131
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
2131
+ r2 = true
2132
2132
  @index += 1
2133
2133
  else
2134
2134
  r2 = nil
@@ -2138,7 +2138,7 @@ module Less
2138
2138
  s3, i3 = [], index
2139
2139
  loop do
2140
2140
  if has_terminal?('[-a-zA-Z]', true, index)
2141
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2141
+ r4 = true
2142
2142
  @index += 1
2143
2143
  else
2144
2144
  r4 = nil
@@ -2153,7 +2153,7 @@ module Less
2153
2153
  s1 << r3
2154
2154
  if r3
2155
2155
  if has_terminal?('[0-9]', true, index)
2156
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2156
+ r6 = true
2157
2157
  @index += 1
2158
2158
  else
2159
2159
  r6 = nil
@@ -2220,7 +2220,7 @@ module Less
2220
2220
  s2 << r3
2221
2221
  if r3
2222
2222
  if has_terminal?('[:+>]', true, index)
2223
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
2223
+ r4 = true
2224
2224
  @index += 1
2225
2225
  else
2226
2226
  r4 = nil
@@ -2355,10 +2355,6 @@ module Less
2355
2355
  elements[0]
2356
2356
  end
2357
2357
 
2358
- def op
2359
- elements[1]
2360
- end
2361
-
2362
2358
  def S
2363
2359
  elements[2]
2364
2360
  end
@@ -2366,7 +2362,7 @@ module Less
2366
2362
 
2367
2363
  module Operator1
2368
2364
  def build env
2369
- env.identifiers.last << Node::Operator.new(op.text_value)
2365
+ env.identifiers.last << Node::Operator.new(text_value.strip)
2370
2366
  end
2371
2367
  end
2372
2368
 
@@ -2390,7 +2386,7 @@ module Less
2390
2386
  s1 << r2
2391
2387
  if r2
2392
2388
  if has_terminal?('[-+*/]', true, index)
2393
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2389
+ r3 = true
2394
2390
  @index += 1
2395
2391
  else
2396
2392
  r3 = nil
@@ -2488,7 +2484,7 @@ module Less
2488
2484
  s5, i5 = [], index
2489
2485
  loop do
2490
2486
  if has_terminal?('[-a-z]', true, index)
2491
- r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
2487
+ r6 = true
2492
2488
  @index += 1
2493
2489
  else
2494
2490
  r6 = nil
@@ -2641,7 +2637,7 @@ module Less
2641
2637
 
2642
2638
  i0, s0 = index, []
2643
2639
  if has_terminal?('[a-zA-Z]', true, index)
2644
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
2640
+ r1 = true
2645
2641
  @index += 1
2646
2642
  else
2647
2643
  r1 = nil
@@ -2651,7 +2647,7 @@ module Less
2651
2647
  s2, i2 = [], index
2652
2648
  loop do
2653
2649
  if has_terminal?('[-a-zA-Z]', true, index)
2654
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
2650
+ r3 = true
2655
2651
  @index += 1
2656
2652
  else
2657
2653
  r3 = nil
@@ -2702,7 +2698,7 @@ module Less
2702
2698
 
2703
2699
  module String2
2704
2700
  def value
2705
- content.text_value
2701
+ text_value[1...-1]
2706
2702
  end
2707
2703
  end
2708
2704
 
@@ -2718,7 +2714,7 @@ module Less
2718
2714
 
2719
2715
  module String5
2720
2716
  def value
2721
- content.text_value
2717
+ text_value[1...-1]
2722
2718
  end
2723
2719
  end
2724
2720
 
@@ -2808,7 +2804,7 @@ module Less
2808
2804
  else
2809
2805
  i9, s9 = index, []
2810
2806
  if has_terminal?('["]', true, index)
2811
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
2807
+ r10 = true
2812
2808
  @index += 1
2813
2809
  else
2814
2810
  r10 = nil
@@ -2820,7 +2816,7 @@ module Less
2820
2816
  i12, s12 = index, []
2821
2817
  i13 = index
2822
2818
  if has_terminal?('["]', true, index)
2823
- r14 = instantiate_node(SyntaxNode,input, index...(index + 1))
2819
+ r14 = true
2824
2820
  @index += 1
2825
2821
  else
2826
2822
  r14 = nil
@@ -2859,7 +2855,7 @@ module Less
2859
2855
  s9 << r11
2860
2856
  if r11
2861
2857
  if has_terminal?('["]', true, index)
2862
- r16 = instantiate_node(SyntaxNode,input, index...(index + 1))
2858
+ r16 = true
2863
2859
  @index += 1
2864
2860
  else
2865
2861
  r16 = nil
@@ -2959,7 +2955,7 @@ module Less
2959
2955
  s4, i4 = [], index
2960
2956
  loop do
2961
2957
  if has_terminal?('[0-9]', true, index)
2962
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
2958
+ r5 = true
2963
2959
  @index += 1
2964
2960
  else
2965
2961
  r5 = nil
@@ -2985,7 +2981,7 @@ module Less
2985
2981
  s7, i7 = [], index
2986
2982
  loop do
2987
2983
  if has_terminal?('[0-9]', true, index)
2988
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
2984
+ r8 = true
2989
2985
  @index += 1
2990
2986
  else
2991
2987
  r8 = nil
@@ -3034,7 +3030,7 @@ module Less
3034
3030
  s12, i12 = [], index
3035
3031
  loop do
3036
3032
  if has_terminal?('[0-9]', true, index)
3037
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
3033
+ r13 = true
3038
3034
  @index += 1
3039
3035
  else
3040
3036
  r13 = nil
@@ -3347,7 +3343,7 @@ module Less
3347
3343
 
3348
3344
  i0, s0 = index, []
3349
3345
  if has_terminal?('[a-fA-F0-9]', true, index)
3350
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3346
+ r1 = true
3351
3347
  @index += 1
3352
3348
  else
3353
3349
  r1 = nil
@@ -3355,7 +3351,7 @@ module Less
3355
3351
  s0 << r1
3356
3352
  if r1
3357
3353
  if has_terminal?('[a-fA-F0-9]', true, index)
3358
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3354
+ r2 = true
3359
3355
  @index += 1
3360
3356
  else
3361
3357
  r2 = nil
@@ -3365,7 +3361,7 @@ module Less
3365
3361
  s3, i3 = [], index
3366
3362
  loop do
3367
3363
  if has_terminal?('[a-fA-F0-9]', true, index)
3368
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3364
+ r4 = true
3369
3365
  @index += 1
3370
3366
  else
3371
3367
  r4 = nil
@@ -3428,7 +3424,7 @@ module Less
3428
3424
  s1, i1 = [], index
3429
3425
  loop do
3430
3426
  if has_terminal?('[-a-zA-Z_]', true, index)
3431
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3427
+ r2 = true
3432
3428
  @index += 1
3433
3429
  else
3434
3430
  r2 = nil
@@ -3650,7 +3646,7 @@ module Less
3650
3646
  s7, i7 = [], index
3651
3647
  loop do
3652
3648
  if has_terminal?('[a-zA-Z]', true, index)
3653
- r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
3649
+ r8 = true
3654
3650
  @index += 1
3655
3651
  else
3656
3652
  r8 = nil
@@ -3716,7 +3712,7 @@ module Less
3716
3712
  s0, i0 = [], index
3717
3713
  loop do
3718
3714
  if has_terminal?('[ ]', true, index)
3719
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3715
+ r1 = true
3720
3716
  @index += 1
3721
3717
  else
3722
3718
  r1 = nil
@@ -3745,7 +3741,7 @@ module Less
3745
3741
  s0, i0 = [], index
3746
3742
  loop do
3747
3743
  if has_terminal?('[ ]', true, index)
3748
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3744
+ r1 = true
3749
3745
  @index += 1
3750
3746
  else
3751
3747
  r1 = nil
@@ -3779,7 +3775,7 @@ module Less
3779
3775
  s0, i0 = [], index
3780
3776
  loop do
3781
3777
  if has_terminal?('[\\n ]', true, index)
3782
- r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3778
+ r1 = true
3783
3779
  @index += 1
3784
3780
  else
3785
3781
  r1 = nil
@@ -3811,7 +3807,7 @@ module Less
3811
3807
  i0, s0 = index, []
3812
3808
  i1 = index
3813
3809
  if has_terminal?('[ ;]', true, index)
3814
- r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
3810
+ r2 = true
3815
3811
  @index += 1
3816
3812
  else
3817
3813
  r2 = nil