Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

compressor removed since it is needless (use CSSO)

  • Loading branch information...
commit 2062c88fdba383b90be6fe3b560c03f8e3a4d386 1 parent 2eb4674
@anotherquiz anotherquiz authored
View
1  CHANGELOG
@@ -7,6 +7,7 @@
* Правило atrulepart удалено, вместо него используется правило tset.
* Правила function, braces, atrule* упрощены с помощью tset.
* Токен function разделён на function и functionBody.
+ * Убран трансформер CMP: API.compress(tree).
0.0.10:
* Из правила selector удалено лишнее упоминание правила sc.
* Токен nthselector теперь содержит имя функции не строкой, но токеном ident.
View
3  GNUmakefile
@@ -1,11 +1,10 @@
.PHONY: test
-build: src/parser.ometajs src/transformer.ometajs src/translator.ometajs src/compressor.ometajs src/cssptt.pre.js
+build: src/parser.ometajs src/transformer.ometajs src/translator.ometajs src/cssptt.pre.js
@cp src/cssptt.pre.js src/cssptt.js
@ometajs2js -i src/parser.ometajs >> src/cssptt.js
@ometajs2js -i src/transformer.ometajs >> src/cssptt.js
@ometajs2js -i src/translator.ometajs >> src/cssptt.js
- @ometajs2js -i src/compressor.ometajs >> src/cssptt.js
test:
@node test/test.js
View
14 README.md
@@ -17,11 +17,6 @@
Таким образом полный цикл выглядит как CSS -> P -> TF -> TL -> CSS, и без указания ключей CSSP отдаст тот же текст, что был на входе.
-Дополнительный элемент CMP — сжатие CSS: убирает из дерева лишние пробельные символы, комментарии, концевые ';', сжимает числа, цвета. CMP работает в двух режимах:
-
-* CMPN — удаляет лишнее (пробелы, комментарии и т.п.), но не изменяет значения токенов.
-* CMPV — изменяет значения токенов, т.е. сокращает цвета, числа и т.п.
-
## Использование
Использование command line интерфейса:
@@ -36,18 +31,9 @@
cssp <имя_файла> -df
cssp <имя_файла> --transformer
считывает CSS из <имя_файла> и записывает результат CSS -> P -> TF -> stdout
- cssp <имя_файла> -dc
- cssp <имя_файла> --compressor
- считывает CSS из <имя_файла> и записывает результат CSS -> P -> CMPN и / или CMPV -> stdout
cssp <имя_файла> -dl
cssp <имя_файла> --translator
считывает CSS из <имя_файла> и записывает результат CSS -> P -> TF -> TL -> stdout
- cssp <имя_файла> -c <имя_файла>
- cssp <имя_файла> --compress <имя_файла>
- считывает CSS из <имя_файла> и записывает результат CSS -> P -> CMPN + CMPV -> TL -> stdout
- cssp <имя_файла> -cn <имя_файла>
- cssp <имя_файла> --compress-needless <имя_файла>
- считывает CSS из <имя_файла> и записывает результат CSS -> P -> CMPN -> TL -> stdout
cssp <имя_файла> -r <имя_правила>
cssp <имя_файла> --rule <имя_правила>
считывает CSS из <имя_файла> и передаёт в цикл (P TF TL) <имя_правила>, которое надо обработать
View
14 USAGE
@@ -3,11 +3,6 @@
Таким образом полный цикл выглядит как CSS -> P -> TF -> TL -> CSS, и без указания ключей
CSSP отдаст тот же текст, что был на входе.
-Дополнительный элемент CMP — сжатие CSS: убирает из дерева лишние пробельные символы, комментарии,
-концевые ';', сжимает числа, цвета. CMP работает в двух режимах:
-* CMPN — удаляет лишнее (пробелы, комментарии и т.п.), но не изменяет значения токенов.
-* CMPV — изменяет значения токенов, т.е. сокращает цвета, числа и т.п.
-
Использование:
cssp
показывает этот текст
@@ -19,18 +14,9 @@ CSSP отдаст тот же текст, что был на входе.
cssp <имя_файла> -df
cssp <имя_файла> --transformer
считывает CSS из <имя_файла> и записывает результат CSS -> P -> TF -> stdout
- cssp <имя_файла> -dc
- cssp <имя_файла> --compressor
- считывает CSS из <имя_файла> и записывает результат CSS -> P -> CMPN и / или CMPV -> stdout
cssp <имя_файла> -dl
cssp <имя_файла> --translator
считывает CSS из <имя_файла> и записывает результат CSS -> P -> TF -> TL -> stdout
- cssp <имя_файла> -c <имя_файла>
- cssp <имя_файла> --compress <имя_файла>
- считывает CSS из <имя_файла> и записывает результат CSS -> P -> CMPN + CMPV -> TL -> stdout
- cssp <имя_файла> -cn <имя_файла>
- cssp <имя_файла> --compress-needless <имя_файла>
- считывает CSS из <имя_файла> и записывает результат CSS -> P -> CMPN -> TL -> stdout
cssp <имя_файла> -r <имя_правила>
cssp <имя_файла> --rule <имя_правила>
считывает CSS из <имя_файла> и передаёт в цикл (P TF TL) <имя_правила>, которое надо обработать
View
19 lib/cssp.js
@@ -2,8 +2,7 @@ var fs = require('fs'),
print = require('sys').print,
cssp = require('./csspapi.js'),
printTree = cssp.printTree,
- src, tree, trans,
- cmpCfg = {};
+ src, tree, trans;
var args = process.argv.slice(2),
opts = args.length ? getOpts(args, [
@@ -12,9 +11,6 @@ var args = process.argv.slice(2),
'-dp', '--parser',
'-df', '--transformer',
'-dl', '--translator',
- '-dc', '--compressor',
- '-c', '--compress',
- '-cn', '--compress-needless',
'-t', '--trim',
], ['-r', '--rule']) : null,
single = opts && opts.single,
@@ -41,20 +37,9 @@ if (!opts || single.contains(['-h', '--help']) || other.length > 1) {
printTree(trans);
} else trans = tree;
- cmpCfg.cn = single.contains(['-c', '--compress']) || single.contains(['-cn', '--compress-needless']);
- cmpCfg.cv = single.contains(['-c', '--compress']) || !cmpCfg.cn;
-
- if (single.contains(['-dc', '--compressor'])) {
- trans = cssp.compress(trans, rule);
- printTree(trans);
- } else if (cmpCfg.cn) {
- trans = cssp.compress(trans, rule, cmpCfg);
- }
-
if (single.contains(['-dl', '--translator']) ||
(!single.contains(['-dp', '--parser']) &&
- !single.contains(['-df', '--transformer']) &&
- !single.contains(['-dc', '--compressor']))) {
+ !single.contains(['-df', '--transformer']))) {
print(cssp.translate(trans, rule));
}
}
View
12 lib/csspapi.js
@@ -13,18 +13,6 @@ exports.translate = function(tree /*, rule, translator*/) {
return getGrammar(arguments, cssptt.CSSTranslator).match(tree, getRule(arguments));
};
-exports.compress = function(tree /*, rule, config*/) {
- var cmp = cssptt.CSSCompressor,
- oldCfg = cmp.cfg,
- cfg = getConfig(arguments),
- r;
-
- cmp._cfg = cfg;
- r = cmp.match(tree, getRule(arguments));
- cmp._cfg = oldCfg;
- return r;
-};
-
function getGrammar(args, def) {
if (args[1] && typeof args[1] !== 'string') return merge(def, args[1]);
if (args[2] && typeof args[2] !== 'string') return merge(def, args[2]);
View
260 src/compressor.ometajs
@@ -1,260 +0,0 @@
-ometa CSSCompressor <: CSSTransformer {
- anys = any*,
-
- any = ident
- | atkeyword
- | string
- | vhash
- | shash
- | number
- | percentage
- | dimension
- | cdo
- | cdc
- | decldelim
- | s
- | attrselector
- | attrib
- | nth
- | nthselector
- | namespace
- | class
- | pseudoe
- | pseudoc
- | delim
- | stylesheet
- | atruleb
- | atrules
- | atrulerq
- | atrulers
- | atruler
- | block
- | ruleset
- | combinator
- | simpleselector
- | selector
- | declaration
- | property
- | important
- | unary
- | operator
- | braces
- | value
- | filterp
- | progid
- | filterv
- | filter
- | comment
- | uri
- | raw
- | function
- | functionExpression,
-
- sc = s | comment,
-
- number = ['number':t :x] -> [t, this._cfg.cv ? this.compressNumber(x) : x],
-
- dimension = ['dimension':t number:x :y] -> (this._cfg.cv ? this.compressDimension(x[1], y) : [t, x, y]),
-
- vhash = ['vhash':t :x] -> (this._cfg.cv ? this.compressColorHash(x) : [t, x]),
-
- ident = ['ident':t :x] -> (this._cfg.cv ? this.compressIdent(x) : [t, x]),
-
- attrib = ['attrib':t sc*:s0 ident:x sc*:s1 attrselector:y sc*:s2 (ident | string):z sc*:s3] -> [t, x, y, z],
-
- nthselector = ['nthselector':t ident:x anys:y] -> [t, x].concat(this.compressValue(y)),
-
- stylesheet = ['stylesheet':t anys:x] -> [t].concat(this.cleanSC(x)),
-
- atruleb = ['atruleb':t atkeyword:x sc* block:y] -> [t, x, y]
- | ['atruleb':t atkeyword:x comment+:y (~block any)*:z block:b] -> [t, x, y[0]].concat(this.compressValue(z), [b])
- | ['atruleb':t atkeyword:x sc+ (~block any)*:y block:z] -> [t, x, [#s, ' ']].concat(this.compressValue(y), [z]),
-
- atrules = ['atrules':t atkeyword:x sc*] -> [t, x]
- | ['atrules':t atkeyword:x comment sc+ anys:y] -> [t, x, [#s, ' ']].concat(this.compressValue(y))
- | ['atrules':t atkeyword:x comment:y anys:z] -> [t, x, y].concat(this.compressValue(z))
- | ['atrules':t atkeyword:x sc+ anys:y] -> [t, x, [#s, ' ']].concat(this.compressValue(y))
- | ['atrules':t atkeyword:x anys:y] -> [t, x].concat(this.compressValue(y)),
-
- atrulerq = ['atrulerq':t sc*] -> [t]
- | ['atrulerq':t comment sc+ anys:x] -> [t, [#s, ' ']].concat(this.compressValue(x))
- | ['atrulerq':t comment:y anys:z] -> [t, y].concat(this.compressValue(z))
- | ['atrulerq':t sc+ anys:x] -> [t, [#s, ' ']].concat(this.compressValue(x)),
-
- atrulers = ['atrulers':t sc* ruleset*:r sc*] -> [t].concat(r),
-
- blockdecls = blockdecls:x sc* (filter | declaration):y decldelim* sc* -> this.concatContent(x, [[y]])
- | sc* (filter | declaration):x decldelim+ sc* -> [x, [#decldelim]]
- | sc* (filter | declaration):x sc* -> [x]
- | sc* decldelim+:x sc* -> []
- | empty -> [],
-
- block = ['block':t (sc | decldelim)*] -> [t]
- | ['block':t ?(this.inBlock = true) blockdecls:x ?(this.inBlock = false, true)] -> [t].concat(x),
-
- simpleselector = ['simpleselector':t anys:x] -> [t].concat(this.compressSimpleSelector(x)),
-
- property = ['property':t ident:x anys:y] -> [t, x],
-
- important = ['important':t anys:x] -> [t],
-
- braces = ['braces':t :x :y anys:z] -> [t, x, y].concat(this.compressValue(z)),
-
- value = ['value':t anys:x] -> [t].concat(this.compressValue(x)),
-
- filterp = ['filterp':t :x anys:y] -> [t, x],
-
- progid = ['progid':t sc* raw:x sc*] -> [t, x],
-
- filterv = ['filterv':t anys:x] -> [t].concat(x),
-
- uri = ['uri':t anys:x] -> [t].concat(this.cleanSC(x)),
-
- function = ['function':t ['ident' 'rgb']:x anys:y] -> this.compressRgb(this.compressValue(y))
- | ['function':t ident:x anys:y] -> [t, x].concat(this.compressValue(y))
-}
-
-CSSCompressor._cfg = { cv: true };
-
-CSSCompressor.cleanSC = function(x) {
- var r = [];
-
- x.forEach(function(y) {
- if (!CSSCompressor.isSC(y)) r.push(y);
- });
-
- return r;
-};
-
-CSSCompressor.concatContent = function(x, y) {
- y.forEach(function(e) {
- x = x.concat(e);
- });
-
- return x;
-};
-
-CSSCompressor.cleanSCLeft = function(x) {
- for (var i = 0; i < x.length; i++) if (!this.isSC(x[i])) break;
-
- return x.slice(i);
-};
-
-CSSCompressor.cleanSCRight = function(x) {
- for (var i = x.length - 1; i !== 0; i--) if (!this.isSC(x[i])) break;
-
- return x.slice(0, i + 1);
-};
-
-CSSCompressor.isSC = function(x) {
- return x && (x[0] === 's' || x[0] === 'comment');
-};
-
-CSSCompressor.joinSC = function(x) {
- var r = [], t;
-
- for (var i = 0; i < x.length; i++) {
- t = x[i][0] === 's' ? ['s', ' '] : x[i];
- if (!this.isSC(t) || !this.isSC(r[r.length - 1])) r.push(t);
- }
-
- return r;
-};
-
-CSSCompressor.compressValue = function(x) {
- var r = this.joinSC(this.cleanSCLeft(this.cleanSCRight(x))),
- p, n;
-
- for (var i = r.length - 1; i > 0; i--) {
- p = r[i - 1];
- n = r[i + 1];
- if (r[i][0] === 's' || r[i][0] === 'comment') {
- if ((p && (p[0] === 'operator' ||
- p[0] === 'unary')) ||
- (n && (n[0] === 'operator' ||
- n[0] === 'unary'))) r.splice(i, 1);
- }
- }
-
- return r;
-};
-
-CSSCompressor.compressSimpleSelector = function(x) {
- var r = this.joinSC(this.cleanSCLeft(this.cleanSCRight(x))),
- p, n;
-
- if (r.length > 3) {
- for (var i = r.length - 2; i !== 0; i--) {
- p = r[i - 1];
- n = r[i + 1];
- if (r[i][0] === 's') {
- if (p[0] === 'combinator' ||
- n[0] === 'combinator') r.splice(i, 1);
- }
- }
- }
-
- return r;
-};
-
-CSSCompressor.compressNumber = function(x) {
- if (/^0*/.test(x)) x = x.replace(/^0+/, '');
- if (/\.0*$/.test(x)) x = x.replace(/\.0*$/, '');
- if (/\..*[1-9]+0+$/.test(x)) x = x.replace(/0+$/, '');
- if (x === '.' || x === '') x = '0';
-
- return x;
-};
-
-CSSCompressor.compressDimension = function(x, y) {
- return x === '0' ? ['number', '0'] : ['dimension', ['number', x], y];
-};
-
-CSSCompressor.compressColorHash = function(x) {
- var map = {'f00': 'red',
- 'c0c0c0': 'silver',
- '808080': 'gray',
- '800000': 'maroon',
- '800080': 'purple',
- '008000': 'green',
- '808000': 'olive',
- '000080': 'navy',
- '008080': 'teal'},
- _x = x;
-
- x = x.toLowerCase();
-
- if (x.length === 6 &&
- x.charAt(0) === x.charAt(1) &&
- x.charAt(2) === x.charAt(3) &&
- x.charAt(4) === x.charAt(5)) x = x.charAt(0) + x.charAt(2) + x.charAt(4);
-
- return map[x] ? ['string', map[x]] : ['vhash', (x.length < _x.length ? x : _x)];
-};
-
-CSSCompressor.compressIdent = function(x) {
- return this.inBlock ? this.compressColorIdent(x) : ['ident', x];
-};
-
-CSSCompressor.compressColorIdent = function(x) {
- var map = {'yellow': 'ff0',
- 'fuchsia': 'f0f',
- 'white': 'fff',
- 'black': '000',
- 'blue': '00f',
- 'aqua': '0ff'},
- _x = x.toLowerCase();
-
- return map[_x] ? ['vhash', map[_x]] : ['ident', x];
-};
-
-CSSCompressor.compressRgb = function(x) {
- var t, h = '';
-
- if (x.length === 5 && x[0][0] === 'number' && x[2][0] === 'number' && x[4][0] === 'number') {
- h += (t = Number(x[0][1]).toString(16)).length === 1 ? '0' + t : t;
- h += (t = Number(x[2][1]).toString(16)).length === 1 ? '0' + t : t;
- h += (t = Number(x[4][1]).toString(16)).length === 1 ? '0' + t : t;
- return this.compressColorHash(h);
- } else return ['function', ['ident', 'rgb']].concat(x);
-};
View
27 src/cssptt.js
@@ -191,30 +191,3 @@ var CSSTranslator=exports.CSSTranslator=objectThatDelegatesTo(OMeta,{
"functionBody":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._form((function(){return (function(){this._applyWithArgs("exactly","functionBody");return x=this._apply("anys")}).call(this)}));return x.join("")}).call(this)},
"function":function(){var $elf=this,_fromIdx=this.input.idx,x,y;return (function(){this._form((function(){return (function(){this._applyWithArgs("exactly","function");x=this._apply("any");return y=this._apply("any")}).call(this)}));return (((x + "(") + y) + ")")}).call(this)},
"functionExpression":function(){var $elf=this,_fromIdx=this.input.idx,x;return (function(){this._form((function(){return (function(){this._applyWithArgs("exactly","functionExpression");return x=this._apply("anything")}).call(this)}));return (("expression(" + x) + ")")}).call(this)}})
-{var CSSCompressor=exports.CSSCompressor=objectThatDelegatesTo(CSSTransformer,{
-"anys":function(){var $elf=this,_fromIdx=this.input.idx;return this._many((function(){return this._apply("any")}))},
-"any":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return this._apply("ident")}),(function(){return this._apply("atkeyword")}),(function(){return this._apply("string")}),(function(){return this._apply("vhash")}),(function(){return this._apply("shash")}),(function(){return this._apply("number")}),(function(){return this._apply("percentage")}),(function(){return this._apply("dimension")}),(function(){return this._apply("cdo")}),(function(){return this._apply("cdc")}),(function(){return this._apply("decldelim")}),(function(){return this._apply("s")}),(function(){return this._apply("attrselector")}),(function(){return this._apply("attrib")}),(function(){return this._apply("nth")}),(function(){return this._apply("nthselector")}),(function(){return this._apply("namespace")}),(function(){return this._apply("class")}),(function(){return this._apply("pseudoe")}),(function(){return this._apply("pseudoc")}),(function(){return this._apply("delim")}),(function(){return this._apply("stylesheet")}),(function(){return this._apply("atruleb")}),(function(){return this._apply("atrules")}),(function(){return this._apply("atrulerq")}),(function(){return this._apply("atrulers")}),(function(){return this._apply("atruler")}),(function(){return this._apply("block")}),(function(){return this._apply("ruleset")}),(function(){return this._apply("combinator")}),(function(){return this._apply("simpleselector")}),(function(){return this._apply("selector")}),(function(){return this._apply("declaration")}),(function(){return this._apply("property")}),(function(){return this._apply("important")}),(function(){return this._apply("unary")}),(function(){return this._apply("operator")}),(function(){return this._apply("braces")}),(function(){return this._apply("value")}),(function(){return this._apply("filterp")}),(function(){return this._apply("progid")}),(function(){return this._apply("filterv")}),(function(){return this._apply("filter")}),(function(){return this._apply("comment")}),(function(){return this._apply("uri")}),(function(){return this._apply("raw")}),(function(){return this._apply("function")}),(function(){return this._apply("functionExpression")}))},
-"sc":function(){var $elf=this,_fromIdx=this.input.idx;return this._or((function(){return this._apply("s")}),(function(){return this._apply("comment")}))},
-"number":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","number");return x=this._apply("anything")}).call(this)}));return [t,(this["_cfg"]["cv"]?this.compressNumber(x):x)]}).call(this)},
-"dimension":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","dimension");x=this._apply("number");return y=this._apply("anything")}).call(this)}));return (this["_cfg"]["cv"]?this.compressDimension(x[(1)],y):[t,x,y])}).call(this)},
-"vhash":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","vhash");return x=this._apply("anything")}).call(this)}));return (this["_cfg"]["cv"]?this.compressColorHash(x):[t,x])}).call(this)},
-"ident":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","ident");return x=this._apply("anything")}).call(this)}));return (this["_cfg"]["cv"]?this.compressIdent(x):[t,x])}).call(this)},
-"attrib":function(){var $elf=this,_fromIdx=this.input.idx,t,s0,x,s1,y,s2,z,s3;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","attrib");s0=this._many((function(){return this._apply("sc")}));x=this._apply("ident");s1=this._many((function(){return this._apply("sc")}));y=this._apply("attrselector");s2=this._many((function(){return this._apply("sc")}));z=this._or((function(){return this._apply("ident")}),(function(){return this._apply("string")}));return s3=this._many((function(){return this._apply("sc")}))}).call(this)}));return [t,x,y,z]}).call(this)},
-"nthselector":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","nthselector");x=this._apply("ident");return y=this._apply("anys")}).call(this)}));return [t,x].concat(this.compressValue(y))}).call(this)},
-"stylesheet":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","stylesheet");return x=this._apply("anys")}).call(this)}));return [t].concat(this.cleanSC(x))}).call(this)},
-"atruleb":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y,t,x,y,z,b,t,x,y,z;return this._or((function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atruleb");x=this._apply("atkeyword");this._many((function(){return this._apply("sc")}));return y=this._apply("block")}).call(this)}));return [t,x,y]}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atruleb");x=this._apply("atkeyword");y=this._many1((function(){return this._apply("comment")}));z=this._many((function(){return (function(){this._not((function(){return this._apply("block")}));return this._apply("any")}).call(this)}));return b=this._apply("block")}).call(this)}));return [t,x,y[(0)]].concat(this.compressValue(z),[b])}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atruleb");x=this._apply("atkeyword");this._many1((function(){return this._apply("sc")}));y=this._many((function(){return (function(){this._not((function(){return this._apply("block")}));return this._apply("any")}).call(this)}));return z=this._apply("block")}).call(this)}));return [t,x,["s"," "]].concat(this.compressValue(y),[z])}).call(this)}))},
-"atrules":function(){var $elf=this,_fromIdx=this.input.idx,t,x,t,x,y,t,x,y,z,t,x,y,t,x,y;return this._or((function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrules");x=this._apply("atkeyword");return this._many((function(){return this._apply("sc")}))}).call(this)}));return [t,x]}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrules");x=this._apply("atkeyword");this._apply("comment");this._many1((function(){return this._apply("sc")}));return y=this._apply("anys")}).call(this)}));return [t,x,["s"," "]].concat(this.compressValue(y))}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrules");x=this._apply("atkeyword");y=this._apply("comment");return z=this._apply("anys")}).call(this)}));return [t,x,y].concat(this.compressValue(z))}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrules");x=this._apply("atkeyword");this._many1((function(){return this._apply("sc")}));return y=this._apply("anys")}).call(this)}));return [t,x,["s"," "]].concat(this.compressValue(y))}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrules");x=this._apply("atkeyword");return y=this._apply("anys")}).call(this)}));return [t,x].concat(this.compressValue(y))}).call(this)}))},
-"atrulerq":function(){var $elf=this,_fromIdx=this.input.idx,t,t,x,t,y,z,t,x;return this._or((function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrulerq");return this._many((function(){return this._apply("sc")}))}).call(this)}));return [t]}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrulerq");this._apply("comment");this._many1((function(){return this._apply("sc")}));return x=this._apply("anys")}).call(this)}));return [t,["s"," "]].concat(this.compressValue(x))}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrulerq");y=this._apply("comment");return z=this._apply("anys")}).call(this)}));return [t,y].concat(this.compressValue(z))}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrulerq");this._many1((function(){return this._apply("sc")}));return x=this._apply("anys")}).call(this)}));return [t,["s"," "]].concat(this.compressValue(x))}).call(this)}))},
-"atrulers":function(){var $elf=this,_fromIdx=this.input.idx,t,r;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","atrulers");this._many((function(){return this._apply("sc")}));r=this._many((function(){return this._apply("ruleset")}));return this._many((function(){return this._apply("sc")}))}).call(this)}));return [t].concat(r)}).call(this)},
-"blockdecls":function(){var $elf=this,_fromIdx=this.input.idx,x,y,x,x,x;return this._or((function(){return (function(){x=this._apply("blockdecls");this._many((function(){return this._apply("sc")}));y=this._or((function(){return this._apply("filter")}),(function(){return this._apply("declaration")}));this._many((function(){return this._apply("decldelim")}));this._many((function(){return this._apply("sc")}));return this.concatContent(x,[[y]])}).call(this)}),(function(){return (function(){this._many((function(){return this._apply("sc")}));x=this._or((function(){return this._apply("filter")}),(function(){return this._apply("declaration")}));this._many1((function(){return this._apply("decldelim")}));this._many((function(){return this._apply("sc")}));return [x,["decldelim"]]}).call(this)}),(function(){return (function(){this._many((function(){return this._apply("sc")}));x=this._or((function(){return this._apply("filter")}),(function(){return this._apply("declaration")}));this._many((function(){return this._apply("sc")}));return [x]}).call(this)}),(function(){return (function(){this._many((function(){return this._apply("sc")}));x=this._many1((function(){return this._apply("decldelim")}));this._many((function(){return this._apply("sc")}));return []}).call(this)}),(function(){return (function(){this._apply("empty");return []}).call(this)}))},
-"block":function(){var $elf=this,_fromIdx=this.input.idx,t,t,x;return this._or((function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","block");return this._many((function(){return this._or((function(){return this._apply("sc")}),(function(){return this._apply("decldelim")}))}))}).call(this)}));return [t]}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","block");this._pred((this["inBlock"]=true));x=this._apply("blockdecls");return this._pred(((this["inBlock"]=false) , true))}).call(this)}));return [t].concat(x)}).call(this)}))},
-"simpleselector":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","simpleselector");return x=this._apply("anys")}).call(this)}));return [t].concat(this.compressSimpleSelector(x))}).call(this)},
-"property":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","property");x=this._apply("ident");return y=this._apply("anys")}).call(this)}));return [t,x]}).call(this)},
-"important":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","important");return x=this._apply("anys")}).call(this)}));return [t]}).call(this)},
-"braces":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y,z;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","braces");x=this._apply("anything");y=this._apply("anything");return z=this._apply("anys")}).call(this)}));return [t,x,y].concat(this.compressValue(z))}).call(this)},
-"value":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","value");return x=this._apply("anys")}).call(this)}));return [t].concat(this.compressValue(x))}).call(this)},
-"filterp":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","filterp");x=this._apply("anything");return y=this._apply("anys")}).call(this)}));return [t,x]}).call(this)},
-"progid":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","progid");this._many((function(){return this._apply("sc")}));x=this._apply("raw");return this._many((function(){return this._apply("sc")}))}).call(this)}));return [t,x]}).call(this)},
-"filterv":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","filterv");return x=this._apply("anys")}).call(this)}));return [t].concat(x)}).call(this)},
-"uri":function(){var $elf=this,_fromIdx=this.input.idx,t,x;return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","uri");return x=this._apply("anys")}).call(this)}));return [t].concat(this.cleanSC(x))}).call(this)},
-"function":function(){var $elf=this,_fromIdx=this.input.idx,t,x,y,t,x,y;return this._or((function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","function");x=this._form((function(){return (function(){this._applyWithArgs("exactly","ident");return this._applyWithArgs("exactly","rgb")}).call(this)}));return y=this._apply("anys")}).call(this)}));return this.compressRgb(this.compressValue(y))}).call(this)}),(function(){return (function(){this._form((function(){return (function(){t=this._applyWithArgs("exactly","function");x=this._apply("ident");return y=this._apply("anys")}).call(this)}));return [t,x].concat(this.compressValue(y))}).call(this)}))}});(CSSCompressor["_cfg"]=({"cv": true}));(CSSCompressor["cleanSC"]=(function (x){var r = [];x.forEach((function (y){if((! CSSCompressor.isSC(y))){r.push(y)}else{undefined}}));return r}));(CSSCompressor["concatContent"]=(function (x,y){y.forEach((function (e){(x=x.concat(e))}));return x}));(CSSCompressor["cleanSCLeft"]=(function (x){for(var i = (0);(i < x["length"]);i++){if((! this.isSC(x[i]))){break}else{undefined}};return x.slice(i)}));(CSSCompressor["cleanSCRight"]=(function (x){for(var i = (x["length"] - (1));(i !== (0));i--){if((! this.isSC(x[i]))){break}else{undefined}};return x.slice((0),(i + (1)))}));(CSSCompressor["isSC"]=(function (x){return (x && ((x[(0)] === "s") || (x[(0)] === "comment")))}));(CSSCompressor["joinSC"]=(function (x){var r = [],t = undefined;for(var i = (0);(i < x["length"]);i++){(t=((x[i][(0)] === "s")?["s"," "]:x[i]));if(((! this.isSC(t)) || (! this.isSC(r[(r["length"] - (1))])))){r.push(t)}else{undefined}};return r}));(CSSCompressor["compressValue"]=(function (x){var r = this.joinSC(this.cleanSCLeft(this.cleanSCRight(x))),p = undefined,n = undefined;for(var i = (r["length"] - (1));(i > (0));i--){(p=r[(i - (1))]);(n=r[(i + (1))]);if(((r[i][(0)] === "s") || (r[i][(0)] === "comment"))){if(((p && ((p[(0)] === "operator") || (p[(0)] === "unary"))) || (n && ((n[(0)] === "operator") || (n[(0)] === "unary"))))){r.splice(i,(1))}else{undefined}}else{undefined}};return r}));(CSSCompressor["compressSimpleSelector"]=(function (x){var r = this.joinSC(this.cleanSCLeft(this.cleanSCRight(x))),p = undefined,n = undefined;if((r["length"] > (3))){for(var i = (r["length"] - (2));(i !== (0));i--){(p=r[(i - (1))]);(n=r[(i + (1))]);if((r[i][(0)] === "s")){if(((p[(0)] === "combinator") || (n[(0)] === "combinator"))){r.splice(i,(1))}else{undefined}}else{undefined}}}else{undefined};return r}));(CSSCompressor["compressNumber"]=(function (x){if(/^0*/.test(x)){(x=x.replace(/^0+/,""))}else{undefined};if(/\.0*$/.test(x)){(x=x.replace(/\.0*$/,""))}else{undefined};if(/\..*[1-9]+0+$/.test(x)){(x=x.replace(/0+$/,""))}else{undefined};if(((x === ".") || (x === ""))){(x="0")}else{undefined};return x}));(CSSCompressor["compressDimension"]=(function (x,y){return ((x === "0")?["number","0"]:["dimension",["number",x],y])}));(CSSCompressor["compressColorHash"]=(function (x){var map = ({"f00": "red","c0c0c0": "silver","808080": "gray","800000": "maroon","800080": "purple","008000": "green","808000": "olive","000080": "navy","008080": "teal"}),_x = x;(x=x.toLowerCase());if(((((x["length"] === (6)) && (x.charAt((0)) === x.charAt((1)))) && (x.charAt((2)) === x.charAt((3)))) && (x.charAt((4)) === x.charAt((5))))){(x=((x.charAt((0)) + x.charAt((2))) + x.charAt((4))))}else{undefined};return (map[x]?["string",map[x]]:["vhash",((x["length"] < _x["length"])?x:_x)])}));(CSSCompressor["compressIdent"]=(function (x){return (this["inBlock"]?this.compressColorIdent(x):["ident",x])}));(CSSCompressor["compressColorIdent"]=(function (x){var map = ({"yellow": "ff0","fuchsia": "f0f","white": "fff","black": "000","blue": "00f","aqua": "0ff"}),_x = x.toLowerCase();return (map[_x]?["vhash",map[_x]]:["ident",x])}));(CSSCompressor["compressRgb"]=(function (x){var t = undefined,h = "";if(((((x["length"] === (5)) && (x[(0)][(0)] === "number")) && (x[(2)][(0)] === "number")) && (x[(4)][(0)] === "number"))){(h+=(((t=Number(x[(0)][(1)]).toString((16)))["length"] === (1))?("0" + t):t));(h+=(((t=Number(x[(2)][(1)]).toString((16)))["length"] === (1))?("0" + t):t));(h+=(((t=Number(x[(4)][(1)]).toString((16)))["length"] === (1))?("0" + t):t));return this.compressColorHash(h)}else{return ["function",["ident","rgb"]].concat(x)}}))}
View
9 test/test.js
@@ -13,15 +13,6 @@ var funcs = {
'p': function parse(src, match) {
return treeToString(_parse(src, match));
},
- 'f': function transform(src, match) {
- return treeToString(_transform(_parse(src, match), match));
- },
- 'c': function compress(src, match) {
- return treeToString(_compress(_parse(src, match), match));
- },
- 'cl': function compressTranslate(src, match) {
- return _translate(_compress(_parse(src, match), match), match);
- },
'l': function translate(src, match) {
return _translate(_transform(_parse(src, match), match), match);
}
Please sign in to comment.
Something went wrong with that request. Please try again.