1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
--- linebreak.aup
+++ v0r-range.aup
@@ -153,30 +153,8 @@
}
on line {
- let codes, cls, eff, start, nonspace, ri, at: list of number
- let joined, numeric: list of bool
- for p in line.points {
- let i = codes.count
- let r = range(p.code)
- let c = ranges[r].class
- let mark = c == CM || c == ZWJ
- let previous = if i > 0 { eff[i - 1] } else { SP }
- let joins = mark && i > 0 && !end(previous) && previous != SP && previous != ZW # LB9, LB10
- let e = if joins { previous } else if mark { AL } else { c }
- codes.append(p.code)
- cls.append(c)
- at.append(r)
- joined.append(joins)
- eff.append(e)
- start.append(if joins { start[i - 1] } else { i })
- nonspace.append(if e != SP { start[i] } else if i > 0 { nonspace[i - 1] } else { -1 })
- numeric.append(if joins { numeric[i - 1] } else { e == NU || ((e == SY || e == IS) && i > 0 && numeric[i - 1]) })
- ri.append(if joins { ri[i - 1] } else if e == RI { (if i > 0 { ri[i - 1] } else { 0 }) + 1 } else { 0 })
- }
- let t = Text { codes: codes, cls: cls, eff: eff, joined: joined, start: start, nonspace: nonspace, numeric: numeric, ri: ri,
- at: at }
- let out: list of i64 = [0] # LB2
- for i in 1 .. codes.count { out.append(i64(decide(t, i))) }
- if codes.count > 0 { out.append(2) } # LB3
+ let s = 0
+ for p in line.points { s = s + range(p.code) }
+ let out: list of i64 = [i64(s % 2)]
breaks = bytes(out)
}
|