<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.cowboy-of-bottrop.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AISO15924%2Fcommons</id>
	<title>Modul:ISO15924/commons - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cowboy-of-bottrop.de/index.php?action=history&amp;feed=atom&amp;title=Modul%3AISO15924%2Fcommons"/>
	<link rel="alternate" type="text/html" href="https://wiki.cowboy-of-bottrop.de/index.php?title=Modul:ISO15924/commons&amp;action=history"/>
	<updated>2026-09-01T14:58:17Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Cowboy’s Wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.cowboy-of-bottrop.de/index.php?title=Modul:ISO15924/commons&amp;diff=832&amp;oldid=prev</id>
		<title>Cowboy: Die Seite wurde neu angelegt: „local ISO15924 = { suite  = &quot;ISO15924&quot;,                    sub    = &quot;commons&quot;,                    serial = &quot;2019-11-12&quot;,                    item   = 71679535,                    main   = 71584769 } --[=[ Create ISO 15924 mw.loadData() table from commons:Data: ]=] local Failsafe = ISO15924 local Fetch    = { }    Fetch.data = function ( access, assume )     -- Retrieve one Data.tab element     -- Precondition:     --     access  -- string, with sub tab, or…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.cowboy-of-bottrop.de/index.php?title=Modul:ISO15924/commons&amp;diff=832&amp;oldid=prev"/>
		<updated>2025-02-26T23:19:50Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „local ISO15924 = { suite  = &amp;quot;ISO15924&amp;quot;,                    sub    = &amp;quot;commons&amp;quot;,                    serial = &amp;quot;2019-11-12&amp;quot;,                    item   = 71679535,                    main   = 71584769 } --[=[ Create ISO 15924 mw.loadData() table from commons:Data: ]=] local Failsafe = ISO15924 local Fetch    = { }    Fetch.data = function ( access, assume )     -- Retrieve one Data.tab element     -- Precondition:     --     access  -- string, with sub tab, or…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local ISO15924 = { suite  = &amp;quot;ISO15924&amp;quot;,&lt;br /&gt;
                   sub    = &amp;quot;commons&amp;quot;,&lt;br /&gt;
                   serial = &amp;quot;2019-11-12&amp;quot;,&lt;br /&gt;
                   item   = 71679535,&lt;br /&gt;
                   main   = 71584769 }&lt;br /&gt;
