Modul:Vorlage:DtRechtswörterbuch

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Vorlagenprogrammierung Diskussionen Lua Unterseiten
Modul Deutsch

Modul: Dokumentation

Diese Seite enthält Code in der Programmiersprache Lua. Einbindungszahl Cirrus

Dies ist die (produktive) Mutterversion eines global benutzten Lua-Moduls.
Wenn die serial-Information nicht übereinstimmt, müsste eine Kopie hiervon in das lokale Wiki geschrieben werden.
Versionsbezeichnung auf WikiData: 2024-05-15

Updating notwendig

(lokal: 2024-05-13)

local DRW = { suite  = "DtRechtswörterbuch",
              serial = "2024-05-13",
              item   = 124723073  }
--[=[
{{DtRechtswörterbuch}}
]=]


local Failsafe = DRW



local Band = {  [1] = "aachenfahrt",
                [2] = "bergkaue",
                [3] = "entschuldigen",
                [4] = "geleitlich",
                [5] = "handanlegen",
                [6] = "hufenwirt",
                [7] = "kanzlei",
                [8] = "kronungsakt",
                [9] = "mahlgericht",
               [10] = "notsache",
               [11] = "rat",
               [12] = "sau",
               [13] = "schwefel",
               [14] = "stegreif",
               [15] = "trittrechtXXXXXXXXXXXXXXXXX" }
