cloudhead-less 0.8.4 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -20,8 +20,8 @@ LESS allows you to write CSS the way (I think) it was meant to, that is: with *v
20
20
  ### And the CSS output it produces:
21
21
 
22
22
  .outline { border: 1px solid black }
23
- .article > a { text-decoration: none }
24
- .article > p { color: #110011 }
23
+ .article a { text-decoration: none }
24
+ .article p { color: #110011 }
25
25
  .article { border: 1px solid black }
26
26
 
27
27
  If you have CSS nightmares, just
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.4
1
+ 0.8.7
data/bin/lessc CHANGED
@@ -11,7 +11,8 @@ CSS = '.css'
11
11
  options = {
12
12
  :watch => false,
13
13
  :compress => false,
14
- :debug => false
14
+ :debug => false,
15
+ :inheritance => :desc
15
16
  }
16
17
 
17
18
  # Get arguments
@@ -24,9 +25,14 @@ opts = OptionParser.new do |o|
24
25
  options[:watch] = true
25
26
  end
26
27
 
28
+ # Child-type inheritance
29
+ o.on("-c", "--child", "nesting uses child-type inheritance") do
30
+ options[:chain] = :child
31
+ end
32
+
27
33
  # Compression needs a proper algorithm
28
34
  #
29
- # o.on("-c", "--compress", "compress css file") do
35
+ # o.on("-x", "--compress", "compress css file") do
30
36
  # options[:compress] = true
31
37
  # end
32
38
 
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 = "0.8.4"
5
+ s.version = "0.8.6"
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-05-25}
9
+ s.date = %q{2009-06-04}
10
10
  s.default_executable = %q{lessc}
11
11
  s.description = %q{LESS is leaner CSS}
12
12
  s.email = %q{alexis@cloudhead.net}
data/lib/less.rb CHANGED
@@ -4,9 +4,9 @@ require 'less/command'
4
4
  require 'less/engine'
5
5
  require 'less/tree'
6
6
 
7
- module Less
8
- class MixedUnitsError < Exception
9
- end
7
+ module Less
8
+ MixedUnitsError = Class.new(Exception)
9
+ PathError = Class.new(Exception)
10
10
 
11
11
  def self.version
12
12
  File.read( File.join( File.dirname(__FILE__), '..', 'VERSION') )
data/lib/less/command.rb CHANGED
@@ -21,6 +21,8 @@ module Less
21
21
  end
22
22
 
23
23
  def run!
24
+ compile(true) unless File.exist? @destination
25
+
24
26
  if watch?
25
27
  log "Watching for changes in #@source ...Ctrl-C to abort.\n"
26
28
 
@@ -44,25 +46,27 @@ module Less
44
46
  end
45
47
  end
46
48
 
47
- def compile
49
+ def compile new = false
48
50
  begin
49
51
  # Create a new Less object with the contents of a file
50
- css = Less::Engine.new( File.read( @source ) ).to_css
52
+ css = Less::Engine.new( File.read( @source ) ).to_css @options[:inheritance]
51
53
  css = css.delete " \n" if compress?
52
54
 
53
55
  File.open( @destination, "w" ) do |file|
54
56
  file.write css
55
57
  end
56
- puts " [Updated] #{@destination.split('/').last}" if watch?
58
+ puts "#{new ? '* [Created]' : ' [Updated]'} #{@destination.split('/').last}" if watch?
57
59
  rescue Errno::ENOENT => e
58
60
  abort "#{e}"
59
61
  rescue SyntaxError
60
62
  error = debug?? $! : $!.message.split("\n")[1..-1].collect {|e|
61
63
  e.gsub(/\(eval\)\:(\d+)\:\s/, 'line \1: ')
62
64
  } * "\n"
63
- log " !! errors were found in the .less file! \n#{error}\n"
64
- rescue MixedUnitsError
65
- log "!! You're mixing units together! what do you expect?\n"
65
+ err "errors were found in the .less file! \n#{error}\n"
66
+ rescue MixedUnitsError => e
67
+ err "`#{e}` you're mixing units together! What do you expect?\n"
68
+ rescue PathError => e
69
+ err "`#{e}` was not found.\n"
66
70
  else
67
71
  true
68
72
  end
@@ -70,7 +74,11 @@ module Less
70
74
 
71
75
  # Just a logging function to avoid typing '}'
72
76
  def log s = ''
73
- print '} ' + s.to_s
77
+ print '* ' + s.to_s
78
+ end
79
+
80
+ def err s = ''
81
+ print "!! #{s}"
74
82
  end
75
83
  end
76
84
  end
data/lib/less/engine.rb CHANGED
@@ -85,7 +85,7 @@ module Less
85
85
  next if operation.match /[a-z]/i
86
86
  evaluate.call operation
87
87
  else
88
- raise MixedUnitsError
88
+ raise MixedUnitsError, value
89
89
  end
90
90
  end
91
91
  end
@@ -106,16 +106,16 @@ module Less
106
106
  end
107
107
 
108
108
  if var
109
- node[ key ] = value.gsub REGEX[:path], var # Substitute variable with value
109
+ node[ key ] = value.gsub REGEX[:path], var # Substitute variable with value
110
110
  else
111
- node.delete key # Discard the declaration if the variable wasn't found
111
+ node.delete key # Discard the declaration if the variable wasn't found
112
112
  end
113
113
  end
114
114
  end
115
115
  end
116
116
 
117
- def to_css
118
- self.compile.to_css
117
+ def to_css chain
118
+ self.compile.to_css chain
119
119
  end
120
120
 
121
121
  def hashify
@@ -126,7 +126,7 @@ module Less
126
126
  # less: color: black;
127
127
  # hashify: "color" => "black"
128
128
  #
129
- hash = self.gsub(/\t/, ' '). # Tabs
129
+ hash = self.gsub(/\t+/, ' '). # Tabs
130
130
  gsub(/\r\n/, "\n"). # m$
131
131
  gsub(/\/\/.*/, ''). # Comments //
132
132
  gsub(/\/\*.*?\*\//m, ''). # Comments /*
data/lib/less/tree.rb CHANGED
@@ -24,7 +24,7 @@ module Less
24
24
  if what == :var && k == path.last
25
25
  branch[:variables][ k ]
26
26
  else
27
- branch = branch[ k ]
27
+ branch = branch[ k ] or raise PathError, path.join(' > ')
28
28
  end
29
29
  end
30
30
  end
@@ -56,7 +56,7 @@ module Less
56
56
  self[ key ] = value.to_tree. # Make sure any change is saved to the main tree
57
57
  traverse by, path, &blk # Recurse, with the current node becoming `self`
58
58
  yield path, self[ key ] if by == :branch # The node is a branch, yield it to the block
59
- path.pop # We're returning from a branch, pop the last element
59
+ path.pop # We're returning from a branch, pop the last path element
60
60
  elsif by == :leaf and key.is_a? String
61
61
  yield key, value, path, self # The node is a leaf, yield it to the block
62
62
  else
@@ -69,12 +69,12 @@ module Less
69
69
  #
70
70
  # Convert the tree to css, using full paths
71
71
  #
72
- def to_css css = []
72
+ def to_css chain = :desc, css = []
73
73
  self.traverse :branch do |path, node|
74
74
  properties = node.inject("") do |s, (k, v)|
75
- v.is_a?(String) ? (s + "#{k}: #{CGI.unescape(v)}; ") : s # Add the property to the list
75
+ v.is_a?(String) ? (s + "#{k}: #{CGI.unescape(v)}; ") : s # Add the property to the list
76
76
  end
77
- css << path * ' > ' + " { " + properties + "}" # Add the rule-set to the CSS
77
+ css << path * ( chain == :desc ? ' ' : ' > ') + " { " + properties + "}" # Add the rule-set to the CSS
78
78
  end
79
79
  css.join "\n"
80
80
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudhead-less
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.6
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-05-25 00:00:00 -07:00
12
+ date: 2009-06-04 00:00:00 -07:00
13
13
  default_executable: lessc
14
14
  dependencies: []
15
15