• Jump To … +
    abbreviations.js adjectives.js convertables.js dates.js demonyms.js firstnames.js honourifics.js irregular_nouns.js irregular_verbs.js misc.js multiples.js numbers.js organisations.js phrasal_verbs.js places.js uncountables.js verbs.js fns.js index.js lexicon.js negate.js passive_voice.js contractions.js fancy_lumping.js grammar_rules.js parts_of_speech.js phrasal_verbs.js tagger.js word_rules.js question.js sentence.js statement.js tense.js adjective.js to_adverb.js to_comparative.js to_noun.js to_superlative.js adverb.js to_adjective.js is_acronym.js article.js date.js date_rules.js is_date.js parse_date.js is_plural.js is_uncountable.js noun.js is_organisation.js organisation.js gender.js is_person.js parse_name.js person.js is_place.js place.js pluralize.js pronoun.js singularize.js is_value.js numbers.js to_number.js units.js value.js term.js conjugate.js from_infinitive.js predict_form.js suffix_rules.js to_actor.js to_infinitive.js negate.js verb.js sentence_parser.js text.js
  • is_place.js

  • ¶
    'use strict';
    
    const places = require('../../../data/places');
    const abbreviations = require('../../../data/abbreviations');
  • ¶

    add Country names

    let isPlace = places.countries.reduce(function(h, s) {
      h[s] = true;
      return h;
    }, {});
  • ¶

    add City names

    places.cities.forEach(function(s) {
      isPlace[s] = true;
    });
  • ¶

    add place abbreviations names

    abbreviations.places.forEach(function(s) {
      isPlace[s] = true;
    });
  • ¶

    these are signals too

    let placeSignals = [
      'west',
      'east',
      'nort',
      'south',
      'western',
      'eastern',
      'nortern',
      'southern',
      'city',
      'town',
      'county',
      'state',
      'province',
    ].reduce(function(h, s) {
      h[s] = true;
      return h;
    }, {});
    
    const is_place = function(str) {
      let words = str.split();
      for(let i = 0; i < words.length; i++) {
        if (isPlace[words[i]]) {
          return true;
        }
        if (placeSignals[words[i]] && !placeSignals[str]) {
          return true;
        }
      }
    
      return false;
    };
    
    module.exports = is_place;