local Heft = {  [1] = { { s="aach",              H="1",    J=1914 },
                        { s="ablegen",           H="1",    J=1914, K="Fortsetzung im Folgeheft" },
                        { s="ableger",           H="2",    K="Erscheinungsdatum zwischen 1914 und 1930" },
                        { s="abtrieb",           H="2",    K="Erscheinungsdatum zwischen 1914 und 1930, Fortsetzung im Folgeheft" },
                        { s="abtriebs",          H="3",    K="Erscheinungsdatum zwischen 1914 und 1930" },
                        { s="allerschwer",       H="3",    K="Erscheinungsdatum zwischen 1914 und 1930, Fortsetzung im Folgeheft" },
                        { s="allerunter",        H="4",    K="Erscheinungsdatum zwischen 1914 und 1930" },
                        { s="angehorig",         H="4",    K="Erscheinungsdatum zwischen 1914 und 1930, Fortsetzung im Folgeheft" },
                        { s="angehorigk",        H="5",    J=1963, DNB=453942571, JahrEA=1930 },
                        { s="anzunden",          H="6",    J=1963, DNB=453942598, JahrEA=1931 },
                        { s="auftragen",         H="6",    J=1963, DNB=453942598, JahrEA=1931, K="Fortsetzung im Folgeheft" },
                        { s="auftrager",         H="7",    K="Erscheinungsdatum 1931 oder 1932" },
                        { s="austeilen",         H="7",    K="Erscheinungsdatum 1931 oder 1932, Fortsetzung im Folgeheft" },
                        { s="austeiler",         H="8",    J=1962, OCLC=934824402, K="Erstausgabe: 1931 oder 1932" },
                        { s="bauersame",         H="8",    J=1962, OCLC=934824402, K="Erstausgabe: 1931 oder 1932, Fortsetzung im Folgeheft" },
                        { s="bauerschaft",       H="9",    K="Erscheinungsdatum 1931 oder 1932" },
                        { s="behalten",          H="9",    K="Fortsetzung im Folgeheft" },
                        { s="behaltensgeld",     H="10",   J=1932 } },
                [2] = { { s="bergkaue",          H="1",    K="Erscheinungsdatum 1932 oder 1933" },
                        { s="besserung",         H="1",    K="Erscheinungsdatum 1932 oder 1933, Fortsetzung im Folgeheft" },
                        { s="besserungs",        H="2",    K="Erscheinungsdatum 1932 oder 1933" },
                        { s="biergeld",          H="2",    K="Erscheinungsdatum 1932 oder 1933, Fortsetzung im Folgeheft" },
                        { s="biergeldein",       H="3",    K="Erscheinungsdatum 1932 oder 1933" },
                        { s="brechen",           H="3",    K="Erscheinungsdatum 1932 oder 1933, Fortsetzung im Folgeheft" },
                        { s="brecher",           H="4",    K="Erscheinungsdatum 1932 oder 1933" },
                        { s="burgschuldner",     H="5",    J=1963, DNB=453942601, JahrEA=1933 },
                        { s="dieb",              H="5",    J=1963, DNB=453942601, JahrEA=1933, K="Fortsetzung im Folgeheft" },
                        { s="dieba",             H="6",    K="Erscheinungsdatum zwischen 1933 und 1935" },
                        { s="dingen",            H="6",    K="Erscheinungsdatum zwischen 1933 und 1935, Fortsetzung im Folgeheft" },
                        { s="dinger",            H="7",    K="Erscheinungsdatum zwischen 1933 und 1935" },
                        { s="dritte",            H="7",    K="Erscheinungsdatum zwischen 1933 und 1935, Fortsetzung im Folgeheft" },
                        { s="dritteil",          H="8",    K="Erscheinungsdatum zwischen 1933 und 1935" },
                        { s="ehrenhaft",         H="8",    K="Erscheinungsdatum zwischen 1933 und 1935, Fortsetzung im Folgeheft" },
                        { s="ehrhaft",           H="9",    K="Erscheinungsdatum zwischen 1933 und 1935" },
                        { s="einreiten",         H="9",    K="Erscheinungsdatum zwischen 1933 und 1935, Fortsetzung im Folgeheft" },
                        { s="einreitung",        H="10",   J=1935 } },
                [3] = { { s="entschuldigen",     H="1",    J=1935 },
                        { s="erbzins",           H="1",    K="Erscheinungsdatum zwischen 1935 und 1938, Fortsetzung im Folgeheft" },
                        { s="erbzinsbrief",      H="2",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="erzschatzmeistera", H="3",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="feldlegung",        H="4",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="forstgericht",      H="4",    K="Erscheinungsdatum zwischen 1935 und 1938, Fortsetzung im Folgeheft" },
                        { s="forstgerichtbote",  H="5",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="freimarkthandel",   H="6",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="fromm",             H="6",    K="Erscheinungsdatum zwischen 1935 und 1938, Fortsetzung im Folgeheft" },
                        { s="frommde",           H="7",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="futterschutt",      H="7",    K="Erscheinungsdatum zwischen 1935 und 1938, Fortsetzung im Folgeheft" },
                        { s="futterst",          H="8",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="gebrauchen",        H="8",    K="Erscheinungsdatum zwischen 1935 und 1938, Fortsetzung im Folgeheft" },
                        { s="gebraucher",        H="9",    K="Erscheinungsdatum zwischen 1935 und 1938" },
                        { s="gegenbeweis",       H="9",    K="Erscheinungsdatum zwischen 1935 und 1938, Fortsetzung im Folgeheft" },
                        { s="gegenbeweisart",    H="10",   J=1938 } },
                [4] = { { s="geleitlich",        H="1",    J=1939 },            --OCLC=832566394 (Heft 1 bis 5) v. Knüßberg † 1941
                        { s="gemeinderechtob",   H="2",    K="Erscheinungsdatum zwischen 1939 und 1941" },
                        { s="gerichtsbehellig",  H="2",    K="Erscheinungsdatum zwischen 1939 und 1941, Fortsetzung im Folgeheft" },
                        { s="gerichtsbehorde",   H="3",    K="Erscheinungsdatum zwischen 1939 und 1941" },
                        { s="geschworen",        H="3",    K="Erscheinungsdatum zwischen 1939 und 1941, Fortsetzung im Folgeheft" },
                        { s="geschworene",       H="4",            OCLC=934824441, K="Erscheinungsdatum zwischen 1939 und 1941" },
                        { s="gewahr",            H="4",            OCLC=934824441, K="Erscheinungsdatum zwischen 1939 und 1941, Fortsetzung im Folgeheft" },
                        { s="gewahrab",          H="5",    K="Erscheinungsdatum zwischen 1939 und 1941" },
                        { s="gewissbier",        H="6",    K="Erscheinungsdatum zwischen 1941 und 1944" },
                        { s="glucksfall",        H="6",    K="Erscheinungsdatum zwischen 1941 und 1944, Fortsetzung im Folgeheft" },
                        { s="glucksgeld",        H="7",    J=1963, DNB=453942628, JahrEA=1944 },
                        { s="gross",             H="7",    J=1963, DNB=453942628, JahrEA=1944, K="Fortsetzung im Folgeheft" },
                        { s="grossacht",         H="8",    K="Erscheinungsdatum zwischen 1944 und 1951"},
                        { s="gurtel",            H="9",    K="Erscheinungsdatum zwischen 1944 und 1951" },
                        { s="halb",              H="9",    K="Erscheinungsdatum zwischen 1944 und 1951, Fortsetzung im Folgeheft" },
                        { s="halbacht",          H="10",   J=1951 } },
                [5] = { { s="handanlegen",       H="1",    J=1952 },            -- (1964, OCLC 832566394 H.1-5)
                        { s="handwerksknecht",   H="1",    K="Erscheinungsdatum zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="handwerkskomm",     H="2",    K="Erscheinungsdatum zwischen 1952 und 1960" },
                        { s="hauptmann",         H="2",    K="Erscheinungsdatum zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="hauptmannamt",      H="3",    K="Erscheinungsdatum zwischen 1952 und 1960" },
                        { s="hauswesen",         H="3",    K="Erscheinungsdatum zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="hauswiese",         H="4",    K="Erscheinungsdatum zwischen 1952 und 1960" },
                        { s="heimstellen",       H="4",    K="Erscheinungsdatum zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="heimstellung",      H="5",    K="Erscheinungsdatum zwischen 1952 und 1960" },
                        { s="herr",              H="5",    K="Erscheinungsdatum zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="herra",             H="6",    J=1966, OCLC=832566397, K="Erstausgabe zwischen 1952 und 1960" },
                        { s="hilfe",             H="6",    J=1966, OCLC=832566397, K="Erstausgabe zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="hilfebu",           H="7",    J=1966, OCLC=832566407, K="Erstausgabe zwischen 1952 und 1960" },
                        { s="hochgerichtsmark",  H="8",    J=1967, OCLC=832566414, K="Erstausgabe zwischen 1952 und 1960" },
                        { s="hofling",           H="8",    J=1967, OCLC=832566414, K="Erstausgabe zwischen 1952 und 1960, Fortsetzung im Folgeheft" },
                        { s="hoflivree",         H="9",    K="Erscheinungsdatum zwischen 1952 und 1960" },
                        { s="holzangelegenheit", H="10",   J=1967, OCLC=832566857, JahrEA=1960 } },
                [6] = { { s="hufenwirt",         H="1",    J=1961, OCLC=832566867 },
                        { s="hutschaft",         H="1",    J=1961, OCLC=832566867, K="Fortsetzung im Folgeheft" },
                        { s="hutschaftord",      H="2",    J=1962 },
                        { s="irren",             H="2",    J=1962, K="Fortsetzung im Folgeheft" },
                        { s="irrenanst",         H="3",    J=1963 },
                        { s="jakobspfrunde",     H="4",    J=1964, OCLC=833208293 },
                        { s="justizgebrechen",   H="5",    J=1965, OCLC=832566941 },
                        { s="kammeramt",         H="5",    J=1965, OCLC=832566941, K="Fortsetzung im Folgeheft" },
                        { s="kammeramtleut",     H="6",    J=1966, OCLC=832566952 },
                        { s="kammerratschlag",   H="6",    J=1966, OCLC=832566952, K="Fortsetzung im Folgeheft" },
                        { s="kammerratsdiat",    H="7",    J=1967, OCLC=833208342 },
                        { s="kante",             H="7",    J=1967, OCLC=833208342, K="Fortsetzung im Folgeheft" },
                        { s="kanten",            H="8",    J=1971, OCLC=832566989 },
                        { s="kantonsstatthalt",  H="8",    J=1971, OCLC=832566989, K="Fortsetzung im Folgeheft" },
                        { s="kantonsstelle",     H="9/10", J=1972, OCLC=833208357 } },    -- Spalten 1281-1530
                [7] = { { s="kanzlei",           H="1",    J=1974, OCLC=832567026 },
                        { s="kanzleipers",       H="1",    J=1974, OCLC=832567026, K="Fortsetzung im Folgeheft" },
                        { s="kanzleipet",        H="2",    J=1975, OCLC=832567064 },
                        { s="kaperschiff",       H="2",    J=1975, OCLC=832567064, K="Fortsetzung im Folgeheft" },
                        { s="kapfermeister",     H="3",    J=1976, OCLC=836723786 },
                        { s="kasernbeitrag",     H="3",    J=1976, OCLC=836723786, K="Fortsetzung im Folgeheft" },
                        { s="kasernegen",        H="4",    J=1977, OCLC=923299016 },
                        { s="kaufmannswahrung",  H="4",    J=1977, OCLC=923299016, K="Fortsetzung im Folgeheft" },
                        { s="kaufmannsware",     H="5",    J=1978, OCLC=832567094 },
                        { s="kiesen",            H="6",    J=1979, OCLC=718486457 },
                        { s="kirchfahrt",        H="6",    J=1979, OCLC=718486457, K="Fortsetzung im Folgeheft" },
                        { s="kirchfrau",         H="7",    J=1980, OCLC=718486466 },
                        { s="klosterverwalter",  H="7",    J=1980, OCLC=718486466, K="Fortsetzung im Folgeheft" },
                        { s="klosterverwaltung", H="8",    J=1981, OCLC=832567114 },
                        { s="konzil",            H="8",    J=1981, OCLC=832567114, K="Fortsetzung im Folgeheft" },
                        { s="konzilien",         H="9",    J=1982, OCLC=832567132 },
                        { s="kreisbrief",        H="10",   J=1983, OCLC=832567164 } },
                [8] = { { s="kronungsakt",       H="1",    J=1984, OCLC=832567170 },
                        { s="kurgericht",        H="1",    J=1984, OCLC=832567170, K="Fortsetzung im Folgeheft" },
                        { s="kurgerichtsord",    H="2",    J=1985, OCLC=832567175 },
                        { s="Land",              H="2",    J=1985, OCLC=832567175, K="Fortsetzung im Folgeheft" },
                        { s="landacht",          H="3",    J=1986, ISBN="3-7400-0006-6" },
                        { s="landknecht",        H="3",    J=1986, ISBN="3-7400-0006-6", K="Fortsetzung im Folgeheft" },     -- (es)
                        { s="landknechtgabe",    H="4",    J=1987, ISBN="3-7400-0007-4" },                                   -- (es)
                        { s="landsteuer",        H="4",    J=1987, ISBN="3-7400-0007-4", K="Fortsetzung im Folgeheft" },     -- (es)
                        { s="landsteuerbark",    H="5/6",  J=1988, ISBN="3-7400-0075-9" },                                   -- (es)
                        { s="lehnmann",          H="5/6",  J=1988, ISBN="3-7400-0075-9", K="Fortsetzung im Folgeheft" },     -- (s)
                        { s="lehnmanndienst",    H="7/8",  J=1989, ISBN="3-7400-0096-1" },                                   -- (s)
                        { s="leutnant",          H="7/8",  J=1989, ISBN="3-7400-0096-1", K="Fortsetzung im Folgeheft" },
                        { s="leutnantsbefehl",   H="9/10", J=1991, ISBN="3-7400-0137-2" } },
                [9] = { { s="mahlgericht",       H="1/2",  J=1992, ISBN="3-7400-0167-4" },
                        { s="martin",            H="1/2",  J=1992, ISBN="3-7400-0167-4", K="Fortsetzung im Folgeheft" },
                        { s="martinabend",       H="3/4",  J=1993, ISBN="3-7400-0926-8" },
                        { s="minderjahrig",      H="3/4",  J=1993, ISBN="3-7400-0926-8", K="Fortsetzung im Folgeheft" },
                        { s="minderjahrige",     H="5/6",  J=1994, ISBN="3-7400-0966-7" },
                        { s="mullerherberge",    H="7/8",  J=1995, ISBN="3-7400-0982-9" },
                        { s="nachteil",          H="7/8",  J=1995, ISBN="3-7400-0982-9", K="Fortsetzung im Folgeheft" },
                        { s="nachteile",         H="9/10", J=1996, ISBN="3-7400-0983-7" } },
               [10] = { { s="notsache",          H="1/2",  J=1997, ISBN="3-7400-0984-5" },
                        { s="opferbar",          H="1/2",  J=1997, ISBN="3-7400-0984-5", K="Fortsetzung im Folgeheft" },
                        { s="opferbare",         H="3/4",  J=1998, ISBN="3-7400-0985-3" },
                        { s="pfaffenfurst",      H="3/4",  J=1998, ISBN="3-7400-0985-3", K="Fortsetzung im Folgeheft" },
                        { s="pfaffengarten",     H="5/6",  J=1999, ISBN="3-7400-0986-1" },
                        { s="pflicht",           H="5/6",  J=1999, ISBN="3-7400-0986-1", K="Fortsetzung im Folgeheft" },
                        { s="pflichtbar",        H="7/8",  J=2000, ISBN="3-7400-0988-8" },
                        { s="prinzipalfo",       H="9/10", J=2001, ISBN="3-7400-0989-6" } },
               [11] = { { s="rat",               H="1/2",  J=2003, ISBN="3-7400-0991-8" },
                        { s="rechtbestandig",    H="3/4",  J=2004, ISBN="3-7400-0992-6" },
                        { s="reichshofratspro",  H="5/6",  J=2005, ISBN="3-7400-1230-7" },
                        { s="reuen",             H="7/8",  J=2006, ISBN="3-7400-1231-5" },
                        { s="rufamt",            H="9/10", J=2007, ISBN="978-3-7400-1240-3" } },
               [12] = { { s="sau",               H="1/2",  J=2009, ISBN="978-3-7400-1245-8" },
                        { s="schaub",            H="3/4",  J=2010, ISBN="978-3-7400-1254-0" },
                        { s="schilling",         H="5/6",  J=2011, ISBN="978-3-7400-1260-1" },
                        { s="schnappreitel",     H="7/8",  J=2012, ISBN="978-3-7400-1262-5" },
                        { s="schuld",            H="7/8",  J=2012, ISBN="978-3-7400-1262-5", K="Fortsetzung im Folgeheft" },
                        { s="schuldakt",         H="9/10", J=2013, ISBN="978-3-7400-1263-2" } },
               [13] = { { s="schwefel",          H="1/2",  J=2014, ISBN="978-3-7400-1268-7" },
                        { s="selchen",           H="3/4",  J=2015, ISBN="978-3-7400-1270-0" },
                        { s="sittenrichter",     H="5/6",  J=2016, ISBN="978-3-7400-1272-4" },
                        { s="spiess",            H="7/8",  J=2017, ISBN="978-3-476-04538-6" },
                        { s="stadtkanzler",      H="9/10", J=2018, ISBN="978-3-476-04722-9" } },
               [14] = { { s="stegreif",          H="1/2",  J=2019, ISBN="978-3-476-05156-1" },
                        { s="stock",             H="3/4",  J=2021, ISBN="978-3-662-62594-1" },
                        { s="subjekt",           H="5/6",  J=2022, ISBN="978-3-662-64943-5" },
                        { s="taugbar",           H="7/8",  J=2023, ISBN="978-3-662-66995-2" },
                        { s="tor",               H="9/10", J=2024, ISBN="978-3-662-69377-3" }  } }



function fair( args, arg )
    local r = args[ arg ]
    if r then
        if type( arg ) == "number" then
            r = mw.text.trim( r )
        end
        if r == "" then
            r = nil
        end
    end
    return r
end -- fair()



function findeBand( attempt )
    local r
    for i = 1, #Band do
        if attempt < Band[ i ] then
            r =  i - 1
            break -- for i
        end
    end -- for i
    if not r then
        r = 0
    end
    return r
end -- findeBand()



function findeHeft( at, attempt )
    local band = Heft[ at ]
    local r
    if band then
        local heft, sort
        for i = #band, 1, -1 do
            heft = band[ i ]
            sort = heft.s
            if sort  and  attempt >= sort then
                r = { Heft      = heft.H,
                      Jahr      = tostring( heft.J or "" ),
                      Kommentar = heft.K,
                      ISBN      = heft.ISBN,
                      DNB       = tostring( heft.DNB or "" ),
                      OCLC      = tostring( heft.OCLC or "" ),
                      JahrEA    = tostring( heft.JahrEA or "" ) }
                break -- for i
            end
        end -- for i--
    end
    return r or { }
end -- findeHeft()



function former( apply )
    local e     = mw.html.create( "span" )
                         :css( "font-family", "serif" )
    local roman = {  [1] = "I",
                     [2] = "II",
                     [3] = "III",
                     [4] = "IV",
                     [5] = "V",
                     [6] = "VI",
                     [7] = "VII",
                     [8] = "VIII",
                     [9] = "IX",
                    [10] = "X",
                    [11] = "XI",
                    [12] = "XII",
                    [13] = "XIII",
                    [14] = "XIV",
                    [15] = "XV",
                    [16] = "XVI",
                    [17] = "XVII",
                    [18] = "XVIII",
                    [19] = "XIX",
                    [20] = "XX" }
    e:wikitext( roman[ apply ]  or  "???????????" )
    return tostring( e )
end -- former()



function getArticleBase()
    local r = mw.title.getCurrentTitle().text
    if r then
        local sub = r:match( "^(.*%S) *%(.+%)$" )
        if sub then
            r = sub
        end
    end
    return r
end -- getArticleBase()



Failsafe.failsafe = function ( atleast )
    -- Retrieve versioning and check for compliance
    -- Precondition:
    --     atleast  -- string, with required version
    --                         or wikidata|item|~|@ or false
    -- Postcondition:
    --     Returns  string  -- with queried version/item, also if problem
    --              false   -- if appropriate
    -- 2024-03-01
    local since  = atleast
    local last   = ( since == "~" )
    local linked = ( since == "@" )
    local link   = ( since == "item" )
    local r
    if last  or  link  or  linked  or  since == "wikidata" then
        local item = Failsafe.item
        since = false
        if type( item ) == "number"  and  item > 0 then
            local suited = string.format( "Q%d", item )
            if link then
                r = suited
            else
                local entity = mw.wikibase.getEntity( suited )
                if type( entity ) == "table" then
                    local seek = Failsafe.serialProperty or "P348"
                    local vsn  = entity:formatPropertyValues( seek )
                    if type( vsn ) == "table"  and
                       type( vsn.value ) == "string"  and
                       vsn.value ~= "" then
                        if last  and  vsn.value == Failsafe.serial then
                            r = false
                        elseif linked then
                            if mw.title.getCurrentTitle().prefixedText
                               ==  mw.wikibase.getSitelink( suited ) then
                                r = false
                            else
                                r = suited
                            end
                        else
                            r = vsn.value
                        end
                    end
                end
            end
        elseif link then    
            r = false
        end
    end
    if type( r ) == "nil" then
        if not since  or  since <= Failsafe.serial then
            r = Failsafe.serial
        else
            r = false
        end
    end
    return r
end -- Failsafe.failsafe()



-- Export
local p = {}

function p.f( frame )
    local pTemplate = frame:getParent().args
    local stichwort = fair( pTemplate, 1 )
    local spalteA   = fair( pTemplate, "SpalteAb" )
    local spalteB   = fair( pTemplate, "SpalteBis" )
    local sub       = fair( pTemplate, "Bedeutung" )
    local kommentar = fair( pTemplate, "Kommentar" )
    local kurz      = fair( pTemplate, "kurz" )
    local q, n, pCore, s, scream, suffix
    if not stichwort then
        stichwort = getArticleBase()
    end
    s = mw.ustring.lower( stichwort )
    if s == "geschwören" then
        s = "geschworene"
    elseif s:sub( 1, 1 ) == "l" then
        if s:sub( 1, 6 ) == "landes" then
            s = "land" .. s:sub( 7 )
        elseif s:sub( 1, 5 ) == "lehns" then
            s = "lehn" .. s:sub( 6 )
        end
    end
    s = mw.ustring.gsub( s, "ä", "a" )
    s = mw.ustring.gsub( s, "ö", "o" )
    s = mw.ustring.gsub( s, "ü", "u" )
    s = mw.ustring.gsub( s, "ß", "ss" )
    n = findeBand( s )
    q = findeHeft( n, s )
    if spalteA then
        if spalteA:match( "^[1-9]%d*$" ) then
            local iA = tonumber( spalteA )
            if iA > 1600 then
                scream = string.format( "%s: <code>%d</code>",
                                        "SpalteAb zu groß", iA )
            elseif spalteB then
                if spalteB == spalteA then
                    spalteB = nil
                elseif spalteB:match( "^[1-9]%d*$" ) then
                    local iB = tonumber( spalteB )
                    if iB > 1600 then
                        scream = string.format( "%s: <code>%d</code>",
                                                "SpalteBis zu groß", iB )
                    elseif iA > iB then
                        scream = "SpalteAb &gt; SpalteBis"
                    end
                else
                    scream = string.format( "%s: <code>%s</code>",
                                            "SpalteBis fehlerhaft",
                                            spalteB )
                end
            end
        else
            scream = string.format( "%s: <code>%s</code>",
                                    "SpalteAb fehlerhaft",
                                    spalteA )
        end
    elseif spalteB then
        spalteB = nil
        scream = "SpalteBis ohne SpalteAb"
    end
    if n == 0 then
        scream = "Stichwort unzulässig"
    elseif n == #Band then
        scream = "Stichwort jenseits der bekannten Ausgaben"
    end
    s = fair( pTemplate, 2 ) or stichwort
    if sub then
        if sub:match( "^%d" ) then
            local k, m
            if sub:find( ".", 2, true ) then
                k, m = sub:match( "^(%d+)%.(%d+)$" )
                if k then
                    local i = tonumber( k )
                    if i >= 1  and  i <= 20 then
                        suffix = string.format( "%s&#8239;%s)",
                                                former( i ),  m )
                    else
                        scream = string.format( "%s: <code>%s</code>.%s",
                                                "Bedeutung fehlerhaft",
                                                k, m )
                    end
                end
            else
                k = sub:match( "^%d+$" )
                if k then
                    m      = "0"
                    suffix = former( tonumber( k ) ) .. ")"
                end
            end
            if k then
                local subtext = fair( pTemplate, "Teilbegriff" )
                sub = string.format( "#%s-%s.%s", s, k, m )
                if subtext then
                    local e = mw.html.create( "span" )
                                     :css( "font-style", "italic" )
                                     :wikitext( subtext )
                    suffix = string.format( "%s&#160;%s",
                                            suffix,  tostring( e ) )
                end
            else
                sub    = nil
                suffix = nil
            end
    else
        sub    = nil
        suffix = nil
        scream = "Bedeutung kein Zahlencode"
        end
    end
    if kommentar and q.Kommentar then
        kommentar = string.format( "%s&#160;&#8211; %s",
                                   q.Kommentar,
                                   kommentar )
    elseif q.Kommentar then
        kommentar = q.Kommentar
    end
    if kurz   and
       ( kurz == "0"  or
         kurz == "-"  or
         kurz:sub( 1, 1 ):lower() == "n" ) then
        kurz = nil
    end
    pCore = { Stichwort = stichwort,
              ID        = mw.uri.encode( s, "QUERY" ),
              Fragment  = sub,
              TitelErg  = suffix,
              Band      = tostring( n ),
              Heft      = q.Heft,
              Jahr      = q.Jahr,
              Kommentar = kommentar,
              ISBN      = q.ISBN,
              DNB       = q.DNB,
              OCLC      = q.OCLC,
              JahrEA    = q.JahrEA,
              SpalteAb  = spalteA,
              SpalteBis = spalteB,
              kurz      = kurz,
              error     = scream }
    return frame:expandTemplate{ title = "DtRechtswörterbuch/core",
                                 args  = pCore }
end -- .f()



p.failsafe = function ( frame )
    -- Versioning interface
    local s = type( frame )
    local since
    if s == "table" then
        since = frame.args[ 1 ]
    elseif s == "string" then
        since = frame
    end
    if since then
        since = mw.text.trim( since )
        if since == "" then
            since = false
        end
    end
    return Failsafe.failsafe( since )  or  ""
end -- p.failsafe

setmetatable( p,  { __call = function ( func, ... )
                                 setmetatable( p, nil )
                                 return Failsafe
                             end } )
return p