Module:entry list
From SUALEX
Documentation for this module may be created at Module:entry list/doc
-- Module:entry_list
local p = {}
function p.invoke(frame)
local lexicon = require("Module:lexicon")
local utilities = require("Module:utilities")
local format = require("Module:format")
local parameters = require("Module:parameters")
local etymology = require("Module:etymology")
local args = frame.args or {}
local lang_code = args[1] or ""
local entries = lexicon.load_lexicon(lang_code)
local rows = {}
table.insert(rows, '{| class="wikitable searchable sortable"\n! Term !! Original !! English !! Spanish !! Source !! Etymon !! Notes')
for _, entry in ipairs(entries) do
local cols = {}
-- anchor span for each term
local terms = {}
for _, t in ipairs(entry.term or {}) do
local anchor_id = (t.term_item or "") .. (t.homonym and (":" .. t.homonym) or "")
local anchor_span = '<span id="' .. anchor_id .. '"></span>'
-- show gloss_en by default
local rendered = format.render_term(entry.lang_code, t.term_item, t.homonym, t.display_form, true, nil, "no")
table.insert(terms, anchor_span .. rendered)
end
table.insert(cols, utilities.join_strings(terms, parameters.value_display_separator))
local spells = {}
for _, s in ipairs(entry.spelling or {}) do
table.insert(spells, (s.spelling_item or "") .. (s.orthography and (" (" .. s.orthography .. ")") or ""))
end
table.insert(cols, utilities.join_strings(spells, parameters.value_display_separator))
-- gloss_en and gloss_es columns (raw gloss text)
local gloss_en = {}
for _, g in ipairs(entry.gloss_en or {}) do
table.insert(gloss_en, format.gloss_text(g.gloss_item, g.sup))
end
table.insert(cols, utilities.join_strings(gloss_en, parameters.value_display_separator))
local gloss_es = {}
for _, g in ipairs(entry.gloss_es or {}) do
table.insert(gloss_es, format.gloss_text(g.gloss_item, g.sup))
end
table.insert(cols, utilities.join_strings(gloss_es, parameters.value_display_separator))
local refs = {}
for _, r in ipairs(entry.reference or {}) do
table.insert(refs, format.reference(r.author, r.year, r.page))
end
table.insert(cols, utilities.join_strings(refs, parameters.value_display_separator))
-- render etymons from structured object (gloss_en default)
local etyms = {}
for _, e in ipairs(entry.etymon or {}) do
table.insert(etyms, etymology.render_etymon(e.descendant_type, e.items, e.uncertainty, "en"))
end
table.insert(cols, utilities.join_strings(etyms, parameters.value_display_separator))
local notes = {}
for _, n in ipairs(entry.notes or {}) do table.insert(notes, n.raw or "") end
local notes_wikitext = utilities.join_strings(notes, parameters.value_display_separator)
table.insert(cols, frame:preprocess(notes_wikitext))
table.insert(rows, "|-\n| " .. utilities.join_strings(cols, " || "))
end
table.insert(rows, "|}")
return utilities.join_strings(rows, "\n")
end
return p