Skip to content

Commit

Permalink
make rule immutable
Browse files Browse the repository at this point in the history
  • Loading branch information
ashwinr committed Aug 4, 2013
1 parent 6c844f1 commit b6daa76
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 42 deletions.
33 changes: 14 additions & 19 deletions bin/tslint-cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -26214,8 +26214,9 @@ var Lint;
(function (Lint) {
(function (Rules) {
var AbstractRule = (function () {
function AbstractRule(name) {
function AbstractRule(name, value) {
this.name = name;
this.value = value;
}
AbstractRule.prototype.getName = function () {
return this.name;
Expand All @@ -26225,10 +26226,6 @@ var Lint;
return this.value;
};

AbstractRule.prototype.setValue = function (value) {
this.value = value;
};

AbstractRule.prototype.apply = function (syntaxTree) {
throw TypeScript.Errors.abstract();
};
Expand Down Expand Up @@ -26744,7 +26741,7 @@ var Lint;
} else if (quoteStyleString === "double") {
quoteStyle = QuoteStyle.DOUBLE_QUOTES;
} else {
throw new Error("Unknown quote style " + quoteStyle);
throw new Error("Unknown quote style " + quoteStyleString);
}

return this.applyWithWalker(new QuoteWalker(syntaxTree, quoteStyle));
Expand Down Expand Up @@ -27431,18 +27428,18 @@ var Lint;
"whitespace": Rules.WhitespaceRule.prototype
};

function getRuleForName(name) {
function createRule(name, value) {
var rule = undefined;
var rulePrototype = ALL_RULES[name];
if (rulePrototype === undefined) {
return rulePrototype;
}

var rule = Object.create(rulePrototype);
rule.constructor(name);
if (rulePrototype !== undefined) {
rule = Object.create(rulePrototype);
rule.constructor(name, value);
}

return rule;
}
Rules.getRuleForName = getRuleForName;
Rules.createRule = createRule;
})(Lint.Rules || (Lint.Rules = {}));
var Rules = Lint.Rules;
})(Lint || (Lint = {}));
Expand Down Expand Up @@ -27485,15 +27482,13 @@ var Lint;

for (var ruleName in configuration) {
if (configuration.hasOwnProperty(ruleName)) {
var rule = Lint.Rules.getRuleForName(ruleName);
var ruleValue = configuration[ruleName];
var rule = Lint.Rules.createRule(ruleName, ruleValue);
if (rule === undefined) {
console.warn("ignoring unrecognized rule '" + ruleName + "'");
continue;
} else {
rules.push(rule);
}

var ruleValue = configuration[ruleName];
rule.setValue(ruleValue);
rules.push(rule);
}
}

Expand Down
12 changes: 5 additions & 7 deletions src/configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,13 @@ module Lint.Configuration {

for (var ruleName in configuration) {
if (configuration.hasOwnProperty(ruleName)) {
var rule = Lint.Rules.getRuleForName(ruleName);
var ruleValue = configuration[ruleName];
var rule = Rules.createRule(ruleName, ruleValue);
if (rule === undefined) {
console.warn("ignoring unrecognized rule '" + ruleName + "'");
continue;
}

var ruleValue = configuration[ruleName];
rule.setValue(ruleValue);
rules.push(rule);
} else {
rules.push(rule);
}
}
}

Expand Down
7 changes: 2 additions & 5 deletions src/rules/abstractRule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ module Lint.Rules {
private name: string;
private value: any;

constructor(name: string) {
constructor(name: string, value: any) {
this.name = name;
this.value = value;
}

public getName() {
Expand All @@ -36,10 +37,6 @@ module Lint.Rules {
return this.value;
}

public setValue(value: any): void {
this.value = value;
}

public apply(syntaxTree: TypeScript.SyntaxTree): RuleFailure[] {
throw TypeScript.Errors.abstract();
}
Expand Down
4 changes: 2 additions & 2 deletions src/rules/quoteStyleRule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ module Lint.Rules {
} else if (quoteStyleString === "double") {
quoteStyle = QuoteStyle.DOUBLE_QUOTES;
} else {
throw new Error("Unknown quote style " + quoteStyle);
throw new Error("Unknown quote style " + quoteStyleString);
}

return this.applyWithWalker(new QuoteWalker(syntaxTree, quoteStyle));
Expand All @@ -48,7 +48,7 @@ module Lint.Rules {

private quoteStyle : QuoteStyle;

constructor (syntaxTree: TypeScript.SyntaxTree, quoteStyle: QuoteStyle) {
constructor(syntaxTree: TypeScript.SyntaxTree, quoteStyle: QuoteStyle) {
super(syntaxTree);
this.quoteStyle = quoteStyle;
}
Expand Down
3 changes: 0 additions & 3 deletions src/rules/rule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,11 @@

module Lint {

// TODO: Make this immutable somehow
export interface Rule {
getName(): string;

getValue(): any;

setValue(value: any): void;

apply(syntaxTree: TypeScript.SyntaxTree): RuleFailure[];
}

Expand Down
12 changes: 6 additions & 6 deletions src/rules/rules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,14 @@ module Lint.Rules {
"whitespace": WhitespaceRule.prototype
}

export function getRuleForName(name: string): Rule {
export function createRule(name: string, value: any): Rule {
var rule = undefined;
var rulePrototype = ALL_RULES[name];
if(rulePrototype === undefined) {
return rulePrototype;
}

var rule = Object.create(rulePrototype);
rule.constructor(name);
if (rulePrototype !== undefined) {
rule = Object.create(rulePrototype);
rule.constructor(name, value);
}

return rule;
}
Expand Down

0 comments on commit b6daa76

Please sign in to comment.