korean-syllable-search-highlight

- 한국어 초성 검색 & 하이라이트 엔진 - Pure javascirpt로 개발 되어있습니다.

Usage no npm install needed!

<script type="module">
  import koreanSyllableSearchHighlight from 'https://cdn.skypack.dev/korean-syllable-search-highlight';
</script>

README

Korean Syllable Search and Highlight Engine

  • 한국어 초성 검색 & 하이라이트 엔진
  • Pure javascirpt로 개발 되어있습니다.

Sample

  • Clone this repository and run npm install to ready to run sample
node sample

// import 
const SyllableSearchEngine = require('./index.js');

// search data
const testList = [
  {name:'동해물과', phone:'02-1234-0000'},
  {name:'백두산이'},
  {name:'마르고'},
  {name:'닳도록'},
  {name:'하느님이'},
  {name:'보우하사'},
  {name:'우리나라만세'},
  {name:'무궁화'},
  {name:'삼천리'},
  {name:'화려강산'},
  {name:'대한사람'},
  {name:'대한으로'},
  {name:'길이 보전하세'},
  {name:'잠진적인 가능성 족적'},
];

// define decorator
const _decorator = ( element, isMatched )=>{
  if( isMatched ) return element.red.bgWhite;
  return element;
}

// genrate engine instance with query 
const searchEngine = new SyllableSearchEngine( query, {multi:true} );

// do search
const filteredList = testList.filter( searchEngine.search( item=>{
  return [
    item.name, 
    item.phone && item.phone
  ].filter(e=>e);
}));

// highlighting
const _renderItem = ( searchEngine, item )=>{
  let name = searchEngine.decorator(item.name, _decorator ).join(''), phone;
  if( item.phone ){
    phone = searchEngine.decorator(item.phone, _decorator ).join('');
    return `${name} (${phone})`;
  }
  return name;
}

console.log( filteredList.map(_renderItem.bind(this, searchEngine)).join('\n') );