less 1.0.12 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.12
1
+ 1.0.13
data/less.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{less}
5
- s.version = "1.0.12"
5
+ s.version = "1.0.13"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["cloudhead"]
@@ -161,6 +161,7 @@ Gem::Specification.new do |s|
161
161
  "spec/less/import/import-test-a.less",
162
162
  "spec/less/import/import-test-b.less",
163
163
  "spec/less/import/import-test-c.less",
164
+ "spec/less/import/import-test-d.css",
164
165
  "spec/less/lazy-eval.less",
165
166
  "spec/less/mixins-args.less",
166
167
  "spec/less/mixins.less",
@@ -34,7 +34,7 @@ grammar Less
34
34
  "@import" S url:(string / url) medias? s ';' ws {
35
35
  def build env
36
36
  path = File.join(env.root.file, url.value)
37
- path += '.less' unless path =~ /\.less$/
37
+ path += '.less' unless path =~ /\.(le|c)ss$/
38
38
  if File.exist? path
39
39
  imported = Less::Engine.new(File.new path).to_tree
40
40
  env.rules += imported.rules
@@ -79,16 +79,16 @@ grammar Less
79
79
  # div > p a {...}
80
80
  #
81
81
  rule selector
82
- (s select element s)+ arguments? {
82
+ sel:(s select element s)+ arguments? {
83
83
  def ruleset env
84
- elements.inject(env) do |node, e|
84
+ sel.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
90
  def mixin env
91
- elements.map do |e|
91
+ sel.elements.map do |e|
92
92
  Node::Element.new(e.element.text_value, e.select.text_value)
93
93
  end
94
94
  end
@@ -339,7 +339,7 @@ module Less
339
339
  module Ruleset1
340
340
  def build env
341
341
  # Build the ruleset for each selector
342
- selectors.build(env, :tree).each do |sel|
342
+ selectors.build(env, :ruleset).each do |sel|
343
343
  primary.build sel
344
344
  end
345
345
  end
@@ -361,7 +361,7 @@ module Less
361
361
 
362
362
  module Ruleset3
363
363
  def build env
364
- selectors.build(env, :path).each do |path|
364
+ selectors.build(env, :mixin).each do |path|
365
365
  rules = path.inject(env.root) do |current, node|
366
366
  current.descend(node.selector, node) or raise MixinNameError, path.join
367
367
  end.rules
@@ -492,7 +492,7 @@ module Less
492
492
  module Import1
493
493
  def build env
494
494
  path = File.join(env.root.file, url.value)
495
- path += '.less' unless path =~ /\.less$/
495
+ path += '.less' unless path =~ /\.(le|c)ss$/
496
496
  if File.exist? path
497
497
  imported = Less::Engine.new(File.new path).to_tree
498
498
  env.rules += imported.rules
@@ -925,15 +925,22 @@ module Less
925
925
  end
926
926
 
927
927
  module Selector1
928
- def tree env
929
- elements.inject(env) do |node, e|
928
+ def sel
929
+ elements[0]
930
+ end
931
+
932
+ end
933
+
934
+ module Selector2
935
+ def ruleset env
936
+ sel.elements.inject(env) do |node, e|
930
937
  node << Node::Element.new(e.element.text_value, e.select.text_value)
931
938
  node.last
932
939
  end
933
940
  end
934
941
 
935
- def path env
936
- elements.map do |e|
942
+ def mixin env
943
+ sel.elements.map do |e|
937
944
  Node::Element.new(e.element.text_value, e.select.text_value)
938
945
  end
939
946
  end
@@ -947,42 +954,60 @@ module Less
947
954
  return cached
948
955
  end
949
956
 
950
- s0, i0 = [], index
957
+ i0, s0 = index, []
958
+ s1, i1 = [], index
951
959
  loop do
952
- i1, s1 = index, []
953
- r2 = _nt_s
954
- s1 << r2
955
- if r2
956
- r3 = _nt_select
957
- s1 << r3
958
- if r3
959
- r4 = _nt_element
960
- s1 << r4
961
- if r4
962
- r5 = _nt_s
963
- s1 << r5
960
+ i2, s2 = index, []
961
+ r3 = _nt_s
962
+ s2 << r3
963
+ if r3
964
+ r4 = _nt_select
965
+ s2 << r4
966
+ if r4
967
+ r5 = _nt_element
968
+ s2 << r5
969
+ if r5
970
+ r6 = _nt_s
971
+ s2 << r6
964
972
  end
965
973
  end
966
974
  end
967
- if s1.last
968
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
969
- r1.extend(Selector0)
975
+ if s2.last
976
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
977
+ r2.extend(Selector0)
970
978
  else
971
- @index = i1
972
- r1 = nil
979
+ @index = i2
980
+ r2 = nil
973
981
  end
974
- if r1
975
- s0 << r1
982
+ if r2
983
+ s1 << r2
976
984
  else
977
985
  break
978
986
  end
979
987
  end
980
- if s0.empty?
981
- @index = i0
982
- r0 = nil
988
+ if s1.empty?
989
+ @index = i1
990
+ r1 = nil
983
991
  else
992
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
993
+ end
994
+ s0 << r1
995
+ if r1
996
+ r8 = _nt_arguments
997
+ if r8
998
+ r7 = r8
999
+ else
1000
+ r7 = instantiate_node(SyntaxNode,input, index...index)
1001
+ end
1002
+ s0 << r7
1003
+ end
1004
+ if s0.last
984
1005
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
985
1006
  r0.extend(Selector1)
1007
+ r0.extend(Selector2)
1008
+ else
1009
+ @index = i0
1010
+ r0 = nil
986
1011
  end
987
1012
 
988
1013
  node_cache[:selector][start_index] = r0
@@ -1601,7 +1626,6 @@ module Less
1601
1626
 
1602
1627
  module Variable1
1603
1628
  def build env
1604
- #env.identifiers.last << env.nearest(text_value)
1605
1629
  env.identifiers.last << Node::Variable.new(text_value)
1606
1630
  end
1607
1631
  end
@@ -3246,15 +3270,13 @@ module Less
3246
3270
  end
3247
3271
 
3248
3272
  def arguments
3249
- elements[2]
3273
+ elements[1]
3250
3274
  end
3251
-
3252
3275
  end
3253
3276
 
3254
3277
  module Color4
3255
3278
  def build env
3256
- args = arguments.build env
3257
- env.identifiers.last << Node::Function.new(fn.text_value, args.flatten)
3279
+ env.identifiers.last << Node::Function.new(fn.text_value, arguments.build.flatten)
3258
3280
  end
3259
3281
  end
3260
3282
 
@@ -3343,28 +3365,8 @@ module Less
3343
3365
  end
3344
3366
  s4 << r5
3345
3367
  if r5
3346
- if has_terminal?('(', false, index)
3347
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
3348
- @index += 1
3349
- else
3350
- terminal_parse_failure('(')
3351
- r11 = nil
3352
- end
3368
+ r11 = _nt_arguments
3353
3369
  s4 << r11
3354
- if r11
3355
- r12 = _nt_arguments
3356
- s4 << r12
3357
- if r12
3358
- if has_terminal?(')', false, index)
3359
- r13 = instantiate_node(SyntaxNode,input, index...(index + 1))
3360
- @index += 1
3361
- else
3362
- terminal_parse_failure(')')
3363
- r13 = nil
3364
- end
3365
- s4 << r13
3366
- end
3367
- end
3368
3370
  end
3369
3371
  if s4.last
3370
3372
  r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
@@ -3585,15 +3587,13 @@ module Less
3585
3587
  end
3586
3588
 
3587
3589
  def arguments
3588
- elements[2]
3590
+ elements[1]
3589
3591
  end
3590
-
3591
3592
  end
3592
3593
 
3593
3594
  module Function1
3594
3595
  def build env
3595
- args = arguments.build env
3596
- env.identifiers.last << Node::Function.new(name.text_value, [args].flatten)
3596
+ env.identifiers.last << Node::Function.new(name.text_value, [arguments.build].flatten)
3597
3597
  end
3598
3598
  end
3599
3599
 
@@ -3628,28 +3628,8 @@ module Less
3628
3628
  end
3629
3629
  s0 << r1
3630
3630
  if r1
3631
- if has_terminal?('(', false, index)
3632
- r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
3633
- @index += 1
3634
- else
3635
- terminal_parse_failure('(')
3636
- r3 = nil
3637
- end
3631
+ r3 = _nt_arguments
3638
3632
  s0 << r3
3639
- if r3
3640
- r4 = _nt_arguments
3641
- s0 << r4
3642
- if r4
3643
- if has_terminal?(')', false, index)
3644
- r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
3645
- @index += 1
3646
- else
3647
- terminal_parse_failure(')')
3648
- r5 = nil
3649
- end
3650
- s0 << r5
3651
- end
3652
- end
3653
3633
  end
3654
3634
  if s0.last
3655
3635
  r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
@@ -3666,29 +3646,48 @@ module Less
3666
3646
  end
3667
3647
 
3668
3648
  module Arguments0
3649
+ def s
3650
+ elements[1]
3651
+ end
3652
+
3669
3653
  def argument
3670
- elements[0]
3654
+ elements[2]
3671
3655
  end
3672
3656
 
3657
+ def s
3658
+ elements[3]
3659
+ end
3660
+ end
3661
+
3662
+ module Arguments1
3673
3663
  def s
3674
3664
  elements[1]
3675
3665
  end
3676
3666
 
3667
+ def argument
3668
+ elements[2]
3669
+ end
3670
+
3677
3671
  def s
3678
3672
  elements[3]
3679
3673
  end
3680
3674
 
3681
- def arguments
3675
+ def tail
3682
3676
  elements[4]
3683
3677
  end
3678
+
3684
3679
  end
3685
3680
 
3686
- module Arguments1
3687
- def build env
3688
- elements.map do |e|
3689
- e.build env if e.respond_to? :build
3681
+ module Arguments2
3682
+ def build
3683
+ all.map do |e|
3684
+ e.build if e.respond_to? :build
3690
3685
  end.compact
3691
3686
  end
3687
+
3688
+ def all
3689
+ [argument] + tail.elements.map {|e| e.argument }
3690
+ end
3692
3691
  end
3693
3692
 
3694
3693
  def _nt_arguments
@@ -3699,51 +3698,85 @@ module Less
3699
3698
  return cached
3700
3699
  end
3701
3700
 
3702
- i0 = index
3703
- i1, s1 = index, []
3704
- r2 = _nt_argument
3705
- s1 << r2
3706
- if r2
3707
- r3 = _nt_s
3708
- s1 << r3
3709
- if r3
3710
- if has_terminal?(',', false, index)
3711
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
3712
- @index += 1
3713
- else
3714
- terminal_parse_failure(',')
3715
- r4 = nil
3716
- end
3717
- s1 << r4
3718
- if r4
3719
- r5 = _nt_s
3720
- s1 << r5
3721
- if r5
3722
- r6 = _nt_arguments
3723
- s1 << r6
3724
- end
3725
- end
3726
- end
3727
- end
3728
- if s1.last
3729
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3730
- r1.extend(Arguments0)
3731
- r1.extend(Arguments1)
3701
+ i0, s0 = index, []
3702
+ if has_terminal?('(', false, index)
3703
+ r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
3704
+ @index += 1
3732
3705
  else
3733
- @index = i1
3706
+ terminal_parse_failure('(')
3734
3707
  r1 = nil
3735
3708
  end
3709
+ s0 << r1
3736
3710
  if r1
3737
- r0 = r1
3738
- else
3739
- r7 = _nt_argument
3740
- if r7
3741
- r0 = r7
3742
- else
3743
- @index = i0
3744
- r0 = nil
3711
+ r2 = _nt_s
3712
+ s0 << r2
3713
+ if r2
3714
+ r3 = _nt_argument
3715
+ s0 << r3
3716
+ if r3
3717
+ r4 = _nt_s
3718
+ s0 << r4
3719
+ if r4
3720
+ s5, i5 = [], index
3721
+ loop do
3722
+ i6, s6 = index, []
3723
+ if has_terminal?(',', false, index)
3724
+ r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
3725
+ @index += 1
3726
+ else
3727
+ terminal_parse_failure(',')
3728
+ r7 = nil
3729
+ end
3730
+ s6 << r7
3731
+ if r7
3732
+ r8 = _nt_s
3733
+ s6 << r8
3734
+ if r8
3735
+ r9 = _nt_argument
3736
+ s6 << r9
3737
+ if r9
3738
+ r10 = _nt_s
3739
+ s6 << r10
3740
+ end
3741
+ end
3742
+ end
3743
+ if s6.last
3744
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
3745
+ r6.extend(Arguments0)
3746
+ else
3747
+ @index = i6
3748
+ r6 = nil
3749
+ end
3750
+ if r6
3751
+ s5 << r6
3752
+ else
3753
+ break
3754
+ end
3755
+ end
3756
+ r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3757
+ s0 << r5
3758
+ if r5
3759
+ if has_terminal?(')', false, index)
3760
+ r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
3761
+ @index += 1
3762
+ else
3763
+ terminal_parse_failure(')')
3764
+ r11 = nil
3765
+ end
3766
+ s0 << r11
3767
+ end
3768
+ end
3769
+ end
3745
3770
  end
3746
3771
  end
3772
+ if s0.last
3773
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3774
+ r0.extend(Arguments1)
3775
+ r0.extend(Arguments2)
3776
+ else
3777
+ @index = i0
3778
+ r0 = nil
3779
+ end
3747
3780
 
3748
3781
  node_cache[:arguments][start_index] = r0
3749
3782
 
@@ -3751,7 +3784,7 @@ module Less
3751
3784
  end
3752
3785
 
3753
3786
  module Argument0
3754
- def build env
3787
+ def build
3755
3788
  Node::Color.new text_value
3756
3789
  end
3757
3790
  end
@@ -3767,13 +3800,13 @@ module Less
3767
3800
  end
3768
3801
 
3769
3802
  module Argument2
3770
- def build env
3803
+ def build
3771
3804
  Node::Number.new number.text_value, unit.text_value
3772
3805
  end
3773
3806
  end
3774
3807
 
3775
3808
  module Argument3
3776
- def build env
3809
+ def build
3777
3810
  Node::String.new text_value
3778
3811
  end
3779
3812
  end
@@ -3785,13 +3818,13 @@ module Less
3785
3818
  end
3786
3819
 
3787
3820
  module Argument5
3788
- def build env
3821
+ def build
3789
3822
  Node::Anonymous.new text_value
3790
3823
  end
3791
3824
  end
3792
3825
 
3793
3826
  module Argument6
3794
- def build env
3827
+ def build
3795
3828
  Node::String.new text_value
3796
3829
  end
3797
3830
  end
data/spec/css/import.css CHANGED
@@ -1,3 +1,4 @@
1
+ #css { color: yellow; }
1
2
  #import { color: red; }
2
3
  .mixin {
3
4
  height: 10px;
@@ -1,3 +1,4 @@
1
+ @import "import-test-d.css";
1
2
  @c: red;
2
3
 
3
4
  #import {
@@ -0,0 +1 @@
1
+ #css { color: yellow; }
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.12
4
+ version: 1.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - cloudhead
@@ -168,6 +168,7 @@ files:
168
168
  - spec/less/import/import-test-a.less
169
169
  - spec/less/import/import-test-b.less
170
170
  - spec/less/import/import-test-c.less
171
+ - spec/less/import/import-test-d.css
171
172
  - spec/less/lazy-eval.less
172
173
  - spec/less/mixins-args.less
173
174
  - spec/less/mixins.less