Ometa-JS based CSS parser
Pull request Compare This branch is 105 commits behind veged:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin
lib
src
test
GNUmakefile
README
USAGE
VERSION
package.json

README

Beta, try to use.

Предварительные требования:
* Node.js: http://nodejs.org
* npm: https://github.com/isaacs/npm

Установка:
  npm install cssp

По умолчанию CSSP разбирает входной CSS-текст в дерево (parser -- P), затем отправляет дерево
на трансформацию (transformer -- TF), после чего транслирует в CSS-текст (translator -- TL).
Таким образом полный цикл выглядит как CSS -> P -> TF -> TL -> CSS, и без указания ключей
CSSP отдаст тот же текст, что был на входе.

Использование command line интерфейса:
    cssp
        показывает этот текст
    cssp <имя_файла>
        считывает CSS из <имя_файла> и записывает результат полного цикла (тот же CSS) в stdout
    cssp <имя_файла> -dp
    cssp <имя_файла> --parser
        считывает CSS из <имя_файла> и записывает результат CSS -> P -> stdout
    cssp <имя_файла> -df
    cssp <имя_файла> --transformer
        считывает CSS из <имя_файла> и записывает результат CSS -> P -> TF -> stdout
    cssp <имя_файла> -dl
    cssp <имя_файла> --translator
        считывает CSS из <имя_файла> и записывает результат CSS -> P -> TF -> TL -> stdout
    cssp <имя_файла> -r <имя_правила>
    cssp <имя_файла> --rule <имя_правила>
        считывает CSS из <имя_файла> и передаёт в цикл (P TF TL) <имя_правила>, которое надо обработать

Примеры:
    1) test.css = 'color: red'
    > cssp test.css -r declaration -dp
    > ['declaration',
        ['property',
          ['ident', 'color']],
        ['value',
          ['s', ' '],
          ['ident', 'red']]]
    2) test.css = '10px'
    > cssp test.css -r dimension -dp -dl
    > ['dimension',
        ['number', '10'], 'px']
      10px

Пример программного использования (Node.js):
    var cssp = require('cssp'),
        parser = cssp.CSSParser,
        transformer = cssp.CSSTransformer,
        translator = cssp.CSSTranslator,
        rule = 'stylesheet',
        src = 'a { color: red }',
        tree, trans,
        dst;

    tree = parser.matchAll(src, rule);
    trans = transformer.match(tree, rule);
    dst = translator.match(trans, rule);

    console.log('Source CSS:');
    console.log(src);
    console.log('Parser out:');
    console.log(tree);
    console.log('Transformer out:');
    console.log(trans);
    console.log('Translator out:');
    console.log(dst);