From c0dc7869bea59eec337619654547c571b4ad770d Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Wed, 3 Jun 2020 17:29:04 +0200 Subject: [PATCH] fix(CentralEuropeanStreetNameClassifier): avoid use of section.end (#103) --- classifier/CentralEuropeanStreetNameClassifier.js | 4 +++- .../CentralEuropeanStreetNameClassifier.test.js | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/classifier/CentralEuropeanStreetNameClassifier.js b/classifier/CentralEuropeanStreetNameClassifier.js index 3fcd1c25..4c776578 100644 --- a/classifier/CentralEuropeanStreetNameClassifier.js +++ b/classifier/CentralEuropeanStreetNameClassifier.js @@ -20,7 +20,9 @@ class CentralEuropeanStreetNameClassifier extends SectionClassifier { let next = first.graph.findOne('next') // section must end with a HouseNumberClassification - if (!next || next.end !== section.end || !next.classifications.hasOwnProperty('HouseNumberClassification')) { return } + if (!next) { return } // no next span found + if (next.graph.findOne('next')) { return } // next span is NOT the final span in the section + if (!next.classifications.hasOwnProperty('HouseNumberClassification')) { return } // other elements cannot contain any public classifications if (_.some(first.classifications, (c) => c.public)) { return } diff --git a/classifier/CentralEuropeanStreetNameClassifier.test.js b/classifier/CentralEuropeanStreetNameClassifier.test.js index 369d6648..6b72aa53 100644 --- a/classifier/CentralEuropeanStreetNameClassifier.test.js +++ b/classifier/CentralEuropeanStreetNameClassifier.test.js @@ -23,16 +23,23 @@ module.exports.tests.classify = (test) => { baz.graph.add('next', bazHouseNum1) bazHouseNum1.graph.add('next', bazHouseNum2) + // The Qux test case covers when the section has a greater length than + // the tokens it contains, such as when it ends with whitespace. + let qux = new Span('Qux') + let quxHouseNum = new Span('1', 4).classify(new HouseNumberClassification(1.0)) + qux.graph.add('next', quxHouseNum) + let valid = [ new Span('Foo 1').setChildren([foo, fooHouseNum]), new Span('Bar 2137').setChildren([bar, barHouseNum]), - new Span('Baz 152/160').setChildren([baz, bazHouseNum0, bazHouseNum1, bazHouseNum2]) + new Span('Baz 152/160').setChildren([baz, bazHouseNum0, bazHouseNum1, bazHouseNum2]), + new Span('Qux 1 ').setChildren([qux, quxHouseNum]) ] valid.forEach(s => { test(`classify: ${s.body}`, (t) => { // run classifier - classifier.each(s, null, 1) + classifier.each(s) // get children let children = s.graph.findAll('child') @@ -40,7 +47,7 @@ module.exports.tests.classify = (test) => { // first child should now be classified as a street t.deepEqual(_.first(children).classifications, { StreetClassification: new StreetClassification(0.5) - }) + }, `'${s.body}'`) // last child was unchanged _.tail(children).forEach(c => {