diff options
author | Norbert Preining <norbert@preining.info> | 2023-09-08 03:02:30 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2023-09-08 03:02:30 +0000 |
commit | 608e422a8e775ac4d1c23c80b4170776701680d5 (patch) | |
tree | d1e69057c0dc339fb0f890882f5fef9fe3b3a66f /biblio/citation-style-language/citeproc-ir-node.lua | |
parent | 96f1d7a9e9fe6e682cbd19d1bf2b7797891160b6 (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.lua | 37 |
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) |