維基百科:機器人/申請/Antigng-bot/30

Antigng-bot 30 編輯

  • 第一部分將條目中的模板及嵌套關係提取出來。為正確地判斷「|」、「=」等符號的含義,在解析模板的過程中還會檢查內鏈、注釋和部分會導致維基語法失效的標籤(如nowiki、math、pre等)的狀態。此外,如果在提取過程中發現子模板已經損壞或者這個程序處理不了,則會將其所有的母模板標記為損壞。條目中有任何一個模板損壞,或者正文結束時內鏈、注釋、標籤的狀態不正常,則不會轉入第二部分。(經測試,主名字空間中有0.2%的頁面會遇到此問題,其中絕大多數是由語法錯誤造成的,例如此頁面)關於提取模板的功能的測試參見12
  • 第二部分調用tempgroom函數(源碼已附)「梳理」前一部分獲得的每一組模板。首先利用遞歸遍歷每一個模板。然後依次檢查:如果模板已損壞,不處理;不是引用模板,不處理;沒有模板參數,不處理。然後檢查有無待處理的「accessdate」和「archivedate」參數(滿足:1、(除去空格、常見控制符和注釋之後的)參數名相符;2、有參數值;3、該參數處沒有引出子模板)。如果模板中有且僅有一個滿足條件的「accessdate」參數,則檢查(除去空格、常見控制符和注釋之後的)參數值是否符合「xxxx-xx-xx」的格式。如果不符,利用Wikipedia:機器人/申請/Antigng-bot/11中的函數(在此基礎上增加了對中文月份的支持)提取「年、月、日」。如果:

  1. 負責轉換的函數沒有報錯
  2. 得到了大於2000的年份
  3. 沒在參數中發現諸如「xx期」的字樣
  4. 如果有月份,則月份數在1-12之間
  5. 如果有日數,日數在1-31之間,且有月份。

  • 則用規範的年月日格式代替老格式。對「archivedate」參數採取類似的方法處理。如果模板被梳理,或任何一個子模板被梳理過,則返回1,否則返回0。
  • 第三部分將模板放回頁面的源代碼中,如果1、第一部分沒有發現任何錯誤;2、第二部分至少有一個模板梳理過,則提交編輯。
  • 有且僅有第二部分中「提取年月日」的部分可能出錯,因為所涉對象是自然語言,不可能窮盡所有可能性。但從測試結果來看似乎並發現沒有問題。
  • 70次測試編輯。除本次編輯由於沒有檢查參數值是否為空(已修正)而導致錯誤外,其它編輯均符合設計要求。
  批准測試運作(50次編輯)。--Xiplus#Talk 2020年10月26日 (一) 01:27 (UTC)[回覆]
 完成無誤--Antigng留言2020年10月30日 (五) 11:51 (UTC)[回覆]
  正式批准運作。--Xiplus#Talk 2020年11月2日 (一) 23:46 (UTC)[回覆]