| OLD | NEW |
| 1 # This file is part of the Adblock Plus web scripts, | 1 # This file is part of the Adblock Plus web scripts, |
| 2 # Copyright (C) 2006-present eyeo GmbH | 2 # Copyright (C) 2006-present eyeo GmbH |
| 3 # | 3 # |
| 4 # Adblock Plus is free software: you can redistribute it and/or modify | 4 # Adblock Plus is free software: you can redistribute it and/or modify |
| 5 # it under the terms of the GNU General Public License version 3 as | 5 # it under the terms of the GNU General Public License version 3 as |
| 6 # published by the Free Software Foundation. | 6 # published by the Free Software Foundation. |
| 7 # | 7 # |
| 8 # Adblock Plus is distributed in the hope that it will be useful, | 8 # Adblock Plus is distributed in the hope that it will be useful, |
| 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 def make_relative(base_url, target): | 302 def make_relative(base_url, target): |
| 303 if not target.startswith('/'): | 303 if not target.startswith('/'): |
| 304 # Links to an external resource | 304 # Links to an external resource |
| 305 return target | 305 return target |
| 306 return relpath(target, base_url.rsplit('/', 1)[0]) | 306 return relpath(target, base_url.rsplit('/', 1)[0]) |
| 307 | 307 |
| 308 def process_link(match): | 308 def process_link(match): |
| 309 pre, attr, url, post = match.groups() | 309 pre, attr, url, post = match.groups() |
| 310 url = jinja2.Markup(url).unescape() | 310 url = jinja2.Markup(url).unescape() |
| 311 | 311 |
| 312 locale, new_url = ( | 312 locale, new_url = self._params['source'].resolve_link( |
| 313 self._params['source'] | 313 url, self._params['locale'], self._params['page'], |
| 314 .resolve_link(url, self._params['locale'])) | 314 ) |
| 315 | 315 |
| 316 if new_url is not None: | 316 if new_url is not None: |
| 317 url = new_url | 317 url = new_url |
| 318 if attr == 'href': | 318 if attr == 'href': |
| 319 post += ' hreflang="{}"'\ | 319 post += ' hreflang="{}"'\ |
| 320 .format(jinja2.Markup.escape(locale)) | 320 .format(jinja2.Markup.escape(locale)) |
| 321 | 321 |
| 322 if self._params['relative']: | 322 if self._params['relative']: |
| 323 current_page = '/{}/{}'.format(self._params['locale'], | 323 current_page = '/{}/{}'.format(self._params['locale'], |
| 324 self._params['page']) | 324 self._params['page']) |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 | 509 |
| 510 def get_page_content(self, page, locale=None): | 510 def get_page_content(self, page, locale=None): |
| 511 if locale is None: | 511 if locale is None: |
| 512 locale = self._params['locale'] | 512 locale = self._params['locale'] |
| 513 return utils.get_page_params(self._params['source'], locale, page) | 513 return utils.get_page_params(self._params['source'], locale, page) |
| 514 | 514 |
| 515 def linkify(self, page, locale=None, **attrs): | 515 def linkify(self, page, locale=None, **attrs): |
| 516 if locale is None: | 516 if locale is None: |
| 517 locale = self._params['locale'] | 517 locale = self._params['locale'] |
| 518 | 518 |
| 519 locale, url = self._params['source'].resolve_link(page, locale) | 519 locale, url = self._params['source'].resolve_link(page, locale, |
| 520 self._params['page']) |
| 520 return jinja2.Markup('<a{}>'.format(''.join( | 521 return jinja2.Markup('<a{}>'.format(''.join( |
| 521 ' {}="{}"'.format(name, jinja2.escape(value)) for name, value in [ | 522 ' {}="{}"'.format(name, jinja2.escape(value)) for name, value in [ |
| 522 ('href', url), | 523 ('href', url), |
| 523 ('hreflang', locale), | 524 ('hreflang', locale), |
| 524 ] + attrs.items() | 525 ] + attrs.items() |
| 525 ))) | 526 ))) |
| 526 | 527 |
| 527 def get_pages_metadata(self, filters=None): | 528 def get_pages_metadata(self, filters=None): |
| 528 if filters is not None and not isinstance(filters, dict): | 529 if filters is not None and not isinstance(filters, dict): |
| 529 raise TypeError('Filters are not a dictionary') | 530 raise TypeError('Filters are not a dictionary') |
| (...skipping 26 matching lines...) Expand all Loading... |
| 556 | 557 |
| 557 def get_canonical_url(self, page): | 558 def get_canonical_url(self, page): |
| 558 """Return canonical URL for the page (without locale code)""" | 559 """Return canonical URL for the page (without locale code)""" |
| 559 try: | 560 try: |
| 560 base_url = self._params['site_url'] | 561 base_url = self._params['site_url'] |
| 561 except KeyError: | 562 except KeyError: |
| 562 raise Exception('You must configure `siteurl` to use' | 563 raise Exception('You must configure `siteurl` to use' |
| 563 '`get_canonical_url()`') | 564 '`get_canonical_url()`') |
| 564 | 565 |
| 565 locale, page_url = self._params['source'].resolve_link( | 566 locale, page_url = self._params['source'].resolve_link( |
| 566 page, self._params['locale'], | 567 page, self._params['locale'], self._params['page'], |
| 567 ) | 568 ) |
| 568 # Remove the locale component that `resolve_link` adds at the | 569 # Remove the locale component that `resolve_link` adds at the |
| 569 # beginning. | 570 # beginning. |
| 570 page_url = page_url[len(locale) + 1:] | 571 page_url = page_url[len(locale) + 1:] |
| 571 return urlparse.urljoin(base_url, page_url) | 572 return urlparse.urljoin(base_url, page_url) |
| 572 | 573 |
| 573 def toclist(self, content): | 574 def toclist(self, content): |
| 574 toc_re = r'<h(\d)\s[^<>]*\bid="([^<>"]+)"[^<>]*>(.*?)</h\1>' | 575 toc_re = r'<h(\d)\s[^<>]*\bid="([^<>"]+)"[^<>]*>(.*?)</h\1>' |
| 575 flat = [] | 576 flat = [] |
| 576 for match in re.finditer(toc_re, content, re.S): | 577 for match in re.finditer(toc_re, content, re.S): |
| (...skipping 13 matching lines...) Expand all Loading... |
| 590 stack.append(item) | 591 stack.append(item) |
| 591 return structured | 592 return structured |
| 592 | 593 |
| 593 def page_has_locale(self, page, locale): | 594 def page_has_locale(self, page, locale): |
| 594 return self._params['source'].has_locale(locale, page) | 595 return self._params['source'].has_locale(locale, page) |
| 595 | 596 |
| 596 def get_page_url(self, page, locale=None, redirect=False): | 597 def get_page_url(self, page, locale=None, redirect=False): |
| 597 if not locale: | 598 if not locale: |
| 598 locale = self._params['locale'] | 599 locale = self._params['locale'] |
| 599 if self.page_has_locale(page, locale) or redirect: | 600 if self.page_has_locale(page, locale) or redirect: |
| 600 return self._params['source'].resolve_link(page, locale)[1] | 601 return self._params['source'].resolve_link(page, locale, |
| 602 self._params['page'])[1] |
| 601 raise Exception('{} does not exist in {}'.format(page, locale)) | 603 raise Exception('{} does not exist in {}'.format(page, locale)) |
| 602 | 604 |
| 603 | 605 |
| 604 converters = { | 606 converters = { |
| 605 'html': RawConverter, | 607 'html': RawConverter, |
| 606 'md': MarkdownConverter, | 608 'md': MarkdownConverter, |
| 607 'tmpl': TemplateConverter, | 609 'tmpl': TemplateConverter, |
| 608 } | 610 } |
| OLD | NEW |