--[=[&lt;br /&gt;
Create ISO 15924 mw.loadData() table from commons:Data:&lt;br /&gt;
]=]&lt;br /&gt;
local Failsafe = ISO15924&lt;br /&gt;
local Fetch    = { }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.data = function ( access, assume )&lt;br /&gt;
    -- Retrieve one Data.tab element&lt;br /&gt;
    -- Precondition:&lt;br /&gt;
    --     access  -- string, with sub tab, or false&lt;br /&gt;
    --     assume  -- string, with expected structure type&lt;br /&gt;
    -- Returns: table&lt;br /&gt;
    local storage = ISO15924.suite&lt;br /&gt;
    local r = { }&lt;br /&gt;
    local data, lucky&lt;br /&gt;
    if access then&lt;br /&gt;
        storage = string.format( &amp;quot;%s/%s&amp;quot;, storage, access )&lt;br /&gt;
    end&lt;br /&gt;
    storage = storage .. &amp;quot;.tab&amp;quot;&lt;br /&gt;
    lucky, data = pcall( mw.ext.data.get, storage )&lt;br /&gt;
    if type( data ) == &amp;quot;table&amp;quot;  and&lt;br /&gt;
       type( data.data ) == &amp;quot;table&amp;quot;  and&lt;br /&gt;
       type( Fetch[ assume ] ) == &amp;quot;function&amp;quot; then&lt;br /&gt;
        local entry, sign, value&lt;br /&gt;
        data = data.data&lt;br /&gt;
        for i = 1, #data do&lt;br /&gt;
            entry = data[ i ]&lt;br /&gt;
            if type( entry ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
                sign, value = Fetch[ assume ]( entry )&lt;br /&gt;
                if sign then&lt;br /&gt;
                    r[ sign ] = value&lt;br /&gt;
                elseif value then&lt;br /&gt;
                    table.insert( r, value )&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end -- for i&lt;br /&gt;
    end&lt;br /&gt;
    return r&lt;br /&gt;
end -- Fetch.data()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.boolean = function ( achieved )&lt;br /&gt;
    -- Convert ext.data entry into assignment to boolean&lt;br /&gt;
    local r1 = achieved[ 1 ]&lt;br /&gt;
    local r2 = achieved[ 2 ]&lt;br /&gt;
    if not r2 then&lt;br /&gt;
        r1 = false&lt;br /&gt;
    end&lt;br /&gt;
    return r1, r2&lt;br /&gt;
end -- Fetch.boolean()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.ranges = function ( achieved )&lt;br /&gt;
    -- Convert ext.data entry into table of ranges or redirects&lt;br /&gt;
    local r = achieved[ 2 ]&lt;br /&gt;
    if r:sub( 1, 2 ) == &amp;quot;0x&amp;quot; then&lt;br /&gt;
        local ranges = mw.text.split( r, &amp;quot;%s*|%s*&amp;quot; )&lt;br /&gt;
        local range&lt;br /&gt;
        r = { }&lt;br /&gt;
        for i = 1, #ranges do&lt;br /&gt;
            range = mw.text.split( ranges[ i ], &amp;quot;%s+&amp;quot; )&lt;br /&gt;
            range = { tonumber( range[ 1 ] ),&lt;br /&gt;
                      tonumber( range[ 2 ] ) }&lt;br /&gt;
            table.insert( r, range )&lt;br /&gt;
        end -- for i&lt;br /&gt;
    else&lt;br /&gt;
        r = mw.text.split( r, &amp;quot;%s+&amp;quot; )&lt;br /&gt;
    end&lt;br /&gt;
    return achieved[ 1 ], r&lt;br /&gt;
end -- Fetch.ranges()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.reverse = function ( achieved )&lt;br /&gt;
    -- Convert ext.data entry into table item with range and string table&lt;br /&gt;
    local iBeg   = tonumber( achieved[ 1 ], 16 )&lt;br /&gt;
    local iEnd   = tonumber( achieved[ 2 ], 16 )&lt;br /&gt;
    local permit = mw.text.split( achieved[ 3 ], &amp;quot;%s+&amp;quot; )&lt;br /&gt;
    return false,  { iBeg, iEnd, permit }&lt;br /&gt;
end -- Fetch.reverse()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.string = function ( achieved )&lt;br /&gt;
    -- Convert ext.data entry into assignment to string&lt;br /&gt;
    return achieved[ 1 ], achieved[ 2 ]&lt;br /&gt;
end -- Fetch.string()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.strings = function ( achieved )&lt;br /&gt;
    -- Convert ext.data entry into assignment to table of strings&lt;br /&gt;
    return achieved[ 1 ], mw.text.split( achieved[ 2 ], &amp;quot;%s+&amp;quot; )&lt;br /&gt;
end -- Fetch.strings()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.run = function ()&lt;br /&gt;
    -- Populate object with data&lt;br /&gt;
    -- Postcondition:&lt;br /&gt;
    --    ISO15924 expanded&lt;br /&gt;
    local tables = Fetch.data( false, &amp;quot;string&amp;quot; )&lt;br /&gt;
    for k, v in pairs( tables ) do&lt;br /&gt;
        ISO15924[ k ] = Fetch.data( k, v )&lt;br /&gt;
    end -- for k, v&lt;br /&gt;
end -- Fetch.run()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local fresh = function ()&lt;br /&gt;
    -- Check for global update&lt;br /&gt;
    -- Returns: true, if matching global version; false, if not&lt;br /&gt;
    -- 2019-10-15&lt;br /&gt;
    local r&lt;br /&gt;
    if type( Failsafe.item ) == &amp;quot;number&amp;quot;  and  Failsafe.item &amp;gt; 0 then&lt;br /&gt;
        local storage = string.format( &amp;quot;Q%d&amp;quot;, Failsafe.item )&lt;br /&gt;
        local entity  = mw.wikibase.getEntity( storage )&lt;br /&gt;
        if type( entity ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
            local seek = Failsafe.serialProperty or &amp;quot;P348&amp;quot;&lt;br /&gt;
            local vsn  = entity:formatPropertyValues( seek )&lt;br /&gt;
            if type( vsn ) == &amp;quot;table&amp;quot;  and&lt;br /&gt;
               vsn.value == Failsafe.serial then&lt;br /&gt;
                r = true&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return r or false&lt;br /&gt;
end -- fresh()&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Fetch.run()&lt;br /&gt;
ISO15924.failsafe = ISO15924.serial&lt;br /&gt;
if mw.title.getCurrentTitle().namespace &amp;gt; 0 then&lt;br /&gt;
    ISO15924.last = fresh()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return ISO15924&lt;/div&gt;</summary>
		<author><name>Cowboy</name></author>
	</entry>
</feed>