q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=ef8a66a41dae0d636704c0ed4b370b4f1e4f52a2

commit ef8a66a41dae0d636704c0ed4b370b4f1e4f52a2
Author: Daniel Kolesa <[email protected]>
Date:   Mon Aug 15 15:12:18 2016 +0100

    docs: correctly wrap struct/enum fields in doctree
---
 src/scripts/elua/apps/docgen/doctree.lua | 66 ++++++++++++++++++++++++++++++--
 src/scripts/elua/apps/docgen/stats.lua   |  4 +-
 src/scripts/elua/apps/gendoc.lua         |  6 +--
 3 files changed, 66 insertions(+), 10 deletions(-)

diff --git a/src/scripts/elua/apps/docgen/doctree.lua 
b/src/scripts/elua/apps/docgen/doctree.lua
index 32678e1..7188423 100644
--- a/src/scripts/elua/apps/docgen/doctree.lua
+++ b/src/scripts/elua/apps/docgen/doctree.lua
@@ -503,6 +503,48 @@ M.Event = Node:clone {
     end
 }
 
+M.StructField = Node:clone {
+    __ctor = function(self, fl)
+        self.field = fl
+        assert(self.field)
+    end,
+
+    name_get = function(self)
+        return self.field:name_get()
+    end,
+
+    doc_get = function(self)
+        return M.Doc(self.field:documentation_get())
+    end,
+
+    type_get = function(self)
+        return self.field:type_get()
+    end
+}
+
+M.EnumField = Node:clone {
+    __ctor = function(self, fl)
+        self.field = fl
+        assert(self.field)
+    end,
+
+    name_get = function(self)
+        return self.field:name_get()
+    end,
+
+    c_name_get = function(self)
+        return self.field:c_name_get()
+    end,
+
+    doc_get = function(self)
+        return M.Doc(self.field:documentation_get())
+    end,
+
+    value_get = function(self, force)
+        return self.field:value_get(force)
+    end
+}
+
 M.Typedecl = Node:clone {
     UNKNOWN = eolian.typedecl_type.UNKNOWN,
     STRUCT = eolian.typedecl_type.STRUCT,
@@ -530,19 +572,35 @@ M.Typedecl = Node:clone {
     end,
 
     struct_fields_get = function(self)
-        return self.typedecl:struct_fields_get():to_array()
+        local ret = {}
+        for fl in self.typedecl:struct_fields_get() do
+            ret[#ret + 1] = M.StructField(fl)
+        end
+        return ret
     end,
 
     struct_field_get = function(self, name)
-        return self.typedecl:struct_field_get(name)
+        local v = self.typedecl:struct_field_get(name)
+        if not v then
+            return nil
+        end
+        return M.StructField(v)
     end,
 
     enum_fields_get = function(self)
-        return self.typedecl:enum_fields_get():to_array()
+        local ret = {}
+        for fl in self.typedecl:enum_fields_get() do
+            ret[#ret + 1] = M.EnumField(fl)
+        end
+        return ret
     end,
 
     enum_field_get = function(self, name)
-        return self.typedecl:enum_field_get(name)
+        local v = self.typedecl:enum_field_get(name)
+        if not v then
+            return nil
+        end
+        return M.EnumField(v)
     end,
 
     enum_legacy_prefix_get = function(self)
diff --git a/src/scripts/elua/apps/docgen/stats.lua 
b/src/scripts/elua/apps/docgen/stats.lua
index 9d53caa..05a82ac 100644
--- a/src/scripts/elua/apps/docgen/stats.lua
+++ b/src/scripts/elua/apps/docgen/stats.lua
@@ -221,7 +221,7 @@ M.check_struct = function(v)
         stat_incr("struct", false)
     end
     for i, fl in ipairs(v:struct_fields_get()) do
-        if not fl:documentation_get() then
+        if not fl:doc_get():exists() then
             print_missing(v:full_name_get() .. "." .. fl:name_get(), "struct 
field")
             stat_incr("sfield", true)
         else
@@ -238,7 +238,7 @@ M.check_enum = function(v)
         stat_incr("enum", false)
     end
     for i, fl in ipairs(v:enum_fields_get()) do
-        if not fl:documentation_get() then
+        if not fl:doc_get():exists() then
             print_missing(v:full_name_get() .. "." .. fl:name_get(), "enum 
field")
             stat_incr("efield", true)
         else
diff --git a/src/scripts/elua/apps/gendoc.lua b/src/scripts/elua/apps/gendoc.lua
index f8041fc..9b619e4 100644
--- a/src/scripts/elua/apps/gendoc.lua
+++ b/src/scripts/elua/apps/gendoc.lua
@@ -9,8 +9,6 @@ local keyref = require("docgen.keyref")
 local ser = require("docgen.serializers")
 local dtree = require("docgen.doctree")
 
--- eolian to various doc elements conversions
-
 local propt_to_type = {
     [dtree.Function.PROPERTY] = "(get, set)",
     [dtree.Function.PROP_GET] = "(get)",
@@ -786,7 +784,7 @@ local build_struct = function(tp)
     for i, fl in ipairs(tp:struct_fields_get()) do
         local buf = writer.Buffer()
         buf:write_b(fl:name_get())
-        buf:write_raw(" - ", dtree.Doc(fl:documentation_get()):full_get())
+        buf:write_raw(" - ", fl:doc_get():full_get())
         arr[#arr + 1] = buf:finish()
     end
     f:write_list(arr)
@@ -811,7 +809,7 @@ local build_enum = function(tp)
     for i, fl in ipairs(tp:enum_fields_get()) do
         local buf = writer.Buffer()
         buf:write_b(fl:name_get())
-        buf:write_raw(" - ", dtree.Doc(fl:documentation_get()):full_get())
+        buf:write_raw(" - ", fl:doc_get():full_get())
         arr[#arr + 1] = buf:finish()
     end
     f:write_list(arr)

-- 


Reply via email to