Skip to content

Commit

Permalink
Remove usage of lodash _.reject and _.compact.
Browse files Browse the repository at this point in the history
Relates to #68.
  • Loading branch information
Shahar Soel committed Jan 8, 2016
1 parent 55a49df commit 4fe9478
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/parse/grammar/checks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,7 @@ namespace chevrotain.checks {
return null
}
})
return errors.concat(_.compact(currErrors))
return errors.concat(utils.compact(currErrors))
}, [])

return errors
Expand Down
4 changes: 2 additions & 2 deletions src/scan/lexer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace chevrotain {

export function analyzeTokenClasses(tokenClasses:TokenConstructor[]):IAnalyzeResult {

let onlyRelevantClasses = _.reject(tokenClasses, (currClass) => {
let onlyRelevantClasses = utils.reject(tokenClasses, (currClass) => {
return currClass[PATTERN] === Lexer.NA
})

Expand Down Expand Up @@ -192,7 +192,7 @@ namespace chevrotain {
}, [])
})

identicalPatterns = _.compact(identicalPatterns)
identicalPatterns = utils.compact(identicalPatterns)

let duplicatePatterns = utils.filter(identicalPatterns, (currIdenticalSet) => {
return currIdenticalSet.length > 1
Expand Down
8 changes: 8 additions & 0 deletions src/utils/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ namespace chevrotain.utils {
return result
}

export function reject<T>(arr:T[], predicate:(T) => boolean):T[] {
return filter(arr, (item) => !predicate(item))
}

export function has(obj:any, prop:string):boolean {
return obj.hasOwnProperty(prop)
}
Expand Down Expand Up @@ -156,4 +160,8 @@ namespace chevrotain.utils {
}
return accumulator
}

export function compact<T>(arr:T[]):T[] {
return reject(arr, (item) => item === null || item === undefined)
}
}
16 changes: 16 additions & 0 deletions test/utils/utils_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,15 @@ namespace chevrotain.utils.spec {
expect(filter(null, (item) => {return item % 2 === 1})).to.deep.equal([])
})

it("exports a reject utility", () => {
expect(reject([], (item) => {return true})).to.deep.equal([])
expect(reject([1, 2, 3], (item) => {return false})).to.deep.equal([1, 2, 3])
expect(reject([1, 2, 3], (item) => {return true})).to.deep.equal([])
expect(reject([1, 2, 3], (item) => {return item % 2 === 0})).to.deep.equal([1, 3])
expect(reject([1, 2, 3], (item) => {return item % 2 === 1})).to.deep.equal([2])
expect(reject(null, (item) => {return item % 2 === 1})).to.deep.equal([])
})

it("exports a has utility", () => {
expect(has([1, 2, 3], "0")).to.be.true
expect(has([1, 2, 3], "5")).to.be.false
Expand Down Expand Up @@ -97,6 +106,13 @@ namespace chevrotain.utils.spec {
return result.concat([item * 2])
}, [])).to.deep.equal([2, 4, 6])
})

it("exports a compact utility", () => {
expect(compact([1, 2, null, 3])).to.deep.equal([1, 2, 3])
expect(compact([1, undefined, 2, 3])).to.deep.equal([1, 2, 3])
expect(compact([])).to.deep.equal([])
expect(compact([1, 2, 3])).to.deep.equal([1, 2, 3])
})
})
}

0 comments on commit 4fe9478

Please sign in to comment.