Commit 33302b4ff2c35f8b814d22f4f734721432539016

  • avatar
  • Krister Svanlund <adsum @BIG…SH.(none)>
  • Sat Jul 04 04:45:22 CEST 2009
MediaWiki: Added possibility to search for things inside text instead of only title.
Help: Changed most formated strings to use the new python 3 standard.
ChangeLog
(5 / 0)
  
112009-07-04 Krister Svanlund <krister.svanlund@gmail.com>
22
3 * kofoo_mediawiki.py (do_wiki): Added indicator on search for displayed vs. number
4 of results.
5 (do_wiki): Added "in text" switch for search command to search in text instead of
6 title.
7
38 * kofoo_set.py: Removed 'set quit' from help description since the command has
49 been removed.
510
  
4040 command_level = command.get('level', 0)
4141 command_description = command.get('long help', "")
4242 command_arguments = command.get('arguments', [])
43 help_string = "Help for command \x02%s\x02\n" % command_name
43 help_string = "Help for command \x02{0}\x02\n".format(command_name)
4444 if sender_level < command_level:
4545 self.respond(server, sender, target, "You are not allowed to use this command.")
4646 return
5757 else: width = 0
5858 for argument in command_arguments:
5959 if type(argument) is tuple:
60 help_string += " \x02Syntax:\x02 {0:{2}} - {1}\n" % (command_name+' '+argument[0], argument[1], width)
61 #help_string += " \x02Syntax:\x02 %s %s - %s\n" % (command_name, argument[0], argument[1])
60 help_string += " \x02Syntax:\x02 {0:{2}} - {1}\n".format(command_name+' '+argument[0], argument[1], width)
6261 else:
63 help_string += " \x02Syntax:\x02 {0} {1}\n" % (command_name, argument)
64 #help_string += " \x02Syntax:\x02 %s %s\n" % (command_name, argument)
62 help_string += " \x02Syntax:\x02 {0} {1}\n".format(command_name, argument)
6563 else:
66 help_string += " \x02Syntax:\x02 %s\n" % command_name
64 help_string += " \x02Syntax:\x02 {0}\n".format(command_name)
6765 if command_description:
68 help_string += " \x02Description:\x02 %s\n" % command_description
66 help_string += " \x02Description:\x02 {0}\n".format(command_description)
6967 if command_level:
70 help_string += " \x02Minimum level:\x02 %d\n" % command_level
68 help_string += " \x02Minimum level:\x02 {0}\n".format(command_level)
7169 self.respond(server, sender, target, help_string)
7270 elif command_name == 'alias':
7371 help_string = "Aliases defined at this point is\n"
7472 for alias, command in self.globals.bot_command_alias.iteritems():
75 help_string += " \x02%s\x02 -> %s\n" % (alias, command)
73 help_string += " \x02{0}\x02 -> {1}\n".format(alias, command)
7674 help_string += "End of alias list."
7775 self.respond(server, sender, target, help_string)
7876 elif command_name == 'modules':
  
