def test_rel(self): self.assertEqual({u'Article/birthDate': [u'1979 BCE', u'March 27']}, parse_wikilinks('Article', u'[[birthDate::1979-03-27 BCE]]')) self.assertEqual({u'Article/relatedTo': [u'A'], u'Article/author': [u'B']}, parse_wikilinks('Article', u'[[A]] [[author::B]]'))
def test_yyyymmdd(self): self.assertEqual({u"Article/relatedTo": [u"1979", u"March 27"]}, parse_wikilinks("Article", u"[[1979-03-27]]")) self.assertEqual({u"Article/relatedTo": [u"1979", u"March"]}, parse_wikilinks("Article", u"[[1979-03-??]]")) self.assertEqual({u"Article/relatedTo": [u"1979"]}, parse_wikilinks("Article", u"[[1979-??-??]]")) self.assertEqual( {u"Article/relatedTo": [u"1979 BCE", u"March 27"]}, parse_wikilinks("Article", u"[[1979-03-27 BCE]]") )
def test_invalid_month_or_date(self): self.assertEqual({u'Article/relatedTo': [u'1979-13-27']}, parse_wikilinks('Article', u'[[1979-13-27]]')) self.assertEqual({u'Article/relatedTo': [u'1979-12-50']}, parse_wikilinks('Article', u'[[1979-12-50]]')) self.assertEqual({u'Article/relatedTo': [u'1979-12-50 BCE']}, parse_wikilinks('Article', u'[[1979-12-50 BCE]]'))
def _parse_outlinks(self): unique_links = {} itemtype = self.itemtype # Add links in body links = md_wikilink.parse_wikilinks(itemtype, WikiPage.remove_metadata(self.body)) for rel, titles in links.items(): unique_links[rel] = set(titles) # Add links in structured data for name, value in self.data.items(): if not self._is_schema_item_link(name): continue links = md_wikilink.parse_wikilinks(itemtype, u"[[%s::%s]]" % (name, value)) for rel, titles in links.items(): if rel not in unique_links: unique_links[rel] = set([]) unique_links[rel].update(titles) # turn sets into lists for key in unique_links.keys(): unique_links[key] = list(unique_links[key]) return unique_links
def _schema_item_to_links(self, name, value): if isinstance(value, schema.Property) and value.is_wikilink(): return md_wikilink.parse_wikilinks( self.itemtype, u'[[%s::%s]]' % (name, value.pvalue)) elif type(value) == str or type(value) == unicode: return md_wikilink.parse_wikilinks(self.itemtype, u'[[%s::%s]]' % (name, value)) return {}
def test_yyyymmdd(self): self.assertEqual({u'Article/relatedTo': [u'1979', u'March 27']}, parse_wikilinks('Article', u'[[1979-03-27]]')) self.assertEqual({u'Article/relatedTo': [u'1979', u'March']}, parse_wikilinks('Article', u'[[1979-03-??]]')) self.assertEqual({u'Article/relatedTo': [u'1979']}, parse_wikilinks('Article', u'[[1979-??-??]]')) self.assertEqual({u'Article/relatedTo': [u'1979 BCE', u'March 27']}, parse_wikilinks('Article', u'[[1979-03-27 BCE]]'))
def test_rel(self): self.assertEqual({u'Article/birthDate': [u'1979 BCE', u'March 27']}, parse_wikilinks('Article', u'[[birthDate::1979-03-27 BCE]]')) self.assertEqual( { u'Article/relatedTo': [u'A'], u'Article/author': [u'B'] }, parse_wikilinks('Article', u'[[A]] [[author::B]]'))
def test_rel(self): self.assertEqual( {u"Article/birthDate": [u"1979 BCE", u"March 27"]}, parse_wikilinks("Article", u"[[birthDate::1979-03-27 BCE]]"), ) self.assertEqual( {u"Article/relatedTo": [u"A"], u"Article/author": [u"B"]}, parse_wikilinks("Article", u"[[A]] [[author::B]]"), )
def _parse_outlinks(self): # links in hierarchical title and body dicts = [ { '%s/relatedTo' % self.itemtype: [path[0] for path in self.paths[:-1]] }, md_wikilink.parse_wikilinks(self.itemtype, WikiPage.remove_metadata(self.body)), ] # links in structured data for name, value in self.data.items(): if type(value) is list: dicts += [self._schema_item_to_links(name, v) for v in value] else: dicts.append(self._schema_item_to_links(name, value)) # merge merged = merge_dicts(dicts, force_list=True) # exclude links to this page return dict( (k, v) for k, v in merged.items() if not ((type(v) == list and self.title in v) or self.title == v))
def _parse_outlinks(self): body = WikiPage.remove_metadata(self.body) links = md_wikilink.parse_wikilinks(self.itemtype, body) unique_links = {} for rel, titles in links.items(): unique_links[rel] = list(set(titles)) return unique_links
def _parse_outlinks(self): # links in hierarchical title and body dicts = [ {'%s/relatedTo' % self.itemtype: [path[0] for path in self.paths[:-1]]}, md_wikilink.parse_wikilinks(self.itemtype, WikiPage.remove_metadata(self.body)), ] # links in structured data for name, value in self.data.items(): if type(value) is list: dicts += [self._schema_item_to_links(name, v) for v in value] else: dicts.append(self._schema_item_to_links(name, value)) # merge merged = merge_dicts(dicts, force_list=True) # exclude links to this page return dict((k, v) for k, v in merged.items() if not((type(v) == list and self.title in v) or self.title == v))
def test_plain(self): self.assertEqual({u"Article/relatedTo": [u"A"]}, parse_wikilinks("Article", u"[[A]]"))
def test_plain(self): self.assertEqual({u'Article/relatedTo': [u'A']}, parse_wikilinks('Article', u'[[A]]'))
def test_wikiquery(self): self.assertEqual({}, parse_wikilinks('Article', u'[[="Hello"]]')) self.assertEqual({}, parse_wikilinks('Article', u'[[=schema:"Article"]]'))
def test_yyyy(self): self.assertEqual({u'Article/relatedTo': [u'1979']}, parse_wikilinks('Article', u'[[1979]]')) self.assertEqual({u'Article/relatedTo': [u'1979 BCE']}, parse_wikilinks('Article', u'[[1979 BCE]]'))
def _schema_item_to_links(self, name, value): if isinstance(value, schema.Property) and value.is_wikilink(): return md_wikilink.parse_wikilinks(self.itemtype, u'[[%s::%s]]' % (name, value.pvalue)) elif type(value) == str or type(value) == unicode: return md_wikilink.parse_wikilinks(self.itemtype, u'[[%s::%s]]' % (name, value)) return {}