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

sile-typesetter / sile / 5913811407

19 Aug 2023 10:21PM UTC coverage: 73.575% (-0.8%) from 74.334%
5913811407

push

github

web-flow
Merge pull request #1849 from alerque/docs-note-style

10 of 10 new or added lines in 2 files covered. (100.0%)

11591 of 15754 relevant lines covered (73.57%)

6930.04 hits per line

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

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

68
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