Module:oyen-contionary-utils: Difference between revisions

From Linguifex
Jump to navigation Jump to search
m (debugging #2)
m (maybe this works?)
Line 4: Line 4:
local m = {}
local m = {}


function m.setup_entry(lang_code)
function m.setup_entry(frame)
   return table.concat(lang_code, "\n")
   local args = m_args.getArgs(frame)


   --[[local lang = m_languages.getByCode(lang_code, nil, false, false)
   local lang_code = args[1]
 
  local lang = m_languages.getByCode(lang_code, nil, false, false)


   if not lang then
   if not lang then
Line 23: Line 25:
   end
   end


   return mw_src]]
   return mw_src
end
end


function m.entry(word_type)
function m.entry(frame)
  local args = m_args.getArgs(frame)
 
  local word_type = args[1]
 
   local mw_src = ""
   local mw_src = ""


Line 76: Line 82:
end
end


function m.lthm_noun(root, stem_id)
function m.lthm_noun(frame)
   local noun_stems = {
   local noun_stems = {
     ["e-stem"] = {
     ["e-stem"] = {
Line 109: Line 115:
     }
     }
   }
   }
  local args = m_args.getArgs(frame)
  local root = args[1]
  local stem_id = args[2]


   local stem = noun_stems[stem_id]
   local stem = noun_stems[stem_id]

Revision as of 21:46, 26 November 2024

Documentation for this module may be created at Module:oyen-contionary-utils/doc

local m_args = require("Module:Arguments")
local m_languages = require("Module:languages")

local m = {}

function m.setup_entry(frame)
  local args = m_args.getArgs(frame)

  local lang_code = args[1]

  local lang = m_languages.getByCode(lang_code, nil, false, false)

  if not lang then
    error(string.format("Invalid language code '[%s]'"), lang_code)
  end

  local reconstructed = lang:getTypes()["reconstructed"]

  local mw_src = ""

  mw_src = mw_src + string.format("==[%s]==", lang:getCanonicalName())

  if reconstructed then
    mw_src = mw_src + "{{Reconstructed}}"
  end

  return mw_src
end

function m.entry(frame)
  local args = m_args.getArgs(frame)

  local word_type = args[1]

  local mw_src = ""

  mw_src = mw_src + string.format("===[%s]===", word_type)

  mw_src = mw_src + "<b>{{PAGENAME}}</b><br>"

  return mw_src
end

local function inflection(base_form, x_categories, y_categories, stem, collapsed_highlight_coords)
  local wikicode = {}

  table.insert(wikicode, "{| class=\"inflection-table vsSwitcher\" data-toggle-category=\"inflection\" style=\"background: #FAFAFA; border: 1px solid #d0d0d0; text-align: left;\" cellspacing=\"1\" cellpadding=\"2\"")
  table.insert(wikicode, "|- style=\"background: #CCCCFF;\"\n! class=\"vsToggleElement\" colspan=\"" .. (#x_categories + 1) .. "\" | " .. stem[1])

  table.insert(wikicode, "|- class=\"vsShow\" style=\"background: #CCCCFF;\"")
	table.insert(wikicode, "!")

  table.insert(wikicode, "! style=\"min-width: 11em; background: #CCCCFF;\" | " .. x_categories[1])

  for _, highlight in ipairs(collapsed_highlight_coords) do
    table.insert(wikicode, "|- class=\"vsShow\" style=\"background: #F2F2FF;\"")
	  table.insert(wikicode, "! style=\"min-width: 8em; background: #E6E6FF;\" | " .. y_categories[highlight[2]])

    table.insert(wikicode, "| style=\"min-width: 11em;\" | " .. string.format(stem[2][highlight[2]][highlight[1]], base_form))
  end

  table.insert(wikicode, "|- class=\"vsHide\" style=\"background: #CCCCFF;\"")
  table.insert(wikicode, "!")

  for _, x_cat in ipairs(x_categories) do
    table.insert(wikicode, "! style=\"min-width: 11em; background: #CCCCFF;\" | " .. x_cat)
  end

  for y_i, y_cat in ipairs(y_categories) do
    table.insert(wikicode, "|- class=\"vsHide\" style=\"background-color: #F2F2FF;\"\n! style=\"min-width: 8em; background-color: #E6E6FF;\" | " .. y_cat)

    for x_i, x_cat in ipairs(x_categories) do
      table.insert(wikicode, "| " .. string.format(stem[2][y_i][x_i], base_form))
    end
  end

  table.insert(wikicode, [=[|}]=])

  local mw_src = table.concat(wikicode, "\n")

  return mw_src
end

function m.lthm_noun(frame)
  local noun_stems = {
    ["e-stem"] = {
      "e-stem",
      {
        {"[%s]et-", "[%s]KL̀t"},
        {"[%s]eĺ-", "[%s]Kỳĺ"},
        {"[%s]ḿeDat-", "[%s]KLeT"},
        {"[%s]oNat-", "[%s]KL̀n"},
        {"[%s]raBet-", "[%s]KRaB"},
      }
    },
    ["e-stem y-var"] = {
      "e-stem y-variation",
      {
        {"[%s]yet-", "[%s]ỳKL̀t"},
        {"[%s]yeĺ-", "[%s]ỳKỳĺ"},
        {"[%s]ỳḿeDat-", "[%s]ỳKLeT"},
        {"[%s]yoNat-", "[%s]ỳKL̀n"},
        {"[%s]ỳraBet-", "[%s]ỳKRaB"},
      }
    },
    ["a-stem"] = {
      "a-stem",
      {
        {"[%s]at-", "[%s]KL̀t"},
        {"[%s]aĺ-", "[%s]Kỳĺ"},
        {"[%s]ḿat-", "[%s]KLaT"},
        {"[%s]oNat-", "[%s]KL̀n"},
        {"[%s]raBat-", "[%s]KRaB"},
      }
    }
  }

  local args = m_args.getArgs(frame)

  local root = args[1]
  local stem_id = args[2]

  local stem = noun_stems[stem_id]

  if not stem then
    error(string.format("No stem found with identifier '[%s]'", root))
  end

  return inflection(
    root,
    {"Definite", "Indefinite"},
    {"Nominative", "Objective", "Locative", "Ablative", "Lative"},
    stem,
    {{1, 1}, {1, 2}}
  )
end

return m