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

sile-typesetter / sile / 11135083927

01 Oct 2024 11:26PM UTC coverage: 62.071% (-7.3%) from 69.333%
11135083927

push

github

alerque
style: Reformat Lua with stylua

0 of 9 new or added lines in 2 files covered. (0.0%)

1678 existing lines in 57 files now uncovered.

11071 of 17836 relevant lines covered (62.07%)

5220.48 hits per line

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

85.51
/packages/base.lua
1
--- SILE package class.
2
-- @interfaces packages
3

4
local package = pl.class()
50✔
5
package.type = "package"
50✔
6
package._name = "base"
50✔
7

8
package._initialized = false
50✔
9
package.class = nil
50✔
10

11
-- For shimming packages that used to have legacy exports
12
package.exports = {}
50✔
13

14
local function script_path ()
15
   local src = debug.getinfo(3, "S").source:sub(2)
327✔
16
   local base = src:match("(.*[/\\])")
327✔
17
   return base
327✔
18
end
19

20
local settingDeclarations = {}
50✔
21
local rawhandlerRegistrations = {}
50✔
22
local commandRegistrations = {}
50✔
23

24
function package:_init (_, reload)
50✔
25
   self.class = SILE.scratch.half_initialized_class or SILE.documentState.documentClass
327✔
26
   if not self.class then
327✔
27
      SU.error("Attempted to initialize package before class, should have been queued in the preamble", true)
×
28
   end
29
   self.basedir = script_path()
654✔
30
   -- Note string.format(%p) would be nicer than tostring() but only LuaJIT and Lua 5.4 support it
31
   local settingsDeclarator = tostring(self.declareSettings)
327✔
32
   if reload or not settingDeclarations[settingsDeclarator] then
327✔
33
      settingDeclarations[settingsDeclarator] = true
73✔
34
      self:declareSettings()
73✔
35
   end
36
   local rawhandlerRegistrator = tostring(self.registerRawHandlers)
327✔
37
   if reload or not rawhandlerRegistrations[rawhandlerRegistrator] then
327✔
38
      rawhandlerRegistrations[rawhandlerRegistrator] = true
54✔
39
      self:registerRawHandlers()
54✔
40
   end
41
   local commandRegistrator = tostring(self.registerCommands)
327✔
42
   if reload or not commandRegistrations[commandRegistrator] then
327✔
43
      commandRegistrations[commandRegistrator] = true
297✔
44
      self:registerCommands()
297✔
45
   end
46
end
47

48
function package:_post_init ()
50✔
49
   self._initialized = true
328✔
50
end
51

52
function package.declareSettings (_) end
102✔
53

54
function package.registerRawHandlers (_) end
102✔
55

56
function package:loadPackage (packname, options, reload)
50✔
57
   return self.class:loadPackage(packname, options, reload)
114✔
58
end
59

60
function package:reloadPackage (packname, options)
50✔
61
   return self.class:reloadPackage(packname, options)
×
62
end
63

64
function package.registerCommands (_) end
59✔
65

66
-- This gives us a hook to match commands with the packages that registered
67
-- them as opposed to core commands or class-provided commands
68

69
--- Register a function as a SILE command.
70
-- Takes any Lua function and registers it for use as a SILE command (which will in turn be used to process any content
71
-- nodes identified with the command name.
72
--
73
-- A similar method is available for classes, `classes:registerCommand`.
74
-- @tparam string name Name of cammand to register.
75
-- @tparam function func Callback function to use as command handler.
76
-- @tparam[opt] nil|string help User friendly short usage string for use in error messages, documentation, etc.
77
-- @tparam[opt] nil|string pack Information identifying the module registering the command for use in error and usage
78
-- messages. Usually auto-detected.
79
-- @see SILE.classes:registerCommand
80
function package:registerCommand (name, func, help, pack)
50✔
81
   self.class:registerCommand(name, func, help, pack)
1,332✔
82
end
83
function package:registerRawHandler (format, callback)
50✔
84
   self.class:registerRawHandler(format, callback)
2✔
85
end
86

87
-- Using this rather than doing the work directly will give us a way to
88
-- un-export them if we ever need to unload modules and revert functions
89
function package:export (name, func)
50✔
90
   self.class[name] = func
311✔
91
end
92

93
-- Shims for two possible kinds of legacy exports: blind direct stuffing into
94
-- the class but not expecting to be called as a method AND the exports table
95
-- to package modules...
96

97
local _deprecate_class_funcs = [[
98
   Please explicitly use functions provided by packages by referencing them in
99
   the document class's list of loaded packages rather than the legacy solution
100
   that added non-method functions to the class.
101
]]
50✔
102

103
local _deprecate_exports_table = [[
104
   Please explicitly use functions provided by packages by referencing them in
105
   the document class's list of loaded packages rather than the legacy solution
106
   of calling them from an exports table.
107
]]
50✔
108

109
function package:deprecatedExport (name, func, noclass, notable)
50✔
110
   if not noclass then
333✔
111
      self.class[name] = function (...)
333✔
112
         -- http://lua-users.org/wiki/VarargTheSecondClassCitizen
113
         local inputs = { ... }
4✔
114
         -- local inputs = table.unpack({...}, 1, select("#", ...))
115
         if type(inputs[1]) ~= "table" or inputs[1].type ~= "class" then
4✔
UNCOV
116
            table.insert(inputs, 1, self.class)
×
117
         end
118
         SU.deprecated(
8✔
119
            ("class.%s"):format(name),
4✔
120
            ("class.packages.%s:%s"):format(self._name, name),
4✔
121
            "0.14.0",
4✔
122
            "0.16.0",
4✔
123
            _deprecate_class_funcs
124
         )
4✔
125
         return func(pl.utils.unpack(inputs, 1, select("#", ...) + 1))
8✔
126
      end
127
   end
128

129
   if not notable then
333✔
130
      self.exports[name] = function (...)
333✔
131
         local inputs = { ... }
×
UNCOV
132
         if type(inputs[1]) ~= "table" or inputs[1].type ~= "package" then
×
133
            table.insert(inputs, 1, self)
×
134
         end
135
         SU.deprecated(
×
UNCOV
136
            ("require('packages.%s').exports.%s"):format(self._name, name),
×
UNCOV
137
            ("class.packages.%s:%s"):format(self._name, name),
×
138
            "0.14.0",
139
            "0.16.0",
140
            _deprecate_exports_table
141
         )
UNCOV
142
         return func(pl.utils.unpack(inputs, 1, select("#", ...) + 1))
×
143
      end
144
   end
145
end
146

147
return package
50✔
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