UNPKG

@snippetify/book-reader

Version:
52 lines (43 loc) 1.25 kB
const Page = require('./models/Page') const ReferenceBuilder = require('./ReferenceBuilder') class PageBuilder { constructor () { this.config = {} this.page = new Page({}) this.referenceBuilder = ReferenceBuilder.getInstance() } static getInstance () { return new PageBuilder() } setConfig (config) { this.config = config this.referenceBuilder.setConfig(config.reference) return this } setPage (page) { this.page = page return this } reset () { this.page = new Page({}) return this } build () { this.addReferences() return $('<div />', { 'data-no': this.page.no, 'data-abbr': this.page.abbr }).html(this.page.content) } addReferences () { let paragraph = 0 this.page.content = $(this.page.content) .filter((_, elem) => elem.nodeType !== 3) // Remove text node .map((i, elem) => { if ($(elem).is('p')) { $(elem).attr({ 'data-pos': ++paragraph }).append(this.referenceBuilder.build(this.page, paragraph)) // Add references } return $(elem).attr({ 'data-id': `${this.page.no}.${i + 1}` }).get(0) // Add element id }) return this } } module.exports = PageBuilder module.exports.default = PageBuilder