Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
pagedjs
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Cy Z
pagedjs
Commits
db0b5388
Commit
db0b5388
authored
Jun 09, 2020
by
Nellie McKesson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adding better handling of following selector
parent
d794dcd8
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
246 additions
and
1 deletion
+246
-1
following-selector.html
specs/following-selector/following-selector.html
+144
-0
following-selector.spec.js
specs/following-selector/following-selector.spec.js
+35
-0
following.js
src/modules/paged-media/following.js
+64
-0
index.js
src/modules/paged-media/index.js
+3
-1
No files found.
specs/following-selector/following-selector.html
0 → 100644
View file @
db0b5388
This diff is collapsed.
Click to expand it.
specs/following-selector/following-selector.spec.js
0 → 100644
View file @
db0b5388
const
TIMEOUT
=
10000
;
// Some book might take longer than this to renderer
describe
(
"
following-selector
"
,
()
=>
{
let
page
;
beforeAll
(
async
()
=>
{
page
=
await
loadPage
(
"
following-selector/following-selector.html
"
);
return
page
.
rendered
;
},
TIMEOUT
);
afterAll
(
async
()
=>
{
if
(
!
DEBUG
)
{
await
page
.
close
();
}
});
it
(
"
should render text
"
,
async
()
=>
{
let
text
=
await
page
.
evaluate
(()
=>
document
.
body
.
textContent
);
expect
(
text
).
toContain
(
"
Chapter 1. Loomings.
"
);
});
it
(
"
should render 14 pages
"
,
async
()
=>
{
let
pages
=
await
page
.
$$eval
(
"
.pagedjs_page
"
,
(
r
)
=>
r
.
length
);
expect
(
pages
).
toBe
(
14
);
});
if
(
!
DEBUG
)
{
it
(
"
should create a pdf
"
,
async
()
=>
{
let
pdf
=
await
page
.
pdf
(
PDF_SETTINGS
);
expect
(
pdf
).
toMatchPDFSnapshot
(
1
);
expect
(
pdf
).
toMatchPDFSnapshot
(
2
);
});
}
}
);
src/modules/paged-media/following.js
0 → 100644
View file @
db0b5388
import
Handler
from
"
../handler
"
;
import
csstree
from
"
css-tree
"
;
import
{
UUID
}
from
"
../../utils/utils
"
;
class
Following
extends
Handler
{
constructor
(
chunker
,
polisher
,
caller
)
{
super
(
chunker
,
polisher
,
caller
);
this
.
styleSheet
=
polisher
.
styleSheet
;
this
.
selectors
=
{};
}
onRule
(
ruleNode
,
ruleItem
,
rulelist
)
{
let
selector
=
csstree
.
generate
(
ruleNode
.
prelude
);
if
(
selector
.
match
(
/
\+
/
))
{
let
declarations
=
csstree
.
generate
(
ruleNode
.
block
);
declarations
=
declarations
.
replace
(
/
[
{}
]
/g
,
""
);
let
uuid
=
UUID
();
selector
.
split
(
"
,
"
).
forEach
((
s
)
=>
{
if
(
!
this
.
selectors
[
s
])
{
this
.
selectors
[
s
]
=
[
uuid
,
declarations
];
}
else
{
this
.
selectors
[
s
][
1
]
=
`
${
this
.
selectors
[
s
][
1
]}
;
${
declarations
}
`
;
}
});
rulelist
.
remove
(
ruleItem
);
}
}
afterParsed
(
parsed
)
{
this
.
processSelectors
(
parsed
,
this
.
selectors
);
}
processSelectors
(
parsed
,
selectors
)
{
// add the new attributes to matching elements
for
(
let
s
in
selectors
)
{
let
elements
=
parsed
.
querySelectorAll
(
s
);
for
(
var
i
=
0
;
i
<
elements
.
length
;
i
++
)
{
let
dataCssRule
=
elements
[
i
].
getAttribute
(
"
data-css-rule
"
);
if
(
dataCssRule
&&
dataCssRule
!=
""
)
{
dataCssRule
=
`
${
dataCssRule
}
,
${
selectors
[
s
][
0
]}
`
;
elements
[
i
].
setAttribute
(
"
data-css-rule
"
,
dataCssRule
);
}
else
{
elements
[
i
].
setAttribute
(
"
data-css-rule
"
,
selectors
[
s
][
0
]);
}
}
let
rule
=
`*[data-css-rule*='
${
selectors
[
s
][
0
]}
'] {
${
selectors
[
s
][
1
]}
; }`
;
this
.
styleSheet
.
insertRule
(
rule
,
this
.
styleSheet
.
cssRules
.
length
);
}
}
}
export
default
Following
;
src/modules/paged-media/index.js
View file @
db0b5388
...
...
@@ -6,6 +6,7 @@ import Counters from "./counters";
import
Lists
from
"
./lists
"
;
import
PositionFixed
from
"
./position-fixed
"
;
import
NthOfType
from
"
./nth-of-type
"
;
import
Following
from
"
./following
"
;
export
default
[
AtPage
,
...
...
@@ -15,5 +16,6 @@ export default [
Counters
,
Lists
,
PositionFixed
,
NthOfType
NthOfType
,
Following
];
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment