Module: LightningcssRb

Defined in:
lib/lightningcss_rb.rb,
lib/lightningcss_rb/ast.rb,
lib/lightningcss_rb/error.rb,
lib/lightningcss_rb/version.rb,
lib/lightningcss_rb/ast/selectors.rb,
lib/lightningcss_rb/unknown_error.rb,
lib/lightningcss_rb/ast/selectors/id.rb,
lib/lightningcss_rb/ast/selectors/base.rb,
lib/lightningcss_rb/ast/selectors/nesting.rb,
lib/lightningcss_rb/ast/selectors/attribute.rb,
lib/lightningcss_rb/ast/selectors/namespace.rb,
lib/lightningcss_rb/ast/selectors/universal.rb,
lib/lightningcss_rb/ast/selectors/combinator.rb,
lib/lightningcss_rb/ast/selectors/pseudo_class.rb,
lib/lightningcss_rb/ast/selectors/type_selector.rb,
lib/lightningcss_rb/ast/selectors/class_selector.rb,
lib/lightningcss_rb/ast/selectors/pseudo_element.rb

Overview

Ruby bindings for the LightningCSS parser, transformer, and minifier.

The native extension exposes the underlying LightningCSS AST as JSON; the methods here wrap those primitives with a friendlier Ruby interface.

Defined Under Namespace

Classes: AST, UnknownError

Constant Summary collapse

Error =
Class.new(StandardError)
VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.minify(css) ⇒ String

Parse, optimize, and minify CSS. Shorthand for ‘transform(css, minify: true)`.

Parameters:

  • css (String)

    the CSS source

Returns:

  • (String)

    the minified CSS

Raises:



62
63
64
# File 'lib/lightningcss_rb.rb', line 62

def minify(css)
  _transform(css, true)
end

.parse(css) ⇒ Hash

Parse CSS into the LightningCSS AST as a Ruby Hash (with symbol keys).

Parameters:

  • css (String)

    the CSS source to parse

Returns:

  • (Hash)

    the parsed stylesheet AST

Raises:



32
33
34
# File 'lib/lightningcss_rb.rb', line 32

def parse(css)
  JSON.parse(_parse(css), symbolize_names: true)
end

.to_css(ast, minify: false) ⇒ String

Serialize an AST (as returned by parse) back to CSS.

Parameters:

  • ast (Hash, String)

    an AST Hash from parse, or a raw AST JSON String

  • minify (Boolean) (defaults to: false)

    remove whitespace and shorten the output

Returns:

  • (String)

    the serialized CSS

Raises:



42
43
44
45
# File 'lib/lightningcss_rb.rb', line 42

def to_css(ast, minify: false)
  json = ast.is_a?(String) ? ast : JSON.generate(ast)
  _to_css(json, minify)
end

.transform(css, minify: true) ⇒ String

Parse, optimize, and re-print CSS in one step.

Parameters:

  • css (String)

    the CSS source

  • minify (Boolean) (defaults to: true)

    remove whitespace and shorten the output

Returns:

  • (String)

    the transformed CSS

Raises:



53
54
55
# File 'lib/lightningcss_rb.rb', line 53

def transform(css, minify: true)
  _transform(css, minify)
end