モジュール:サンドボックス/しまあじ/Sandbox
表示
モジュールの解説[作成]
-- WikipediaのLuaモジュールは、外部からアクセスできる関数を入れる変数の宣言から始める必要がある。この変数にデータを入れることもできる。
local objLINKYMCAT = {};
-- そして、変数に関数を追加する。そうすることで、Wikipediaから #invokeとして呼び出せるようになる。
-- frame変数には、呼び出し時にWikipediaから渡されるデータが入る。
objLINKYMCAT.chanchakachan = function( frame )
local result = objLINKYMCAT.chanchakachanCore ( frame )
-- 結果をWikipedia側に戻して関数を脱出する。printのような関数は使えないので、出力は文字列の返り値でやり取りする。
return "「" .. result['tag'] .. "」これでいいのか?"
end
objLINKYMCAT.divdateCore = function( ymm )
local tbl = {}
local len = mw.ustring.len( ymm )
local c = ""
tbl['y'] = ""
tbl['m1'] = ""
tbl['m2'] = ""
if 5 <= len then
tbl['y'] = mw.ustring.sub( ymm, tonumber("1"), tonumber("4") )
if 7 <= len then
c = mw.ustring.sub( ymm, tonumber("7"), tonumber("7") )
if c == "月" then
tbl['m1'] = mw.ustring.sub( ymm, tonumber("6"), tonumber("6") )
tbl['m2'] = tbl['m1']
if 10 <= len then
c = mw.ustring.sub( ymm, tonumber("10"), tonumber("10") )
if c == "月" then
tbl['m2'] = mw.ustring.sub( ymm, tonumber("9"), tonumber("9") )
else
tbl['m2'] = mw.ustring.sub( ymm, tonumber("9"), tonumber("10") )
end
end
else
tbl['m1'] = mw.ustring.sub( ymm, tonumber("6"), tonumber("7") )
tbl['m2'] = tbl['m1']
if 11 <= len then
c = mw.ustring.sub( ymm, tonumber("11"), tonumber("11") )
if c == "月" then
tbl['m2'] = mw.ustring.sub( ymm, tonumber("10"), tonumber("10") )
else
tbl['m2'] = mw.ustring.sub( ymm, tonumber("10"), tonumber("11") )
end
end
end
end
end
return tbl
end
objLINKYMCAT.divdate = function( frame )
local sel = frame.args[2];
local tbl = objLINKYMCAT.divdateCore( frame.args[1] )
local str = ""
if sel == "y" then
str = tbl['y']
elseif sel == "m1" then
str = tbl['m1']
elseif sel == "m2" then
str = tbl['m2']
end
return str
end
objLINKYMCAT.chanchakachanCore = function( frame )
local result = {};
local str = mw.ustring.sub(frame.args[1], tonumber(frame.args[2]), tonumber(frame.args[3]))
result['tag'] = str
return result
end
objLINKYMCAT.sutteketen = function( frame )
return ""
end
objLINKYMCAT.honyarara = function( frame )
local new_args = objLINKYMCAT._getParameters( frame.args, {'てんてけてん'} );
local s = new_args['てんてけてん'] or '';
return mw.ustring.len( s )
end
function objLINKYMCAT._getParameters( frame_args, arg_list )
local new_args = {};
local index = 1;
local value;
for i,arg in ipairs( arg_list ) do
value = frame_args[arg]
if value == nil then
value = frame_args[index];
index = index + 1;
end
new_args[arg] = value;
end
return new_args;
end
return objLINKYMCAT -- モジュールの終わりで関数を含んだオブジェクトをWikipedia側に返す。
--[[ 要確認事項
「local」の有無による違い
「function」の有無による違い
]]