diff --git a/doc.lua b/doc.lua
index 63c7701..ec30eaf 100644
--- a/doc.lua
+++ b/doc.lua
@@ -141,12 +141,14 @@ function File:finish()
end
-- right, this item was within a section or a 'class'
+ local section_description
if this_mod.section then
item.section = this_mod.section.display_name
-- if it was a class, then the name should be 'Class.foo'
if this_mod.section.type == 'type' then
item.name = this_mod.section.name .. '.' .. item.name
end
+ section_description = this_mod.section.description
else -- otherwise, just goes into the default sections (Functions,Tables,etc)
item.section = item.type
end
@@ -156,9 +158,8 @@ function File:finish()
these_items.by_name[item.name] = item
these_items:append(item)
-
-- register this item with the iterator
- this_mod.kinds:add(item,these_items)
+ this_mod.kinds:add(item,these_items,section_description)
else
-- must be a free-standing function (sometimes a problem...)
diff --git a/ldoc.ltp b/ldoc.ltp
index 6e6103f..103b029 100644
--- a/ldoc.ltp
+++ b/ldoc.ltp
@@ -102,6 +102,7 @@
# --- function parameters or table fields.
# for kind, items in module.kinds() do
$(kind)
+ $(M(module.kinds:get_section_description(kind)))
# for item in items() do
-
diff --git a/tools.lua b/tools.lua
index 1d810e6..6f87f07 100644
--- a/tools.lua
+++ b/tools.lua
@@ -44,8 +44,8 @@ end
local KindMap = class()
M.KindMap = KindMap
--- calling a KindMap returns an iterator. This returns the kind and the iterator
--- over the items of that type.
+-- calling a KindMap returns an iterator. This returns the kind, the iterator
+-- over the items of that type, and the actual type tag value.
function KindMap:__call ()
local i = 1
local klass = self.klass
@@ -69,14 +69,20 @@ function KindMap:type_of (item)
return klass.types_by_kind [kind]
end
+function KindMap:get_section_description (kind)
+ return self.klass.descriptions[kind]
+end
+
-- called for each new item. It does not actually create separate lists,
-- (although that would not break the interface) but creates iterators
-- for that item type if not already created.
-function KindMap:add (item,items)
- local group = item[self.fieldname]
- local kname = self.klass.types_by_tag[group]
+function KindMap:add (item,items,description)
+ local group = item[self.fieldname] -- which wd be item's type or section
+ local kname = self.klass.types_by_tag[group] -- the kind name
if not self[kname] then
self[kname] = M.type_iterator (items,self.fieldname,group)
+ --print(kname,description)
+ self.klass.descriptions[kname] = description
end
end
@@ -86,6 +92,7 @@ function KindMap._class_init (klass)
klass.kinds = {} -- list in correct order of kinds
klass.types_by_tag = {} -- indexed by tag
klass.types_by_kind = {} -- indexed by kind
+ klass.descriptions = {} -- optional description for each kind
end