diff --git a/src/rules/indentationMultiple.spec.ts b/src/rules/indentationMultiple.spec.ts index 830c055..b5a84e0 100644 --- a/src/rules/indentationMultiple.spec.ts +++ b/src/rules/indentationMultiple.spec.ts @@ -14,6 +14,12 @@ describe('indentationMultiple', () => { expect(indentationMultiple.test(line, 1, config)).toEqual([]) }) + it('should ignore indentation when the multiple is set to 0', () => { + const line = " %put 'hello';" + const config = new LintConfig({ indentationMultiple: 0 }) + expect(indentationMultiple.test(line, 1, config)).toEqual([]) + }) + it('should return an empty array when the line is not indented', () => { const line = "%put 'hello';" const config = new LintConfig({ indentationMultiple: 2 }) diff --git a/src/rules/indentationMultiple.ts b/src/rules/indentationMultiple.ts index dee096d..b0a3874 100644 --- a/src/rules/indentationMultiple.ts +++ b/src/rules/indentationMultiple.ts @@ -9,9 +9,13 @@ const message = 'Line has incorrect indentation' const test = (value: string, lineNumber: number, config?: LintConfig) => { if (!value.startsWith(' ')) return [] - const indentationMultiple = config?.indentationMultiple || 2 + const indentationMultiple = isNaN(config?.indentationMultiple as number) + ? 2 + : config?.indentationMultiple + + if (indentationMultiple === 0) return [] const numberOfSpaces = value.search(/\S|$/) - if (numberOfSpaces % indentationMultiple === 0) return [] + if (numberOfSpaces % indentationMultiple! === 0) return [] return [ { message: `${message} - ${numberOfSpaces} ${ diff --git a/src/types/LintConfig.spec.ts b/src/types/LintConfig.spec.ts index 2b4b1b1..e11cd83 100644 --- a/src/types/LintConfig.spec.ts +++ b/src/types/LintConfig.spec.ts @@ -40,6 +40,20 @@ describe('LintConfig', () => { expect(config.fileLintRules[0].type).toEqual(LintRuleType.File) }) + it('should create an instance with the indentation multiple set', () => { + const config = new LintConfig({ indentationMultiple: 5 }) + + expect(config).toBeTruthy() + expect(config.indentationMultiple).toEqual(5) + }) + + it('should create an instance with the indentation multiple turned off', () => { + const config = new LintConfig({ indentationMultiple: 0 }) + + expect(config).toBeTruthy() + expect(config.indentationMultiple).toEqual(0) + }) + it('should create an instance with all flags set', () => { const config = new LintConfig({ noTrailingSpaces: true, diff --git a/src/types/LintConfig.ts b/src/types/LintConfig.ts index f83de33..184202e 100644 --- a/src/types/LintConfig.ts +++ b/src/types/LintConfig.ts @@ -19,8 +19,8 @@ export class LintConfig { readonly lineLintRules: LineLintRule[] = [] readonly fileLintRules: FileLintRule[] = [] readonly pathLintRules: PathLintRule[] = [] - readonly maxLineLength = 80 - readonly indentationMultiple = 2 + readonly maxLineLength: number = 80 + readonly indentationMultiple: number = 2 constructor(json?: any) { if (json?.noTrailingSpaces) { @@ -40,8 +40,8 @@ export class LintConfig { this.lineLintRules.push(maxLineLength) } - if (json?.indentationMultiple) { - this.indentationMultiple = json.indentationMultiple + if (!isNaN(json?.indentationMultiple)) { + this.indentationMultiple = json.indentationMultiple as number this.lineLintRules.push(indentationMultiple) }