sorbet/rbi/gems/crass@1.0.6.rbi
# typed: true
# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `crass` gem.
# Please instead update this file by running `bin/tapioca gem crass`.
# A CSS parser based on the CSS Syntax Module Level 3 spec.
#
# source://crass//lib/crass/token-scanner.rb#3
module Crass
class << self
# Parses _input_ as a CSS stylesheet and returns a parse tree.
#
# See {Tokenizer#initialize} for _options_.
#
# source://crass//lib/crass.rb#10
def parse(input, options = T.unsafe(nil)); end
# Parses _input_ as a string of CSS properties (such as the contents of an
# HTML element's `style` attribute) and returns a parse tree.
#
# See {Tokenizer#initialize} for _options_.
#
# source://crass//lib/crass.rb#18
def parse_properties(input, options = T.unsafe(nil)); end
end
end
# Parses a CSS string or list of tokens.
#
# 5. http://dev.w3.org/csswg/css-syntax/#parsing
#
# source://crass//lib/crass/parser.rb#10
class Crass::Parser
# Initializes a parser based on the given _input_, which may be a CSS string
# or an array of tokens.
#
# See {Tokenizer#initialize} for _options_.
#
# @return [Parser] a new instance of Parser
#
# source://crass//lib/crass/parser.rb#126
def initialize(input, options = T.unsafe(nil)); end
# Consumes an at-rule and returns it.
#
# 5.4.2. http://dev.w3.org/csswg/css-syntax-3/#consume-at-rule
#
# source://crass//lib/crass/parser.rb#137
def consume_at_rule(input = T.unsafe(nil)); end
# Consumes a component value and returns it, or `nil` if there are no more
# tokens.
#
# 5.4.6. http://dev.w3.org/csswg/css-syntax-3/#consume-a-component-value
#
# source://crass//lib/crass/parser.rb#184
def consume_component_value(input = T.unsafe(nil)); end
# Consumes a declaration and returns it, or `nil` on parse error.
#
# 5.4.5. http://dev.w3.org/csswg/css-syntax-3/#consume-a-declaration
#
# source://crass//lib/crass/parser.rb#209
def consume_declaration(input = T.unsafe(nil)); end
# Consumes a list of declarations and returns them.
#
# By default, the returned list may include `:comment`, `:semicolon`, and
# `:whitespace` nodes, which is non-standard.
#
# Options:
#
# * **:strict** - Set to `true` to exclude non-standard `:comment`,
# `:semicolon`, and `:whitespace` nodes.
#
# 5.4.4. http://dev.w3.org/csswg/css-syntax/#consume-a-list-of-declarations
#
# source://crass//lib/crass/parser.rb#276
def consume_declarations(input = T.unsafe(nil), options = T.unsafe(nil)); end
# Consumes a function and returns it.
#
# 5.4.8. http://dev.w3.org/csswg/css-syntax-3/#consume-a-function
#
# source://crass//lib/crass/parser.rb#326
def consume_function(input = T.unsafe(nil)); end
# Consumes a qualified rule and returns it, or `nil` if a parse error
# occurs.
#
# 5.4.3. http://dev.w3.org/csswg/css-syntax-3/#consume-a-qualified-rule
#
# source://crass//lib/crass/parser.rb#357
def consume_qualified_rule(input = T.unsafe(nil)); end
# Consumes a list of rules and returns them.
#
# 5.4.1. http://dev.w3.org/csswg/css-syntax/#consume-a-list-of-rules
#
# source://crass//lib/crass/parser.rb#398
def consume_rules(flags = T.unsafe(nil)); end
# Consumes and returns a simple block associated with the current input
# token.
#
# 5.4.7. http://dev.w3.org/csswg/css-syntax/#consume-a-simple-block
#
# source://crass//lib/crass/parser.rb#434
def consume_simple_block(input = T.unsafe(nil)); end
# Creates and returns a new parse node with the given _properties_.
#
# source://crass//lib/crass/parser.rb#458
def create_node(type, properties = T.unsafe(nil)); end
# Parses the given _input_ tokens into a selector node and returns it.
#
# Doesn't bother splitting the selector list into individual selectors or
# validating them. Feel free to do that yourself! It'll be fun!
#
# source://crass//lib/crass/parser.rb#466
def create_selector(input); end
# Creates a `:style_rule` node from the given qualified _rule_, and returns
# it.
#
# source://crass//lib/crass/parser.rb#474
def create_style_rule(rule); end
# Parses a single component value and returns it.
#
# 5.3.7. http://dev.w3.org/csswg/css-syntax-3/#parse-a-component-value
#
# source://crass//lib/crass/parser.rb#483
def parse_component_value(input = T.unsafe(nil)); end
# Parses a list of component values and returns an array of parsed tokens.
#
# 5.3.8. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-component-values
#
# source://crass//lib/crass/parser.rb#510
def parse_component_values(input = T.unsafe(nil)); end
# Parses a single declaration and returns it.
#
# 5.3.5. http://dev.w3.org/csswg/css-syntax/#parse-a-declaration
#
# source://crass//lib/crass/parser.rb#524
def parse_declaration(input = T.unsafe(nil)); end
# Parses a list of declarations and returns them.
#
# See {#consume_declarations} for _options_.
#
# 5.3.6. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-declarations
#
# source://crass//lib/crass/parser.rb#552
def parse_declarations(input = T.unsafe(nil), options = T.unsafe(nil)); end
# Parses a list of declarations and returns an array of `:property` nodes
# (and any non-declaration nodes that were in the input). This is useful for
# parsing the contents of an HTML element's `style` attribute.
#
# source://crass//lib/crass/parser.rb#560
def parse_properties(input = T.unsafe(nil)); end
# Parses a single rule and returns it.
#
# 5.3.4. http://dev.w3.org/csswg/css-syntax-3/#parse-a-rule
#
# source://crass//lib/crass/parser.rb#586
def parse_rule(input = T.unsafe(nil)); end
# Returns the unescaped value of a selector name or property declaration.
#
# source://crass//lib/crass/parser.rb#615
def parse_value(nodes); end
# {TokenScanner} wrapping the tokens generated from this parser's input.
#
# source://crass//lib/crass/parser.rb#120
def tokens; end
class << self
# Parses CSS properties (such as the contents of an HTML element's `style`
# attribute) and returns a parse tree.
#
# See {Tokenizer#initialize} for _options_.
#
# 5.3.6. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-declarations
#
# source://crass//lib/crass/parser.rb#25
def parse_properties(input, options = T.unsafe(nil)); end
# Parses CSS rules (such as the content of a `@media` block) and returns a
# parse tree. The only difference from {parse_stylesheet} is that CDO/CDC
# nodes (`<!--` and `-->`) aren't ignored.
#
# See {Tokenizer#initialize} for _options_.
#
# 5.3.3. http://dev.w3.org/csswg/css-syntax/#parse-a-list-of-rules
#
# source://crass//lib/crass/parser.rb#36
def parse_rules(input, options = T.unsafe(nil)); end
# Parses a CSS stylesheet and returns a parse tree.
#
# See {Tokenizer#initialize} for _options_.
#
# 5.3.2. http://dev.w3.org/csswg/css-syntax/#parse-a-stylesheet
#
# source://crass//lib/crass/parser.rb#54
def parse_stylesheet(input, options = T.unsafe(nil)); end
# Converts a node or array of nodes into a CSS string based on their
# original tokenized input.
#
# Options:
#
# * **:exclude_comments** - When `true`, comments will be excluded.
#
# source://crass//lib/crass/parser.rb#74
def stringify(nodes, options = T.unsafe(nil)); end
end
end
# source://crass//lib/crass/parser.rb#11
Crass::Parser::BLOCK_END_TOKENS = T.let(T.unsafe(nil), Hash)
# Similar to a StringScanner, but with extra functionality needed to tokenize
# CSS while preserving the original text.
#
# source://crass//lib/crass/scanner.rb#8
class Crass::Scanner
# Creates a Scanner instance for the given _input_ string or IO instance.
#
# @return [Scanner] a new instance of Scanner
#
# source://crass//lib/crass/scanner.rb#25
def initialize(input); end
# Consumes the next character and returns it, advancing the pointer, or
# an empty string if the end of the string has been reached.
#
# source://crass//lib/crass/scanner.rb#34
def consume; end
# Consumes the rest of the string and returns it, advancing the pointer to
# the end of the string. Returns an empty string is the end of the string
# has already been reached.
#
# source://crass//lib/crass/scanner.rb#46
def consume_rest; end
# Current character, or `nil` if the scanner hasn't yet consumed a
# character, or is at the end of the string.
#
# source://crass//lib/crass/scanner.rb#11
def current; end
# Returns `true` if the end of the string has been reached, `false`
# otherwise.
#
# @return [Boolean]
#
# source://crass//lib/crass/scanner.rb#57
def eos?; end
# Sets the marker to the position of the next character that will be
# consumed.
#
# source://crass//lib/crass/scanner.rb#63
def mark; end
# Returns the substring between {#marker} and {#pos}, without altering the
# pointer.
#
# source://crass//lib/crass/scanner.rb#69
def marked; end
# Current marker position. Use {#marked} to get the substring between
# {#marker} and {#pos}.
#
# source://crass//lib/crass/scanner.rb#15
def marker; end
# Current marker position. Use {#marked} to get the substring between
# {#marker} and {#pos}.
#
# source://crass//lib/crass/scanner.rb#15
def marker=(_arg0); end
# Returns up to _length_ characters starting at the current position, but
# doesn't consume them. The number of characters returned may be less than
# _length_ if the end of the string is reached.
#
# source://crass//lib/crass/scanner.rb#80
def peek(length = T.unsafe(nil)); end
# Position of the next character that will be consumed. This is a character
# position, not a byte position, so it accounts for multi-byte characters.
#
# source://crass//lib/crass/scanner.rb#19
def pos; end
# Position of the next character that will be consumed. This is a character
# position, not a byte position, so it accounts for multi-byte characters.
#
# source://crass//lib/crass/scanner.rb#19
def pos=(_arg0); end
# Moves the pointer back one character without changing the value of
# {#current}. The next call to {#consume} will re-consume the current
# character.
#
# source://crass//lib/crass/scanner.rb#87
def reconsume; end
# Resets the pointer to the beginning of the string.
#
# source://crass//lib/crass/scanner.rb#93
def reset; end
# Tries to match _pattern_ at the current position. If it matches, the
# matched substring will be returned and the pointer will be advanced.
# Otherwise, `nil` will be returned.
#
# source://crass//lib/crass/scanner.rb#103
def scan(pattern); end
# Scans the string until the _pattern_ is matched. Returns the substring up
# to and including the end of the match, and advances the pointer. If there
# is no match, `nil` is returned and the pointer is not advanced.
#
# source://crass//lib/crass/scanner.rb#115
def scan_until(pattern); end
# String being scanned.
#
# source://crass//lib/crass/scanner.rb#22
def string; end
end
# Like {Scanner}, but for tokens!
#
# source://crass//lib/crass/token-scanner.rb#6
class Crass::TokenScanner
# @return [TokenScanner] a new instance of TokenScanner
#
# source://crass//lib/crass/token-scanner.rb#9
def initialize(tokens); end
# Executes the given block, collects all tokens that are consumed during its
# execution, and returns them.
#
# source://crass//lib/crass/token-scanner.rb#16
def collect; end
# Consumes the next token and returns it, advancing the pointer. Returns
# `nil` if there is no next token.
#
# source://crass//lib/crass/token-scanner.rb#24
def consume; end
# Returns the value of attribute current.
#
# source://crass//lib/crass/token-scanner.rb#7
def current; end
# Returns the next token without consuming it, or `nil` if there is no next
# token.
#
# source://crass//lib/crass/token-scanner.rb#32
def peek; end
# Returns the value of attribute pos.
#
# source://crass//lib/crass/token-scanner.rb#7
def pos; end
# Reconsumes the current token, moving the pointer back one position.
#
# http://www.w3.org/TR/2013/WD-css-syntax-3-20130919/#reconsume-the-current-input-token
#
# source://crass//lib/crass/token-scanner.rb#39
def reconsume; end
# Resets the pointer to the first token in the list.
#
# source://crass//lib/crass/token-scanner.rb#44
def reset; end
# Returns the value of attribute tokens.
#
# source://crass//lib/crass/token-scanner.rb#7
def tokens; end
end
# Tokenizes a CSS string.
#
# 4. http://dev.w3.org/csswg/css-syntax/#tokenization
#
# source://crass//lib/crass/tokenizer.rb#9
class Crass::Tokenizer
# Initializes a new Tokenizer.
#
# Options:
#
# * **:preserve_comments** - If `true`, comments will be preserved as
# `:comment` tokens.
#
# * **:preserve_hacks** - If `true`, certain non-standard browser hacks
# such as the IE "*" hack will be preserved even though they violate
# CSS 3 syntax rules.
#
# @return [Tokenizer] a new instance of Tokenizer
#
# source://crass//lib/crass/tokenizer.rb#62
def initialize(input, options = T.unsafe(nil)); end
# Consumes a token and returns the token that was consumed.
#
# 4.3.1. http://dev.w3.org/csswg/css-syntax/#consume-a-token
#
# source://crass//lib/crass/tokenizer.rb#70
def consume; end
# Consumes the remnants of a bad URL and returns the consumed text.
#
# 4.3.15. http://dev.w3.org/csswg/css-syntax/#consume-the-remnants-of-a-bad-url
#
# source://crass//lib/crass/tokenizer.rb#275
def consume_bad_url; end
# Consumes comments and returns them, or `nil` if no comments were consumed.
#
# 4.3.2. http://dev.w3.org/csswg/css-syntax/#consume-comments
#
# source://crass//lib/crass/tokenizer.rb#301
def consume_comments; end
# Consumes an escaped code point and returns its unescaped value.
#
# This method assumes that the `\` has already been consumed, and that the
# next character in the input has already been verified not to be a newline
# or EOF.
#
# 4.3.8. http://dev.w3.org/csswg/css-syntax/#consume-an-escaped-code-point
#
# source://crass//lib/crass/tokenizer.rb#326
def consume_escaped; end
# Consumes an ident-like token and returns it.
#
# 4.3.4. http://dev.w3.org/csswg/css-syntax/#consume-an-ident-like-token
#
# source://crass//lib/crass/tokenizer.rb#350
def consume_ident; end
# Consumes a name and returns it.
#
# 4.3.12. http://dev.w3.org/csswg/css-syntax/#consume-a-name
#
# source://crass//lib/crass/tokenizer.rb#375
def consume_name; end
# Consumes a number and returns a 3-element array containing the number's
# original representation, its numeric value, and its type (either
# `:integer` or `:number`).
#
# 4.3.13. http://dev.w3.org/csswg/css-syntax/#consume-a-number
#
# source://crass//lib/crass/tokenizer.rb#407
def consume_number; end
# Consumes a numeric token and returns it.
#
# 4.3.3. http://dev.w3.org/csswg/css-syntax/#consume-a-numeric-token
#
# source://crass//lib/crass/tokenizer.rb#430
def consume_numeric; end
# Consumes a string token that ends at the given character, and returns the
# token.
#
# 4.3.5. http://dev.w3.org/csswg/css-syntax/#consume-a-string-token
#
# source://crass//lib/crass/tokenizer.rb#469
def consume_string(ending = T.unsafe(nil)); end
# Consumes a Unicode range token and returns it. Assumes the initial "u+" or
# "U+" has already been consumed.
#
# 4.3.7. http://dev.w3.org/csswg/css-syntax/#consume-a-unicode-range-token
#
# source://crass//lib/crass/tokenizer.rb#510
def consume_unicode_range; end
# Consumes a URL token and returns it. Assumes the original "url(" has
# already been consumed.
#
# 4.3.6. http://dev.w3.org/csswg/css-syntax/#consume-a-url-token
#
# source://crass//lib/crass/tokenizer.rb#542
def consume_url; end
# Converts a valid CSS number string into a number and returns the number.
#
# 4.3.14. http://dev.w3.org/csswg/css-syntax/#convert-a-string-to-a-number
#
# source://crass//lib/crass/tokenizer.rb#590
def convert_string_to_number(str); end
# Creates and returns a new token with the given _properties_.
#
# source://crass//lib/crass/tokenizer.rb#616
def create_token(type, properties = T.unsafe(nil)); end
# Preprocesses _input_ to prepare it for the tokenizer.
#
# 3.3. http://dev.w3.org/csswg/css-syntax/#input-preprocessing
#
# source://crass//lib/crass/tokenizer.rb#627
def preprocess(input); end
# Returns `true` if the given three-character _text_ would start an
# identifier. If _text_ is `nil`, the current and next two characters in the
# input stream will be checked, but will not be consumed.
#
# 4.3.10. http://dev.w3.org/csswg/css-syntax/#would-start-an-identifier
#
# @return [Boolean]
#
# source://crass//lib/crass/tokenizer.rb#642
def start_identifier?(text = T.unsafe(nil)); end
# Returns `true` if the given three-character _text_ would start a number.
# If _text_ is `nil`, the current and next two characters in the input
# stream will be checked, but will not be consumed.
#
# 4.3.11. http://dev.w3.org/csswg/css-syntax/#starts-with-a-number
#
# @return [Boolean]
#
# source://crass//lib/crass/tokenizer.rb#666
def start_number?(text = T.unsafe(nil)); end
# Tokenizes the input stream and returns an array of tokens.
#
# source://crass//lib/crass/tokenizer.rb#685
def tokenize; end
# Returns `true` if the given two-character _text_ is the beginning of a
# valid escape sequence. If _text_ is `nil`, the current and next character
# in the input stream will be checked, but will not be consumed.
#
# 4.3.9. http://dev.w3.org/csswg/css-syntax/#starts-with-a-valid-escape
#
# @return [Boolean]
#
# source://crass//lib/crass/tokenizer.rb#702
def valid_escape?(text = T.unsafe(nil)); end
class << self
# Tokenizes the given _input_ as a CSS string and returns an array of
# tokens.
#
# See {#initialize} for _options_.
#
# source://crass//lib/crass/tokenizer.rb#45
def tokenize(input, options = T.unsafe(nil)); end
end
end
# source://crass//lib/crass/tokenizer.rb#10
Crass::Tokenizer::RE_COMMENT_CLOSE = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#11
Crass::Tokenizer::RE_DIGIT = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#12
Crass::Tokenizer::RE_ESCAPE = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#13
Crass::Tokenizer::RE_HEX = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#14
Crass::Tokenizer::RE_NAME = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#15
Crass::Tokenizer::RE_NAME_START = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#16
Crass::Tokenizer::RE_NON_PRINTABLE = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#17
Crass::Tokenizer::RE_NUMBER_DECIMAL = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#18
Crass::Tokenizer::RE_NUMBER_EXPONENT = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#19
Crass::Tokenizer::RE_NUMBER_SIGN = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#21
Crass::Tokenizer::RE_NUMBER_STR = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#33
Crass::Tokenizer::RE_QUOTED_URL_START = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#35
Crass::Tokenizer::RE_UNICODE_RANGE_END = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#34
Crass::Tokenizer::RE_UNICODE_RANGE_START = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#36
Crass::Tokenizer::RE_WHITESPACE = T.let(T.unsafe(nil), Regexp)
# source://crass//lib/crass/tokenizer.rb#37
Crass::Tokenizer::RE_WHITESPACE_ANCHORED = T.let(T.unsafe(nil), Regexp)