请输入您要查询的百科知识:

 

词条 Module:NUMBEROF
释义

local p = {}

-- Unescape functionality grabbed from https://stackoverflow.com/a/14899740/1832568

local function unescape(str)

str = string.gsub(str, '&#(%d+);', string.char)

str = string.gsub(str, '&#x(%d+);', function(n) return string.char(tonumber(n, 16)) end)

return str

end

-- Counting function accepting a string haystack and table of needles

local function count(haystack, needles)

local number = 0

-- While we have needles to look for

for index, needle in ipairs(needles) do

-- find them all in our haystack

for m in string.gmatch(haystack, needle) do

number = number + 1

end

end

return number

end

-- Function takes any number of # delimited page names and section level numbers

function p.sections(frame)

local total = 0

local needles = {}

local haystack =

-- Separate page names from # delimited string into table

local pages = mw.text.split(unescape(frame.args[1]), '%s?#%s?')

-- Separate whitespace delimited section level numbers into table

local levels = mw.text.split(frame.args['level'], '%s*')

-- Iterate through levels

for level in mw.text.gsplit(table.concat(levels), ) do

-- and add the level needle to needles

needles[#needles + 1] = '\'..string.rep('=', tonumber(level))..'[^=]'

end

-- For each page name in pages

for index, page in ipairs(pages) do

-- create a haystack to search from the page content

haystack = mw.title.new(page):getContent()

-- If we've requested the content of a legitimate page

if haystack then

--[[ pass the raw markup and needles to count

and add the return to total ]]

total = total + count('\' .. haystack, needles)

end

end

--[[ then return how many sections of the required level

are in all the pages passed ]]

return total

end

return p

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/29 11:40:55