From 43bac4f637c95b80e235541ec573b0c9fd2fe478 Mon Sep 17 00:00:00 2001 From: xarxziux <14932450+xarxziux@users.noreply.github.com> Date: Sun, 18 Nov 2018 11:25:10 +0000 Subject: [PATCH 1/2] Fix ESLint errors in OCR Number test script As per issue #480: - Fix all ESLint errors in ocr-numbers.spec.js file. I have NOT removed the OCR Numbers entry in .eslintconfig as the example,js file has other errors which require non-trivial fixes. --- exercises/ocr-numbers/ocr-numbers.spec.js | 145 +++++++++++----------- 1 file changed, 73 insertions(+), 72 deletions(-) diff --git a/exercises/ocr-numbers/ocr-numbers.spec.js b/exercises/ocr-numbers/ocr-numbers.spec.js index 5b07053877..7c18df842d 100644 --- a/exercises/ocr-numbers/ocr-numbers.spec.js +++ b/exercises/ocr-numbers/ocr-numbers.spec.js @@ -1,156 +1,157 @@ import Ocr from './ocr-numbers'; + const ocr = new Ocr(); describe('ocr', () => { test('recognizes zero', () => { expect(ocr.convert( - ' _ \n' + - '| |\n' + - '|_|\n' + - ' ', + ' _ \n' + + '| |\n' + + '|_|\n' + + ' ', )).toBe('0'); }); xtest('recognizes one', () => { expect(ocr.convert( - ' \n' + - ' |\n' + - ' |\n' + - ' ', + ' \n' + + ' |\n' + + ' |\n' + + ' ', )).toBe('1'); }); xtest('recognizes two', () => { expect(ocr.convert( - ' _ \n' + - ' _|\n' + - '|_ \n' + - ' ', + ' _ \n' + + ' _|\n' + + '|_ \n' + + ' ', )).toBe('2'); }); xtest('recognizes three', () => { expect(ocr.convert( - ' _ \n' + - ' _|\n' + - ' _|\n' + - ' ', + ' _ \n' + + ' _|\n' + + ' _|\n' + + ' ', )).toBe('3'); }); xtest('recognizes four', () => { expect(ocr.convert( - ' \n' + - '|_|\n' + - ' |\n' + - ' ', + ' \n' + + '|_|\n' + + ' |\n' + + ' ', )).toBe('4'); }); xtest('recognizes five', () => { expect(ocr.convert( - ' _ \n' + - '|_ \n' + - ' _|\n' + - ' ', + ' _ \n' + + '|_ \n' + + ' _|\n' + + ' ', )).toBe('5'); }); xtest('recognizes six', () => { expect(ocr.convert( - ' _ \n' + - '|_ \n' + - '|_|\n' + - ' ', + ' _ \n' + + '|_ \n' + + '|_|\n' + + ' ', )).toBe('6'); }); xtest('recognizes seven', () => { expect(ocr.convert( - ' _ \n' + - ' |\n' + - ' |\n' + - ' ', + ' _ \n' + + ' |\n' + + ' |\n' + + ' ', )).toBe('7'); }); xtest('recognizes eight', () => { expect(ocr.convert( - ' _ \n' + - '|_|\n' + - '|_|\n' + - ' ', + ' _ \n' + + '|_|\n' + + '|_|\n' + + ' ', )).toBe('8'); }); xtest('recognizes nine', () => { expect(ocr.convert( - ' _ \n' + - '|_|\n' + - ' _|\n' + - ' ', + ' _ \n' + + '|_|\n' + + ' _|\n' + + ' ', )).toBe('9'); }); xtest('recognizes ten', () => { expect(ocr.convert( - ' _ \n' + - ' || |\n' + - ' ||_|\n' + - ' ', + ' _ \n' + + ' || |\n' + + ' ||_|\n' + + ' ', )).toBe('10'); }); xtest('identifies garble', () => { expect(ocr.convert( - ' \n' + - '| |\n' + - '| |\n' + - ' ', + ' \n' + + '| |\n' + + '| |\n' + + ' ', )).toBe('?'); }); xtest('converts 110101100', () => { expect(ocr.convert( - ' _ _ _ _ \n' + - ' | || | || | | || || |\n' + - ' | ||_| ||_| | ||_||_|\n' + - ' ', + ' _ _ _ _ \n' + + ' | || | || | | || || |\n' + + ' | ||_| ||_| | ||_||_|\n' + + ' ', )).toBe('110101100'); }); xtest('identifies garble mixed in', () => { expect(ocr.convert( - ' _ _ _ \n' + - ' | || | || | || || |\n' + - ' | | _| ||_| | ||_||_|\n' + - ' ', + ' _ _ _ \n' + + ' | || | || | || || |\n' + + ' | | _| ||_| | ||_||_|\n' + + ' ', )).toBe('11?10?1?0'); }); xtest('converts 1234567890', () => { expect(ocr.convert( - ' _ _ _ _ _ _ _ _ \n' + - ' | _| _||_||_ |_ ||_||_|| |\n' + - ' ||_ _| | _||_| ||_| _||_|\n' + - ' ', + ' _ _ _ _ _ _ _ _ \n' + + ' | _| _||_||_ |_ ||_||_|| |\n' + + ' ||_ _| | _||_| ||_| _||_|\n' + + ' ', )).toBe('1234567890'); }); xtest('converts 123 456 789', () => { expect(ocr.convert( - ' _ _ \n' + - ' | _| _|\n' + - ' ||_ _|\n' + - ' \n' + - ' _ _ \n' + - '|_||_ |_ \n' + - ' | _||_|\n' + - ' \n' + - ' _ _ _ \n' + - ' ||_||_|\n' + - ' ||_| _|\n' + - ' ', + ' _ _ \n' + + ' | _| _|\n' + + ' ||_ _|\n' + + ' \n' + + ' _ _ \n' + + '|_||_ |_ \n' + + ' | _||_|\n' + + ' \n' + + ' _ _ _ \n' + + ' ||_||_|\n' + + ' ||_| _|\n' + + ' ', )).toBe('123,456,789'); }); }); From 80e4413f365fab398c6eda88ac20495243a45790 Mon Sep 17 00:00:00 2001 From: xarxziux <14932450+xarxziux@users.noreply.github.com> Date: Mon, 19 Nov 2018 23:03:25 +0000 Subject: [PATCH 2/2] Fix ESLint errors in OCR numbers example.js As per issue #480: - Fix two `no-plusplus` errors on lines 57 and 70. - Fix `one-var` error on line 66. - Rewrite `getDigit()` method. - Add disable rule for `class-methods-use-this` error on line 44. --- .eslintignore | 1 - exercises/ocr-numbers/example.js | 23 ++++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.eslintignore b/.eslintignore index f97a5b45c3..f36cbae53b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -14,7 +14,6 @@ list-ops meetup minesweeper nth-prime -ocr-numbers palindrome-products point-mutations prime-factors diff --git a/exercises/ocr-numbers/example.js b/exercises/ocr-numbers/example.js index 2aca0fb3dc..489cda273b 100644 --- a/exercises/ocr-numbers/example.js +++ b/exercises/ocr-numbers/example.js @@ -41,6 +41,7 @@ const PATTERNS = { ' '], }; export default class Parser { + // eslint-disable-next-line class-methods-use-this convert(text) { return Parser.splitIntoRows(text).map(Parser.valuesInRow).join(','); } @@ -54,7 +55,7 @@ export default class Parser { const lines = text.split('\n'); for (let rowNumber = 0; rowNumber < lines.length; rowNumber += 4) { let row = ''; - for (let rowLine = 0; rowLine < 4; rowLine++) { + for (let rowLine = 0; rowLine < 4; rowLine += 1) { row += `${lines[rowNumber + rowLine]}\n`; } rows.push(row.slice(0, -1)); @@ -63,11 +64,11 @@ export default class Parser { } static splitIntoDigits(row) { - const digits = [], - rows = row.split('\n'); + const digits = []; + const rows = row.split('\n'); for (let digitNumber = 0; digitNumber < rows[0].length; digitNumber += 3) { let digit = ''; - for (let rowNumber = 0; rowNumber < rows.length; rowNumber++) { + for (let rowNumber = 0; rowNumber < rows.length; rowNumber += 1) { digit += rows[rowNumber].substr(digitNumber, 3); } digits.push(digit); @@ -76,13 +77,13 @@ export default class Parser { } static getDigit(text) { - for (const digit in PATTERNS) { - if (PATTERNS.hasOwnProperty(digit)) { - if (PATTERNS[digit].join('') === text) { - return digit; - } - } + const digit = Object + .values(PATTERNS) + .map(x => x.join('')) + .indexOf(text); + if (digit === -1) { + return '?'; } - return '?'; + return digit; } }