cql-execution
Version:
An execution framework for the Clinical Quality Language (CQL)
277 lines (217 loc) • 7.52 kB
JavaScript
// Generated by CoffeeScript 1.12.7
(function() {
var Combine, Concatenate, EndsWith, Expression, Lower, Matches, PositionOf, Split, SplitOnMatches, StartsWith, Substring, UnimplementedExpression, Upper, build, ref,
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
hasProp = {}.hasOwnProperty;
ref = require('./expression'), Expression = ref.Expression, UnimplementedExpression = ref.UnimplementedExpression;
build = require('./builder').build;
module.exports.Concatenate = Concatenate = (function(superClass) {
extend(Concatenate, superClass);
function Concatenate(json) {
Concatenate.__super__.constructor.apply(this, arguments);
}
Concatenate.prototype.exec = function(ctx) {
var args;
args = this.execArgs(ctx);
if (args.some(function(x) {
return x == null;
})) {
return null;
} else {
return args.reduce(function(x, y) {
return x + y;
});
}
};
return Concatenate;
})(Expression);
module.exports.Combine = Combine = (function(superClass) {
extend(Combine, superClass);
function Combine(json) {
Combine.__super__.constructor.apply(this, arguments);
this.source = build(json.source);
this.separator = build(json.separator);
}
Combine.prototype.exec = function(ctx) {
var separator, source;
source = this.source.execute(ctx);
separator = this.separator != null ? this.separator.execute(ctx) : '';
if ((source == null) || source.some(function(x) {
return x == null;
})) {
return null;
} else {
return source.join(separator);
}
};
return Combine;
})(Expression);
module.exports.Split = Split = (function(superClass) {
extend(Split, superClass);
function Split(json) {
Split.__super__.constructor.apply(this, arguments);
this.stringToSplit = build(json.stringToSplit);
this.separator = build(json.separator);
}
Split.prototype.exec = function(ctx) {
var separator, stringToSplit;
stringToSplit = this.stringToSplit.execute(ctx);
separator = this.separator.execute(ctx);
if (!((stringToSplit != null) && (separator != null))) {
return null;
} else {
return stringToSplit.split(separator);
}
};
return Split;
})(Expression);
module.exports.SplitOnMatches = SplitOnMatches = (function(superClass) {
extend(SplitOnMatches, superClass);
function SplitOnMatches(json) {
SplitOnMatches.__super__.constructor.apply(this, arguments);
this.stringToSplit = build(json.stringToSplit);
this.separatorPattern = build(json.separatorPattern);
}
SplitOnMatches.prototype.exec = function(ctx) {
var separatorPattern, stringToSplit;
stringToSplit = this.stringToSplit.execute(ctx);
separatorPattern = this.separatorPattern.execute(ctx);
if (!((stringToSplit != null) && (separatorPattern != null))) {
return null;
} else {
return stringToSplit.split(new RegExp(separatorPattern));
}
};
return SplitOnMatches;
})(Expression);
module.exports.Upper = Upper = (function(superClass) {
extend(Upper, superClass);
function Upper(json) {
Upper.__super__.constructor.apply(this, arguments);
}
Upper.prototype.exec = function(ctx) {
var arg;
arg = this.execArgs(ctx);
if (arg != null) {
return arg.toUpperCase();
} else {
return null;
}
};
return Upper;
})(Expression);
module.exports.Lower = Lower = (function(superClass) {
extend(Lower, superClass);
function Lower(json) {
Lower.__super__.constructor.apply(this, arguments);
}
Lower.prototype.exec = function(ctx) {
var arg;
arg = this.execArgs(ctx);
if (arg != null) {
return arg.toLowerCase();
} else {
return null;
}
};
return Lower;
})(Expression);
module.exports.PositionOf = PositionOf = (function(superClass) {
extend(PositionOf, superClass);
function PositionOf(json) {
PositionOf.__super__.constructor.apply(this, arguments);
this.pattern = build(json.pattern);
this.string = build(json.string);
}
PositionOf.prototype.exec = function(ctx) {
var pattern, string;
pattern = this.pattern.execute(ctx);
string = this.string.execute(ctx);
if (!((pattern != null) && (string != null))) {
return null;
} else {
return string.indexOf(pattern);
}
};
return PositionOf;
})(Expression);
module.exports.Matches = Matches = (function(superClass) {
extend(Matches, superClass);
function Matches(json) {
Matches.__super__.constructor.apply(this, arguments);
}
Matches.prototype.exec = function(ctx) {
var pattern, ref1, string;
ref1 = this.execArgs(ctx), string = ref1[0], pattern = ref1[1];
if (!((string != null) && (pattern != null))) {
return null;
}
if (string.match(new RegExp(pattern))) {
return true;
} else {
return false;
}
};
return Matches;
})(Expression);
module.exports.Substring = Substring = (function(superClass) {
extend(Substring, superClass);
function Substring(json) {
Substring.__super__.constructor.apply(this, arguments);
this.stringToSub = build(json.stringToSub);
this.startIndex = build(json.startIndex);
this.length = build(json['length']);
}
Substring.prototype.exec = function(ctx) {
var length, startIndex, stringToSub;
stringToSub = this.stringToSub.execute(ctx);
startIndex = this.startIndex.execute(ctx);
length = this.length != null ? this.length.execute(ctx) : null;
if ((stringToSub == null) || (startIndex == null) || startIndex < 0 || startIndex >= stringToSub.length) {
return null;
} else if (length != null) {
return stringToSub.substr(startIndex, length);
} else {
return stringToSub.substr(startIndex);
}
};
return Substring;
})(Expression);
module.exports.StartsWith = StartsWith = (function(superClass) {
extend(StartsWith, superClass);
function StartsWith(json) {
StartsWith.__super__.constructor.apply(this, arguments);
}
StartsWith.prototype.exec = function(ctx) {
var args;
args = this.execArgs(ctx);
if (args.some(function(x) {
return x == null;
})) {
return null;
} else {
return args[0].slice(0, args[1].length) === args[1];
}
};
return StartsWith;
})(Expression);
module.exports.EndsWith = EndsWith = (function(superClass) {
extend(EndsWith, superClass);
function EndsWith(json) {
EndsWith.__super__.constructor.apply(this, arguments);
}
EndsWith.prototype.exec = function(ctx) {
var args;
args = this.execArgs(ctx);
if (args.some(function(x) {
return x == null;
})) {
return null;
} else {
return args[1] === '' || args[0].slice(-args[1].length) === args[1];
}
};
return EndsWith;
})(Expression);
}).call(this);
//# sourceMappingURL=string.js.map