docs: correctly wrap struct/enum fields in doctree

This commit is contained in:
Daniel Kolesa 2016-08-15 15:12:18 +01:00
parent e65aae994e
commit ef8a66a41d
3 changed files with 66 additions and 10 deletions

View File

@ -503,6 +503,48 @@ M.Event = Node:clone {
end 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 { M.Typedecl = Node:clone {
UNKNOWN = eolian.typedecl_type.UNKNOWN, UNKNOWN = eolian.typedecl_type.UNKNOWN,
STRUCT = eolian.typedecl_type.STRUCT, STRUCT = eolian.typedecl_type.STRUCT,
@ -530,19 +572,35 @@ M.Typedecl = Node:clone {
end, end,
struct_fields_get = function(self) 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, end,
struct_field_get = function(self, name) 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, end,
enum_fields_get = function(self) 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, end,
enum_field_get = function(self, name) 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, end,
enum_legacy_prefix_get = function(self) enum_legacy_prefix_get = function(self)

View File

@ -221,7 +221,7 @@ M.check_struct = function(v)
stat_incr("struct", false) stat_incr("struct", false)
end end
for i, fl in ipairs(v:struct_fields_get()) do 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") print_missing(v:full_name_get() .. "." .. fl:name_get(), "struct field")
stat_incr("sfield", true) stat_incr("sfield", true)
else else
@ -238,7 +238,7 @@ M.check_enum = function(v)
stat_incr("enum", false) stat_incr("enum", false)
end end
for i, fl in ipairs(v:enum_fields_get()) do 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") print_missing(v:full_name_get() .. "." .. fl:name_get(), "enum field")
stat_incr("efield", true) stat_incr("efield", true)
else else

View File

@ -9,8 +9,6 @@ local keyref = require("docgen.keyref")
local ser = require("docgen.serializers") local ser = require("docgen.serializers")
local dtree = require("docgen.doctree") local dtree = require("docgen.doctree")
-- eolian to various doc elements conversions
local propt_to_type = { local propt_to_type = {
[dtree.Function.PROPERTY] = "(get, set)", [dtree.Function.PROPERTY] = "(get, set)",
[dtree.Function.PROP_GET] = "(get)", [dtree.Function.PROP_GET] = "(get)",
@ -786,7 +784,7 @@ local build_struct = function(tp)
for i, fl in ipairs(tp:struct_fields_get()) do for i, fl in ipairs(tp:struct_fields_get()) do
local buf = writer.Buffer() local buf = writer.Buffer()
buf:write_b(fl:name_get()) 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() arr[#arr + 1] = buf:finish()
end end
f:write_list(arr) f:write_list(arr)
@ -811,7 +809,7 @@ local build_enum = function(tp)
for i, fl in ipairs(tp:enum_fields_get()) do for i, fl in ipairs(tp:enum_fields_get()) do
local buf = writer.Buffer() local buf = writer.Buffer()
buf:write_b(fl:name_get()) 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() arr[#arr + 1] = buf:finish()
end end
f:write_list(arr) f:write_list(arr)