/scalate-jruby/src/main/resources/haml-3.0.25/lib/sass/tree/warn_node.rb

http://github.com/scalate/scalate · Ruby · 42 lines · 30 code · 3 blank · 9 comment · 1 complexity · b3eb89e13d2f71b697dd0d365a083cbb MD5 · raw file

  1. module Sass
  2. module Tree
  3. # A dynamic node representing a Sass `@warn` statement.
  4. #
  5. # @see Sass::Tree
  6. class WarnNode < Node
  7. # @param expr [Script::Node] The expression to print
  8. def initialize(expr)
  9. @expr = expr
  10. super()
  11. end
  12. protected
  13. # @see Node#to_src
  14. def to_src(tabs, opts, fmt)
  15. "#{' ' * tabs}@warn #{@expr.to_sass(opts)}#{semi fmt}\n"
  16. end
  17. # Prints the expression to STDERR with a stylesheet trace.
  18. #
  19. # @param environment [Sass::Environment] The lexical environment containing
  20. # variable and mixin values
  21. def _perform(environment)
  22. environment.push_frame(:filename => filename, :line => line)
  23. res = @expr.perform(environment)
  24. res = res.value if res.is_a?(Sass::Script::String)
  25. msg = "WARNING: #{res}\n"
  26. environment.stack.reverse.each_with_index do |entry, i|
  27. msg << " #{i == 0 ? "on" : "from"} line #{entry[:line]}" <<
  28. " of #{entry[:filename] || "an unknown file"}"
  29. msg << ", in `#{entry[:mixin]}'" if entry[:mixin]
  30. msg << "\n"
  31. end
  32. Haml::Util.haml_warn msg
  33. []
  34. ensure
  35. environment.pop_frame
  36. end
  37. end
  38. end
  39. end