summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-08-01 20:02:17 +0300
committerAndrew Dolgov <[email protected]>2017-08-01 20:02:17 +0300
commit94f002e9cc28d677b004d42b9fcec818dd07f64f (patch)
tree715673136ef87eb2b795d46f375178628f540496 /lib
parent7f715fb256c380b6d01891054bc6c14dbc06c869 (diff)
update epub.js
Diffstat (limited to 'lib')
-rw-r--r--lib/epub.js32
1 files changed, 20 insertions, 12 deletions
diff --git a/lib/epub.js b/lib/epub.js
index f5ad7db..277d998 100644
--- a/lib/epub.js
+++ b/lib/epub.js
@@ -6077,19 +6077,24 @@ EPUBJS.Locations.prototype.process = function(chapter) {
var counter = 0;
var prev;
var cfi;
+ var _break = this.break;
this.sprint(contents, function(node) {
var len = node.length;
var dist;
var pos = 0;
+ if (node.textContent.trim().length === 0) {
+ return false; // continue
+ }
+
// Start range
if (counter === 0) {
range = doc.createRange();
range.setStart(node, 0);
}
- dist = this.break - counter;
+ dist = _break - counter;
// Node is smaller than a break
if(dist > len){
@@ -6098,28 +6103,31 @@ EPUBJS.Locations.prototype.process = function(chapter) {
}
while (pos < len) {
- counter = this.break;
- pos += this.break;
+ dist = _break - counter;
+
+ if (counter === 0) {
+ pos += 1;
+ range = doc.createRange();
+ range.setStart(node, pos);
+ }
// Gone over
- if(pos >= len){
+ if(pos + dist >= len){
// Continue counter for next node
- counter = len - (pos - this.break);
-
+ counter += len - pos;
+ // break
+ pos = len;
// At End
} else {
+ // Advance pos
+ pos += dist;
+
// End the previous range
range.setEnd(node, pos);
cfi = chapter.cfiFromRange(range);
this._locations.push(cfi);
counter = 0;
-
- // Start new range
- pos += 1;
- range = doc.createRange();
- range.setStart(node, pos);
}
-
}
prev = node;