cloudhead-less 0.8.4 → 0.8.6

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/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