less 1.0.11 → 1.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/VERSION +1 -1
  2. data/less.gemspec +39 -32
  3. data/lib/less/engine/less.tt +25 -23
  4. data/lib/less/engine/nodes/element.rb +47 -11
  5. data/lib/less/engine/nodes/property.rb +26 -6
  6. data/lib/less/engine/nodes/ruleset.rb +12 -0
  7. data/lib/less/engine/nodes.rb +1 -0
  8. data/lib/less/engine/parser.rb +3 -2
  9. data/lib/less/engine.rb +2 -2
  10. data/spec/css/{accessors-1.0.css → accessors.css} +0 -0
  11. data/spec/css/{big-1.0.css → big.css} +0 -0
  12. data/spec/css/{colors-1.0.css → colors.css} +0 -0
  13. data/spec/css/{comments-1.0.css → comments.css} +0 -0
  14. data/spec/css/css-3.css +2 -0
  15. data/spec/css/{css-1.0.css → css.css} +0 -0
  16. data/spec/css/{functions-1.0.css → functions.css} +0 -0
  17. data/spec/css/{import-1.0.css → import.css} +0 -0
  18. data/spec/css/lazy-eval.css +1 -0
  19. data/spec/css/mixins-args.css +0 -0
  20. data/spec/css/{mixins-1.0.css → mixins.css} +0 -0
  21. data/spec/css/{operations-1.0.css → operations.css} +0 -0
  22. data/spec/css/{rulesets-1.0.css → rulesets.css} +0 -0
  23. data/spec/css/{scope-1.0.css → scope.css} +1 -4
  24. data/spec/css/selectors.css +8 -0
  25. data/spec/css/{strings-1.0.css → strings.css} +0 -0
  26. data/spec/css/{variables-1.0.css → variables.css} +0 -0
  27. data/spec/css/{whitespace-1.0.css → whitespace.css} +1 -4
  28. data/spec/engine_spec.rb +15 -3
  29. data/spec/less/{accessors-1.0.less → accessors.less} +0 -0
  30. data/spec/less/{big-1.0.less → big.less} +0 -0
  31. data/spec/less/{colors-1.0.less → colors.less} +0 -0
  32. data/spec/less/{comments-1.0.less → comments.less} +0 -0
  33. data/spec/less/{css3-1.0.less → css-3.less} +0 -0
  34. data/spec/less/{css-1.0.less → css.less} +0 -0
  35. data/spec/less/{functions-1.0.less → functions.less} +0 -0
  36. data/spec/less/{import-1.0.less → import.less} +0 -0
  37. data/spec/less/lazy-eval.less +6 -0
  38. data/spec/less/mixins-args.less +0 -0
  39. data/spec/less/{mixins-1.0.less → mixins.less} +0 -0
  40. data/spec/less/{operations-1.0.less → operations.less} +0 -0
  41. data/spec/less/{rulesets-1.0.less → rulesets.less} +0 -0
  42. data/spec/less/{scope-1.0.less → scope.less} +1 -2
  43. data/spec/less/selectors.less +15 -0
  44. data/spec/less/{strings-1.0.less → strings.less} +0 -0
  45. data/spec/less/{variables-1.0.less → variables.less} +0 -0
  46. data/spec/less/{whitespace-1.0.less → whitespace.less} +0 -0
  47. data/spec/spec.css +1 -3
  48. metadata +39 -32
  49. data/spec/css/css3-1.0.css +0 -3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.11
1
+ 1.0.12
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.11"
5
+ s.version = "1.0.12"
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-17}
9
+ s.date = %q{2009-07-20}
10
10
  s.default_executable = %q{lessc}
11
11
  s.description = %q{LESS is leaner CSS}
12
12
  s.email = %q{self@cloudhead.net}
@@ -34,6 +34,7 @@ Gem::Specification.new do |s|
34
34
  "lib/less/engine/nodes/function.rb",
35
35
  "lib/less/engine/nodes/literal.rb",
36
36
  "lib/less/engine/nodes/property.rb",
37
+ "lib/less/engine/nodes/ruleset.rb",
37
38
  "lib/less/engine/nodes/selector.rb",
38
39
  "lib/less/engine/parser.rb",
39
40
  "lib/vendor/treetop/.gitignore",
