summaryrefslogtreecommitdiff
path: root/biblio/citation-style-language/citeproc-ir-node.lua
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-09-08 03:02:30 +0000
committerNorbert Preining <norbert@preining.info>2023-09-08 03:02:30 +0000
commit608e422a8e775ac4d1c23c80b4170776701680d5 (patch)
treed1e69057c0dc339fb0f890882f5fef9fe3b3a66f /biblio/citation-style-language/citeproc-ir-node.lua
parent96f1d7a9e9fe6e682cbd19d1bf2b7797891160b6 (diff)
CTAN sync 202309080302
Diffstat (limited to 'biblio/citation-style-language/citeproc-ir-node.lua')
-rw-r--r--biblio/citation-style-language/citeproc-ir-node.lua37
1 files changed, 34 insertions, 3 deletions
diff --git a/biblio/citation-style-language/citeproc-ir-node.lua b/biblio/citation-style-language/citeproc-ir-node.lua
index 9d1ee21905..7a940ef061 100644
--- a/biblio/citation-style-language/citeproc-ir-node.lua
+++ b/biblio/citation-style-language/citeproc-ir-node.lua
@@ -25,6 +25,21 @@ local GroupVar = {
---@class IrNode
+---@field _element Element?
+---@field _element_name string?
+---@field _type string
+---@field _base_class string
+---@field text string?
+---@field formatting any
+---@field affixes any
+---@field inlines InlineElement[]?
+---@field children IrNode[]?
+---@field delimiter string?
+---@field should_inherit_delim boolean?
+---@field group_var GroupVar
+---@field person_name_irs IrNode[]
+---@field name_count integer?
+---@field is_year boolean?
local IrNode = {
_element = nil,
_element_name = nil,
@@ -37,6 +52,9 @@ local IrNode = {
delimiter = nil,
}
+---@param children IrNode[]
+---@param element Element
+---@return IrNode
function IrNode:new(children, element)
local o = {
_element = element,
@@ -79,6 +97,8 @@ function IrNode:derive(type)
return o
end
+---@param level integer
+---@return string
function IrNode:_debug(level)
level = level or 0
local ir_info_str = ""
@@ -94,7 +114,13 @@ function IrNode:_debug(level)
if ir_info_str ~= "" then
ir_info_str = string.format("{%s}", ir_info_str)
end
- local text = string.format("\n%s [%s] %s <%s> %s", string.rep(" ", level), self.group_var, self._type, self._element_name, ir_info_str)
+ local element_info = self._element.element_name
+ for _, attr in ipairs({"name", "variable"}) do
+ if self._element[attr] then
+ element_info = element_info .. string.format(' %s="%s"', attr, self._element[attr])
+ end
+ end
+ local text = string.format("\n%s [%s] %s <%s> %s", string.rep(" ", level), self.group_var, self._type, element_info, ir_info_str)
if self.children and #self.children > 0 then
for _, child_ir in ipairs(self.children) do
text = text .. child_ir:_debug(level + 1)
@@ -114,8 +140,12 @@ end
function IrNode:capitalize_first_term()
-- util.debug(self)
- if self._type == "Rendered" and self.element and (self.element.term == "ibid" or self.element.term == "and") then
- self.inlines[1]:capitalize_first_term()
+ if self._type == "Rendered" and self._element then
+ local element = self._element
+ ---@cast element Text
+ if (element.term == "ibid" or element.term == "and") then
+ self.inlines[1]:capitalize_first_term()
+ end
elseif self._type == "SeqIr" and self.children[1] then
self.children[1]:capitalize_first_term()
end
@@ -213,6 +243,7 @@ end
---@class SeqIr: IrNode
+---@field children IrNode[]
local SeqIr = IrNode:derive("SeqIr")
-- function SeqIr:new(children)