UNPKG

cql-execution

Version:

An execution framework for the Clinical Quality Language (CQL)

277 lines (217 loc) 7.52 kB
// 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