mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-03 20:46:28 +00:00
Fix methods summary links
This commit is contained in:
parent
8c28e1a12f
commit
08837c74fa
2 changed files with 49 additions and 23 deletions
|
|
@ -187,8 +187,7 @@ class SphinxPage(object):
|
||||||
|
|
||||||
def _make_selector(self, obj):
|
def _make_selector(self, obj):
|
||||||
links = []
|
links = []
|
||||||
ref = metadoc.Reference(None)
|
ref = metadoc.Reference.make_ref_from_object(None, obj)
|
||||||
ref.relatedObject = obj
|
|
||||||
for lang in self.langs:
|
for lang in self.langs:
|
||||||
if lang is self.lang:
|
if lang is self.lang:
|
||||||
link = lang.displayName
|
link = lang.displayName
|
||||||
|
|
|
||||||
|
|
@ -139,11 +139,24 @@ class Reference(ParagraphPart):
|
||||||
self.cname = cname
|
self.cname = cname
|
||||||
self.relatedObject = None
|
self.relatedObject = None
|
||||||
|
|
||||||
def translate(self, docTranslator, **kargs):
|
@staticmethod
|
||||||
return docTranslator.translate_reference(self, **kargs)
|
def make_ref_from_object(cname, obj):
|
||||||
|
if isinstance(obj, (abstractapi.Enum, abstractapi.Enumerator, abstractapi.Class, abstractapi.Interface)):
|
||||||
|
ref = ClassReference(cname)
|
||||||
|
elif isinstance(obj, abstractapi.Method):
|
||||||
|
ref = FunctionReference(cname)
|
||||||
|
else:
|
||||||
|
raise TypeError('cannot create documentation reference from {0}'.format(str(obj)))
|
||||||
|
ref.relatedObject = obj
|
||||||
|
return ref
|
||||||
|
|
||||||
|
|
||||||
class ClassReference(Reference):
|
class ClassReference(Reference):
|
||||||
|
def translate(self, docTranslator, **kargs):
|
||||||
|
if self.relatedObject is None:
|
||||||
|
raise ReferenceTranslationError(self.cname)
|
||||||
|
return docTranslator.translate_class_reference(self, **kargs)
|
||||||
|
|
||||||
def resolve(self, api):
|
def resolve(self, api):
|
||||||
try:
|
try:
|
||||||
self.relatedObject = api.classesIndex[self.cname]
|
self.relatedObject = api.classesIndex[self.cname]
|
||||||
|
|
@ -152,6 +165,11 @@ class ClassReference(Reference):
|
||||||
|
|
||||||
|
|
||||||
class FunctionReference(Reference):
|
class FunctionReference(Reference):
|
||||||
|
def translate(self, docTranslator, **kargs):
|
||||||
|
if self.relatedObject is None:
|
||||||
|
raise ReferenceTranslationError(self.cname)
|
||||||
|
return docTranslator.translate_function_reference(self, **kargs)
|
||||||
|
|
||||||
def resolve(self, api):
|
def resolve(self, api):
|
||||||
try:
|
try:
|
||||||
self.relatedObject = api.methodsIndex[self.cname]
|
self.relatedObject = api.methodsIndex[self.cname]
|
||||||
|
|
@ -496,12 +514,15 @@ class DoxygenTranslator(Translator):
|
||||||
if len(lines) > 0:
|
if len(lines) > 0:
|
||||||
lines[0] = '@brief ' + lines[0]
|
lines[0] = '@brief ' + lines[0]
|
||||||
|
|
||||||
def translate_reference(self, ref):
|
def translate_class_reference(self, ref, **kargs):
|
||||||
refStr = Translator.translate_reference(self, ref)
|
|
||||||
if isinstance(ref.relatedObject, (abstractapi.Class, abstractapi.Enum)):
|
if isinstance(ref.relatedObject, (abstractapi.Class, abstractapi.Enum)):
|
||||||
return '#' + refStr
|
return '#' + Translator.translate_reference(self, ref)
|
||||||
elif isinstance(ref.relatedObject, abstractapi.Method):
|
else:
|
||||||
return refStr + '()'
|
raise ReferenceTranslationError(ref.cname)
|
||||||
|
|
||||||
|
def translate_function_reference(self, ref, **kargs):
|
||||||
|
if isinstance(ref.relatedObject, abstractapi.Method):
|
||||||
|
return Translator.translate_reference(self, ref) + '()'
|
||||||
else:
|
else:
|
||||||
raise ReferenceTranslationError(ref.cname)
|
raise ReferenceTranslationError(ref.cname)
|
||||||
|
|
||||||
|
|
@ -589,17 +610,23 @@ class SphinxTranslator(Translator):
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
raise ValueError("'{0}' referencer type not supported".format(typeName))
|
raise ValueError("'{0}' referencer type not supported".format(typeName))
|
||||||
|
|
||||||
def translate_reference(self, ref, label=None, namespace=None):
|
def translate_class_reference(self, ref, label=None, namespace=None):
|
||||||
strRef = Translator.translate_reference(self, ref, absName=True)
|
return ':{tag}:`{label} <{ref}>`'.format(
|
||||||
kargs = {
|
tag=self._sphinx_ref_tag(ref),
|
||||||
'tag' : self._sphinx_ref_tag(ref),
|
label=label if label is not None else Translator.translate_reference(self, ref, namespace=namespace),
|
||||||
'ref' : strRef,
|
ref=Translator.translate_reference(self, ref, absName=True)
|
||||||
}
|
)
|
||||||
kargs['label'] = label if label is not None else Translator.translate_reference(self, ref, namespace=namespace)
|
|
||||||
if isinstance(ref, FunctionReference):
|
|
||||||
kargs['label'] += '()'
|
|
||||||
|
|
||||||
return ':{tag}:`{label} <{ref}>`'.format(**kargs)
|
def translate_function_reference(self, ref, label=None, namespace=None):
|
||||||
|
paramTypes = []
|
||||||
|
if self.domain != 'c':
|
||||||
|
for arg in ref.relatedObject.args:
|
||||||
|
paramTypes.append(arg._type.translate(self.langTranslator))
|
||||||
|
return ':{tag}:`{label} <{ref}>`'.format(
|
||||||
|
tag=self._sphinx_ref_tag(ref),
|
||||||
|
label=label if label is not None else '{0}()'.format(Translator.translate_reference(self, ref, namespace=namespace)),
|
||||||
|
ref='{0}({1})'.format(Translator.translate_reference(self, ref, absName=True), ', '.join(paramTypes))
|
||||||
|
)
|
||||||
|
|
||||||
def translate_keyword(self, keyword):
|
def translate_keyword(self, keyword):
|
||||||
translatedKeyword = Translator.translate_keyword(self, keyword)
|
translatedKeyword = Translator.translate_keyword(self, keyword)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue