/scalate-jruby/src/main/resources/haml-3.0.25/lib/sass/scss/css_parser.rb

http://github.com/scalate/scalate · Ruby · 46 lines · 32 code · 6 blank · 8 comment · 2 complexity · d92d2c53fb732caa80c3adf7e21f2c54 MD5 · raw file

  1. require 'sass/script/css_parser'
  2. module Sass
  3. module SCSS
  4. # This is a subclass of {Parser} which only parses plain CSS.
  5. # It doesn't support any Sass extensions, such as interpolation,
  6. # parent references, nested selectors, and so forth.
  7. # It does support all the same CSS hacks as the SCSS parser, though.
  8. class CssParser < StaticParser
  9. # Parse a selector, and return its value as a string.
  10. #
  11. # @return [String, nil] The parsed selector, or nil if no selector was parsed
  12. # @raise [Sass::SyntaxError] if there's a syntax error in the selector
  13. def parse_selector_string
  14. init_scanner!
  15. str {return unless selector}
  16. end
  17. private
  18. def parent_selector; nil; end
  19. def interpolation; nil; end
  20. def interp_string; tok(STRING); end
  21. def interp_ident(ident = IDENT); tok(ident); end
  22. def use_css_import?; true; end
  23. def block_child(context)
  24. case context
  25. when :ruleset
  26. declaration
  27. when :stylesheet
  28. directive || ruleset
  29. when :directive
  30. directive || declaration_or_ruleset
  31. end
  32. end
  33. def nested_properties!(node, space)
  34. expected('expression (e.g. 1px, bold)');
  35. end
  36. @sass_script_parser = Class.new(Sass::Script::CssParser)
  37. @sass_script_parser.send(:include, ScriptParser)
  38. end
  39. end
  40. end