4242section.""",
4343 'arguments': [("get table|list|section \"<itemname>\" on \"<pagename>\"", "Get a named item from a page on the wiki"),
4444 ("get url \"<pagename>\"", "Get URL to a specific page"),
45 ("search \"<term>\" [max: <max results>]", "Search titels in wiki for articles"),
45 ("search \"<term>\"[ in text][ max: <max results>]", "Search titels in wiki for articles"),
4646 ("add section \"<sectionname>\" [level <level>|below <parentsection>] on \"<pagename>\" [at top]", "Create a section on a page."),
4747 ("add table \"<tablename>\" in \"<parentsection>\" on \"<pagename>\": \"<col1>\"[, \"<col2>\"[..]] [at top]", "Add a table to a section"),
4848 ("add to list \"<listname>\" on \"<pagename>\": \"<item>\" [at top]", "Add an item to a list"),
9797 if args:
9898 if args[0] == 'get' and args[1:]:
9999 ### wiki get table|list|section "itemname" on "pagename" ###
100 get_pat = re.compile(r'([\"\']?)(.*?) (on|from) ([\"\']?
100 get_pat = re.compile(r'([\"\'])(.*?) (on|from) ([\"\']
101101 if args[1] == 'table' and args[2:]:
102102 m = get_pat.match(' '.join(args[2:]))
103103 if m:
117117 pagename = m.group(5)
118118 return do_wiki_get_section(bot, server, sender, target, pagename, sectionname)
119119 elif args[1] == 'url' and args[2:]:
120 m = re.match(r'([\"\']?)(.*?)
120 m = re.match(r'([\"\'])(.*?)
121121 if m:
122122 pagename = m.group(2)
123123 return do_wiki_get_url(bot, server, sender, target, pagename)
145145 bot.respond(server, sender, target, "\x02%s\x02 is not a valid argument or not enough arguments." % args[1])
146146 return False
147147 elif args[0] == 'search' and args[1:]:
148 m = re.match(r'([\"\']?)(.*?)(\smax: |)
148 m = re.match(r'([\"\'])(.*?)(\sin text|)(\smax:?|)\s?
149149 if m and m.group(2).strip():
150150 search_terms = m.group(2)
151 has_max = len(m.group(3)) > 0
151 search_in = ('title', 'text')[len(m.group(3)) > 0]
152 has_max = len(m.group(4)) > 0
152153 if has_max:
153154 try:
154 result_max = max(int(m.group(4)), 1)
155 result_max = max(int(m.group(5)), 1)
155156 except Exception, e:
156157 print " - Could not convert '%s' to integer." % m.group(4)
157158 result_max = 1
164164 else:
165165 search_terms = search_terms.decode("latin-1")
166166 try:
167 bot.respond(server, sender, target, "\x02Search results:\x02")
168 results = [r['title'] for r in wiki_site.search(search_terms)]
167 results = [r['title'] for r in wiki_site.search(search_terms, what=search_in)]
169168 if not results:
170169 print " - No results."
171170 bot.respond(server, sender, target, "No results.")
172171 return True
173 width = max([len(r.encode("latin-1")) for r in results])
172 width = max([len(r.encode("latin-1")) for r in results[:result_max]])
173 bot.respond(server, sender, target, "\x02Search results: [{0}/{1}]\x02".format(len(results[:result_max]), len(results)))
174174 for result in results[:result_max]:
175175 url = mw_get_url(result)
176176 if url:
213213 return False
214214
215215def do_wiki_add_table(bot, server, sender, target, args):
216 add_table_pat = re.compile(r'([\"\']?)(.*?) in ([\"\']?)(.*?)\3 on ([\"\']?)(.+)\5[:;] ([\"\']?
216 add_table_pat = re.compile(r'([\"\'])(.*?) in ([\"\'])(.*?)\3 on ([\"\'])(.+)\5[:;] ([\"\']
217217 args = ' '.join(args)
218218 print args
219219 m = add_table_pat.match(args)
243243 return False
244244
245245def do_wiki_add_to_table(bot, server, sender, target, args):
246 add_to_table_pat = re.compile(r'([\"\']?)(.*?) on ([\"\']?
246 add_to_table_pat = re.compile(r'([\"\'])(.*?) on ([\"\']
247247 m = add_to_table_pat.match(' '.join(args))
248248 if m:
249249 tablename = m.group(2)
269269 return False
270270
271271def do_wiki_add_to_list(bot, server, sender, target, args):
272 add_to_list_pat = re.compile(r'([\"\']?)(.*?) on ([\"\']?)(.+)\3[:;] ([\"\']?
272 add_to_list_pat = re.compile(r'([\"\'])(.*?) on ([\"\'])(.+)\3[:;] ([\"\']
273273 m = add_to_list_pat.match(' '.join(args))
274274 if m:
275275 listname = m.group(2)
277277 new_item = m.group(6)
278278 at_top = len(m.group(7)) > 0
279279 level = 1
280 return mw_add_to_list(pagename, listname, new_item, level, not at_top)
280 if mw_add_to_list(pagename, listname, new_item, level, not at_top):
281 bot.respond(server, sender, target, "Successfully added new item to list.")
282 return True
283 else:
284 bot.respond(server, sender, target, "Could not add to list.")
285 return False
281286 else:
282287 bot.respond(server, sender, target, "Could not parse arguments.")
283288 return False
284289
285290def do_wiki_add_to_page(bot, server, sender, target, args):
286 add_to_page_pat = re.compile(r'([\"\']?)(.+)[:;] ([\"\']?
291 add_to_page_pat = re.compile(r'([\"\'])(.+)[:;] ([\"\']
287292 m = add_to_page_pat.match(' '.join(args))
288293 if m:
289294 pagename = m.group(2)
300300 return False
301301
302302def do_wiki_add_to_section(bot, server, sender, target, args):
303 add_to_section_pat = re.compile(r'([\"\']?)(.*?) on ([\"\']?)(.+)\3[:;] ([\"\']?
303 add_to_section_pat = re.compile(r'([\"\'])(.*?) on ([\"\'])(.+)\3[:;] ([\"\']
304304 m = add_to_section_pat.match(' '.join(args))
305305 if m:
306306 sectionname = m.group(2)
313313 return False
314314
315315def do_wiki_add_section(bot, server, sender, target, args):
316 add_section_pat = re.compile(r'([\"\']?)(.*?)\1 (to|on) ([\"\']?)(.+)\4(\sat top|)')
317 add_section_level_pat = re.compile(r'([\"\']?)(.*?)\1 level ([0-9]+) (to|on) ([\"\']?)(.+)\5(\sat top|)')
318 add_section_parent_pat = re.compile(r'([\"\']?)(.*?) below ([\"\']?)(.*?)\3 (to|on) ([\"\']?)(.+)\6
316 add_section_pat = re.compile(r'([\"\'])(.*?) (to|on) ([\"\'])(.+)\4
317 add_section_level_pat = re.compile(r'([\"\'])(.*?)\1 level ([0-9]+) (to|on) ([\"\'])(.+)\5(\sat top|)')
318 add_section_parent_pat = re.compile(r'([\"\'])(.*?)\1 below ([\"\'])(.*?)\3 (to|on) ([\"\'])(.+)\6(\sat top|)')
319319 m = add_section_parent_pat.match(' '.join(args))
320320 if m:
321321 sectionname = m.group(2)