name-finder

    0.15.1 • Public • Published

    name-finder

    Sorts a list of strings by the similarity of the search value and filter with it

    I will help if you have any difficulty =)

    Contact me by github:heyderpd. I'll be glad to help you.

    Thanks for npm~lucasmreis

    Example of rank with list of strings:

    import { regexName, match, rank } from 'name-finder'
     
    const list = [
      'John Lennon',
      'José Sìlvéîrã',
      'Jose da Silva',
      'Jose Silveira',
      'Jôse Sìlveira'
    ]
     
    const listSortByRank = rank({
      find: 'Jôse Sìlveira',
      list
    })
     
    listSortByRank = [
      'Jôse Sìlveira',
      'Jose Silveira',
      'José Sìlvéîrã',
      'Jose da Silva'
    ]
     
    /*
    Find:
      [J][o][s][e][ ][S][i][l][v][a]
    Match chars:
      [J][o]hn L[e]nnon
      [J][o][s][e][ ]da [S][i][l][v][a]
    */

    Example of rank with list of object's:

    import { rank } from 'name-finder'
     
    const list = [
      { deep: { name: 'John Lennon',   things: [1,2,3] }, },
      { deep: { name: 'José Sìlvéîrã', xyz: '123' }, },
      { deep: { name: 'Jose da Silva', r: 42 },      },
      { deep: { name: 'Jose Silveira', o: o },       },
      { deep: { name: 'Jôse Sìlveira', f: f }        }
    ]
     
    const listSortByRank = rank({
      find: 'Jôse Sìlveira',
      list,
      propPath: ['deep', 'name'],
      limit: 50
    })
     
    listSortByRank = [
      { deep: { name: 'Jôse Sìlveira', f: f }       },
      { deep: { name: 'Jose Silveira', o: o }       },
      { deep: { name: 'José Sìlvéîrã', xyz: '123' } },
      { deep: { name: 'Jose da Silva', r: 42 }      }
    ]

    Example of match:

    const listOfNameAndRanks = match('Jôse Sìlveira', list)
     
    listOfNameAndRanks = [
      { value: 'José Sìlvéîrã', match: 'José Sìlvéîrã', rank: 97.3  },
      { value: 'Jose da Silva', match: 'Jose Silv***a', rank: 58.53 },
      { value: 'Jose Silveira', match: 'Jose Silveira', rank: 98.92 },
      { value: 'Jôse Sìlveira', match: 'Jôse Sìlveira', rank: 100   }
    ]

    Example of regexName:

    const pattern = regexName(what).pattern
     
    pattern = /(?:[^J]*([J]))?(?:[^oóòõôö]*([oóòõôö]))?(?:[^sśŝ]*([sśŝ]))?(?:[^eéèẽêë]*([eéèẽêë]))?(?:[^ ]*([ ]))?(?:[^sśŝ]*([sśŝ]))?(?:[^iíìĩîï]*([iíìĩîï]))?(?:[^]*([]))?(?:[^v]*([v]))?(?:[^eéèẽêë]*([eéèẽêë]))?(?:[^iíìĩîï]*([iíìĩîï]))?(?:[^]*([]))?(?:[^aáàãâä]*([aáàãâä]))?/i

    Install

    npm i name-finder

    DownloadsWeekly Downloads

    1

    Version

    0.15.1

    License

    MIT

    Last publish

    Collaborators

    • heyderpd