Commits

Takayuki Shimizukawa committed 21a4239

refactoring

Comments (0)

Files changed (1)

sphinx/environment.py

     Replace translatable nodes with their translated doctree.
     """
     default_priority = 0
+
+    @classmethod
+    def _collect_nodes(cls, nodelist, node_types, custom_cond_func=None):
+        if custom_cond_func is None:
+            custom_cond_func = lambda x: True
+
+        collected = [node for node in nodelist
+                    if isinstance(node, node_types)
+                    and custom_cond_func(node)]
+        return collected
+
+    @classmethod
+    def _collect_footnote_ref_nodes(cls, nodelist):
+        return cls._collect_nodes(
+                nodelist,
+                nodes.footnote_reference,
+                lambda n: n.get('auto') == 1)
+
+    @classmethod
+    def _collect_ref_nodes(cls, nodelist):
+        return cls._collect_nodes(nodelist, nodes.reference)
+
     def apply(self):
         env = self.document.settings.env
         settings, source = self.document.settings, self.document['source']
             if not isinstance(patch, nodes.paragraph):
                 continue # skip for now
 
-            footnote_refs = [r for r in node.children
-                             if isinstance(r, nodes.footnote_reference)
-                             and r.get('auto') == 1]
-            refs = [r for r in node.children if isinstance(r, nodes.reference)]
+            footnote_refs = self._collect_footnote_ref_nodes(node.children)
+            refs = self._collect_ref_nodes(node.children)
 
             for i, child in enumerate(patch.children): # update leaves
                 if isinstance(child, nodes.footnote_reference) \
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.