模組:Chembox CASNo
外观
local p,lib_arg ={},{}
function p._print_chembox(frame)
-- For calling from #invoke.
local args, working_frame
if frame == mw.getCurrentFrame() then
-- We're being called via #invoke. The args are passed through to the module
-- from the template page, so use the args that were passed into the template.
if lib_arg.getArgs == nil then lib_arg = require('Module:Arguments') end
args = lib_arg.getArgs(frame) --frame.args
else
-- We're being called from another module or from the debug console, so assume
-- the args are passed in directly.
args = frame
end
working_frame = mw.getCurrentFrame()
local chembox_str = working_frame:preprocess('{{Chembox CASNo}}')
local start=mw.ustring.find(chembox_str, '|', 1+({mw.ustring.find(chembox_str, '\n')})[1] )
local chembox_start, chembox_end = mw.ustring.sub(chembox_str,1,start), mw.ustring.sub(chembox_str,start+1,-1)
local count = 0
for k,v in pairs(args) do
if mw.ustring.find(k,'CAS') then
local check_id = mw.ustring.gsub(k, '%d+', function(str) check_id = check_id or tonumber(str) end )
local check_k = mw.ustring.lower(k)
local norm_k = check_k
local argtype = 'number'
if mw.ustring.find(check_k,'ref') then argtype = 'ref'
norm_k = mw.ustring.gsub(norm_k,'ref')
elseif mw.ustring.find(check_k,'comment') or mw.ustring.find(check_k,'cmt') or mw.ustring.find(check_k,'supplemental') then argtype = 'comment'
norm_k = mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(norm_k,'comment'),'cmt'),'supplemental')
elseif mw.ustring.find(check_k,'ur[li]') then argtype = 'url'
norm_k = mw.ustring.gsub(norm_k,'ur[li]')
else
end
mw.log('name='..k..', norm='..norm_k)
end
end
--CAS
mw.logObject(args)
--return
return ''
end
return p