# Simple script to create forms for my SnipManager# Copyright (C) Odie5533# GNU GPL 3.0+importreimporturllibdefuniqify(seq):seen={}result=[]foriteminseq:marker=itemifmarkerinseen:continueseen[marker]=1result.append(item)returnresultbase_url="http://en.wikipedia.org/w/index.php?title=Template:%s&action=raw"doc_base_url="http://en.wikipedia.org/w/index.php?title=Template:%s/doc&action=raw"wiki_page=raw_input("Template name (without Template:): ")wiki_page=wiki_page.replace(" ","_")wiki_page_=wiki_page.replace("_"," ")page_url=base_url%(wiki_page)doc_url=doc_base_url%(wiki_page)uh=urllib.urlopen(page_url)content=uh.read()uh.close()uh=urllib.urlopen(doc_url)docs=uh.read()uh.close()ifdocs=='':docs=content# Parse the parameters from the main template pageparams=re.findall("{{{([^}\|]+)[^}]*}}}",content)params=uniqify(params)# Attempt to parse the help for the parameters from the docsdescriptions={}forparaminparams:reg="'''%s''' (?:.\s+|–\s*)?(.*)"%(param)match=re.search(reg,docs,re.M)ifmatch:desc=match.group(1)desc=desc.replace(r"'''","")desc=desc.replace(r"''","")desc=desc.replace("'","\\'")desc=desc.replace("–","-")ifdesc[3]==' ':desc=desc[4:]descriptions[param]=desclines=["'%s' : [ { 'prepend':'{{%s', 'append':'}}', 'description':'' },"%(wiki_page_,wiki_page_)]forsinparams:help=''ifsindescriptions:help=descriptions[s]lines.append(" {'title':'%s:', 'code':'%s', 'help':'%s'},"%(s.capitalize(),s,help))lines[-1]=lines[-1][:-1]#remove trailing commalines.append(" ],")fo=open('%s.txt'%(wiki_page),'w')fo.write('\n'.join(lines))fo.close()