1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const utils_1 = require("./utils");
|
4 | const enumerations_1 = require("./enumerations");
|
5 | class Rule {
|
6 | constructor(rule) {
|
7 | this.id = rule.id;
|
8 | this.name = rule.name;
|
9 | this.label = rule.label || rule.name.replace(/([A-Z_])/g, ' $1').trim();
|
10 | this.description = rule.description;
|
11 | this.statedAs = rule.statedAs;
|
12 | this.aliases = rule.aliases;
|
13 | this.dataType = rule.dataType || enumerations_1.DataTypeEnum.String;
|
14 | this.sampleValue = rule.sampleValue;
|
15 | }
|
16 | expectedFacts() {
|
17 | if (this.statedAs !== undefined) {
|
18 | return utils_1.extractUndeclaredVarsFromCode(this.statedAs);
|
19 | }
|
20 | return [];
|
21 | }
|
22 | getRule() {
|
23 | utils_1.assert(!!this.statedAs, `This rule hasn't been stated`, `FACT-01`);
|
24 | let code = this.statedAs || "";
|
25 | if ((code.indexOf("theResultIs") === -1)) {
|
26 | utils_1.assert(code.trim().split(";").length <= 1, `When using multiple statements, please use theResultIs.`, `FACT-02`);
|
27 | return utils_1.formatCode(`theResultIs(${code})`);
|
28 | }
|
29 | else {
|
30 | return utils_1.formatCode(code);
|
31 | }
|
32 | }
|
33 | }
|
34 | exports.Rule = Rule;
|
35 |
|
\ | No newline at end of file |