Example #1
0
 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]]'))
Example #2
0
 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]]")
     )
Example #3
0
 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]]'))
Example #4
0
    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
Example #5
0
 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]]'))
Example #6
0
 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 {}
Example #7
0
 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]]'))
Example #8
0
 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]]'))
Example #9
0
 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]]'))
Example #10
0
 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]]"),
     )
Example #11
0
    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))
Example #12
0
 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
Example #13
0
    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))
Example #14
0
 def test_plain(self):
     self.assertEqual({u"Article/relatedTo": [u"A"]}, parse_wikilinks("Article", u"[[A]]"))
Example #15
0
 def test_plain(self):
     self.assertEqual({u'Article/relatedTo': [u'A']},
                      parse_wikilinks('Article', u'[[A]]'))
Example #16
0
 def test_wikiquery(self):
     self.assertEqual({}, parse_wikilinks('Article', u'[[="Hello"]]'))
     self.assertEqual({}, parse_wikilinks('Article', u'[[=schema:"Article"]]'))
Example #17
0
 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]]'))
Example #18
0
 def test_wikiquery(self):
     self.assertEqual({}, parse_wikilinks('Article', u'[[="Hello"]]'))
     self.assertEqual({},
                      parse_wikilinks('Article', u'[[=schema:"Article"]]'))
Example #19
0
 def test_plain(self):
     self.assertEqual({u'Article/relatedTo': [u'A']},
                      parse_wikilinks('Article', u'[[A]]'))
Example #20
0
 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 {}
Example #21
0
 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]]'))