• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

sile-typesetter / sile / 14684598788

26 Apr 2025 07:55PM UTC coverage: 29.023% (-36.3%) from 65.328%
14684598788

push

github

alerque
test(fonts): Update test to work on new ICU instead of old

5840 of 20122 relevant lines covered (29.02%)

379.34 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/pagebuilders/grid.lua
1
local base = require("pagebuilders.base")
×
2

3
local pagebuilder = pl.class(base)
×
4
pagebuilder._name = "grid"
×
5

6
function pagebuilder:_init ()
×
7
   base._init(self)
×
8
end
9

10
function pagebuilder:findBestBreak (options)
×
11
   local vboxlist = SU.required(options, "vboxlist", "in findBestBreak")
×
12
   local target = SU.required(options, "target", "in findBestBreak")
×
13
   local i = 0
×
14
   local totalHeight = SILE.types.length()
×
15
   local bestBreak = 0
×
16
   SU.debug(
×
17
      "pagebuilder",
18
      "Page builder for frame",
19
      SILE.typesetter.frame.id,
×
20
      "called with",
21
      #vboxlist,
×
22
      "nodes,",
23
      target
24
   )
25
   if SU.debugging("vboxes") then
×
26
      for j, box in ipairs(vboxlist) do
×
27
         SU.debug("vboxes", function ()
×
28
            return (j == i and " >" or "  ") .. j .. ": " .. box
×
29
         end)
30
      end
31
   end
32
   while i < #vboxlist do
×
33
      i = i + 1
×
34
      if not vboxlist[i].is_vglue then
×
35
         i = i - 1
×
36
         break
37
      end
38
   end
39
   while i < #vboxlist do
×
40
      i = i + 1
×
41
      local node = vboxlist[i]
×
42
      SU.debug("pagebuilder", "Dealing with VBox", node)
×
43
      if node.is_vbox then
×
44
         totalHeight = totalHeight + node.height:absolute() + node.depth:absolute()
×
45
      elseif node.is_vglue then
×
46
         totalHeight = totalHeight + node.height:absolute()
×
47
      elseif node.is_insertion then
×
48
         -- TODO: refactor as hook and without side effects!
49
         target = SILE.insertions.processInsertion(vboxlist, i, totalHeight, target)
×
50
         node = vboxlist[i]
×
51
      end
52
      local left = target - totalHeight
×
53
      local _left = left:tonumber()
×
54
      SU.debug("pagebuilder", "I have", left, "left")
×
55
      SU.debug("pagebuilder", "totalHeight", totalHeight, "with target", target)
×
56
      local badness = 0
×
57
      if _left < 0 then
×
58
         badness = 1000000
×
59
      end
60
      if node.is_penalty then
×
61
         if node.penalty < -3000 then
×
62
            badness = 100000
×
63
         else
64
            badness = -_left * _left - node.penalty
×
65
         end
66
      end
67
      if badness > 0 then
×
68
         local onepage = {}
×
69
         for j = 1, bestBreak do
×
70
            onepage[j] = table.remove(vboxlist, 1)
×
71
         end
72
         while #onepage > 1 and onepage[#onepage].discardable do
×
73
            onepage[#onepage] = nil
×
74
         end
75
         return onepage, 1000
×
76
      end
77
      bestBreak = i
×
78
   end
79
   return false, false
×
80
end
81

82
return pagebuilder
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc