Home
Random
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Sandbox/Nettrom/SuggestBot
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} -- List of all columns and their respective header titles local table_columns = {'Views/Day', 'Quality', 'Title', 'Content', 'Headings', 'Images', 'Links', 'Sources', 'Tagged withβ¦'} -- Mapping of shortnames for task categories and their respective text -- For more information, see User:SuggestBot/Documentation/Task categories local task_map = {source='Add sources', cleanup='Cleanup', expand='Expand', unenc='Unencyclopaedic', merge='Merge', wikify='Wikify', orphan='Orphan', stub='Stub'} -- Mapping of assessment class names to indexes for sorting local rating_sort = {FA=7, A=6, GA=5, B=4, C=3, Start=2, Stub=1, NA=0} -- Mapping of quality levels into images local rating_level = {FA='High', A='High', GA='High', B='Medium', C='Medium', Start='Low', Stub='Low', NA='Unassessed'} local rating_images = {High='File:Stars330.svg', Medium='File:Stars320.svg', Low='File:Stars310.svg', Unassessed='File:Stars300.svg'} -- List of task columns in order so we can flag if in need of improvement local task_list = {'content', 'headings', 'images', 'links', 'sources'} -- Mapping of tasks to explanations (used in the image alt-text) local task_explanations = {content='Please add more content', headings='Please create proper section headings', images='Please add more images', links='Please add more wikilinks', sources='Please add more sources'} -- Title of the image file we use to flag tasks local task_image = 'Flag icon red 3.svg' -- [[File:Flag icon red 3.svg|18px|alt=Please add more content|link=Yamaha electric guitar models|Please add more content]] -- Hello world to test that the module works... function p.hello_world() return "Hello, world!" end function translate_quality(tbl_row, title, rating, prediction) -- Add a table cell with quality information local qual_lvl = rating_level[prediction] local qual_text = '[[' .. rating_images[qual_lvl] .. '|60px|alt=Quality: ' .. qual_lvl .. ', Assessed class: ' .. rating .. ', Predicted class: ' .. prediction .. '|link=' .. title .. '|Quality: ' .. qual_lvl .. ', Assessed class: ' .. rating .. ', Predicted class: ' .. prediction .. ']]' -- Create a table cell with information about article quality local qualcell = tbl_row:tag('td') -- Add the sortkey from mapping predicted class to a number add_sortkey(qualcell, rating_sort[prediction]) qualcell:wikitext(qual_text) end function add_sortkey(tblcell, value) return tblcell:tag('span') :addClass('sortkey') :wikitext(value) end function add_tasks(tbl_row, tasks, title) -- For each task we now about, see if it's in task and act accordingly for i, task in ipairs(task_list) do local taskcell = tbl_row:tag('td') if string.find(tasks, task) then add_sortkey(taskcell, '0') taskcell:wikitext('[[File:' .. task_image .. '|18px|alt=' .. task_explanations[task] .. '|link=' .. title .. '|' .. task_explanations[task] .. ']]') else add_sortkey(taskcell, '2') end end end function build_header(tbl) local t_row = tbl:tag('tr') for i, title in ipairs(table_columns) do t_row:tag('th') :attr('scope', 'col') :wikitext(title) :newline() end end function add_row(tbl) -- Adds a suggestion row to the table return tbl:tag('tr') :css('text-align', 'center') :css('height', '30px') :newline() end function add_cells(tbl_row, tag, title, views, rating, prediction, tasks) -- Add the table cells for the suggestion based on the given parameters local tag_text = task_map[tag] -- First column is number of views tbl_row:tag('td') :css('text-align', 'right') :wikitext(views) -- Second column is article quality translate_quality(tbl_row, title, rating, prediction) -- Third column is a link to the article and its talk page tbl_row:tag('td') :css('text-align', 'left') :wikitext('[[' .. title .. ']] <small>([[Talk:' .. title .. '|talk]])</small>') -- Fourth through eighth columns are the tasks add_tasks(tbl_row, tasks, title) -- Last column is the article's task category tbl_row:tag('td'):wikitext(task_map[tag]) end function p.build_table(frame) -- Build the entire suggestion table. -- Expects a set of 'n' suggestions, where each suggestion has -- a total of six parameters, in order as follows: -- 1: Task category -- 2: Article title -- 3: Avg. no. of article views/day for past 14 days -- 4: Assessed quality class -- 5: Predicted quality class -- 6: Comma-separated list of tasks to flag -- What language are we talking? local lang = mw.language.getContentLanguage() local table = mw.html.create('table') :addClass('wikitable') :addClass('sortable') :css('text-align', 'center') :attr('border', '1') build_header(table) -- 0-based index of the current article being processed local cur_art = 0 while frame.args[(cur_art * 6) + 1] do local cur_idx = cur_art * 6 local newrow = add_row(table) -- Use the formatnum parser function to format number of views local n_views = lang:formatNum(tonumber(frame.args[cur_idx + 3])) add_cells(newrow, frame.args[cur_idx + 1], frame.args[cur_idx + 2], n_views, frame.args[cur_idx + 4], frame.args[cur_idx + 5], frame.args[cur_idx + 6]) cur_art = cur_art + 1 end return tostring(table) end function p.nargs(frame) local i = 0 local output = '' while frame.args[(i * 6) + 1] do output = output .. 'Processing article ' .. i .. '... ' i = i + 1 end return output end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Sandbox/Nettrom/SuggestBot/doc
(
edit
)