Add support for filenames in Sass line-number reporting.
This commit is contained in:
parent
8c2e67bbb5
commit
b882ab197d
|
@ -215,6 +215,7 @@ END
|
|||
end
|
||||
|
||||
node.line = @line
|
||||
node.filename = @options[:filename]
|
||||
|
||||
if node.is_a? Tree::CommentNode
|
||||
while has_children
|
||||
|
@ -410,7 +411,7 @@ END
|
|||
File.open(filename) do |file|
|
||||
new_options = @options.dup
|
||||
new_options[:filename] = filename
|
||||
engine = Sass::Engine.new(file.read, @options)
|
||||
engine = Sass::Engine.new(file.read, new_options)
|
||||
end
|
||||
|
||||
engine.constants.merge! @constants
|
||||
|
@ -422,10 +423,7 @@ END
|
|||
err.add_backtrace_entry(filename)
|
||||
raise err
|
||||
end
|
||||
root.children.each do |child|
|
||||
child.filename = filename
|
||||
nodes << child
|
||||
end
|
||||
nodes += root.children
|
||||
@constants = engine.constants
|
||||
@mixins = engine.mixins
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
require 'sass/engine'
|
||||
require 'pathname'
|
||||
|
||||
module Sass
|
||||
# This module contains methods to aid in using Sass
|
||||
|
@ -54,6 +55,7 @@ module Sass
|
|||
|
||||
filename = template_filename(name)
|
||||
l_options = @@options.dup
|
||||
l_options[:css_filename] = css
|
||||
l_options[:filename] = filename
|
||||
l_options[:load_paths] = load_paths
|
||||
engine = Engine.new(File.read(filename), l_options)
|
||||
|
|
|
@ -66,7 +66,14 @@ module Sass::Tree
|
|||
old_spaces = ' ' * (tabs - 1)
|
||||
spaces = ' ' * tabs
|
||||
if @options[:line_comments] && @style != :compressed
|
||||
to_return << "/* line #{line} */\n"
|
||||
to_return << "#{old_spaces}/* line #{line}"
|
||||
|
||||
if filename && @options[:css_filename]
|
||||
relative_filename = Pathname.new(filename).relative_path_from(Pathname.new(File.dirname(@options[:css_filename]))).to_s
|
||||
to_return << ", #{relative_filename}"
|
||||
end
|
||||
|
||||
to_return << " */\n"
|
||||
end
|
||||
|
||||
if @style == :compact
|
||||
|
|
|
@ -298,6 +298,10 @@ bip, skip
|
|||
SASS
|
||||
end
|
||||
|
||||
def test_line_annotations_with_filename
|
||||
renders_correctly "line_numbers", :line_comments => true, :load_paths => [File.dirname(__FILE__) + "/templates"]
|
||||
end
|
||||
|
||||
def test_empty_first_line
|
||||
assert_equal("#a {\n b: c; }\n", render("#a\n\n b: c"))
|
||||
end
|
||||
|
@ -349,13 +353,19 @@ SASS
|
|||
def renders_correctly(name, options={})
|
||||
sass_file = load_file(name, "sass")
|
||||
css_file = load_file(name, "css")
|
||||
options[:filename] ||= filename(name, "sass")
|
||||
options[:css_filename] ||= filename(name, "css")
|
||||
css_result = Sass::Engine.new(sass_file, options).render
|
||||
assert_equal css_file, css_result
|
||||
end
|
||||
|
||||
def load_file(name, type = "sass")
|
||||
@result = ''
|
||||
File.new(File.dirname(__FILE__) + "/#{type == 'sass' ? 'templates' : 'results'}/#{name}.#{type}").each_line { |l| @result += l }
|
||||
File.new(filename(name, type)).each_line { |l| @result += l }
|
||||
@result
|
||||
end
|
||||
|
||||
def filename(name, type)
|
||||
File.dirname(__FILE__) + "/#{type == 'sass' ? 'templates' : 'results'}/#{name}.#{type}"
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
/* line 1, ../templates/line_numbers.sass */
|
||||
foo {
|
||||
bar: baz; }
|
||||
|
||||
/* line 6, ../templates/importee.sass */
|
||||
imported {
|
||||
otherconst: 12;
|
||||
myconst: goodbye; }
|
||||
/* line 5, ../templates/line_numbers.sass */
|
||||
imported squggle {
|
||||
blat: bang; }
|
||||
|
||||
/* line 3, ../templates/basic.sass */
|
||||
body {
|
||||
font: Arial;
|
||||
background: blue; }
|
||||
|
||||
/* line 7, ../templates/basic.sass */
|
||||
#page {
|
||||
width: 700px;
|
||||
height: 100; }
|
||||
/* line 10, ../templates/basic.sass */
|
||||
#page #header {
|
||||
height: 300px; }
|
||||
/* line 12, ../templates/basic.sass */
|
||||
#page #header h1 {
|
||||
font-size: 50px;
|
||||
color: blue; }
|
||||
|
||||
/* line 18, ../templates/basic.sass */
|
||||
#content.user.show #container.top #column.left {
|
||||
width: 100px; }
|
||||
/* line 20, ../templates/basic.sass */
|
||||
#content.user.show #container.top #column.right {
|
||||
width: 600px; }
|
||||
/* line 22, ../templates/basic.sass */
|
||||
#content.user.show #container.bottom {
|
||||
background: brown; }
|
||||
|
||||
/* line 13, ../templates/importee.sass */
|
||||
midrule {
|
||||
inthe: middle; }
|
||||
|
||||
/* line 12, ../templates/line_numbers.sass */
|
||||
umph {
|
||||
foo: bar; }
|
||||
/* line 18, ../templates/importee.sass */
|
||||
umph baz {
|
||||
blat: bang; }
|
|
@ -11,4 +11,9 @@ imported
|
|||
@import basic
|
||||
|
||||
midrule
|
||||
:inthe middle
|
||||
:inthe middle
|
||||
|
||||
=crazymixin
|
||||
foo: bar
|
||||
baz
|
||||
blat: bang
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
foo
|
||||
bar: baz
|
||||
|
||||
=premixin
|
||||
squggle
|
||||
blat: bang
|
||||
|
||||
!preconst = 12
|
||||
|
||||
@import importee
|
||||
|
||||
umph
|
||||
+crazymixin
|
Loading…
Reference in New Issue