Module:RefDoneCounter

-- This module counts table rows in wikitext. -- local p = {} local getArgs = require('Module:Arguments').getArgs function p.main(frame) return p._main(getArgs(frame, {wrappers = 'Template:Table row counter'})) end function p._main(args) -- Get the title object. local titleObj do --No need for expensive function when using current page if not args.page or args.page=="" or (mw.title.getCurrentTitle == args.page) then titleObj = mw.title.getCurrentTitle else _, titleObj = pcall(mw.title.new, args.page) end end -- Get the page content. local content = titleObj:getContent if not content then return nil end -- Find the wikitables on that page. local wikitables = {} do local iWikitable = 0 local s1 = content:match('^({|.-\n|})') if s1 then iWikitable = iWikitable + 1 wikitables[iWikitable] = s1		end for s in content:gmatch('\n({|.-\n|})') do			iWikitable = iWikitable + 1 wikitables[iWikitable] = s		end end -- Find the wikitable to work on. local wikitable if args.id then for i, s in ipairs(wikitables) do			if s:match('^{|[^\n]*id *= *" *(%w+) *"') == args.id then wikitable = s				break end end else wikitable = wikitables[tonumber(args.tableno) or 1] end if not wikitable then return nil end -- Count the number of rows. local count do local temp temp, count = wikitable:gsub('\n|%-', '\n|-') end -- Control for missing row markers at the start. if not wikitable:find('^{|[^\n]*%s*\n|%-') then count = count + 1 end -- Control for extra row markers at the end. if wikitable:find('\n|%-[^\n]-%s*\n|}$') then count = count - 1 end -- Subtract the number of rows to ignore, and make sure the result isn't	-- below zero. count = count - (tonumber(args.ignore) or 0) if count < 0 then count = 0 end return count end return p