@@ -127,43 +128,49 @@ Gem::Specification.new do |s|
127
128
  "lib/vendor/treetop/spec/spec_suite.rb",
128
129
  "lib/vendor/treetop/treetop.gemspec",
129
130
  "spec/command_spec.rb",
130
- "spec/css/accessors-1.0.css",
131
- "spec/css/big-1.0.css",
132
- "spec/css/colors-1.0.css",
133
- "spec/css/comments-1.0.css",
134
- "spec/css/css-1.0.css",
135
- "spec/css/css3-1.0.css",
136
- "spec/css/functions-1.0.css",
137
- "spec/css/import-1.0.css",
138
- "spec/css/mixins-1.0.css",
139
- "spec/css/operations-1.0.css",
140
- "spec/css/rulesets-1.0.css",
141
- "spec/css/scope-1.0.css",
142
- "spec/css/strings-1.0.css",
143
- "spec/css/variables-1.0.css",
144
- "spec/css/whitespace-1.0.css",
131
+ "spec/css/accessors.css",
132
+ "spec/css/big.css",
133
+ "spec/css/colors.css",
134
+ "spec/css/comments.css",
135
+ "spec/css/css-3.css",
136
+ "spec/css/css.css",
137
+ "spec/css/functions.css",
138
+ "spec/css/import.css",
139
+ "spec/css/lazy-eval.css",
140
+ "spec/css/mixins-args.css",
141
+ "spec/css/mixins.css",
142
+ "spec/css/operations.css",
143
+ "spec/css/rulesets.css",
144
+ "spec/css/scope.css",
145
+ "spec/css/selectors.css",
146
+ "spec/css/strings.css",
147
+ "spec/css/variables.css",
148
+ "spec/css/whitespace.css",
145
149
  "spec/engine_spec.rb",
146
- "spec/less/accessors-1.0.less",
147
- "spec/less/big-1.0.less",
148
- "spec/less/colors-1.0.less",
149
- "spec/less/comments-1.0.less",
150
- "spec/less/css-1.0.less",
151
- "spec/less/css3-1.0.less",
150
+ "spec/less/accessors.less",
151
+ "spec/less/big.less",
152
+ "spec/less/colors.less",
153
+ "spec/less/comments.less",
154
+ "spec/less/css-3.less",
155
+ "spec/less/css.less",
152
156
  "spec/less/exceptions/mixed-units-error.less",
153
157
  "spec/less/exceptions/name-error-1.0.less",
154
158
  "spec/less/exceptions/syntax-error-1.0.less",
155
- "spec/less/functions-1.0.less",
156
- "spec/less/import-1.0.less",
159
+ "spec/less/functions.less",
160
+ "spec/less/import.less",
157
161
  "spec/less/import/import-test-a.less",
158
162
  "spec/less/import/import-test-b.less",
159
163
  "spec/less/import/import-test-c.less",
160
- "spec/less/mixins-1.0.less",
161
- "spec/less/operations-1.0.less",
162
- "spec/less/rulesets-1.0.less",
163
- "spec/less/scope-1.0.less",
164
- "spec/less/strings-1.0.less",
165
- "spec/less/variables-1.0.less",
166
- "spec/less/whitespace-1.0.less",
164
+ "spec/less/lazy-eval.less",
165
+ "spec/less/mixins-args.less",
166
+ "spec/less/mixins.less",
167
+ "spec/less/operations.less",
168
+ "spec/less/rulesets.less",
169
+ "spec/less/scope.less",
170
+ "spec/less/selectors.less",
171
+ "spec/less/strings.less",
172
+ "spec/less/variables.less",
173
+ "spec/less/whitespace.less",
167
174
  "spec/spec.css",
168
175
  "spec/spec.less",
169
176
  "spec/spec_helper.rb"
