mono-docs: Use full name in list of derived classes
authorXavi Artigas <xavierartigas@yahoo.es>
Tue, 23 Apr 2019 08:51:56 +0000 (10:51 +0200)
committerYeongjong Lee <yj34.lee@samsung.com>
Wed, 24 Apr 2019 05:24:47 +0000 (14:24 +0900)
In the EFL API we have several objects with the same name in different namespaces.
Thus it is important to use fully-qualified names throughout the docs, to avoid
confusion.
However, the default DocFX templates prefer using only simple class names.
The default templates have already been modified to use full names everywhere
except in the list of derived classes in the hierarchy section, where a DocFX
bug was hit.
This commit is a workaround to that bug (see
https://github.com/dotnet/docfx/issues/3769#issuecomment-485616064 )
so full names (with links) are used in the whole hierarchy.

doc/docfx/default_efl/partials/class.header.tmpl.partial
doc/docfx/gendoc.sh

index 1a445ab..3bdf956 100644 (file)
@@ -12,7 +12,7 @@
   {{/inheritance}}\r
   <div class="level{{level}}"><span class="xref"><b>{{fullName.0.value}}</b></span></div>\r
   {{#derivedClasses}}\r
-    <div class="level{{index}}">{{{specName.0.value}}}</div>\r
+    <div class="level{{index}}"><xref uid="{{uid}}" text="{{fullName.0.value}}"/></div>\r
   {{/derivedClasses}}\r
   </div>\r
 </div>\r
index 99da2d9..48d781c 100755 (executable)
@@ -22,5 +22,19 @@ for f in `ls api/*.yml`; do
   sed -e 's/\(<xref href=\\"[^\\]*\)\\"/\1?displayProperty=fullName\\"/g' -i $f
 done;
 
+# Add missing references to derived classes, so they can be rendered with
+# their full name.
+# https://github.com/dotnet/docfx/issues/3769#issuecomment-485616064
+for f in `grep -l derivedClasses api/*.yml`; do
+  sed "1,/^  derivedClasses:$/d" $f > /tmp/efl_docfx_gendoc
+  sed -i "/^  [^-]/,$ d" /tmp/efl_docfx_gendoc
+  sed -i "/^[^ ]/,$ d" /tmp/efl_docfx_gendoc
+  while read dash class
+  do
+    sed -i "s/^references:$/references:\n- uid: $class\n  fullName: $class/g" $f
+  done <<< "$(cat /tmp/efl_docfx_gendoc)"
+done;
+rm -rf /tmp/efl_docfx_gendoc
+
 # DocFX Step 2: Generate HTML files
 mono bin/docfx.exe build docfx.json && echo "Docs ready in the _site folder!"