@extjs/sencha-cmd-linux-32
Version:
Productivity and performance optimization tool for building applications with Sencha Ext JS and Sencha Touch.
105 lines (89 loc) • 3.6 kB
JavaScript
;
var Fashion = require('../export/Base.js');
var Numeric = require('../export/type/Numeric.js');
var Literal = require('../export/type/Literal.js');
module.exports = {
init(runtime) {
runtime.register({
percentage: function (value) {
if (value == null || value.$isFashionNull) {
return Literal.Null;
}
if (value.type != 'number' || value.getUnitStr()) {
Fashion.raise(value + ' is not a unitless number for \'percentage\'');
}
return new Numeric(value.value * 100, '%');
},
round: function (value) {
if (value == null || value.$isFashionNull) {
return Literal.Null;
}
if (value.type !== 'number') {
Fashion.raise(value + ' is not a number for \'round\'');
}
return new Numeric(Math.round(value.value), value.unit);
},
ceil: function (value) {
if (value == null || value.$isFashionNull) {
return Literal.Null;
}
if (value.type !== 'number') {
Fashion.raise(value + ' is not a number for \'ceil\'');
}
return new Numeric(Math.ceil(value.value), value.unit);
},
floor: function (value) {
if (value == null || value.$isFashionNull) {
return Literal.Null;
}
if (value.type !== 'number') {
Fashion.raise(value + ' is not a number for \'floor\'');
}
return new Numeric(Math.floor(value.value), value.unit);
},
abs: function (value) {
if (value == null || value.$isFashionNull) {
return Literal.Null;
}
if (value.type !== 'number') {
Fashion.raise(value + ' is not a number for \'abs\'');
}
return new Numeric(Math.abs(value.value), value.unit);
},
min: function () {
var args = this.sliceArgs(arguments),
arg, i, min;
for (i = 0; i < args.length; i++) {
arg = args[i];
if (arg == null || arg.$isFashionNull) {
return Literal.Null;
}
if (!arg || !arg.$isFashionNumber) {
Fashion.raise(arg + ' is not a number for \'min\'');
}
if (!min || this.unbox(arg.operate('<', min))) {
min = arg;
}
}
return min && min.copy();
},
max: function (a, b) {
var args = this.sliceArgs(arguments),
arg, i, max;
for (i = 0; i < args.length; i++) {
arg = args[i];
if (arg == null || arg.$isFashionNull) {
return Literal.Null;
}
if (!arg || !arg.$isFashionNumber) {
Fashion.raise(arg + ' is not a number for \'max\'');
}
if (!max || this.unbox(arg.operate('>', max))) {
max = arg;
}
}
return max && max.copy();
}
});
}
};