" doc get set-doc-string
+{ { 0 0 } } [ { 0 0 } doc get paragraph-elt prev-elt ] unit-test
{ { 0 0 } } [ { 0 2 } doc get paragraph-elt prev-elt ] unit-test
{ { 0 0 } } [ { 1 2 } doc get paragraph-elt prev-elt ] unit-test
{ { 3 0 } } [ { 5 2 } doc get paragraph-elt prev-elt ] unit-test
+{ { 3 0 } } [ { 6 0 } doc get paragraph-elt prev-elt ] unit-test
+{ { 6 0 } } [ { 7 0 } doc get paragraph-elt prev-elt ] unit-test
+{ { 7 0 } } [ { 8 0 } doc get paragraph-elt prev-elt ] unit-test
{ { 1 11 } } [ { 0 3 } doc get paragraph-elt next-elt ] unit-test
{ { 1 11 } } [ { 1 3 } doc get paragraph-elt next-elt ] unit-test
{ { 2 0 } } [ { 1 11 } doc get paragraph-elt next-elt ] unit-test
{ { 5 10 } } [ { 2 0 } doc get paragraph-elt next-elt ] unit-test
{ { 5 10 } } [ { 4 2 } doc get paragraph-elt next-elt ] unit-test
-
-{ { 3 0 } } [ { 6 0 } doc get paragraph-elt prev-elt ] unit-test
-{ { 6 0 } } [ { 7 0 } doc get paragraph-elt prev-elt ] unit-test
-
{ { 7 0 } } [ { 6 0 } doc get paragraph-elt next-elt ] unit-test
{ { 8 0 } } [ { 7 0 } doc get paragraph-elt next-elt ] unit-test
+{ { 8 0 } } [ { 8 0 } doc get paragraph-elt next-elt ] unit-test
! page-elt
[ empty? ] find-last-from drop [ 1 + ] [ 0 ] if* :> line#
loc first line# = loc second 0 = and [
- line# 1 - 0 2array
+ line# 1 [-] 0 2array
] [
line# 0 2array
] if ;
loc first 1 + document value>>
[ empty? ] find-from drop :> line#
- line# document value>> length or 1 [-]
- dup document doc-line length
- [ zero? [ 1 + ] when ] keep 2array
-
- dup loc = [ first 1 + 0 2array ] when ;
+ line# [
+ 1 - dup document doc-line length 2array
+ dup loc = [ first 1 + 0 2array ] when
+ ] [
+ document doc-end
+ ] if* ;
PRIVATE>
3dup [ first ] [ last-line# ] [ #lines>> ] tri* - >
[ drop nip doc-end ] [ nip #lines>> +line ] if ;
-CONSTANT: line-elt T{ page-elt f 1 }
+CONSTANT: line-elt T{ page-elt { #lines 1 } }
SINGLETON: doc-elt