UNPKG

@mieweb/wikigdrive

Version:

Google Drive to MarkDown synchronization

44 lines (43 loc) 1.32 kB
import lunr from 'lunr'; import stemmerSupport from 'lunr-languages/lunr.stemmer.support.js'; stemmerSupport(lunr); lunr.tokenizer.separator = /[\s-_@#,.]+/; export class LunrIndexer { constructor() { Object.defineProperty(this, "lunrBuilder", { enumerable: true, configurable: true, writable: true, value: void 0 }); Object.defineProperty(this, "store", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.lunrBuilder = new lunr.Builder(); this.lunrBuilder.ref('path'); this.lunrBuilder.field('id2', { extractor: (doc) => { return doc['id'] ? doc['id'].replace(/[_-]*/g, '') : undefined; } }); this.lunrBuilder.field('id'); this.lunrBuilder.field('title'); this.store = {}; } async addPage(page) { this.lunrBuilder.add({ path: page.path, title: page.title, id: page.id }); this.store[page.path] = { title: page.title, id: page.id }; } getJson() { const lunrIndex = this.lunrBuilder.build(); return { index: lunrIndex.toJSON(), store: this.store }; } }