Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2688)

Unified Diff: chrome/common/extensions/docs/server2/handlebar_dict_generator.py

Issue 10826024: Extensions Docs Server: Proper $ref handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/handlebar_dict_generator.py
diff --git a/chrome/common/extensions/docs/server2/handlebar_dict_generator.py b/chrome/common/extensions/docs/server2/handlebar_dict_generator.py
index 456aa831bf2084e5e55c8ab15c0b292694b26406..7406ebfc706228aaa3c65440af9aeeda21e6ac94 100644
--- a/chrome/common/extensions/docs/server2/handlebar_dict_generator.py
+++ b/chrome/common/extensions/docs/server2/handlebar_dict_generator.py
@@ -22,17 +22,13 @@ def _RemoveNoDocs(item):
return False
def _GetLinkToRefType(namespace_name, ref_type):
- terms = ref_type.split('.')
- if len(terms) > 1:
- text = '.'.join(terms[1:])
- href = terms[0] + '.html' + '#type-' + text
- else:
- href = namespace_name + '.html' + '#type-' +ref_type
- text = ref_type
- return ({
- "href": href,
- "text": text
- })
+ if ref_type.startswith(namespace_name + '.'):
+ type_name = ref_type[namespace_name + '.':]
not at google - send to devlin 2012/07/26 03:12:27 is this supposed to be len(namespace_name + '.') ?
cduvall 2012/07/26 17:57:44 Done.
+ return { 'href': '#type-' + type_name, 'text': type_name }
+ elif '.' not in ref_type:
+ return { 'href': '#type-' + ref_type, 'text': ref_type }
+ api, type_name = ref_type.rsplit('.', 1)
+ return { 'href': api + '.html#type-' + type_name, 'text': ref_type }
def _FormatValue(value):
"""Inserts commas every three digits for integer values. It is magic.
@@ -52,6 +48,23 @@ class HandlebarDictGenerator(object):
except Exception as e:
logging.info(e)
+ def _StripPrefix(self, name):
+ if name.startswith(self._namespace.name + '.'):
+ return name[len(self._namespace.name + '.'):]
+ return name
+
+ def _ReplaceRefsInDescription(self, description):
not at google - send to devlin 2012/07/26 03:12:27 function needs -2 indentation
cduvall 2012/07/26 17:57:44 Done.
+ if description is None or '$ref:' not in description:
+ return description
+ refs = description.split('$ref:')
not at google - send to devlin 2012/07/26 03:12:27 This is awesome. We should convert all those chrom
cduvall 2012/07/26 17:57:44 I shouldn't do this now because it will break the
not at google - send to devlin 2012/07/30 08:04:34 Actually it looks like it _does_ deal with $ref:
+ formatted_description = refs[0]
+ for ref in refs[1:]:
not at google - send to devlin 2012/07/26 03:12:27 I don't think this algorithm works if the descript
cduvall 2012/07/26 17:57:44 I think it does: '$ref:Reffy is cool'.split('$ref
+ ref, rest = ref.split(' ', 1)
+ ref_dict = _GetLinkToRefType(self._namespace.name, ref)
+ formatted_description += ('<a href="' + ref_dict['href'] + '">' +
+ ref_dict['text'] + '</a> ' + rest)
not at google - send to devlin 2012/07/26 03:12:27 use a format string? also, tip: += is inefficient
cduvall 2012/07/26 17:57:44 Done.
+ return formatted_description
+
def Generate(self):
try:
return {
@@ -66,7 +79,7 @@ class HandlebarDictGenerator(object):
def _GenerateType(self, type_):
type_dict = {
- 'name': type_.name,
+ 'name': self._StripPrefix(type_.name),
'description': type_.description,
not at google - send to devlin 2012/07/26 03:12:27 run *all* descriptions of through ReplaceRefsInDes
cduvall 2012/07/26 17:57:44 Done.
'properties': self._GenerateProperties(type_.properties),
'functions': self._GenerateFunctions(type_.functions),
@@ -98,7 +111,7 @@ class HandlebarDictGenerator(object):
def _GenerateEvent(self, event):
event_dict = {
- 'name': event.name,
+ 'name': self._StripPrefix(event.name),
'description': event.description,
'parameters': map(self._GenerateProperty, event.params)
}
@@ -127,9 +140,9 @@ class HandlebarDictGenerator(object):
def _GenerateProperty(self, property_):
property_dict = {
- 'name': property_.name,
+ 'name': self._StripPrefix(property_.name),
'optional': property_.optional,
- 'description': property_.description,
+ 'description': self._ReplaceRefsInDescription(property_.description),
'properties': self._GenerateProperties(property_.properties),
'functions': self._GenerateFunctions(property_.functions)
}

Powered by Google App Engine
This is Rietveld 408576698