Files
NativeScript/tns-core-modules/css
Panayot Cankov f7a3a36b9c Housekeeping node tests, renamed to unit-tests (#4936)
Add parsers for the background css shorthand property, make ViewBase unit testable in node environment

Add background parser and linear-gradient parser

Use sticky regexes

Simplify some types, introduce generic Parsed<T> instead of & TokenRange

Apply each parser to return a { start, end, value } object

Move the css selector parser to the css/parser and unify types

Add the first steps toward building homegrown css parser

Add somewhat standards compliant tokenizer, add baseline, rework and shady css parsers

Enable all tests again, skip flaky perf test

Improve css parser tokenizer by converting some char token types to simple string

Implement 'parse a stylesheet'

Add gonzales css-parser

Add parseLib and css-tree perf

Add a thin parser layer that will convert CSS3 tokens to values, for now output is compatible with rework

Make root tsc green

Return the requires of tns-core-modules to use relative paths for webpack to work

Implement support for '@import 'url-string';

Fix function parser, function-token is no-longer neglected

Make the style-scope be able to load from "css" and "css-ast" modules

Add a loadAppCss event so theme can be added to snapshot separately from loaded
2017-10-20 10:42:07 +03:00
..
2016-05-26 14:30:25 +03:00
2016-05-26 14:30:25 +03:00
2016-05-26 14:30:25 +03:00
2016-05-26 14:30:25 +03:00

css Build Status

CSS parser / stringifier.

Installation

$ npm install css

Usage

var css = require('css');
var obj = css.parse('body { font-size: 12px; }', options);
css.stringify(obj, options);

API

css.parse(code, [options])

Accepts a CSS string and returns an AST object.

options:

  • silent: silently fail on parse errors.
  • source: the path to the file containing css. Makes errors and source maps more helpful, by letting them know where code comes from.

Example

var ast = css.parse('body { font-size: 12px; }', { source: 'source.css' });

Errors

Errors will have error.position, just like node.position. The error contains the source position in the message. To get the error message without the position use error.reason.

If you create any errors in plugins such as in rework, you must set the position as well for consistency.

AST

Common properties

All nodes have the following properties.

position

Information about the position in the source string that corresponds to the node.

Object:

  • start: Object:
    • line: Number.
    • column: Number.
  • end: Object:
    • line: Number.
    • column: Number.
  • source: String or undefined. The value of options.source if passed to css.parse. Otherwise undefined.
  • content: String. The full source string passed to css.parse.

The line and column numbers are 1-based: The first line is 1 and the first column of a line is 1 (not 0).

The position property lets you know from which source file the node comes from (if available), what that file contains, and what part of that file was parsed into the node.

type

String. The possible values are the ones listed in the Types section below.

parent

A reference to the parent node, or null if the node has no parent.

Types

The available values of node.type are listed below, as well as the available properties of each node (other than the common properties listed above.)

stylesheet

The root node returned by css.parse.

  • stylesheet: Object:
    • rules: Array of nodes with the types rule, comment and any of the at-rule types.

rule

  • selectors: Array of Strings. The list of selectors of the rule, split on commas. Each selector is trimmed from whitespace and comments.
  • declarations: Array of nodes with the types declaration and comment.

declaration

  • property: String. The property name, trimmed from whitespace and comments. May not be empty.
  • value: String. The value of the property, trimmed from whitespace and comments. Empty values are allowed.

comment

A rule-level or declaration-level comment. Comments inside selectors, properties and values etc. are lost.

  • comment: String. The part between the starting /* and the ending */ of the comment, including whitespace.

charset

The @charset at-rule.

  • charset: String. The part following @charset .

custom-media

The @custom-media at-rule.

  • name: String. The ---prefixed name.
  • media: String. The part following the name.

document

The @document at-rule.

  • document: String. The part following @document .
  • vendor: String or undefined. The vendor prefix in @document, or undefined if there is none.
  • rules: Array of nodes with the types rule, comment and any of the at-rule types.

font-face

The @font-face at-rule.

  • declarations: Array of nodes with the types declaration and comment.

host

The @host at-rule.

  • rules: Array of nodes with the types rule, comment and any of the at-rule types.

import

The @import at-rule.

  • import: String. The part following @import .

keyframes

The @keyframes at-rule.

  • name: String. The name of the keyframes rule.
  • vendor: String or undefined. The vendor prefix in @keyframes, or undefined if there is none.
  • keyframes: Array of nodes with the types keyframe and comment.

keyframe

  • values: Array of Strings. The list of “selectors” of the keyframe rule, split on commas. Each “selector” is trimmed from whitespace.
  • declarations: Array of nodes with the types declaration and comment.

media

The @media at-rule.

  • media: String. The part following @media .
  • rules: Array of nodes with the types rule, comment and any of the at-rule types.

namespace

The @namespace at-rule.

  • namespace: String. The part following @namespace .

page

The @page at-rule.

  • selectors: Array of Strings. The list of selectors of the rule, split on commas. Each selector is trimmed from whitespace and comments.
  • declarations: Array of nodes with the types declaration and comment.

supports

The @supports at-rule.

  • supports: String. The part following @supports .
  • rules: Array of nodes with the types rule, comment and any of the at-rule types.

Example

CSS:

body {
  background: #eee;
  color: #888;
}

Parse tree:

{
  "type": "stylesheet",
  "stylesheet": {
    "rules": [
      {
        "type": "rule",
        "selectors": [
          "body"
        ],
        "declarations": [
          {
            "type": "declaration",
            "property": "background",
            "value": "#eee",
            "position": {
              "start": {
                "line": 2,
                "column": 3
              },
              "end": {
                "line": 2,
                "column": 19
              }
            }
          },
          {
            "type": "declaration",
            "property": "color",
            "value": "#888",
            "position": {
              "start": {
                "line": 3,
                "column": 3
              },
              "end": {
                "line": 3,
                "column": 14
              }
            }
          }
        ],
        "position": {
          "start": {
            "line": 1,
            "column": 1
          },
          "end": {
            "line": 4,
            "column": 2
          }
        }
      }
    ]
  }
}

License

MIT