@mieweb/wikigdrive
Version:
Google Drive to MarkDown synchronization
44 lines (43 loc) • 1.32 kB
JavaScript
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 };
}
}