Module: MiniCSS::AST

Defined in:
lib/minicss/ast.rb,
lib/minicss/ast/url.rb,
lib/minicss/ast/decl.rb,
lib/minicss/ast/rule.rb,
lib/minicss/ast/block.rb,
lib/minicss/ast/number.rb,
lib/minicss/ast/at_rule.rb,
lib/minicss/ast/function.rb,
lib/minicss/ast/bad_token.rb,
lib/minicss/ast/decl_list.rb,
lib/minicss/ast/dimension.rb,
lib/minicss/ast/percentage.rb,
lib/minicss/ast/string_token.rb,
lib/minicss/ast/syntax_error.rb,
lib/minicss/ast/unicode_range.rb

Defined Under Namespace

Classes: AtRule, BadToken, Block, Decl, DeclList, Dimension, Function, Number, Percentage, Rule, StringToken, SyntaxError, URL, UnicodeRange

Class Method Summary collapse

Class Method Details

.convert(css) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/minicss/ast.rb', line 22

def convert(css)
  case css
  when CSS::AST::Stylesheet
    css.rules.map { convert(it) }
  when CSS::AST::QualifiedRule
    Rule.new(css)
  when CSS::AST::Declaration
    Decl.new(css)
  when CSS::AST::AtRule
    AtRule.new(css)
  when CSS::AST::DeclarationList
    DeclList.new(css.map { convert(it) })
  when Array
    css.map { convert(it) }
  when CSS::AST::Function
    Function.new(css)
  when CSS::Token
    convert_token(css)
  when CSS::AST::SimpleBlock
    Block.new(css)
  when CSS::SyntaxError
    SyntaxError.new(css.message)
  else
    raise "Unexpected input type #{css.class} for conversion"
  end
end

.convert_token(css) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/minicss/ast.rb', line 49

def convert_token(css)
  case css.kind
  when :delim, :ident, :whitespace, :cdc, :at_keyword, :hash, :cdo, :colon, :comma, :semicolon, :right_square_bracket, :right_parenthesis
    css.literal
  when :dimension
    Dimension.new(css)
  when :number
    Number.new(css)
  when :percentage
    Percentage.new(css)
  when :bad_string, :bad_url
    BadToken.new(css)
  when :url
    URL.new(css.opts[:value])
  when :unicode_range
    UnicodeRange.new(css)
  when :string
    StringToken.new(css)
  else
    raise "Unexpected token in conversion pipeline: #{css.class} #{css.inspect}"
  end
end