@@ -14,13 +14,13 @@ grammar Less
14
14
  selectors "{" ws primary ws "}" ws {
15
15
  def build env
16
16
  # Build the ruleset for each selector
17
- selectors.build(env, :tree).each do |sel|
17
+ selectors.build(env, :ruleset).each do |sel|
18
18
  primary.build sel
19
19
  end
20
20
  end
21
21
  } / ws selectors ';' ws {
22
22
  def build env
23
- selectors.build(env, :path).each do |path|
23
+ selectors.build(env, :mixin).each do |path|
24
24
  rules = path.inject(env.root) do |current, node|
25
25
  current.descend(node.selector, node) or raise MixinNameError, path.join
26
26
  end.rules
@@ -79,15 +79,15 @@ grammar Less
79
79
  # div > p a {...}
80
80
  #
81
81
  rule selector
82
- (s select element s)+ {
83
- def tree env
82
+ (s select element s)+ arguments? {
83
+ def ruleset env
84
84
  elements.inject(env) do |node, e|
85
85
  node << Node::Element.new(e.element.text_value, e.select.text_value)
86
86
  node.last
87
87
  end
88
88
  end
89
89
 
90
- def path env
90
+ def mixin env
91
91
  elements.map do |e|
92
92
  Node::Element.new(e.element.text_value, e.select.text_value)
93
93
  end
@@ -102,7 +102,7 @@ grammar Less
102
102
  rule declaration
103
103
  ws name:(ident / variable) s ':' s expression s (';'/ ws &'}') ws {
104
104
  def build env
105
- env << (name.text_value =~ /^@/ ? Node::Variable : Node::Property).new(name.text_value)
105
+ env << (name.text_value =~ /^@/ ? Node::Variable : Node::Property).new(name.text_value, [])
106
106
  expression.build env
107
107
  end
108
108
  # Empty rule
@@ -156,7 +156,7 @@ grammar Less
156
156
  rule variable
157
157
  '@' [-a-zA-Z0-9_]+ {
158
158
  def build env
159
- env.identifiers.last << env.nearest(text_value)
159
+ env.identifiers.last << Node::Variable.new(text_value)
160
160
  end
161
161
  }
162
162
  end
@@ -294,10 +294,9 @@ grammar Less
294
294
  def build env
295
295
  env.identifiers.last << Node::Color.new(*rgb.build)
296
296
  end
297
- } / fn:(('hsl'/'rgb') 'a'?) '(' arguments ')' {
297
+ } / fn:(('hsl'/'rgb') 'a'?) arguments {
298
298
  def build env
299
- args = arguments.build env
300
- env.identifiers.last << Node::Function.new(fn.text_value, args.flatten)
299
+ env.identifiers.last << Node::Function.new(fn.text_value, arguments.build.flatten)
301
300
  end
302
301
  }
303
302
  end
@@ -325,43 +324,46 @@ grammar Less
325
324
  # Functions and arguments
326
325
  #
327
326
  rule function
328
- name:([-a-zA-Z_]+) '(' arguments ')' {
327
+ name:([-a-zA-Z_]+) arguments {
329
328
  def build env
330
- args = arguments.build env
331
- env.identifiers.last << Node::Function.new(name.text_value, [args].flatten)
329
+ env.identifiers.last << Node::Function.new(name.text_value, [arguments.build].flatten)
332
330
  end
333
331
  }
334
332
  end
335
333
 
336
334
  rule arguments
337
- argument s ',' s arguments {
338
- def build env
339
- elements.map do |e|
340
- e.build env if e.respond_to? :build
335
+ '(' s argument s tail:(',' s argument s)* ')' {
336
+ def build
337
+ all.map do |e|
338
+ e.build if e.respond_to? :build
341
339
  end.compact
342
340
  end
343
- } / argument
341
+
342
+ def all
343
+ [argument] + tail.elements.map {|e| e.argument }
344
+ end
345
+ }
344
346
  end
345
347
 
346
348
  rule argument
347
349
  color {
348
- def build env
350
+ def build
349
351
  Node::Color.new text_value
350
352
  end
351
353
  } / number unit {
352
- def build env
354
+ def build
353
355
  Node::Number.new number.text_value, unit.text_value
354
356
  end
355
357
  } / string {
356
- def build env
358
+ def build
357
359
  Node::String.new text_value
358
360
  end
359
361
  } / [a-zA-Z]+ '=' dimension {
360
- def build env
362
+ def build
361
363
  Node::Anonymous.new text_value
362
364
  end
363
365
  } / [-a-zA-Z0-9_%$/.&=:;#+?]+ {
364
- def build env
366
+ def build
365
367
  Node::String.new text_value
366
368
  end
367
369
  }
@@ -12,12 +12,12 @@ module Less
12
12
  include Enumerable
13
13
  include Entity
14
14
 
15
- attr_accessor :rules, :selector, :partial, :file
15
+ attr_accessor :rules, :selector, :partial, :file, :set
16
16
 
17
17
  def initialize name = "", selector = ''
18
- super name
19
-
20
- @partial = false
18
+ super name
19
+
20
+ @set = []
21
21
  @rules = [] # Holds all the nodes under this element's hierarchy
22
22
  @selector = Selector[selector.strip].new # descendant | child | adjacent
23
23
  end
@@ -32,7 +32,7 @@ module Less
32
32
 
33
33
  # Top-most node?
34
34
  def root?
35
- self == '' && parent.nil?
35
+ parent.nil?
36
36
  end
37
37
 
38
38
  def empty?
@@ -42,6 +42,43 @@ module Less
42
42
  def leaf?
43
43
  elements.empty?
44
44
  end
45
+
46
+ # Group similar rulesets together
47
+ # This is horrible, horrible code,
48
+ # but it'll have to do until I find
49
+ # a proper way to do it.
50
+ def group
51
+ matched = false
52
+ stack, result = elements.dup, []
53
+ return self unless elements.size > 1
54
+
55
+ elements.each do
56
+ e = stack.first
57
+ result << e unless matched
58
+
59
+ matched = stack[1..-1].each do |ee|
60
+ if e.rules.size == ee.rules.size and
61
+ e.elements.size == 0 and
62
+ !e.rules.zip(ee.rules).map {|a, b|
63
+ a.to_css == b.to_css
64
+ }.include?(false)
65
+
66
+ # Add to set unless it's a duplicate
67
+ if e == ee
68
+ # Do something with dups
69
+ else
70
+ self[e].set << ee
71
+ end
72
+ stack.shift
73
+ else
74
+ stack.shift
75
+ break false
76
+ end
77
+ end if stack.size > 1
78
+ end
79
+ @rules -= (elements - result)
80
+ self
81
+ end
45
82
 
46
83
  #
47
84
  # Accessors for the different nodes in @rules
@@ -84,7 +121,7 @@ module Less
84
121
 
85
122
  def last; elements.last end
86
123
  def first; elements.first end
87
- def to_s; super end
124
+ def to_s; root?? '*' : super end
88
125
 
89
126
  #
90
127
  # Entry point for the css conversion
@@ -95,15 +132,15 @@ module Less
95
132
  content = properties.map do |i|
96
133
  ' ' * 2 + i.to_css
97
134
  end.compact.reject(&:empty?) * "\n"
98
-
135
+
99
136
  content = content.include?("\n") ?
100
137
  "\n#{content}\n" : " #{content.strip} "
101
138
  ruleset = !content.strip.empty??
102
- "#{path.reject(&:empty?).join.strip} {#{content}}\n" : ""
103
-
139
+ "#{[path.reject(&:empty?).join.strip, *@set] * ', '} {#{content}}\n" : ""
140
+
104
141
  css = ruleset + elements.map do |i|
105
142
  i.to_css(path)
106
- end.reject(&:empty?).join
143
+ end.reject(&:empty?).join
107
144
  path.pop; path.pop
108
145
  css
109
146
  end
@@ -132,7 +169,6 @@ module Less
132
169
  end
133
170
  self
134
171
  end
135
- alias :traverse :each
136
172
 
137
173
  def inspect depth = 0
138
174
  indent = lambda {|i| '. ' * i }
@@ -7,12 +7,13 @@ module Less
7
7
 
8
8
  def initialize key, value = nil
9
9
  super key
10
- @value = Expression.new(value ? [value] : [])
10
+ @value = Expression.new(value ? [value].flatten : [])
11
11
  @eval = false # Store the first evaluation in here
12
12
  end
13
13
 
14
14
  def << token
15
15
  token = Node::Anonymous.new(*token) unless token.is_a? Entity or token.is_a? Operator
16
+ token.parent = self if token.respond_to? :parent
16
17
  @value << token
17
18
  end
18
19
 
@@ -27,9 +28,13 @@ module Less
27
28
  super
28
29
  end
29
30
 
31
+ def nearest node
32
+ parent.nearest node
33
+ end
34
+
30
35
  # TODO: @eval and @value should be merged
31
36
  def evaluate
32
- @eval || @eval = value.evaluate
37
+ @eval ||= value.evaluate
33
38
  end
34
39
 
35
40
  def to_css
@@ -37,8 +42,11 @@ module Less
37
42
  end
38
43
  end
39
44
 
40
- class Variable < Property
41
- def initialize key, value = nil
45
+ class Variable < Property
46
+ attr_reader :declaration
47
+
48
+ def initialize key, value = nil
49
+ @declaration = value ? true : false
42
50
  super key.delete('@'), value
43
51
  end
44
52
 
@@ -50,16 +58,28 @@ module Less
50
58
  "@#{super}"
51
59
  end
52
60
 
61
+ def evaluate
62
+ if declaration
63
+ @eval ||= value.evaluate
64
+ else
65
+ @eval ||= self.parent.nearest(to_s).evaluate
66
+ end
67
+ end
68
+
53
69
  def to_ruby
54
- value.evaluate.to_ruby
70
+ evaluate.to_ruby
55
71
  end
56
72
 
57
73
  def to_css
58
- value.evaluate.to_css
74
+ evaluate.to_css
59
75
  end
60
76
  end
61
77
 
62
78
  class Expression < Array
79
+ def initialize ary
80
+ super [ary].flatten
81
+ end
82
+
63
83
  def operators; select {|i| i.is_a? Operator } end
64
84
  def entities; select {|i| i.kind_of? Entity } end
65
85
  def literals; select {|i| i.kind_of? Literal } end
@@ -0,0 +1,12 @@
1
+ module Less
2
+ module Node
3
+ class Ruleset < Array
4
+ def initialize elements = []
5
+ super elements
6
+ end
7
+
8
+ def to_css
9
+ end
10
+ end
11
+ end
12
+ end
@@ -2,6 +2,7 @@ $:.unshift File.dirname(__FILE__)
2
2
 
3
3
  require 'engine/nodes/entity'
4
4
  require 'engine/nodes/function'
5
+ require 'engine/nodes/ruleset'
5
6
  require 'engine/nodes/element'
6
7
  require 'engine/nodes/property'
7
8
  require 'engine/nodes/literal'
@@ -1029,7 +1029,7 @@ module Less
1029
1029
 
1030
1030
  module Declaration2
1031
1031
  def build env
1032
- env << (name.text_value =~ /^@/ ? Node::Variable : Node::Property).new(name.text_value)
1032
+ env << (name.text_value =~ /^@/ ? Node::Variable : Node::Property).new(name.text_value, [])
1033
1033
  expression.build env
1034
1034
  end
1035
1035
  # Empty rule
@@ -1601,7 +1601,8 @@ module Less
1601
1601
 
1602
1602
  module Variable1
1603
1603
  def build env
1604
- env.identifiers.last << env.nearest(text_value)
1604
+ #env.identifiers.last << env.nearest(text_value)
1605
+ env.identifiers.last << Node::Variable.new(text_value)
1605
1606
  end
1606
1607
  end
1607
1608
 
data/lib/less/engine.rb CHANGED
@@ -34,13 +34,13 @@ module Less
34
34
  else
35
35
  raise SyntaxError, @parser.failure_message
36
36
  end
37
-
37
+
38
38
  @tree
39
39
  end
40
40
  alias :to_tree :parse
41
41
 
42
42
  def to_css
43
- @css || @css = self.parse.to_css
43
+ @css || @css = self.parse.group.to_css
44
44
  end
45
45
 
46
46
  def prepare
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ p:not([class*="lead"]) { color: black; }
2
+ a[href^="http://"], a[href$="http://"] { color: black; }
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ .lazy-eval { width: 100%; }
File without changes
File without changes
File without changes
File without changes
@@ -1,7 +1,4 @@
1
- .tiny-scope {
2
- color: none;
3
- border-color: #998899;
4
- }
1
+ .tiny-scope { color: #998899; }
5
2
  .scope1 {
6
3
  color: blue;
7
4
  border-color: black;
@@ -0,0 +1,8 @@
1
+ h1 a:hover { color: red; }
2
+ h1 p:hover { color: red; }
3
+ h2 a:hover { color: red; }
4
+ h2 p:hover { color: red; }
5
+ h3 a:hover { color: red; }
6
+ h3 p:hover { color: red; }
7
+ #all, #the, #same { color: blue; }
8
+ ul, li, div, q, blockquote, textarea { margin: 0; }
File without changes
File without changes
@@ -1,11 +1,8 @@
1
+ .whitespace, .white, .space, .mania, .no-semi-column { color: white; }
1
2
  .whitespace { color: white; }
2
3
  .whitespace { color: white; }
3
4
  .whitespace { color: white; }
4
5
  .whitespace { color: white; }
5
- .whitespace { color: white; }
6
- .white { color: white; }
7
- .space { color: white; }
8
- .mania { color: white; }
9
6
  .no-semi-column { color: white; }
10
7
  .no-semi-column {
11
8
  color: white;
data/spec/engine_spec.rb CHANGED
@@ -5,12 +5,12 @@ module LessEngineSpecHelper
5
5
  if arg.is_a? String or arg.is_a? File
6
6
  return Less::Engine.new(arg).to_css
7
7
  else
8
- lessify File.new("spec/less/#{arg}-1.0.less")
8
+ lessify File.new("spec/less/#{arg.to_s.gsub('_', '-')}.less")
9
9
  end
10
10
  end
11
11
 
12
12
  def css file
13
- File.read("spec/css/#{file}-1.0.css")
13
+ File.read("spec/css/#{file.to_s.gsub('_', '-')}.css")
14
14
  end
15
15
  end
16
16
 
@@ -22,8 +22,12 @@ describe Less::Engine do
22
22
  lessify(:css).should == css(:css)
23
23
  end
24
24
 
25
+ it "should group selectors when it can" do
26
+ lessify(:selectors).should == css(:selectors)
27
+ end
28
+
25
29
  it "should parse css 3" do
26
- lessify(:css3).should == css(:css3)
30
+ lessify(:css_3).should == css(:css_3)
27
31
  end
28
32
 
29
33
  it "should parse comments" do
@@ -65,6 +69,14 @@ describe Less::Engine do
65
69
  it "should parse mixins" do
66
70
  lessify(:mixins).should == css(:mixins)
67
71
  end
72
+
73
+ it "should parse mixins with arguments" do
74
+ lessify(:mixins_args).should == css(:mixins_args)
75
+ end
76
+
77
+ it "should evaluate variables lazily" do
78
+ lessify(:lazy_eval).should == css(:lazy_eval)
79
+ end
68
80
 
69
81
  it "should handle custom functions" do
70
82
  module Less::Functions
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,6 @@
1
+ @var: @a;
2
+ @a: 100%;
3
+
4
+ .lazy-eval {
5
+ width: @var;
6
+ }
File without changes
File without changes
File without changes
File without changes
@@ -7,9 +7,8 @@
7
7
  }
8
8
 
9
9
  .tiny-scope {
10
- color: @mix; // none
10
+ color: @mix; // #989
11
11
  .mixin;
12
- border-color: @mix; // #989
13
12
  }
14
13
 
15
14
  .scope1 {
@@ -0,0 +1,15 @@
1
+ h1, h2, h3 {
2
+ a, p {
3
+ :hover {
4
+ color: red;
5
+ }
6
+ }
7
+ }
8
+
9
+ #all { color: blue; }
10
+ #the { color: blue; }
11
+ #same { color: blue; }
12
+
13
+ ul, li, div, q, blockquote, textarea {
14
+ margin: 0;
15
+ }
File without changes
File without changes
File without changes
data/spec/spec.css CHANGED
@@ -40,9 +40,7 @@ body {
40
40
  colorc: #777777;
41
41
  }
42
42
  #operations div { width: 80px; }
43
- td { border-width: 88px; }
44
- tr { border-width: 88px; }
45
- table { border-width: 88px; }
43
+ td, tr, table { border-width: 88px; }
46
44
  blockquote:before { content: ""; }
47
45
  blockquote:after { content: ""; }
48
46
  q:before { content: ""; }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: less
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.11
4
+ version: 1.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - cloudhead
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-17 00:00:00 -04:00
12
+ date: 2009-07-20 00:00:00 -04:00
13
13
  default_executable: lessc
14
14
  dependencies: []
15
15
 
@@ -41,6 +41,7 @@ files:
41
41
  - lib/less/engine/nodes/function.rb
42
42
  - lib/less/engine/nodes/literal.rb
43
43
  - lib/less/engine/nodes/property.rb
44
+ - lib/less/engine/nodes/ruleset.rb
44
45
  - lib/less/engine/nodes/selector.rb
45
46
  - lib/less/engine/parser.rb
46
47
  - lib/vendor/treetop/.gitignore
@@ -134,43 +135,49 @@ files:
134
135
  - lib/vendor/treetop/spec/spec_suite.rb
135
136
  - lib/vendor/treetop/treetop.gemspec
136
137
  - spec/command_spec.rb
137
- - spec/css/accessors-1.0.css
138
- - spec/css/big-1.0.css
139
- - spec/css/colors-1.0.css
140
- - spec/css/comments-1.0.css
141
- - spec/css/css-1.0.css
142
- - spec/css/css3-1.0.css
143
- - spec/css/functions-1.0.css
144
- - spec/css/import-1.0.css
145
- - spec/css/mixins-1.0.css
146
- - spec/css/operations-1.0.css
147
- - spec/css/rulesets-1.0.css
148
- - spec/css/scope-1.0.css
149
- - spec/css/strings-1.0.css
150
- - spec/css/variables-1.0.css
151
- - spec/css/whitespace-1.0.css
138
+ - spec/css/accessors.css
139
+ - spec/css/big.css
140
+ - spec/css/colors.css
141
+ - spec/css/comments.css
142
+ - spec/css/css-3.css
143
+ - spec/css/css.css
144
+ - spec/css/functions.css
145
+ - spec/css/import.css
146
+ - spec/css/lazy-eval.css
147
+ - spec/css/mixins-args.css
148
+ - spec/css/mixins.css
149
+ - spec/css/operations.css
150
+ - spec/css/rulesets.css
151
+ - spec/css/scope.css
152
+ - spec/css/selectors.css
153
+ - spec/css/strings.css
154
+ - spec/css/variables.css
155
+ - spec/css/whitespace.css
152
156
  - spec/engine_spec.rb
153
- - spec/less/accessors-1.0.less
154
- - spec/less/big-1.0.less
155
- - spec/less/colors-1.0.less
156
- - spec/less/comments-1.0.less
157
- - spec/less/css-1.0.less
158
- - spec/less/css3-1.0.less
157
+ - spec/less/accessors.less
158
+ - spec/less/big.less
159
+ - spec/less/colors.less
160
+ - spec/less/comments.less
161
+ - spec/less/css-3.less
162
+ - spec/less/css.less
159
163
  - spec/less/exceptions/mixed-units-error.less
160
164
  - spec/less/exceptions/name-error-1.0.less
161
165
  - spec/less/exceptions/syntax-error-1.0.less
162
- - spec/less/functions-1.0.less
163
- - spec/less/import-1.0.less
166
+ - spec/less/functions.less
167
+ - spec/less/import.less
164
168
  - spec/less/import/import-test-a.less
165
169
  - spec/less/import/import-test-b.less
166
170
  - spec/less/import/import-test-c.less
167
- - spec/less/mixins-1.0.less
168
- - spec/less/operations-1.0.less
169
- - spec/less/rulesets-1.0.less
170
- - spec/less/scope-1.0.less
171
- - spec/less/strings-1.0.less
172
- - spec/less/variables-1.0.less
173
- - spec/less/whitespace-1.0.less
171
+ - spec/less/lazy-eval.less
172
+ - spec/less/mixins-args.less
173
+ - spec/less/mixins.less
174
+ - spec/less/operations.less
175
+ - spec/less/rulesets.less
176
+ - spec/less/scope.less
177
+ - spec/less/selectors.less
178
+ - spec/less/strings.less
179
+ - spec/less/variables.less
180
+ - spec/less/whitespace.less
174
181
  - spec/spec.css
175
182
  - spec/spec.less
176
183
  - spec/spec_helper.rb
@@ -1,3 +0,0 @@
1
- p:not([class*="lead"]) { color: black; }
2
- a[href^="http://"] { color: black; }
3
- a[href$="http://"] { color: black; }