Hopp til innhold

Modul:title-l

Fra Wiktionary

Modul som lenker alle forekomster av ord dersom frasen inneholder mellomrom. Basert på tilsvarende kode fra en:Module:headword. Modulen inneholder én funksjon, preprocess, som tar som første parameter en språkkode, andre parameter termen som skal sjekkes og eventuelt lenkes.

  • {{#invoke:title-l|preprocess|no|hus}} gir tilbake teksten hus (ingen formatering)
  • {{#invoke:title-l|preprocess|no|høre hjemme}} gir tilbake teksten [[høre#Norsk|høre]] [[hjemme#Norsk|hjemme]] (splitter på mellomrom, lenker til hvert enkeltord til riktig språkseksjon)
  • {{#invoke:title-l|preprocess|no|[[ha]] [[hode]]t [[over]] [[vann]]et}} gir tilbake teksten [[ha#Norsk|ha]] [[hode#Norsk|hodet]] [[over#Norsk|over]] [[vann#Norsk|vannet]]

Merk at modulen skal brukes i maler, og aldri direkte i wikiteksten.


local String = require("Modul:string")
local link = require("Modul:link")
local export = {}

local m_pagename = mw.title.getCurrentTitle().text

function export.preprocess(frame)
    local language_code = frame.args[1]
    local default_head = frame.args[2]

    default_head = mw.ustring.gsub(default_head, "'", "'")

    local spacingPunctuation = "([%s%p]+)"
    --[[ 	Variable containing anything that is
		not a punctuation character found inside of words.
		Used to exclude characters from the above regex.	]]
    local notWordPunc = "([^-־׳״'.·*]+)"
    local contains_words = false
    local contains_links = mw.ustring.find(default_head, "%[%[")
		
    for possibleWordBreak in mw.ustring.gmatch(default_head, spacingPunctuation) do
        if mw.ustring.find(possibleWordBreak, notWordPunc) then
            contains_words = true
            break
        end
    end
		
    if contains_words and not contains_links then
        local function workaround_to_exclude_chars(s)
              return mw.ustring.gsub(s, notWordPunc, "]]%1[[")
        end
			
        default_head = "[["
             .. mw.ustring.gsub(
                  default_head,
                  spacingPunctuation,
                  workaround_to_exclude_chars)
             .. "]]"
        default_head = mw.ustring.gsub(default_head, "%[%[%]%]", "")
    end
    if contains_words then
        return link.link(default_head, language_code)
    else
        return default_head
    end
end

function export.contains_spaces(frame)
    local head = frame.args[1]
    return (String.find({args={head, " "}}) > 0)
end

return export