Skip to content
Snippets Groups Projects
Commit 4ba9b834 authored by Yannis Barlas's avatar Yannis Barlas
Browse files

resolve merge conflict

parents b74485d8 e61feefe
No related branches found
No related tags found
1 merge request!103Vivliostyle converter
Pipeline #3100 failed with stage
in 11 minutes and 10 seconds
const HTMLEPUB = require('html-epub') const HTMLEPUB = require('html-epub')
const fs = require('fs') const fs = require('fs')
const _ = require('lodash')
const sorter = require('./sorter') const sorter = require('./sorter')
const converters = require('./converters') const converters = require('./converters')
const processFragment = require('./process') const processFragment = require('./process')
const output = require('./output') const output = require('./output')
const config = require('config')
const EpubBackend = function (app) { const EpubBackend = function (app) {
app.use('/api/collections/:id/epub', async function (req, res, next) { app.use('/api/collections/:id/epub', async function (req, res, next) {
...@@ -35,19 +37,37 @@ const EpubBackend = function (app) { ...@@ -35,19 +37,37 @@ const EpubBackend = function (app) {
stylesRoot = `${__dirname}/themes` stylesRoot = `${__dirname}/themes`
} }
let fontsRoot = process.cwd() + config.epub.fontsPath
console.log('opath', fontsRoot)
if (!fs.existsSync(fontsRoot)) {
fontsRoot = ''
}
// converters // converters
const activeConverters = [req.query.converter] const activeConverters = [req.query.converter]
.filter(name => name && converters[name]) .filter(name => name && converters[name])
.map(name => converters[name]) .map(name => converters[name])
const parts = fragments.sort(sorter).map( const sortedFragments = fragments.sort(sorter)
const partsIds = sortedFragments
.filter(fragment => fragment.division === 'body' && fragment.subCategory === 'part')
.map(fragment => fragment.id)
sortedFragments.forEach(fragment => {
let found = _.indexOf(partsIds, fragment.id)
if (found !== -1) {
fragment.number = found + 1
}
})
const parts = sortedFragments.map(
processFragment({ styles, activeConverters, book }) processFragment({ styles, activeConverters, book })
) )
// TODO: read the path to the uploads folder from config // TODO: read the path to the uploads folder from config
const resourceRoot = process.cwd() + '/uploads' const resourceRoot = process.cwd() + '/uploads'
const epub = new HTMLEPUB(book, {resourceRoot, stylesRoot}) const epub = new HTMLEPUB(book, {resourceRoot, stylesRoot, fontsRoot})
await epub.load(parts) await epub.load(parts)
......
module.exports = ($, fragmentTitle, bookTitle, fragmentDivision, fragmentSubcategory) => { module.exports = ($, fragmentTitle, bookTitle, fragmentDivision, fragmentSubcategory, fragmentNumber) => {
const body = $('body') const body = $('body')
let outerContainer = $('<div/>').attr('class', fragmentDivision) let outerContainer = $('<div/>').attr('class', fragmentDivision)
...@@ -15,8 +15,13 @@ module.exports = ($, fragmentTitle, bookTitle, fragmentDivision, fragmentSubcate ...@@ -15,8 +15,13 @@ module.exports = ($, fragmentTitle, bookTitle, fragmentDivision, fragmentSubcate
$('<p/>').attr('class', 'ch-start').html('beginning').appendTo(innerContainer) $('<p/>').attr('class', 'ch-start').html('beginning').appendTo(innerContainer)
$('<div/>').attr('class', 'folio').appendTo(innerContainer) $('<div/>').attr('class', 'folio').appendTo(innerContainer)
$('<div/>').attr('class', 'booktitle').html(bookTitle).appendTo(innerContainer) $('<div/>').attr('class', 'booktitle').html(bookTitle).appendTo(innerContainer)
$('<h1/>').attr('class', 'ct').html(fragmentTitle).appendTo(innerContainer)
$('<div/>').attr('class', 'dup').html(fragmentTitle).appendTo(innerContainer) $('<div/>').attr('class', 'dup').html(fragmentTitle).appendTo(innerContainer)
if (fragmentSubcategory === 'part') {
$('<p/>').attr('class', 'part-number').html(fragmentNumber).appendTo(innerContainer)
} else if (fragmentSubcategory === 'chapter') {
$('<p/>').attr('class', 'chapter-number').html(fragmentNumber).appendTo(innerContainer)
}
$('<h1/>').attr('class', 'ct').html(fragmentTitle).appendTo(innerContainer)
const replaceWithBlockquote = className => (i, elem) => { const replaceWithBlockquote = className => (i, elem) => {
const $elem = $(elem) const $elem = $(elem)
......
...@@ -6,8 +6,9 @@ module.exports = ({ styles, activeConverters, book }) => fragment => { ...@@ -6,8 +6,9 @@ module.exports = ({ styles, activeConverters, book }) => fragment => {
const bookTitle = book.title const bookTitle = book.title
const fragmentDivision = fragment.division const fragmentDivision = fragment.division
const fragmentSubcategory = fragment.subCategory const fragmentSubcategory = fragment.subCategory
const fragmentNumber = fragment.hasOwnProperty('number') ? fragment.number : -1
activeConverters.forEach(converter => converter($, fragmentTitle, bookTitle, fragmentDivision, fragmentSubcategory)) activeConverters.forEach(converter => converter($, fragmentTitle, bookTitle, fragmentDivision, fragmentSubcategory, fragmentNumber))
styles.forEach(uri => { styles.forEach(uri => {
$('<link rel="stylesheet"/>').attr('href', uri).appendTo('head') $('<link rel="stylesheet"/>').attr('href', uri).appendTo('head')
......
...@@ -7,6 +7,7 @@ test('converts source to html', () => { ...@@ -7,6 +7,7 @@ test('converts source to html', () => {
title: 'A Test', title: 'A Test',
division: 'body', division: 'body',
subCategory: 'part', subCategory: 'part',
number: 3,
source: ` source: `
<div> <div>
<h1>A Test</h1> <h1>A Test</h1>
......
...@@ -612,7 +612,7 @@ hr { ...@@ -612,7 +612,7 @@ hr {
} }
hr:after { hr:after {
content: "••"; content: "••";
height: 17px; height: 17px;
display: block; display: block;
text-align: center; text-align: center;
...@@ -838,7 +838,11 @@ html { ...@@ -838,7 +838,11 @@ html {
text-indent: 0; text-indent: 0;
} }
<<<<<<< HEAD
.pt , [data-type="part"] p.ct, [data-type="part"] h1.ct , .back [data-type="bm-body"] .ct , [data-type="toc"] h1 { .pt , [data-type="part"] p.ct, [data-type="part"] h1.ct , .back [data-type="bm-body"] .ct , [data-type="toc"] h1 {
=======
.pt , [data-type="part"] p.ct, [data-type="part"] h1.ct {
>>>>>>> e61feefec32231764d419957742e76fa1eaf1885
-webkit-column-break-before: page; -webkit-column-break-before: page;
page-break-before: page; page-break-before: page;
break-before: page; break-before: page;
...@@ -1851,6 +1855,7 @@ img { ...@@ -1851,6 +1855,7 @@ img {
float-defer: last;*/ float-defer: last;*/
/*float: block-end; */ /*float: block-end; */
} }
/* hack the chapter debut */
.cst + p { .cst + p {
margin-top: 0px; margin-top: 0px;
...@@ -1937,12 +1942,6 @@ p + .cst { ...@@ -1937,12 +1942,6 @@ p + .cst {
height: 17px; height: 17px;
} }
@-epubx-partition runningheader-right {
-epubx-flow-from: booktitle;
-epubx-enabled: -epubx-expr(page-number % 2 == 1);
right: 73px;
top: 51px;
height: 17px;
/* width: 400px; */ /* width: 400px; */
text-align: right; text-align: right;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment