From 2608247cbf3b63a571ac5b1de98ccf72ed12d83e Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Wed, 24 Dec 2008 19:33:47 -0800 Subject: [PATCH] Add a @debug directive (that needs documentation). --- lib/sass/engine.rb | 5 +++++ lib/sass/tree/debug_node.rb | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 lib/sass/tree/debug_node.rb diff --git a/lib/sass/engine.rb b/lib/sass/engine.rb index a4009259..1fb44f69 100644 --- a/lib/sass/engine.rb +++ b/lib/sass/engine.rb @@ -11,6 +11,7 @@ require 'sass/tree/mixin_node' require 'sass/tree/if_node' require 'sass/tree/while_node' require 'sass/tree/for_node' +require 'sass/tree/debug_node' require 'sass/tree/file_node' require 'sass/environment' require 'sass/script' @@ -334,6 +335,10 @@ END elsif directive == "if" offset = line.offset + line.text.index(value).to_i Tree::IfNode.new(parse_script(value, :line => line.index, :offset => offset), @options) + elsif directive == "debug" + raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath debug directives.", @line + 1) unless line.children.empty? + offset = line.offset + line.text.index(value).to_i + Tree::DebugNode.new(parse_script(value, :line => line.index, :offset => offset), @options) else Tree::DirectiveNode.new(line.text, @options) end diff --git a/lib/sass/tree/debug_node.rb b/lib/sass/tree/debug_node.rb new file mode 100644 index 00000000..1128eeb9 --- /dev/null +++ b/lib/sass/tree/debug_node.rb @@ -0,0 +1,22 @@ +module Sass + module Tree + class DebugNode < Node + def initialize(expr, options) + @expr = expr + super(options) + end + + protected + + def _perform(environment) + res = @expr.perform(environment) + if filename + puts "#{filename}:#{line} DEBUG: #{res}" + else + puts "Line #{line} DEBUG: #{res}" + end + [] + end + end + end +end