| @@ -89,35 +89,37 @@ class Dictionary(Command): | |||||
| def get_definition(self, section, level): | def get_definition(self, section, level): | ||||
| parts_of_speech = { | parts_of_speech = { | ||||
| "v.": "Verb", | |||||
| "n.": "Noun", | |||||
| "pron.": "Pronoun", | |||||
| "adj.": "Adjective", | |||||
| "adv.": "Adverb", | |||||
| "prep.": "Preposition", | |||||
| "conj.": "Conjunction", | |||||
| "inter.": "Interjection", | |||||
| "symbol": "Symbol", | |||||
| "suffix": "Suffix", | |||||
| "initialism": "Initialism", | |||||
| "phrase": "Phrase", | |||||
| "proverb": "Proverb", | |||||
| "prop. n.": "Proper noun", | |||||
| "abbr.": "\{\{abbreviation\}\}", | |||||
| "v.": ["Verb"], | |||||
| "n.": ["Noun"], | |||||
| "pron.": ["Pronoun"], | |||||
| "adj.": ["Adjective"], | |||||
| "adv.": ["Adverb"], | |||||
| "prep.": ["Preposition"], | |||||
| "conj.": ["Conjunction"], | |||||
| "inter.": ["Interjection"], | |||||
| "symbol": ["Symbol"], | |||||
| "suffix": ["Suffix"], | |||||
| "initialism": ["Initialism"], | |||||
| "phrase": ["Phrase"], | |||||
| "proverb": ["Proverb"], | |||||
| "prop. n.": ["Proper noun"], | |||||
| "abbr.": ["Abbreviation", "\{\{abbreviation\}\}"], | |||||
| } | } | ||||
| blocks = "=" * (level + 1) | blocks = "=" * (level + 1) | ||||
| defs = [] | defs = [] | ||||
| for part, fullname in parts_of_speech.iteritems(): | |||||
| if re.search("{0}\s*{1}\s*{0}".format(blocks, fullname), section): | |||||
| regex = "{0}\s*{1}\s*{0}(.*?)(?:(?:{0})|\Z)" | |||||
| regex = regex.format(blocks, fullname) | |||||
| bodies = re.findall(regex, section, re.DOTALL) | |||||
| if bodies: | |||||
| for body in bodies: | |||||
| definition = self.parse_body(body) | |||||
| if definition: | |||||
| msg = u"\x02{0}\x0F {1}" | |||||
| defs.append(msg.format(part, definition)) | |||||
| for part, fullnames in parts_of_speech.iteritems(): | |||||
| for fullname in fullnames: | |||||
| regex = "{0}\s*{1}\s*{0}".format(blocks, fullname) | |||||
| if re.search(regex, section): | |||||
| regex = "{0}\s*{1}\s*{0}(.*?)(?:(?:{0})|\Z)" | |||||
| regex = regex.format(blocks, fullname) | |||||
| bodies = re.findall(regex, section, re.DOTALL) | |||||
| if bodies: | |||||
| for body in bodies: | |||||
| definition = self.parse_body(body) | |||||
| if definition: | |||||
| msg = u"\x02{0}\x0F {1}" | |||||
| defs.append(msg.format(part, definition)) | |||||
| return "; ".join(defs) | return "; ".join(defs) | ||||
| @@ -125,8 +127,11 @@ class Dictionary(Command): | |||||
| substitutions = [ | substitutions = [ | ||||
| ("<!--(.*?)-->", ""), | ("<!--(.*?)-->", ""), | ||||
| ("\[\[(.*?)\|(.*?)\]\]", r"\2"), | ("\[\[(.*?)\|(.*?)\]\]", r"\2"), | ||||
| ("\{\{alternative spelling of\|(.*?)\}\}", r"Alternative spelling of \1."), | |||||
| ("\{\{alternative spelling of\|(.*?)\}\}", | |||||
| r"Alternative spelling of \1."), | |||||
| ("\{\{synonym of\|(.*?)\}\}", r"Synonym of \1."), | ("\{\{synonym of\|(.*?)\}\}", r"Synonym of \1."), | ||||
| ("\{\{surname(\||\}\})", r"A surname."), | |||||
| ("\{\{given name\|(.*?)(\||\}\})", r"A \1 given name."), | |||||
| ] | ] | ||||
| senses = [] | senses = [] | ||||