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

sile-typesetter / sile / 3849002768

pending completion
3849002768

push

github

GitHub
Merge f1334c9ed into 13df3c1f5

53 of 53 new or added lines in 7 files covered. (100.0%)

11 of 14758 relevant lines covered (0.07%)

0.0 hits per line

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

0.0
/core/frameparser.lua
1
local lpeg = require("lpeg")
×
2
local cassowary = require("cassowary")
×
3

4
local P, C, V = lpeg.P, lpeg.C, lpeg.V
×
5

6
local function resolveMeasurement (str)
7
  return SILE.measurement(str):tonumber()
×
8
end
9

10
local functionOfFrame = function (dim, id)
11
  if not SILE.frames[id] then
×
12
    -- TODO: Fix this race condition properly!
13
    SILE.newFrame({ id = id })
×
14
  end
15
  return SILE.frames[id].variables[dim]
×
16
end
17

18
local number = SILE.parserBits.number
×
19
local identifier = SILE.parserBits.identifier
×
20
local measurement = SILE.parserBits.measurement / resolveMeasurement
×
21
local ws = SILE.parserBits.ws
×
22
local dims = P"top" + P"left" + P"bottom" + P"right" + P"width" + P"height"
×
23
local relation = C(dims) * ws * P"(" * ws * C(identifier) * ws * P")" / functionOfFrame
×
24

25
local primary = relation + measurement + number
×
26

27
-- For unit testing
28
SILE._frameParserBits = {
×
29
  measurement = measurement,
30
  relation = relation,
31
}
32

33
return P{
×
34
  "additive",
35
  additive = V"plus" + V"minus" + V"multiplicative",
36
  multiplicative = V"times" + V"divide" + V"primary",
37
  primary = (ws * primary * ws) + V"braced",
38
  plus = ws * V"multiplicative" * ws * P"+" * ws * V"additive" * ws / cassowary.plus,
39
  minus = ws * V"multiplicative" * ws * P"-" * ws * V"additive" * ws / cassowary.minus,
40
  times = ws * V"primary" * ws * P"*" * ws * V"multiplicative" * ws / cassowary.times,
41
  divide = ws * V"primary" * ws * P"/" * ws * V"multiplicative" * ws / cassowary.divide,
42
  braced = ws * P"(" * ws * V"additive" * ws * P")" * ws
×
43
}
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