Module: MiniCSS

Defined in:
lib/minicss.rb,
lib/minicss/ast.rb,
lib/minicss/sel.rb,
lib/minicss/errors.rb,
lib/minicss/ast/url.rb,
lib/minicss/version.rb,
lib/minicss/ast/decl.rb,
lib/minicss/ast/rule.rb,
lib/minicss/ast/block.rb,
lib/minicss/css/token.rb,
lib/minicss/ast/number.rb,
lib/minicss/css/errors.rb,
lib/minicss/css/parser.rb,
lib/minicss/serializer.rb,
lib/minicss/ast/at_rule.rb,
lib/minicss/ast/function.rb,
lib/minicss/css/position.rb,
lib/minicss/ast/bad_token.rb,
lib/minicss/ast/decl_list.rb,
lib/minicss/ast/dimension.rb,
lib/minicss/css/tokenizer.rb,
lib/minicss/ast/percentage.rb,
lib/minicss/css/ast/at_rule.rb,
lib/minicss/css/refinements.rb,
lib/minicss/ast/string_token.rb,
lib/minicss/ast/syntax_error.rb,
lib/minicss/css/ast/function.rb,
lib/minicss/ast/unicode_range.rb,
lib/minicss/css/ast/stylesheet.rb,
lib/minicss/css/ast/declaration.rb,
lib/minicss/css/ast/simple_block.rb,
lib/minicss/css/ast/qualified_rule.rb,
lib/minicss/css/ast/declaration_list.rb,
ext/minicss_scanner/minicss_scanner.c,
ext/minicss_token_stream/minicss_token_stream.c

Overview

MiniCSS exposes the library’s public API. It bundles high-level helpers for tokenizing raw CSS, parsing it into MiniCSS::AST nodes, and serializing AST structures back to CSS.

Defined Under Namespace

Modules: AST, CSS, Sel Classes: Error, InvalidRuleError, Serializer

Constant Summary collapse

VERSION =
"0.1.7"

Class Method Summary collapse

Class Method Details

.parse(input, allow_unicode_ranges: false) ⇒ Array<MiniCSS::AST::Rule, MiniCSS::AST::AtRule, MiniCSS::AST::SyntaxError, Object>

Parse CSS into MiniCSS AST nodes.

Parameters:

  • input (String, #read)

    The stylesheet text or an IO-like object.

  • allow_unicode_ranges (Boolean) (defaults to: false)

    Passed through to #tokenize.

Returns:



38
39
40
41
42
43
# File 'lib/minicss.rb', line 38

def parse(input, allow_unicode_ranges: false)
  toks = tokenize(input, allow_unicode_ranges:)
  pars = CSS::Parser.new(toks)
  sheet = pars.parse_stylesheet
  AST.convert(sheet)
end

.serialize(ast) ⇒ String

Serialize MiniCSS AST nodes back into CSS.

Parameters:

Returns:

  • (String)

    Normalized CSS suitable for writing back to disk or the network.



52
# File 'lib/minicss.rb', line 52

def serialize(ast) = Serializer.serialize(ast)

.tokenize(input, allow_unicode_ranges: false) ⇒ Array<MiniCSS::CSS::Token>

Tokenize a CSS source string or IO.

Parameters:

  • input (String, #read)

    Raw CSS, or an IO-like object that responds to #read. Invalid UTF-8 bytes will be replaced with U+FFFD, and all line endings are normalized before tokenization.

  • allow_unicode_ranges (Boolean) (defaults to: false)

    When true, Unicode range tokens are retained rather than downgraded to generic identifiers.

Returns:

  • (Array<MiniCSS::CSS::Token>)

    Tokens annotated with positional metadata (pos_start, pos_end, and literal).



25
26
27
28
29
# File 'lib/minicss.rb', line 25

def tokenize(input, allow_unicode_ranges: false)
  tok = CSS::Tokenizer.new(input, allow_unicode_ranges:)
  tok.tokenize
  tok.tokens
end