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

sile-typesetter / sile / 9304049654

30 May 2024 02:12PM UTC coverage: 60.021% (-14.7%) from 74.707%
9304049654

push

github

web-flow
Merge 1a26b4f22 into a1fd105f8

6743 of 12900 new or added lines in 186 files covered. (52.27%)

347 existing lines in 49 files now uncovered.

10311 of 17179 relevant lines covered (60.02%)

3307.34 hits per line

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

96.43
/core/frameparser.lua
1
local lpeg = require("lpeg")
281✔
2
local cassowary = require("cassowary")
281✔
3

4
local P, C, V = lpeg.P, lpeg.C, lpeg.V
281✔
5

6
local function resolveMeasurement (str)
7
   return SILE.types.measurement(str):tonumber()
5,438✔
8
end
9

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

18
-- stylua: ignore start
19
local number = SILE.parserBits.number
281✔
20
local identifier = SILE.parserBits.identifier
281✔
21
local measurement = SILE.parserBits.measurement / resolveMeasurement
281✔
22
local ws = SILE.parserBits.ws
281✔
23
local dims = P"top" + P"left" + P"bottom" + P"right" + P"width" + P"height"
281✔
24
local relation = C(dims) * ws * P"(" * ws * C(identifier) * ws * P")" / functionOfFrame
281✔
25

26
local primary = relation + measurement + number
281✔
27

28
-- For unit testing
29
SILE._frameParserBits = {
281✔
30
   measurement = measurement,
281✔
31
   relation = relation,
281✔
32
}
281✔
33

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