模組:Lorem ipsum
模組解[開]
你可能想去為呢個Scribunto module開一個解版。 編者可以響呢個模組嘅沙盤 (開 | 鏡)同埋試例 (開)版度試驗佢。 請加個類到個/doc嘅細版度。 呢個模組嘅細版。 |
-- vi:set sw=4 ts=4 ai sm:
---- 呢個模組係用來產生一啲冇意義嘅文字,用嚟做排版範例
---- 文字來源係 en:Lorem ipsum
----
---- 2024年粵維原創
require ('strict');
local p = {};
--- Auxiliaries ---------------------------------------------------------------
local dummy_words = {
"Lorem", "ipsum", "dolor", "sit", "amet,", "consectetur", "adipisicing",
"elit,", "sed", "do", "eiusmod", "tempor", "incididunt", "ut", "labore",
"et", "dolore", "magna", "aliqua.", "Ut", "enim", "ad", "minim", "veniam,",
"quis", "nostrud", "exercitation", "ullamco", "laboris", "nisi", "ut",
"aliquip", "ex", "ea", "commodo", "consequat.", "Duis", "aute", "irure",
"dolor", "in", "reprehenderit", "in", "voluptate", "velit", "esse",
"cillum", "dolore", "eu", "fugiat", "nulla", "pariatur.", "Excepteur",
"sint", "occaecat", "cupidatat", "non", "proident,", "sunt", "in", "culpa",
"qui", "officia", "deserunt", "mollit", "anim", "id", "est", "laborum."
};
local function generate (n)
local it, i;
for j = 1, n do
if it then
it = it .. ' ';
else
it = '';
end
if not i or i > #dummy_words then
i = 1;
end
it = it .. dummy_words[i];
i = i + 1;
end
if not it:match("%.$") then
it = it .. ".";
end
return it;
end
-- Entry point
p.main = function (frame)
local parent = frame:getParent();
local n;
local options = {
-- 冇
};
local options_with_parameters = {
['字數'] = function (v)
n = v;
end;
};
for _, a in pairs({frame, parent}) do
if a then
for k, v in pairs(a.args) do
v = v:gsub('^%s+', ''):gsub('%s+$', '');
if type(k) == 'number' then
if options[v] then
options[v]();
elseif options_with_parameters[v] then
error('參數 「' .. v .. '」 冇畀參數值');
elseif k == 1 then
n = v;
else
end
elseif options[k] then
options[k]();
elseif options_with_parameters[k] then
options_with_parameters[k](v);
else
error('不明參數 「' .. k .. '」');
end
end
end
end
if not n then
n = #dummy_words;
elseif n:match("^%d+$") then
n = tonumber(n);
else
error('指定字數唔係整數');
end
local it = generate(n);
-- request our style sheet
-- it = table.concat ({
-- frame:extensionTag ('templatestyles', '', {src=styles}),
-- it
-- });
return it;
end
p.test = function ()
assert(p.main({
['getParent'] = function ()
return {
args= { '1' };
};
end;
args = {
};
}) == 'Lorem.');
assert(p.main({
['getParent'] = function ()
return {
args= { '2' };
};
end;
args = {
};
}) == 'Lorem ipsum.');
end
--- Non-invocable internal functions exported for other modules to use --------
return p;