diff --git a/lib/jsduck/app.rb b/lib/jsduck/app.rb index 2cd23df7189c9aa2256d120dcd96fd74251a294c..b114055fb1a4eeb6ad0ac57fb3c2000d24889a94 100644 --- a/lib/jsduck/app.rb +++ b/lib/jsduck/app.rb @@ -180,10 +180,11 @@ module JsDuck filename = @opts.output_dir+"/output/" + cls[:name] + (@opts.export ? ".json" : ".js") Logger.instance.log("Writing to #{filename} ...") data = exporter.export(cls) - data[:html] = renderer.render(data) if @opts.export JsonDuck.write_json(filename, data) else + data[:html] = renderer.render(data) + data = exporter.compact(data) JsonDuck.write_jsonp(filename, cls[:name].gsub(/\./, "_"), data) end end diff --git a/lib/jsduck/exporter.rb b/lib/jsduck/exporter.rb index a7c88cef1f188b54a9478852d992f125c9ed4fca..e3b346767b164992eb36a1416e5df7c500ac059e 100644 --- a/lib/jsduck/exporter.rb +++ b/lib/jsduck/exporter.rb @@ -24,6 +24,29 @@ module JsDuck h end + # removes extra data from export + def compact(cls) + cls.delete(:doc) + cls[:members] = compact_members_group(cls[:members]) + cls[:statics] = compact_members_group(cls[:statics]) + cls + end + + def compact_members_group(group) + c_group = {} + group.each_pair do |type, members| + c_group[type] = members.map {|m| compact_member(m) } + end + c_group + end + + def compact_member(m) + m_copy = {} + [:name, :tagname, :owner, :protected, :static, :deprecated, :required].each do |key| + m_copy[key] = m[key] + end + m_copy + end end end