| 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-2017 eyeo GmbH |    2 # Copyright (C) 2006-2017 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 363 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  374         Converter.__init__(self, *args, **kwargs) |  374         Converter.__init__(self, *args, **kwargs) | 
|  375  |  375  | 
|  376         filters = { |  376         filters = { | 
|  377             'translate': self.translate, |  377             'translate': self.translate, | 
|  378             'linkify': self.linkify, |  378             'linkify': self.linkify, | 
|  379             'toclist': self.toclist, |  379             'toclist': self.toclist, | 
|  380         } |  380         } | 
|  381  |  381  | 
|  382         globals = { |  382         globals = { | 
|  383             'get_string': self.get_string, |  383             'get_string': self.get_string, | 
 |  384             'has_string': self.has_string, | 
|  384             'get_page_content': self.get_page_content, |  385             'get_page_content': self.get_page_content, | 
|  385         } |  386         } | 
|  386  |  387  | 
|  387         for dirname, dictionary in [('filters', filters), |  388         for dirname, dictionary in [('filters', filters), | 
|  388                                     ('globals', globals)]: |  389                                     ('globals', globals)]: | 
|  389             for filename in self._params['source'].list_files(dirname): |  390             for filename in self._params['source'].list_files(dirname): | 
|  390                 root, ext = os.path.splitext(filename) |  391                 root, ext = os.path.splitext(filename) | 
|  391                 if ext.lower() != '.py': |  392                 if ext.lower() != '.py': | 
|  392                     continue |  393                     continue | 
|  393  |  394  | 
|  394                 path = os.path.join(dirname, filename) |  395                 path = os.path.join(dirname, filename) | 
|  395                 namespace = self._params['source'].exec_file(path) |  396                 namespace = self._params['source'].exec_file(path) | 
|  396  |  397  | 
|  397                 name = os.path.basename(root) |  398                 name = os.path.basename(root) | 
|  398                 try: |  399                 try: | 
|  399                     dictionary[name] = namespace[name] |  400                     dictionary[name] = namespace[name] | 
|  400                 except KeyError: |  401                 except KeyError: | 
|  401                     raise Exception('Expected symbol {} not found' |  402                     raise Exception('Expected symbol {} not found' | 
|  402                                     ' in {}'.format(name, path)) |  403                                     ' in {}'.format(name, path)) | 
|  403  |  404  | 
|  404         self._env = jinja2.Environment( |  405         self._env = jinja2.Environment( | 
|  405             loader=SourceTemplateLoader(self._params['source']), |  406             loader=SourceTemplateLoader(self._params['source']), | 
|  406             autoescape=True) |  407             autoescape=True) | 
|  407         self._env.filters.update(filters) |  408         self._env.filters.update(filters) | 
|  408         self._env.globals.update(globals) |  409         self._env.globals.update(globals) | 
|  409  |  410  | 
 |  411     def _get_locale_data(self, page): | 
 |  412         return self._params['source'].read_locale(self._params['locale'], page) | 
 |  413  | 
|  410     def get_html(self, source, filename): |  414     def get_html(self, source, filename): | 
|  411         env = self._env |  415         env = self._env | 
|  412         code = env.compile(source, None, filename) |  416         code = env.compile(source, None, filename) | 
|  413         template = jinja2.Template.from_code(env, code, env.globals) |  417         template = jinja2.Template.from_code(env, code, env.globals) | 
|  414  |  418  | 
|  415         try: |  419         try: | 
|  416             module = template.make_module(self._params) |  420             module = template.make_module(self._params) | 
|  417         except Exception: |  421         except Exception: | 
|  418             env.handle_exception() |  422             env.handle_exception() | 
|  419  |  423  | 
|  420         for key, value in module.__dict__.iteritems(): |  424         for key, value in module.__dict__.iteritems(): | 
|  421             if not key.startswith('_'): |  425             if not key.startswith('_'): | 
|  422                 self._params[key] = value |  426                 self._params[key] = value | 
|  423  |  427  | 
|  424         result = unicode(module) |  428         result = unicode(module) | 
|  425         result = self.process_links(result) |  429         result = self.process_links(result) | 
|  426         return result |  430         return result | 
|  427  |  431  | 
|  428     def translate(self, default, name, comment=None): |  432     def translate(self, default, name, comment=None): | 
|  429         return jinja2.Markup(self.localize_string( |  433         return jinja2.Markup(self.localize_string( | 
|  430             self._params['page'], name, default, comment, |  434             self._params['page'], name, default, comment, | 
|  431             self._params['localedata'], html_escapes |  435             self._params['localedata'], html_escapes | 
|  432         )) |  436         )) | 
|  433  |  437  | 
|  434     def get_string(self, name, page=None): |  438     def get_string(self, name, page=None): | 
|  435         if page is None: |  439         if page is None: | 
|  436             page = self._params['page'] |  440             page = self._params['page'] | 
|  437  |  441  | 
|  438         localedata = self._params['source'].read_locale(self._params['locale'], |  442         localedata = self._get_locale_data(page) | 
|  439                                                         page) |  | 
|  440         default = localedata[name] |  443         default = localedata[name] | 
|  441         return jinja2.Markup(self.localize_string( |  444         return jinja2.Markup(self.localize_string( | 
|  442             page, name, default, '', localedata, html_escapes |  445             page, name, default, '', localedata, html_escapes | 
|  443         )) |  446         )) | 
|  444  |  447  | 
 |  448     def has_string(self, name, page=None): | 
 |  449         if page is None: | 
 |  450             page = self._params['page'] | 
 |  451  | 
 |  452         localedata = self._get_locale_data(page) | 
 |  453         return name in localedata | 
 |  454  | 
|  445     def get_page_content(self, page, locale=None): |  455     def get_page_content(self, page, locale=None): | 
|  446         from cms.utils import get_page_params |  456         from cms.utils import get_page_params | 
|  447  |  457  | 
|  448         if locale is None: |  458         if locale is None: | 
|  449             locale = self._params['locale'] |  459             locale = self._params['locale'] | 
|  450         return get_page_params(self._params['source'], locale, page) |  460         return get_page_params(self._params['source'], locale, page) | 
|  451  |  461  | 
|  452     def linkify(self, page, locale=None, **attrs): |  462     def linkify(self, page, locale=None, **attrs): | 
|  453         if locale is None: |  463         if locale is None: | 
|  454             locale = self._params['locale'] |  464             locale = self._params['locale'] | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
|  479                 stack.pop() |  489                 stack.pop() | 
|  480             stack[-1]['subitems'].append(item) |  490             stack[-1]['subitems'].append(item) | 
|  481             stack.append(item) |  491             stack.append(item) | 
|  482         return structured |  492         return structured | 
|  483  |  493  | 
|  484 converters = { |  494 converters = { | 
|  485     'html': RawConverter, |  495     'html': RawConverter, | 
|  486     'md': MarkdownConverter, |  496     'md': MarkdownConverter, | 
|  487     'tmpl': TemplateConverter, |  497     'tmpl': TemplateConverter, | 
|  488 } |  498 } | 
| OLD | NEW |