Commit 63a36619 authored by Fred Chasen's avatar Fred Chasen
Browse files

Merge branch 'content-string-fix' into 'master'

Update to handle multiple string set.

Closes #180

See merge request !95
parents 5e1eea4f 9680252a
Pipeline #431 passed with stage
in 3 minutes and 20 seconds
<!DOCTYPE html PUBLIC>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>
string set specs </title>
<script src="../../../dist/paged.polyfill.js"></script>
<style>
:root {
font-size: 18px;
}
* {
font-family: Times New Roman, sans-serif;
}
h1 {}
@page {
size: 140mm 200mm;
margin: 20mm 20mm;
@bottom-left {
content: counter(page);
}
@bottom-center {
content: string(alphabet, first-except);
color: darkred;
}
@bottom-right {
content: string(alphabetbis, first-except);
color: darkblue;
}
}
p {
line-height: 22px;
}
h1 {
string-set: alphabet content(text);
font-size: 24px;
margin-bottom: 0;
color: darkred;
}
h2 {
string-set: alphabetbis content(text);
font-size: 20px;
line-height: 20px;
margin-top: .5em;
color: darkblue;
}
</style>
</head>
<body>
<section>
<h1>aaa</h1>
<h2>1111</h2>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<h2>2222</h2>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<h1>bbb</h1>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
<p>Adipisicing tempor anim consequat id qui magna duis ex incididunt. Incididunt non in in nulla laborum elit laboris officia elit. Eu Lorem aliqua in et sunt officia nisi voluptate. Cupidatat labore do duis qui veniam magna cupidatat excepteur ad. Cupidatat sint aliquip anim laboris exercitation labore labore. Proident proident irure laborum ex id occaecat.</p>
</section>
</body>
</html>
\ No newline at end of file
......@@ -157,4 +157,41 @@ describe("string-start", async () => {
expect(text).toEqual("\"ggg\"");
});
});
describe("string-multiple", async () => {
let page;
let rendered;
beforeAll(async () => {
page = await loadPage("string/string-multiple.html");
return page.rendered;
}, TIMEOUT);
afterAll(async () => {
if (!DEBUG) {
await page.close();
}
});
it("should set the running header as nothing on the first page", async () => {
let text = await page.$eval("#page-2", (r) =>
window.getComputedStyle(r).getPropertyValue("--pagedjs-string-alphabet"));
expect(text).toEqual("\"aaa\"");
});
it("should set the running header as nothing on the first page", async () => {
let text = await page.$eval("#page-2", (r) =>
window.getComputedStyle(r).getPropertyValue("--pagedjs-string-alphabetbis"));
expect(text).toEqual("\"1111\"");
});
it("should set the running header as \"fff\" on the third page", async () => {
let text = await page.$eval("#page-9", (r) =>
window.getComputedStyle(r).getPropertyValue("--pagedjs-string-alphabet"));
expect(text).toEqual("\"bbb\"");
});
it("should set the running header as \"fff\" on the third page", async () => {
let text = await page.$eval("#page-9", (r) =>
window.getComputedStyle(r).getPropertyValue("--pagedjs-string-alphabetbis"));
expect(text).toEqual("\"2222\"");
});
});
\ No newline at end of file
......@@ -55,19 +55,30 @@ class StringSets extends Handler {
afterPageLayout(fragment) {
if ( this.pageLastString === undefined )
{
this.pageLastString = {};
}
// get the value of the previous last string
let previousPageLastString = this.pageLastString;
for (let name of Object.keys(this.stringSetSelectors)) {
let set = this.stringSetSelectors[name];
let selected = fragment.querySelectorAll(set.selector);
let cssVar = previousPageLastString;
selected.forEach((sel) => {
// let cssVar = previousPageLastString;
// Get the last found string for the current identifier
let cssVar = ( name in this.pageLastString ) ? this.pageLastString[name] : '';
selected.forEach((sel) => {
// push each content into the array to define in the variable the first and the last element of the page.
this.pageLastString = selected[selected.length - 1].textContent;
//this.pageLastString = selected[selected.length - 1].textContent;
// Index by identifier
this.pageLastString[name] = selected[selected.length - 1].textContent;
if (this.type === "first") {
cssVar = selected[0].textContent;
......@@ -83,19 +94,19 @@ class StringSets extends Handler {
cssVar = sel.textContent;
}
}
else if (this.type === "first-except") {
cssVar = "";
}
else {
cssVar = selected[0].textContent;
}
});
fragment.setAttribute("data-string", `string-type-${this.type}-${name}`);
// fragment.style.setProperty(`--pagedjs-string-${name}`, `"${cssVar.replace(/\\([\s\S])|(["|'])/g, "\\$1$2")}"`);
fragment.style.setProperty(`--pagedjs-string-${name}`, `"${cleanPseudoContent(cssVar)}`);
......@@ -103,10 +114,10 @@ class StringSets extends Handler {
if (!fragment.hasAttribute("data-string")) {
fragment.style.setProperty(`--pagedjs-string-${name}`, `"${this.pageLastString}"`);
}
}
}
}
......
Markdown is supported
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