Մոդուլ:Example
Արտաքին տեսք
Documentation for this module may be created at Մոդուլ:Example/doc
--- Example module.
-- @module example
-- @alias p
local p = {} --Ուիքիփետիայի բոլոր Lua մոդուլները պէտք է սկսին փոփոխական մը
--սահմանելով, որ պիտի պահէ դուրսէն հասանելի գործառոյթները։
--Այդպիսի փոփոխականները կրնան ունենալ ձեր ուզած անունը եւ կրնան
--պարունակել նաեւ զանազան տուեալներ, ոչ միայն գործառոյթներ։
--- Բարեւ աշխարհի գործառոյթ
-- @param {Frame} frame ընթացիկ frame-ը
-- @return Բարեւ աշխարհ
-- @usage {{#invoke:Example|hello}}
p.hello = function( frame ) --Աւելցնել գործառոյթ մը «p»-ին։
--Այդպիսի գործառոյթները Ուիքիփետիայի մէջ կանչելի են
--#invoke հրահանգով։
--«frame»-ը պիտի պարունակէ այն տուեալները, որոնք
--Ուիքիփետիան կը ղրկէ այս գործառոյթին գործարկումի պահուն։
--«hello»-ն ձեր ընտրած անունն է։ Նոյն անունը պէտք է նշուի
--մոդուլը գործածելու ատեն։
local str = "Բարեւ, աշխարհ։" --Սահմանել տեղական փոփոխական մը եւ անոր տալ
--«Բարեւ, աշխարհ։» արժէքը։
return str --Ասիկա կ'ըսէ, որ դուրս գանք այս գործառոյթէն եւ «str»-ի մէջ եղած
--տեղեկութիւնը ետ ղրկենք Ուիքիփետիային։
end -- «hello» գործառոյթին վերջը
--- Անուանական բարեւի գործառոյթ
-- @param {Frame} frame ընթացիկ frame-ը
-- @param {string} frame.args[1] անուն
-- @return Անուանական բարեւ
-- @usage {{#invoke:Example|hello_to|անուն}}
function p.hello_to(frame) -- Աւելցնել ուրիշ գործառոյթ մը
local name = frame.args[1] -- Մոդուլին փոխանցուած արգումենտներուն հասնելու համար
-- գործածեցէք `frame.args`-ը։ `frame.args[1]`-ը մոդուլին
-- տրուած առաջին անանուն պարամետրն է։
return "Բարեւ, " .. name .. "։" -- `..`-ը կը միացնէ տողերը։ Ասիկա պիտի վերադարձնէ
-- տրուած անունին համապատասխան բարեւ մը,
-- օրինակ՝ «Բարեւ, Ֆրետ։»
end
--- Պտուղ կը հաշուէ
-- @param {Frame} frame ընթացիկ frame-ը
-- @param {string} frame.args.bananas պանանի քանակը
-- @param {string} frame.args.apples խնձորի քանակը
-- @return Խնձորի եւ պանանի քանակը
-- @usage {{#invoke:Example|count_fruit|apples=խնձորի քանակ|bananas=պանանի քանակ}}
function p.count_fruit(frame)
local num_bananas = tonumber(frame.args.bananas) or 0 -- Անուանեալ արգումենտներուն
local num_apples = tonumber(frame.args.apples) or 0 -- ({{#invoke:Example|count_fruit|foo=bar}})
-- կը հասնինք `frame.args`-ը անունով
-- ցուցիչելով՝ `frame.args["bananas"]`,
-- կամ նոյնանշանակ՝ `frame.args.bananas`։
local disp_bananas = num_bananas == 0 and 'ոչ մէկ' or num_bananas
local disp_apples = num_apples == 0 and 'ոչ մէկ' or num_apples
-- Եռեակ գործողիչները արժէք կը վերագրեն ըստ
-- պայմանի մը՝ սեղմ ձեւով։ Հոս `disp_bananas`-ը
-- կ'առնէ `'ոչ մէկ'` եթէ `num_bananas`-ը 0 է,
-- այլապէս՝ բուն թիւը։
return 'Ես ունիմ ' .. disp_bananas .. ' պանան եւ ' .. disp_apples .. ' խնձոր։'
-- Ինչպէս վերը, քանի մը տող կը միացնենք՝
-- տրուած արգումենտներուն վրայ հիմնուած
-- նախադասութիւն մը կազմելու համար։
end
--- Բախտաւոր թիւի գործառոյթ
-- @param {number} a
-- @param {string} b
-- @return Կը վերադարձնէ թէ a-ն բախտաւոր է
-- @usage lucky(թիւ, տող)
local function lucky(a, b) -- Կարելի է սահմանել սեփական գործառոյթներ։ Հոս կը սահմանենք «lucky» գործառոյթ մը, որ ունի երկու մուտք՝ a եւ b։ Անունները ձեր ընտրութիւնն են։
if b == 'այո' then -- Պայման․ եթէ b-ն «այո» տողն է։ Տողերը կը պահանջեն չակերտ։ Չմոռնաք աւելցնել «then»։
return a .. '-ը իմ բախտաւոր թիւս է։' -- Եթէ վերի պայմանը կատարուի, կ'արտադրէ «a-ը իմ բախտաւոր թիւս է։»։ Տողերու միացման գործողիչը երկու կէտով կը նշուի։
else -- Եթէ ոչ մէկ պայման կատարուի, այսինքն եթէ b-ն ուրիշ բան է, ելքը կը նշուի յաջորդ տողին վրայ։ «else»-ը «then» չ'առներ։
return a -- Պարզապէս կ'արտադրէ a-ն։
end -- «if» բաժինը պէտք է վերջանայ «end»-ով։
end -- Ինչպէս նաեւ «function»-ը։
--- Name2
-- @param {Frame} frame ընթացիկ frame-ը
-- @return Ելք մը
function p.Name2(frame)
-- Յաջորդ հինգ տողերը գլխաւորաբար դիւրութեան համար են եւ կրնաք գործածել այնպէս ինչպէս են։ Ելքի պայմանները կը սկսին անոնցմէ ետք։
local pf = frame:getParent().args -- Այս տողը կաղապարի պարամետրերը դիւրութեամբ գործածելի կը դարձնէ։ Հաւասարումի նշանը կը գործածուի փոփոխականներ սահմանելու համար։ «pf»-ը կրնաք փոխարինել ձեր ընտրած բառով։
local f = frame.args -- Այս տողը {{#invoke:}}-ի պարամետրերը դիւրութեամբ գործածելի կը դարձնէ։ «f»-ը կրնաք փոխարինել ձեր ընտրած բառով։
local M = tonumber(f[1] or pf[1]) -- f[1]-ը եւ pf[1]-ը, զորս նոր սահմանեցինք, առաջին պարամետրին կը վերաբերին։ Այս տողը զանոնք դիւրութեան համար «M» կը կարճեցնէ։
local m = tonumber(f[2] or pf[2]) -- Երկրորդը կարճցուած՝ «m»։
local l = f.lucky or pf.lucky -- «lucky» անուանեալ պարամետրը կարճցուած է «l»։ Նկատի առէք, որ շարահիւսութիւնը տարբեր է անանուն պարամետրերէն։
if m == nil then -- Եթէ երկրորդ պարամետրը գործածուած չէ։
return 'Առանձին' -- Կ'արտադրէ «Առանձին» տողը, եթէ առաջին պայմանը կատարուի։
elseif M > m then -- Եթէ առաջին պայմանը չկատարուի, այս տողը կը ստուգէ երկրորդ պայման մը․ արդեօք M-ը մեծ է m-էն։
return lucky(M - m, l) -- Եթէ պայմանը կատարուի, տարբերութիւնը կը հաշուուի եւ l-ին հետ կը փոխանցուի մեր սահմանած գործառոյթին։ Ելքը կախեալ է անկէ, թէ l-ը «այո» դրուած է թէ ոչ։
else
return 'Դրական եղիր։'
end
end
return p --Բոլոր մոդուլները կը վերջանան՝ իրենց գործառոյթները պարունակող փոփոխականը Ուիքիփետիային վերադարձնելով։
-- Հիմա կրնանք գործածել այս մոդուլը՝ կանչելով {{#invoke: Example | hello }},
-- {{#invoke: Example | hello_to | Ֆրետ }}, կամ {{#invoke:Example|count_fruit|bananas=5|apples=6}}։
-- Նկատի առէք, որ invoke-ի առաջին մասը մոդուլին ուիքիէջին անունն է,
-- իսկ երկրորդ մասը՝ ձեր վերադարձուցած փոփոխականին կցուած գործառոյթներէն մէկուն անունը։
-- «print» գործառոյթը արտօնուած չէ Ուիքիփետիայի մէջ։ Ամբողջ ելքը կ'իրագործուի
-- Ուիքիփետիային «վերադարձուած» տողերու միջոցով։