less 0.8.13 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +10 -1
- data/Rakefile +21 -3
- data/VERSION +1 -1
- data/bin/lessc +0 -8
- data/less.gemspec +138 -15
- data/lib/less.rb +67 -11
- data/lib/less/command.rb +24 -25
- data/lib/less/engine.rb +36 -140
- data/lib/less/engine/builder.rb +8 -0
- data/lib/less/engine/less.tt +374 -0
- data/lib/less/engine/nodes.rb +8 -0
- data/lib/less/engine/nodes/element.rb +150 -0
- data/lib/less/engine/nodes/entity.rb +73 -0
- data/lib/less/engine/nodes/function.rb +82 -0
- data/lib/less/engine/nodes/literal.rb +135 -0
- data/lib/less/engine/nodes/property.rb +112 -0
- data/lib/less/engine/nodes/selector.rb +39 -0
- data/lib/less/engine/parser.rb +3860 -0
- data/lib/vendor/treetop/.gitignore +7 -0
- data/lib/vendor/treetop/LICENSE +19 -0
- data/lib/vendor/treetop/README +164 -0
- data/lib/vendor/treetop/Rakefile +19 -0
- data/lib/vendor/treetop/benchmark/seqpar.gnuplot +15 -0
- data/lib/vendor/treetop/benchmark/seqpar.treetop +16 -0
- data/lib/vendor/treetop/benchmark/seqpar_benchmark.rb +107 -0
- data/lib/vendor/treetop/bin/tt +28 -0
- data/lib/vendor/treetop/lib/treetop.rb +8 -0
- data/lib/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +45 -0
- data/lib/vendor/treetop/lib/treetop/compiler.rb +6 -0
- data/lib/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +42 -0
- data/lib/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +17 -0
- data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb +3097 -0
- data/lib/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +408 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes.rb +19 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +18 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +23 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +31 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +28 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +19 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +146 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +55 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +45 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +55 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +68 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +20 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
- data/lib/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
- data/lib/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +113 -0
- data/lib/vendor/treetop/lib/treetop/ruby_extensions.rb +2 -0
- data/lib/vendor/treetop/lib/treetop/ruby_extensions/string.rb +42 -0
- data/lib/vendor/treetop/lib/treetop/runtime.rb +5 -0
- data/lib/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +109 -0
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +4 -0
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
- data/lib/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
- data/lib/vendor/treetop/lib/treetop/runtime/syntax_node.rb +90 -0
- data/lib/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
- data/lib/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
- data/lib/vendor/treetop/lib/treetop/version.rb +9 -0
- data/lib/vendor/treetop/spec/compiler/and_predicate_spec.rb +36 -0
- data/lib/vendor/treetop/spec/compiler/anything_symbol_spec.rb +44 -0
- data/lib/vendor/treetop/spec/compiler/character_class_spec.rb +247 -0
- data/lib/vendor/treetop/spec/compiler/choice_spec.rb +80 -0
- data/lib/vendor/treetop/spec/compiler/circular_compilation_spec.rb +28 -0
- data/lib/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +21 -0
- data/lib/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +84 -0
- data/lib/vendor/treetop/spec/compiler/grammar_spec.rb +41 -0
- data/lib/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +40 -0
- data/lib/vendor/treetop/spec/compiler/not_predicate_spec.rb +38 -0
- data/lib/vendor/treetop/spec/compiler/one_or_more_spec.rb +35 -0
- data/lib/vendor/treetop/spec/compiler/optional_spec.rb +37 -0
- data/lib/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +19 -0
- data/lib/vendor/treetop/spec/compiler/parsing_rule_spec.rb +32 -0
- data/lib/vendor/treetop/spec/compiler/sequence_spec.rb +115 -0
- data/lib/vendor/treetop/spec/compiler/terminal_spec.rb +81 -0
- data/lib/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +37 -0
- data/lib/vendor/treetop/spec/compiler/test_grammar.treetop +7 -0
- data/lib/vendor/treetop/spec/compiler/test_grammar.tt +7 -0
- data/lib/vendor/treetop/spec/compiler/test_grammar_do.treetop +7 -0
- data/lib/vendor/treetop/spec/compiler/zero_or_more_spec.rb +56 -0
- data/lib/vendor/treetop/spec/composition/a.treetop +11 -0
- data/lib/vendor/treetop/spec/composition/b.treetop +11 -0
- data/lib/vendor/treetop/spec/composition/c.treetop +10 -0
- data/lib/vendor/treetop/spec/composition/d.treetop +10 -0
- data/lib/vendor/treetop/spec/composition/f.treetop +17 -0
- data/lib/vendor/treetop/spec/composition/grammar_composition_spec.rb +40 -0
- data/lib/vendor/treetop/spec/composition/subfolder/e_includes_c.treetop +15 -0
- data/lib/vendor/treetop/spec/ruby_extensions/string_spec.rb +32 -0
- data/lib/vendor/treetop/spec/runtime/compiled_parser_spec.rb +101 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +147 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +349 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +385 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +660 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +6175 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +58 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +23 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +164 -0
- data/lib/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +84 -0
- data/lib/vendor/treetop/spec/runtime/syntax_node_spec.rb +68 -0
- data/lib/vendor/treetop/spec/spec_helper.rb +106 -0
- data/lib/vendor/treetop/spec/spec_suite.rb +4 -0
- data/lib/vendor/treetop/treetop.gemspec +17 -0
- data/spec/command_spec.rb +2 -6
- data/spec/css/accessors-1.0.css +18 -0
- data/spec/css/big-1.0.css +3768 -0
- data/spec/css/comments-1.0.css +9 -0
- data/spec/css/css-1.0.css +40 -0
- data/spec/css/functions-1.0.css +6 -0
- data/spec/css/import-1.0.css +11 -0
- data/spec/css/mixins-1.0.css +28 -0
- data/spec/css/operations-1.0.css +28 -0
- data/spec/css/rulesets-1.0.css +17 -0
- data/spec/css/scope-1.0.css +14 -0
- data/spec/css/strings-1.0.css +12 -0
- data/spec/css/variables-1.0.css +6 -0
- data/spec/css/whitespace-1.0.css +9 -0
- data/spec/engine_spec.rb +66 -18
- data/spec/less/accessors-1.0.less +20 -0
- data/spec/less/big-1.0.less +4810 -0
- data/spec/less/colors-1.0.less +0 -0
- data/spec/less/comments-1.0.less +46 -0
- data/spec/less/css-1.0.less +84 -0
- data/spec/less/exceptions/mixed-units-error.less +3 -0
- data/spec/less/exceptions/name-error-1.0.less +3 -0
- data/spec/less/exceptions/syntax-error-1.0.less +3 -0
- data/spec/less/functions-1.0.less +6 -0
- data/spec/less/import-1.0.less +7 -0
- data/spec/less/import/import-test-a.less +2 -0
- data/spec/less/import/import-test-b.less +8 -0
- data/spec/less/import/import-test-c.less +5 -0
- data/spec/less/mixins-1.0.less +43 -0
- data/spec/less/operations-1.0.less +39 -0
- data/spec/less/rulesets-1.0.less +30 -0
- data/spec/less/scope-1.0.less +33 -0
- data/spec/less/strings-1.0.less +14 -0
- data/spec/less/variables-1.0.less +18 -0
- data/spec/less/whitespace-1.0.less +21 -0
- data/spec/spec.css +79 -24
- data/spec/spec.less +2 -3
- data/spec/spec_helper.rb +4 -1
- metadata +136 -13
- data/lib/less/tree.rb +0 -82
- data/spec/css/less-0.8.10.css +0 -30
- data/spec/css/less-0.8.11.css +0 -31
- data/spec/css/less-0.8.12.css +0 -28
- data/spec/css/less-0.8.5.css +0 -24
- data/spec/css/less-0.8.6.css +0 -24
- data/spec/css/less-0.8.7.css +0 -24
- data/spec/css/less-0.8.8.css +0 -25
- data/spec/tree_spec.rb +0 -5
data/README.md
CHANGED
@@ -27,4 +27,13 @@ LESS allows you to write CSS the way (I think) it was meant to, that is: with *v
|
|
27
27
|
If you have CSS nightmares, just
|
28
28
|
$ lessc style.less
|
29
29
|
|
30
|
-
For more information, see you at http://lesscss.org
|
30
|
+
For more information, see you at [http://lesscss.org]
|
31
|
+
|
32
|
+
People without whom this wouldn't have happened a.k.a *Credits*
|
33
|
+
---------------------------------------------------------------
|
34
|
+
|
35
|
+
- **Dmitry Fadeyev**, for pushing me to do this, and designing our awesome website
|
36
|
+
- **August Lilleaas**, for initiating the work on the treetop grammar, as well as writing the rails plugin
|
37
|
+
- **Nathan Sobo**, for creating treetop
|
38
|
+
- **Jason Garber**, for his magical performance optimizations on treetop
|
39
|
+
- And finally, the people of #ruby-lang for answering all my ruby questions. **apeiros**, **manveru** and **rue** come to mind
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ begin
|
|
3
3
|
Jeweler::Tasks.new do |s|
|
4
4
|
s.name = "less"
|
5
5
|
s.authors = ["cloudhead"]
|
6
|
-
s.email = "
|
6
|
+
s.email = "self@cloudhead.net"
|
7
7
|
s.summary = "LESS compiler"
|
8
8
|
s.homepage = "http://www.lesscss.org"
|
9
9
|
s.description = "LESS is leaner CSS"
|
@@ -17,7 +17,6 @@ end
|
|
17
17
|
begin
|
18
18
|
require 'rake/contrib/sshpublisher'
|
19
19
|
namespace :rubyforge do
|
20
|
-
|
21
20
|
desc "Release gem and RDoc documentation to RubyForge"
|
22
21
|
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
23
22
|
|
@@ -58,4 +57,23 @@ begin
|
|
58
57
|
t.rcov = true
|
59
58
|
t.rcov_opts = ['--exclude', '^spec,/gems/']
|
60
59
|
end
|
61
|
-
end
|
60
|
+
end
|
61
|
+
|
62
|
+
begin
|
63
|
+
require 'lib/less'
|
64
|
+
|
65
|
+
task :compile do
|
66
|
+
puts "compiling #{LESS_GRAMMAR.split('/').last}..."
|
67
|
+
File.open(LESS_PARSER, 'w') {|f| f.write Treetop::Compiler::GrammarCompiler.new.ruby_source(LESS_GRAMMAR) }
|
68
|
+
end
|
69
|
+
|
70
|
+
task :benchmark do
|
71
|
+
print "benchmarking... "
|
72
|
+
less = File.read("spec/less/big-1.0.less")
|
73
|
+
start = Time.now.to_f
|
74
|
+
Less::Engine.new(less).parse
|
75
|
+
total = Time.now.to_f - start
|
76
|
+
puts "#{total}s"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.4
|
data/bin/lessc
CHANGED
@@ -5,14 +5,11 @@ $:.unshift File.dirname(__FILE__) + "/../lib"
|
|
5
5
|
require 'optparse'
|
6
6
|
require 'less'
|
7
7
|
|
8
|
-
CSS = '.css'
|
9
|
-
|
10
8
|
# Argument defaults
|
11
9
|
options = {
|
12
10
|
:watch => false,
|
13
11
|
:compress => false,
|
14
12
|
:debug => false,
|
15
|
-
:inheritance => :desc
|
16
13
|
}
|
17
14
|
|
18
15
|
# Get arguments
|
@@ -25,11 +22,6 @@ opts = OptionParser.new do |o|
|
|
25
22
|
options[:watch] = true
|
26
23
|
end
|
27
24
|
|
28
|
-
# Child-type inheritance
|
29
|
-
o.on("-c", "--child", "nesting uses child-type inheritance") do
|
30
|
-
options[:chain] = :child
|
31
|
-
end
|
32
|
-
|
33
25
|
# Compression needs a proper algorithm
|
34
26
|
#
|
35
27
|
# o.on("-x", "--compress", "compress css file") do
|
data/less.gemspec
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{less}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "1.0.4"
|
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-
|
9
|
+
s.date = %q{2009-07-13}
|
10
10
|
s.default_executable = %q{lessc}
|
11
11
|
s.description = %q{LESS is leaner CSS}
|
12
|
-
s.email = %q{
|
12
|
+
s.email = %q{self@cloudhead.net}
|
13
13
|
s.executables = ["lessc"]
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
@@ -26,20 +26,144 @@ Gem::Specification.new do |s|
|
|
26
26
|
"lib/less.rb",
|
27
27
|
"lib/less/command.rb",
|
28
28
|
"lib/less/engine.rb",
|
29
|
-
"lib/less/
|
29
|
+
"lib/less/engine/builder.rb",
|
30
|
+
"lib/less/engine/less.tt",
|
31
|
+
"lib/less/engine/nodes.rb",
|
32
|
+
"lib/less/engine/nodes/element.rb",
|
33
|
+
"lib/less/engine/nodes/entity.rb",
|
34
|
+
"lib/less/engine/nodes/function.rb",
|
35
|
+
"lib/less/engine/nodes/literal.rb",
|
36
|
+
"lib/less/engine/nodes/property.rb",
|
37
|
+
"lib/less/engine/nodes/selector.rb",
|
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",
|
30
129
|
"spec/command_spec.rb",
|
31
|
-
"spec/css/
|
32
|
-
"spec/css/
|
33
|
-
"spec/css/
|
34
|
-
"spec/css/
|
35
|
-
"spec/css/
|
36
|
-
"spec/css/
|
37
|
-
"spec/css/
|
130
|
+
"spec/css/accessors-1.0.css",
|
131
|
+
"spec/css/big-1.0.css",
|
132
|
+
"spec/css/comments-1.0.css",
|
133
|
+
"spec/css/css-1.0.css",
|
134
|
+
"spec/css/functions-1.0.css",
|
135
|
+
"spec/css/import-1.0.css",
|
136
|
+
"spec/css/mixins-1.0.css",
|
137
|
+
"spec/css/operations-1.0.css",
|
138
|
+
"spec/css/rulesets-1.0.css",
|
139
|
+
"spec/css/scope-1.0.css",
|
140
|
+
"spec/css/strings-1.0.css",
|
141
|
+
"spec/css/variables-1.0.css",
|
142
|
+
"spec/css/whitespace-1.0.css",
|
38
143
|
"spec/engine_spec.rb",
|
144
|
+
"spec/less/accessors-1.0.less",
|
145
|
+
"spec/less/big-1.0.less",
|
146
|
+
"spec/less/colors-1.0.less",
|
147
|
+
"spec/less/comments-1.0.less",
|
148
|
+
"spec/less/css-1.0.less",
|
149
|
+
"spec/less/exceptions/mixed-units-error.less",
|
150
|
+
"spec/less/exceptions/name-error-1.0.less",
|
151
|
+
"spec/less/exceptions/syntax-error-1.0.less",
|
152
|
+
"spec/less/functions-1.0.less",
|
153
|
+
"spec/less/import-1.0.less",
|
154
|
+
"spec/less/import/import-test-a.less",
|
155
|
+
"spec/less/import/import-test-b.less",
|
156
|
+
"spec/less/import/import-test-c.less",
|
157
|
+
"spec/less/mixins-1.0.less",
|
158
|
+
"spec/less/operations-1.0.less",
|
159
|
+
"spec/less/rulesets-1.0.less",
|
160
|
+
"spec/less/scope-1.0.less",
|
161
|
+
"spec/less/strings-1.0.less",
|
162
|
+
"spec/less/variables-1.0.less",
|
163
|
+
"spec/less/whitespace-1.0.less",
|
39
164
|
"spec/spec.css",
|
40
165
|
"spec/spec.less",
|
41
|
-
"spec/spec_helper.rb"
|
42
|
-
"spec/tree_spec.rb"
|
166
|
+
"spec/spec_helper.rb"
|
43
167
|
]
|
44
168
|
s.has_rdoc = true
|
45
169
|
s.homepage = %q{http://www.lesscss.org}
|
@@ -51,8 +175,7 @@ Gem::Specification.new do |s|
|
|
51
175
|
s.test_files = [
|
52
176
|
"spec/command_spec.rb",
|
53
177
|
"spec/engine_spec.rb",
|
54
|
-
"spec/spec_helper.rb"
|
55
|
-
"spec/tree_spec.rb"
|
178
|
+
"spec/spec_helper.rb"
|
56
179
|
]
|
57
180
|
|
58
181
|
if s.respond_to? :specification_version then
|
data/lib/less.rb
CHANGED
@@ -1,24 +1,80 @@
|
|
1
|
-
$:.unshift File.dirname(__FILE__)
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), 'vendor', 'treetop', 'lib'),
|
2
|
+
File.dirname(__FILE__)
|
2
3
|
|
3
4
|
require 'cgi'
|
5
|
+
require 'treetop'
|
6
|
+
require 'delegate'
|
7
|
+
|
8
|
+
LESS_ROOT = File.expand_path(File.dirname(__FILE__))
|
9
|
+
LESS_PARSER = File.join(LESS_ROOT, 'less', 'engine', 'parser.rb')
|
10
|
+
LESS_GRAMMAR = File.join(LESS_ROOT, 'less', 'engine', 'less.tt')
|
4
11
|
|
5
12
|
require 'less/command'
|
6
13
|
require 'less/engine'
|
7
|
-
require 'less/tree'
|
8
14
|
|
9
|
-
module Less
|
10
|
-
MixedUnitsError
|
11
|
-
PathError
|
12
|
-
|
15
|
+
module Less
|
16
|
+
MixedUnitsError = Class.new(Exception)
|
17
|
+
PathError = Class.new(Exception)
|
18
|
+
VariableNameError = Class.new(NameError)
|
19
|
+
MixinNameError = Class.new(NameError)
|
20
|
+
SyntaxError = Class.new(RuntimeError)
|
21
|
+
ImportError = Class.new(Exception)
|
22
|
+
|
23
|
+
$verbose = false
|
13
24
|
|
14
25
|
def self.version
|
15
|
-
File.read( File.join( File.dirname(__FILE__), '..', 'VERSION') )
|
26
|
+
File.read( File.join( File.dirname(__FILE__), '..', 'VERSION') ).strip
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.parse less
|
30
|
+
Engine.new(less).to_css
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Treetop
|
35
|
+
module Runtime
|
36
|
+
class CompiledParser
|
37
|
+
def failure_message
|
38
|
+
return nil unless (tf = terminal_failures) && tf.size > 0
|
39
|
+
"on line #{failure_line}: expected " + (
|
40
|
+
tf.size == 1 ?
|
41
|
+
tf[0].expected_string :
|
42
|
+
"one of #{tf.map {|f| f.expected_string }.uniq * ' '}"
|
43
|
+
) +
|
44
|
+
" got `#{input[failure_index]}`" +
|
45
|
+
" after:\n\n#{input[index...failure_index]}\n"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class Object
|
52
|
+
def verbose
|
53
|
+
$verbose = true
|
54
|
+
yield
|
55
|
+
ensure
|
56
|
+
$verbose = false
|
57
|
+
end
|
58
|
+
|
59
|
+
def tap
|
60
|
+
yield self
|
61
|
+
self
|
62
|
+
end
|
63
|
+
|
64
|
+
def log(s = '') puts "* #{s}" if $verbose end
|
65
|
+
def log!(s = '') puts "* #{s}" end
|
66
|
+
def error(s) $stderr.puts s end
|
67
|
+
def error!(s) raise Exception, s end
|
68
|
+
end
|
69
|
+
|
70
|
+
class Class
|
71
|
+
def to_sym
|
72
|
+
self.to_s.to_sym
|
16
73
|
end
|
17
74
|
end
|
18
75
|
|
19
|
-
class
|
20
|
-
|
21
|
-
|
22
|
-
Less::Tree.new self
|
76
|
+
class Symbol
|
77
|
+
def to_proc
|
78
|
+
proc {|obj, *args| obj.send(self, *args) }
|
23
79
|
end
|
24
80
|
end
|
data/lib/less/command.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
module Less
|
2
2
|
class Command
|
3
|
-
CSS = '.css'
|
4
|
-
|
5
3
|
attr_accessor :source, :destination, :options
|
6
4
|
|
7
5
|
def initialize options
|
6
|
+
$verbose = options[:debug]
|
8
7
|
@source = options[:source]
|
9
|
-
@destination = (options[:destination] || options[:source]).gsub /\.(less|lss)/,
|
8
|
+
@destination = (options[:destination] || options[:source]).gsub /\.(less|lss)/, '.css'
|
10
9
|
@options = options
|
11
10
|
end
|
12
11
|
|
@@ -16,9 +15,9 @@ module Less
|
|
16
15
|
|
17
16
|
# little function which allows us to
|
18
17
|
# Ctrl-C exit inside the passed block
|
19
|
-
def watch
|
18
|
+
def watch
|
20
19
|
begin
|
21
|
-
|
20
|
+
yield
|
22
21
|
rescue Interrupt
|
23
22
|
puts
|
24
23
|
exit 0
|
@@ -26,10 +25,10 @@ module Less
|
|
26
25
|
end
|
27
26
|
|
28
27
|
def run!
|
29
|
-
|
28
|
+
parse(true) unless File.exist? @destination
|
30
29
|
|
31
30
|
if watch?
|
32
|
-
log "Watching for changes in #@source
|
31
|
+
log "Watching for changes in #@source... Ctrl-C to abort.\n: "
|
33
32
|
|
34
33
|
# Main watch loop
|
35
34
|
loop do
|
@@ -37,55 +36,55 @@ module Less
|
|
37
36
|
|
38
37
|
# File has changed
|
39
38
|
if File.stat( @source ).mtime > File.stat( @destination ).mtime
|
40
|
-
|
39
|
+
print "Change detected... "
|
41
40
|
|
42
41
|
# Loop until error is fixed
|
43
|
-
until
|
44
|
-
log "Press [
|
42
|
+
until parse
|
43
|
+
log "Press [return] to continue..."
|
45
44
|
watch { $stdin.gets }
|
46
45
|
end
|
47
46
|
end
|
48
47
|
end
|
49
48
|
else
|
50
|
-
|
49
|
+
parse
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
|
-
def
|
53
|
+
def parse new = false
|
55
54
|
begin
|
56
55
|
# Create a new Less object with the contents of a file
|
57
|
-
css = Less::Engine.new(
|
56
|
+
css = Less::Engine.new(File.new @source).to_css
|
58
57
|
css = css.delete " \n" if compress?
|
59
58
|
|
60
59
|
File.open( @destination, "w" ) do |file|
|
61
60
|
file.write css
|
62
61
|
end
|
63
|
-
|
62
|
+
print "#{new ? '* [Created]' : '* [Updated]'} #{@destination.split('/').last}\n: " if watch?
|
64
63
|
rescue Errno::ENOENT => e
|
65
64
|
abort "#{e}"
|
66
|
-
rescue SyntaxError
|
67
|
-
|
68
|
-
e.gsub(/\(eval\)\:(\d+)\:\s/, 'line \1: ')
|
69
|
-
} * "\n"
|
70
|
-
err "errors were found in the .less file! \n#{error}\n"
|
65
|
+
rescue SyntaxError => e
|
66
|
+
err "#{e}\n", "Parse"
|
71
67
|
rescue MixedUnitsError => e
|
72
68
|
err "`#{e}` you're mixing units together! What do you expect?\n"
|
73
|
-
rescue CompoundOperationError => e
|
74
|
-
err "`#{e}` operations in compound declarations aren't allowed, sorry!\n"
|
75
69
|
rescue PathError => e
|
76
|
-
err "`#{e}` was not found.\n"
|
70
|
+
err "`#{e}` was not found.\n", "Path"
|
71
|
+
rescue VariableNameError => e
|
72
|
+
err "`#{e}` is undefined.\n", "Name"
|
73
|
+
rescue MixinNameError => e
|
74
|
+
err "`#{e}` is undefined.\n", "Name"
|
77
75
|
else
|
78
76
|
true
|
79
77
|
end
|
80
78
|
end
|
81
79
|
|
82
|
-
# Just a logging function to avoid typing '
|
80
|
+
# Just a logging function to avoid typing '*'
|
83
81
|
def log s = ''
|
84
82
|
print '* ' + s.to_s
|
85
83
|
end
|
86
84
|
|
87
|
-
def err s = ''
|
88
|
-
|
85
|
+
def err s = '', type = ''
|
86
|
+
type = type.strip + ' ' unless type.empty?
|
87
|
+
print "! [#{type}Error] #{s}"
|
89
88
|
end
|
90
89
|
end
|
91
90
|
end
|