haml-edge 3.1.69 → 3.1.70
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/EDGE_GEM_VERSION +1 -1
- data/VERSION +1 -1
- data/lib/haml/exec.rb +36 -99
- data/lib/haml/util.rb +3 -3
- data/lib/sass/scss/parser.rb +20 -3
- data/lib/sass/tree/node.rb +8 -4
- data/test/sass/results/scss_import.css +16 -0
- data/test/sass/templates/scss_import.scss +2 -1
- metadata +2 -2
data/EDGE_GEM_VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.1.
|
|
1
|
+
3.1.70
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.1.
|
|
1
|
+
3.1.70
|
data/lib/haml/exec.rb
CHANGED
|
@@ -168,118 +168,33 @@ MESSAGE
|
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
170
|
|
|
171
|
-
#
|
|
172
|
-
|
|
173
|
-
class HamlSass < Generic
|
|
171
|
+
# The `sass` executable.
|
|
172
|
+
class Sass < Generic
|
|
174
173
|
# @param args [Array<String>] The command-line arguments
|
|
175
174
|
def initialize(args)
|
|
176
175
|
super
|
|
177
|
-
@options[:for_engine] = {
|
|
176
|
+
@options[:for_engine] = {
|
|
177
|
+
:load_paths => ['.'] + (ENV['SASSPATH'] || '').split(File::PATH_SEPARATOR)
|
|
178
|
+
}
|
|
178
179
|
end
|
|
179
180
|
|
|
180
181
|
protected
|
|
181
182
|
|
|
182
|
-
# Tells optparse how to parse the arguments
|
|
183
|
-
# available for the `haml` and `sass` executables.
|
|
184
|
-
#
|
|
185
|
-
# This is meant to be overridden by subclasses
|
|
186
|
-
# so they can add their own options.
|
|
183
|
+
# Tells optparse how to parse the arguments.
|
|
187
184
|
#
|
|
188
185
|
# @param opts [OptionParser]
|
|
189
186
|
def set_opts(opts)
|
|
187
|
+
super
|
|
188
|
+
|
|
190
189
|
opts.banner = <<END
|
|
191
|
-
Usage:
|
|
190
|
+
Usage: sass [options] [INPUT] [OUTPUT]
|
|
192
191
|
|
|
193
192
|
Description:
|
|
194
|
-
|
|
195
|
-
and outputs the result to the specified file.
|
|
193
|
+
Converts SCSS or Sass files to CSS.
|
|
196
194
|
|
|
197
195
|
Options:
|
|
198
196
|
END
|
|
199
197
|
|
|
200
|
-
opts.on('--rails RAILS_DIR', "Install Haml and Sass from the Gem to a Rails project") do |dir|
|
|
201
|
-
original_dir = dir
|
|
202
|
-
|
|
203
|
-
env = File.join(dir, "config", "environment.rb")
|
|
204
|
-
if File.exists?(File.join(dir, "Gemfile"))
|
|
205
|
-
puts("haml --rails isn't needed for Rails 3 or greater.",
|
|
206
|
-
"Add 'gem \"haml\"' to your Gemfile instead.", "",
|
|
207
|
-
"haml --rails will no longer work in the next version of #{@name}.", "")
|
|
208
|
-
elsif File.exists?(env) && File.open(env) {|env| env.grep(/config\.gem/)}
|
|
209
|
-
puts("haml --rails isn't needed for Rails 2.1 or greater.",
|
|
210
|
-
"Add 'config.gem \"haml\"' to config/environment.rb instead.", "",
|
|
211
|
-
"haml --rails will no longer work in the next version of #{@name}.", "")
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
dir = File.join(dir, 'vendor', 'plugins')
|
|
215
|
-
|
|
216
|
-
unless File.exists?(dir)
|
|
217
|
-
puts "Directory #{dir} doesn't exist"
|
|
218
|
-
exit 1
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
dir = File.join(dir, 'haml')
|
|
222
|
-
|
|
223
|
-
if File.exists?(dir)
|
|
224
|
-
print "Directory #{dir} already exists, overwrite [y/N]? "
|
|
225
|
-
exit 2 if gets !~ /y/i
|
|
226
|
-
FileUtils.rm_rf(dir)
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
begin
|
|
230
|
-
Dir.mkdir(dir)
|
|
231
|
-
rescue SystemCallError
|
|
232
|
-
puts "Cannot create #{dir}"
|
|
233
|
-
exit 1
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
File.open(File.join(dir, 'init.rb'), 'w') do |file|
|
|
237
|
-
file << File.read(File.dirname(__FILE__) + "/../../init.rb")
|
|
238
|
-
end
|
|
239
|
-
|
|
240
|
-
puts "Haml plugin added to #{original_dir}"
|
|
241
|
-
exit
|
|
242
|
-
end
|
|
243
|
-
|
|
244
|
-
opts.on('-c', '--check', "Just check syntax, don't evaluate.") do
|
|
245
|
-
require 'stringio'
|
|
246
|
-
@options[:check_syntax] = true
|
|
247
|
-
@options[:output] = StringIO.new
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
super
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
# Processes the options set by the command-line arguments.
|
|
254
|
-
# In particular, sets `@options[:for_engine][:filename]` to the input filename
|
|
255
|
-
# and requires the appropriate file.
|
|
256
|
-
#
|
|
257
|
-
# This is meant to be overridden by subclasses
|
|
258
|
-
# so they can run their respective programs.
|
|
259
|
-
def process_result
|
|
260
|
-
super
|
|
261
|
-
@options[:for_engine][:filename] = @options[:filename] if @options[:filename]
|
|
262
|
-
require File.dirname(__FILE__) + "/../#{@name.downcase}"
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
# The `sass` executable.
|
|
267
|
-
class Sass < HamlSass
|
|
268
|
-
# @param args [Array<String>] The command-line arguments
|
|
269
|
-
def initialize(args)
|
|
270
|
-
super
|
|
271
|
-
@name = "Sass"
|
|
272
|
-
@options[:for_engine][:load_paths] = ['.'] + (ENV['SASSPATH'] || '').split(File::PATH_SEPARATOR)
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
protected
|
|
276
|
-
|
|
277
|
-
# Tells optparse how to parse the arguments.
|
|
278
|
-
#
|
|
279
|
-
# @param opts [OptionParser]
|
|
280
|
-
def set_opts(opts)
|
|
281
|
-
super
|
|
282
|
-
|
|
283
198
|
opts.on('--scss',
|
|
284
199
|
'Use the CSS-superset SCSS syntax.') do
|
|
285
200
|
@options[:for_engine][:syntax] = :scss
|
|
@@ -298,6 +213,11 @@ END
|
|
|
298
213
|
'Only meaningful for --watch and --update.') do
|
|
299
214
|
@options[:stop_on_error] = true
|
|
300
215
|
end
|
|
216
|
+
opts.on('-c', '--check', "Just check syntax, don't evaluate.") do
|
|
217
|
+
require 'stringio'
|
|
218
|
+
@options[:check_syntax] = true
|
|
219
|
+
@options[:output] = StringIO.new
|
|
220
|
+
end
|
|
301
221
|
opts.on('-t', '--style NAME',
|
|
302
222
|
'Output style. Can be nested (default), compact, compressed, or expanded.') do |name|
|
|
303
223
|
@options[:for_engine][:style] = name.to_sym
|
|
@@ -340,6 +260,8 @@ END
|
|
|
340
260
|
# Processes the options set by the command-line arguments,
|
|
341
261
|
# and runs the Sass compiler appropriately.
|
|
342
262
|
def process_result
|
|
263
|
+
require 'sass'
|
|
264
|
+
|
|
343
265
|
if !@options[:update] && !@options[:watch] &&
|
|
344
266
|
@args.first && colon_path?(@args.first)
|
|
345
267
|
if @args.size == 1
|
|
@@ -352,6 +274,7 @@ END
|
|
|
352
274
|
return interactive if @options[:interactive]
|
|
353
275
|
return watch_or_update if @options[:watch] || @options[:update]
|
|
354
276
|
super
|
|
277
|
+
@options[:for_engine][:filename] = @options[:filename]
|
|
355
278
|
|
|
356
279
|
begin
|
|
357
280
|
input = @options[:input]
|
|
@@ -381,13 +304,11 @@ END
|
|
|
381
304
|
private
|
|
382
305
|
|
|
383
306
|
def interactive
|
|
384
|
-
require 'sass'
|
|
385
307
|
require 'sass/repl'
|
|
386
308
|
::Sass::Repl.new(@options).run
|
|
387
309
|
end
|
|
388
310
|
|
|
389
311
|
def watch_or_update
|
|
390
|
-
require 'sass'
|
|
391
312
|
require 'sass/plugin'
|
|
392
313
|
::Sass::Plugin.options.merge! @options[:for_engine]
|
|
393
314
|
::Sass::Plugin.options[:unix_newlines] = @options[:unix_newlines]
|
|
@@ -476,11 +397,11 @@ MSG
|
|
|
476
397
|
end
|
|
477
398
|
|
|
478
399
|
# The `haml` executable.
|
|
479
|
-
class Haml <
|
|
400
|
+
class Haml < Generic
|
|
480
401
|
# @param args [Array<String>] The command-line arguments
|
|
481
402
|
def initialize(args)
|
|
482
403
|
super
|
|
483
|
-
@
|
|
404
|
+
@options[:for_engine] = {}
|
|
484
405
|
@options[:requires] = []
|
|
485
406
|
@options[:load_paths] = []
|
|
486
407
|
end
|
|
@@ -491,6 +412,21 @@ MSG
|
|
|
491
412
|
def set_opts(opts)
|
|
492
413
|
super
|
|
493
414
|
|
|
415
|
+
opts.banner = <<END
|
|
416
|
+
Usage: haml [options] [INPUT] [OUTPUT]
|
|
417
|
+
|
|
418
|
+
Description:
|
|
419
|
+
Converts Haml files to HTML.
|
|
420
|
+
|
|
421
|
+
Options:
|
|
422
|
+
END
|
|
423
|
+
|
|
424
|
+
opts.on('-c', '--check', "Just check syntax, don't evaluate.") do
|
|
425
|
+
require 'stringio'
|
|
426
|
+
@options[:check_syntax] = true
|
|
427
|
+
@options[:output] = StringIO.new
|
|
428
|
+
end
|
|
429
|
+
|
|
494
430
|
opts.on('-t', '--style NAME',
|
|
495
431
|
'Output style. Can be indented (default) or ugly.') do |name|
|
|
496
432
|
@options[:for_engine][:ugly] = true if name.to_sym == :ugly
|
|
@@ -536,6 +472,7 @@ MSG
|
|
|
536
472
|
# and runs the Haml compiler appropriately.
|
|
537
473
|
def process_result
|
|
538
474
|
super
|
|
475
|
+
@options[:for_engine][:filename] = @options[:filename]
|
|
539
476
|
input = @options[:input]
|
|
540
477
|
output = @options[:output]
|
|
541
478
|
|
data/lib/haml/util.rb
CHANGED
|
@@ -269,8 +269,8 @@ module Haml
|
|
|
269
269
|
#
|
|
270
270
|
# @return [String, nil]
|
|
271
271
|
def rails_root
|
|
272
|
-
if defined?(Rails.root)
|
|
273
|
-
return Rails.root.to_s if Rails.root
|
|
272
|
+
if defined?(::Rails.root)
|
|
273
|
+
return ::Rails.root.to_s if ::Rails.root
|
|
274
274
|
raise "ERROR: Rails.root is nil!"
|
|
275
275
|
end
|
|
276
276
|
return RAILS_ROOT.to_s if defined?(RAILS_ROOT)
|
|
@@ -283,7 +283,7 @@ module Haml
|
|
|
283
283
|
#
|
|
284
284
|
# @return [String, nil]
|
|
285
285
|
def rails_env
|
|
286
|
-
return Rails.env.to_s if defined?(Rails.
|
|
286
|
+
return ::Rails.env.to_s if defined?(::Rails.env)
|
|
287
287
|
return RAILS_ENV.to_s if defined?(RAILS_ENV)
|
|
288
288
|
return nil
|
|
289
289
|
end
|
data/lib/sass/scss/parser.rb
CHANGED
|
@@ -212,8 +212,18 @@ module Sass
|
|
|
212
212
|
end
|
|
213
213
|
|
|
214
214
|
def import_directive
|
|
215
|
-
|
|
216
|
-
|
|
215
|
+
values = []
|
|
216
|
+
|
|
217
|
+
loop do
|
|
218
|
+
values << expr!(:import_arg)
|
|
219
|
+
break if use_css_import? || !tok(/,\s*/)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
return values
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def import_arg
|
|
226
|
+
return unless arg = tok(STRING) || (uri = tok!(URI))
|
|
217
227
|
path = @scanner[1] || @scanner[2] || @scanner[3]
|
|
218
228
|
ss
|
|
219
229
|
|
|
@@ -318,7 +328,7 @@ module Sass
|
|
|
318
328
|
def block_contents(node, context)
|
|
319
329
|
block_given? ? yield : ss_comments(node)
|
|
320
330
|
node << (child = block_child(context))
|
|
321
|
-
while tok(/;/) || (child
|
|
331
|
+
while tok(/;/) || has_children?(child)
|
|
322
332
|
block_given? ? yield : ss_comments(node)
|
|
323
333
|
node << (child = block_child(context))
|
|
324
334
|
end
|
|
@@ -330,6 +340,12 @@ module Sass
|
|
|
330
340
|
variable || directive || declaration_or_ruleset
|
|
331
341
|
end
|
|
332
342
|
|
|
343
|
+
def has_children?(child_or_array)
|
|
344
|
+
return false unless child_or_array
|
|
345
|
+
return child_or_array.last.has_children if child_or_array.is_a?(Array)
|
|
346
|
+
return child_or_array.has_children
|
|
347
|
+
end
|
|
348
|
+
|
|
333
349
|
# This is a nasty hack, and the only place in the parser
|
|
334
350
|
# that requires backtracking.
|
|
335
351
|
# The reason is that we can't figure out if certain strings
|
|
@@ -747,6 +763,7 @@ MESSAGE
|
|
|
747
763
|
:expr => "expression (e.g. 1px, bold)",
|
|
748
764
|
:selector_comma_sequence => "selector",
|
|
749
765
|
:simple_selector_sequence => "selector",
|
|
766
|
+
:import_arg => "file to import (string or url())",
|
|
750
767
|
}
|
|
751
768
|
|
|
752
769
|
TOK_NAMES = Haml::Util.to_hash(
|
data/lib/sass/tree/node.rb
CHANGED
|
@@ -84,14 +84,18 @@ module Sass
|
|
|
84
84
|
|
|
85
85
|
# Appends a child to the node.
|
|
86
86
|
#
|
|
87
|
-
# @param child [Tree::Node] The child node
|
|
87
|
+
# @param child [Tree::Node, Array<Tree::Node>] The child node or nodes
|
|
88
88
|
# @raise [Sass::SyntaxError] if `child` is invalid
|
|
89
89
|
# @see #invalid_child?
|
|
90
90
|
def <<(child)
|
|
91
91
|
return if child.nil?
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
if child.is_a?(Array)
|
|
93
|
+
child.each {|c| self << c}
|
|
94
|
+
else
|
|
95
|
+
check_child! child
|
|
96
|
+
self.has_children = true
|
|
97
|
+
@children << child
|
|
98
|
+
end
|
|
95
99
|
end
|
|
96
100
|
|
|
97
101
|
# Raises an error if the given child node is invalid.
|
|
@@ -12,4 +12,20 @@ body { font: Arial; background: blue; }
|
|
|
12
12
|
|
|
13
13
|
midrule { inthe: middle; }
|
|
14
14
|
|
|
15
|
+
scss { imported: yes; }
|
|
16
|
+
|
|
17
|
+
body { font: Arial; background: blue; }
|
|
18
|
+
|
|
19
|
+
#page { width: 700px; height: 100; }
|
|
20
|
+
#page #header { height: 300px; }
|
|
21
|
+
#page #header h1 { font-size: 50px; color: blue; }
|
|
22
|
+
|
|
23
|
+
#content.user.show #container.top #column.left { width: 100px; }
|
|
24
|
+
#content.user.show #container.top #column.right { width: 600px; }
|
|
25
|
+
#content.user.show #container.bottom { background: brown; }
|
|
26
|
+
|
|
27
|
+
@import url(basic.css);
|
|
28
|
+
@import url(../results/complex.css);
|
|
29
|
+
#foo { background-color: #bbaaff; }
|
|
30
|
+
|
|
15
31
|
nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; }
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: haml-edge
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.1.
|
|
4
|
+
version: 3.1.70
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nathan Weizenbaum
|
|
@@ -11,7 +11,7 @@ autorequire:
|
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
13
|
|
|
14
|
-
date: 2010-08-
|
|
14
|
+
date: 2010-08-28 00:00:00 -04:00
|
|
15
15
|
default_executable:
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|