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

sile-typesetter / sile / 9428435077

08 Jun 2024 11:35AM UTC coverage: 64.56% (-9.9%) from 74.46%
9428435077

push

github

web-flow
Merge pull request #2047 from alerque/end-pars

23 of 46 new or added lines in 5 files covered. (50.0%)

1684 existing lines in 60 files now uncovered.

11145 of 17263 relevant lines covered (64.56%)

4562.45 hits per line

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

88.33
/pagebuilders/grid.lua
1
local base = require("pagebuilders.base")
1✔
2

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

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

10
function pagebuilder.findBestBreak (_, options)
1✔
11
   local vboxlist = SU.required(options, "vboxlist", "in findBestBreak")
31✔
12
   local target = SU.required(options, "target", "in findBestBreak")
31✔
13
   local i = 0
31✔
14
   local totalHeight = SILE.types.length()
31✔
15
   local bestBreak = 0
31✔
16
   SU.debug(
62✔
17
      "pagebuilder",
31✔
18
      "Page builder for frame",
31✔
19
      SILE.typesetter.frame.id,
31✔
20
      "called with",
31✔
21
      #vboxlist,
31✔
22
      "nodes,",
31✔
23
      target
24
   )
31✔
25
   if SU.debugging("vboxes") then
62✔
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
43✔
33
      i = i + 1
43✔
34
      if not vboxlist[i].is_vglue then
43✔
35
         i = i - 1
31✔
36
         break
31✔
37
      end
38
   end
39
   while i < #vboxlist do
566✔
40
      i = i + 1
537✔
41
      local node = vboxlist[i]
537✔
42
      SU.debug("pagebuilder", "Dealing with VBox", node)
537✔
43
      if node.is_vbox then
537✔
44
         totalHeight = totalHeight + node.height:absolute() + node.depth:absolute()
975✔
45
      elseif node.is_vglue then
342✔
46
         totalHeight = totalHeight + node.height:absolute()
798✔
47
      elseif node.is_insertion then
76✔
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
537✔
53
      local _left = left:tonumber()
537✔
54
      SU.debug("pagebuilder", "I have", left, "left")
537✔
55
      SU.debug("pagebuilder", "totalHeight", totalHeight, "with target", target)
537✔
56
      local badness = 0
537✔
57
      if _left < 0 then
537✔
58
         badness = 1000000
1✔
59
      end
60
      if node.is_penalty then
537✔
61
         if node.penalty < -3000 then
76✔
62
            badness = 100000
1✔
63
         else
64
            badness = -_left * _left - node.penalty
75✔
65
         end
66
      end
67
      if badness > 0 then
537✔
68
         local onepage = {}
2✔
69
         for j = 1, bestBreak do
74✔
70
            onepage[j] = table.remove(vboxlist, 1)
144✔
71
         end
72
         while #onepage > 1 and onepage[#onepage].discardable do
2✔
UNCOV
73
            onepage[#onepage] = nil
×
74
         end
75
         return onepage, 1000
2✔
76
      end
77
      bestBreak = i
535✔
78
   end
79
   return false, false
29✔
80
end
81

82
return pagebuilder
1✔
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