Modul:ISO15924/commons
Modul:ISO15924 commons
| Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
| Modul | Deutsch | English
|
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.
Wenn die serial-Information nicht übereinstimmt, müsste eine Kopie hiervon in das lokale Wiki geschrieben werden.
Versionsbezeichnung auf WikiData:
2019-11-12local ISO15924 = { suite = "ISO15924",
sub = "commons",
serial = "2019-11-12",
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 false
-- assume -- string, with expected structure type
-- Returns: table
local storage = ISO15924.suite
local r = { }
local data, lucky
if access then
storage = string.format( "%s/%s", storage, access )
end
storage = storage .. ".tab"
lucky, data = pcall( mw.ext.data.get, storage )
if type( data ) == "table" and
type( data.data ) == "table" and
type( Fetch[ assume ] ) == "function" then
local entry, sign, value
data = data.data
for i = 1, #data do
entry = data[ i ]
if type( entry ) == "table" then
sign, value = Fetch[ assume ]( entry )
if sign then
r[ sign ] = value
elseif value then
table.insert( r, value )
end
end
end -- for i
end
return r
end -- Fetch.data()
Fetch.boolean = function ( achieved )
-- Convert ext.data entry into assignment to boolean
local r1 = achieved[ 1 ]
local r2 = achieved[ 2 ]
if not r2 then
r1 = false
end
return r1, r2
end -- Fetch.boolean()
Fetch.ranges = function ( achieved )
-- Convert ext.data entry into table of ranges or redirects
local r = achieved[ 2 ]
if r:sub( 1, 2 ) == "0x" then
local ranges = mw.text.split( r, "%s*|%s*" )
local range
r = { }
for i = 1, #ranges do
range = mw.text.split( ranges[ i ], "%s+" )
range = { tonumber( range[ 1 ] ),
tonumber( range[ 2 ] ) }
table.insert( r, range )
end -- for i
else
r = mw.text.split( r, "%s+" )
end
return achieved[ 1 ], r
end -- Fetch.ranges()
Fetch.reverse = function ( achieved )
-- Convert ext.data entry into table item with range and string table
local iBeg = tonumber( achieved[ 1 ], 16 )
local iEnd = tonumber( achieved[ 2 ], 16 )
local permit = mw.text.split( achieved[ 3 ], "%s+" )
return false, { iBeg, iEnd, permit }
end -- Fetch.reverse()
Fetch.string = function ( achieved )
-- Convert ext.data entry into assignment to string
return achieved[ 1 ], achieved[ 2 ]
end -- Fetch.string()
Fetch.strings = function ( achieved )
-- Convert ext.data entry into assignment to table of strings
return achieved[ 1 ], mw.text.split( achieved[ 2 ], "%s+" )
end -- Fetch.strings()
Fetch.run = function ()
-- Populate object with data
-- Postcondition:
-- ISO15924 expanded
local tables = Fetch.data( false, "string" )
for k, v in pairs( tables ) do
ISO15924[ k ] = Fetch.data( k, v )
end -- for k, v
end -- Fetch.run()
local fresh = function ()
-- Check for global update
-- Returns: true, if matching global version; false, if not
-- 2019-10-15
local r
if type( Failsafe.item ) == "number" and Failsafe.item > 0 then
local storage = string.format( "Q%d", Failsafe.item )
local entity = mw.wikibase.getEntity( storage )
if type( entity ) == "table" then
local seek = Failsafe.serialProperty or "P348"
local vsn = entity:formatPropertyValues( seek )
if type( vsn ) == "table" and
vsn.value == Failsafe.serial then
r = true
end
end
end
return r or false
end -- fresh()
Fetch.run()
ISO15924.failsafe = ISO15924.serial
if mw.title.getCurrentTitle().namespace > 0 then
ISO15924.last = fresh()
end
return ISO15924
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.