mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-07-10 01:15:06 +02:00
Start of new epub reader
This commit is contained in:
parent
70ba2f7850
commit
44363f05ac
16 changed files with 1761 additions and 2 deletions
199
server/libs/css/stringify/compress.js
Normal file
199
server/libs/css/stringify/compress.js
Normal file
|
@ -0,0 +1,199 @@
|
|||
|
||||
/**
|
||||
* Module dependencies.
|
||||
*/
|
||||
|
||||
var Base = require('./compiler');
|
||||
var inherits = require('inherits');
|
||||
|
||||
/**
|
||||
* Expose compiler.
|
||||
*/
|
||||
|
||||
module.exports = Compiler;
|
||||
|
||||
/**
|
||||
* Initialize a new `Compiler`.
|
||||
*/
|
||||
|
||||
function Compiler(options) {
|
||||
Base.call(this, options);
|
||||
}
|
||||
|
||||
/**
|
||||
* Inherit from `Base.prototype`.
|
||||
*/
|
||||
|
||||
inherits(Compiler, Base);
|
||||
|
||||
/**
|
||||
* Compile `node`.
|
||||
*/
|
||||
|
||||
Compiler.prototype.compile = function(node){
|
||||
return node.stylesheet
|
||||
.rules.map(this.visit, this)
|
||||
.join('');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit comment node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.comment = function(node){
|
||||
return this.emit('', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit import node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.import = function(node){
|
||||
return this.emit('@import ' + node.import + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit media node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.media = function(node){
|
||||
return this.emit('@media ' + node.media, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit document node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.document = function(node){
|
||||
var doc = '@' + (node.vendor || '') + 'document ' + node.document;
|
||||
|
||||
return this.emit(doc, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit charset node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.charset = function(node){
|
||||
return this.emit('@charset ' + node.charset + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit namespace node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.namespace = function(node){
|
||||
return this.emit('@namespace ' + node.namespace + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit supports node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.supports = function(node){
|
||||
return this.emit('@supports ' + node.supports, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit keyframes node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.keyframes = function(node){
|
||||
return this.emit('@'
|
||||
+ (node.vendor || '')
|
||||
+ 'keyframes '
|
||||
+ node.name, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.keyframes)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit keyframe node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.keyframe = function(node){
|
||||
var decls = node.declarations;
|
||||
|
||||
return this.emit(node.values.join(','), node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(decls)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit page node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.page = function(node){
|
||||
var sel = node.selectors.length
|
||||
? node.selectors.join(', ')
|
||||
: '';
|
||||
|
||||
return this.emit('@page ' + sel, node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.declarations)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit font-face node.
|
||||
*/
|
||||
|
||||
Compiler.prototype['font-face'] = function(node){
|
||||
return this.emit('@font-face', node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.declarations)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit host node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.host = function(node){
|
||||
return this.emit('@host', node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(node.rules)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit custom-media node.
|
||||
*/
|
||||
|
||||
Compiler.prototype['custom-media'] = function(node){
|
||||
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit rule node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.rule = function(node){
|
||||
var decls = node.declarations;
|
||||
if (!decls.length) return '';
|
||||
|
||||
return this.emit(node.selectors.join(','), node.position)
|
||||
+ this.emit('{')
|
||||
+ this.mapVisit(decls)
|
||||
+ this.emit('}');
|
||||
};
|
||||
|
||||
/**
|
||||
* Visit declaration node.
|
||||
*/
|
||||
|
||||
Compiler.prototype.declaration = function(node){
|
||||
return this.emit(node.property + ':' + node.value, node.position) + this.emit(';');
|
||||
};
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue