mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
add keywords of meta tag to search index #2463
This commit is contained in:
parent
e3def45ffe
commit
b01a7be5c6
@ -180,6 +180,17 @@ class WordCollector(NodeVisitor):
|
||||
self.found_title_words = []
|
||||
self.lang = lang
|
||||
|
||||
def is_meta_keywords(self, node, nodetype):
|
||||
is_meta = str(nodetype) == '<class \'sphinx.addnodes.meta\'>'
|
||||
if is_meta:
|
||||
language_match = re.search(r'lang\=\"(.*?)\"', str(node))
|
||||
is_correct_language =\
|
||||
language_match == None \
|
||||
or self.lang.lang == language_match.group(1)
|
||||
return is_meta and is_correct_language
|
||||
else:
|
||||
return False
|
||||
|
||||
def dispatch_visit(self, node):
|
||||
nodetype = type(node)
|
||||
if issubclass(nodetype, comment):
|
||||
@ -197,6 +208,9 @@ class WordCollector(NodeVisitor):
|
||||
self.found_words.extend(self.lang.split(node.astext()))
|
||||
elif issubclass(nodetype, title):
|
||||
self.found_title_words.extend(self.lang.split(node.astext()))
|
||||
elif self.is_meta_keywords(node, nodetype):
|
||||
keywords = re.search(r'content\=\"(.*?)\"', str(node)).group(1)
|
||||
self.found_words.extend(self.lang.split(keywords))
|
||||
|
||||
|
||||
class IndexBuilder(object):
|
||||
@ -353,7 +367,6 @@ class IndexBuilder(object):
|
||||
def feed(self, filename, title, doctree):
|
||||
"""Feed a doctree to the index."""
|
||||
self._titles[filename] = title
|
||||
|
||||
visitor = WordCollector(doctree, self.lang)
|
||||
doctree.walk(visitor)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user