پرش به محتوا
منوی اصلی
منوی اصلی
انتقال به نوار کناری
نهفتن
فهرست
صفحه اصلی-توضیحات
تغییرات اخیر
مقالهٔ تصادفی
راهنما دربارهٔ مدیاویکی
جستجو
جعبه ابزار
زبان ها
ویکی باریستا
جستجو
جستجو
ایجاد حساب
ورود
ابزارهای شخصی
ایجاد حساب
ورود
صفحههایی برای ویرایشگرانی که از سامانه خارج شدند
بیشتر بدانید
مشارکتها
بحث
در حال ویرایش
پودمان:Find sources
پودمان
بحث
English
خواندن
ویرایش مبدأ
نمایش تاریخچه
ابزارها
ابزارها
انتقال به نوار کناری
نهفتن
عملها
خواندن
ویرایش مبدأ
نمایش تاریخچه
عمومی
پیوندها به این صفحه
تغییرات مرتبط
صفحههای ویژه
اطلاعات صفحه
هشدار:
شما وارد نشدهاید. نشانی آیپی شما برای عموم قابل مشاهده خواهد بود اگر هر تغییری ایجاد کنید. اگر
وارد شوید
یا
یک حساب کاربری بسازید
، ویرایشهایتان به نام کاربریتان نسبت داده خواهد شد، همراه با مزایای دیگر.
بررسی ضدهرزنگاری. این قسمت را پر
نکنید
!
-- این پودمان الگوی {{یافتن منابع}}و سایر الگوهای مشابه را پیادهسازی میکند -- و سازوکاری را برای ایجاد آسان الگوهای تازه برای یافتن منابع فراهم میکند. -- Define constants local ROOT_PAGE = 'Module:Find sources' local TEMPLATE_ROOT = ROOT_PAGE .. '/templates/' -- for template config modules local LINK_CONFIG = ROOT_PAGE .. '/links' -- for link config modules local CONFIG_PAGE = ROOT_PAGE .. '/config' -- for global config -- Load required modules local checkType = require('libraryUtil').checkType local cfg = mw.loadData(CONFIG_PAGE) local p = {} local function maybeLoadData(page) local success, data = pcall(mw.loadData, page) return success and data end local function substituteParams(msg, ...) return mw.message.newRawMessage(msg, ...):plain() end local function renderSearchString(searchTerms, separator, transformFunc) -- This takes a table of search terms and turns it into a search string -- that can be used in a URL or in a display value. The transformFunc -- parameter can be used to transform each search term in some way (for -- example, URL-encoding them). local searchStrings = {} for i, s in ipairs(searchTerms) do searchStrings[i] = s end if transformFunc then for i, s in ipairs(searchStrings) do searchStrings[i] = transformFunc(s) end end return table.concat(searchStrings, separator) end function p._renderLink(code, searchTerms, display, tooltip) -- Renders the external link wikicode for one link, given the link code, -- a table of search terms, and an optional display value and tooltip. -- Get link config. local links = maybeLoadData(LINK_CONFIG) local linkCfg = links[code] if not linkCfg then error(mw.ustring.format( "کد پیوند «%s» نامعتبر است؛ پیکربندی پیوند در [[%s]] یافت نشد", code, LINK_CONFIG )) end -- Make URL. local url do local separator = linkCfg.separator or "+" local searchString = renderSearchString( searchTerms, separator, mw.uri.encode ) url = substituteParams(linkCfg.url, searchString) end if tooltip then return mw.ustring.format('<span title="%s" style="border-bottom: 1px dotted;">[%s %s]</span>', mw.text.encode(tooltip), url, display or linkCfg.display) else return mw.ustring.format('[%s %s]', url, display or linkCfg.display) end end function p._main(template, args) -- The main access point from Lua. checkType('_main', 1, template, 'string') checkType('_main', 2, args, 'table', true) args = args or {} local title = mw.title.getCurrentTitle() -- Get the template config. local templateCfgPage = TEMPLATE_ROOT .. template local templateCfg = maybeLoadData(templateCfgPage) if not templateCfg then error(mw.ustring.format( "نام الگوی «%s» نامعتبر است؛ پیکربندی الگو در [[%s]] یافت نشد", template, templateCfgPage )) end -- Namespace check. if not templateCfg.isUsedInMainspace and title.namespace == 0 then local formatString = '<strong class="error">%s</strong>' if cfg['namespace-error-category'] then formatString = formatString .. '[[%s:%s]]' end return mw.ustring.format( formatString, cfg['namespace-error'], mw.site.namespaces[14].name, cfg['namespace-error-category'] ) end -- Get the search terms from the arguments. local searchTerms = {} for i, s in ipairs(args) do searchTerms[i] = s end if not searchTerms[1] then -- Use the current subpage name as the default search term, unless -- another title is provided. If the page uses a disambiguator like -- "Foo (bar)", make "Foo" the first term and "bar" the second. local searchTitle = args.title or title.subpageText local term, dab = searchTitle:match('^(.*) (%b())$') if dab then dab = mw.ustring.sub(dab, 2, -2) -- Remove parens end if term and dab then searchTerms[1] = term searchTerms[2] = dab else searchTerms[1] = searchTitle end end searchTerms[1] = '"' .. searchTerms[1] .. '"' -- Make the intro link local introLink if templateCfg.introLink then local code = templateCfg.introLink.code local display = templateCfg.introLink.display or renderSearchString( searchTerms, ' ' ) local tooltip = templateCfg.introLink.tooltip introLink = p._renderLink(code, searchTerms, display, tooltip) else introLink = '' end -- Make the other links local links = {} local separator = templateCfg.separator or cfg['default-separator'] local sep = '' for i, t in ipairs(templateCfg.links) do links[i] = sep .. p._renderLink(t.code, searchTerms, t.display, t.tooltip) .. (t.afterDisplay or '') sep = t.separator or separator end links = table.concat(links) -- Make the blurb. local blurb = substituteParams(templateCfg.blurb, introLink, links) local span = mw.html.create('span') span :addClass('plainlinks') :addClass(templateCfg.class) :cssText(templateCfg.style) :wikitext(blurb) return tostring(span) end setmetatable(p, { __index = function(t, template) -- The main access point from #invoke. -- Invocations will look like {{#invoke:Find sources|template name}}, -- where "template name" is a subpage of [[Module:Find sources/templates]]. local tname = template if tname:sub(-8) == '/تمرین' then -- This makes {{Find sources/sandbox|Albert Einstein}} work. tname = mw.ustring.sub(tname, 1, -5) end return function(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = mw.site.namespaces[10].name .. ':' .. tname }) return t._main(template, args) end end}) return p
خلاصه:
لطفاً توجه داشته باشید که همهٔ مشارکتها در ویکی باریستا ممکن است توسط دیگر مشارکتکنندگان تغییر یابند، ویرایش یا حذف شوند. اگر نمیخواهید نوشتههایتان بیرحمانه ویرایش شوند؛ بنابراین، آنها را اینجا ارائه نکنید.
شما همچنین به ما تعهد میکنید که خودتان این را نوشتهاید یا آن را از یک منبع با مالکیت عمومی یا مشابه آزاد آن برداشتهاید (
ویکی باریستا:حق تکثیر
را برای جزئیات بیشتر ببینید).
کارهای دارای حق تکثیر را بدون اجازه ارائه نکنید!
لغو
راهنمای ویرایش
(در پنجرهٔ تازه باز میشود)
الگوی بهکاررفته در این صفحه:
پودمان:Find sources/توضیحات
(
ویرایش
)
تغییر عرض محدود محتوا