From 9710d5bca45fdcab43977a20f3f3ccf79e74d2d1 Mon Sep 17 00:00:00 2001 From: Rene Saarsoo Date: Wed, 24 Aug 2011 14:41:17 -0700 Subject: [PATCH] Remove extra data from generated JSON. Again makes things quite a bit faster as we don't write as big files. --- lib/jsduck/app.rb | 3 ++- lib/jsduck/exporter.rb | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/lib/jsduck/app.rb b/lib/jsduck/app.rb index 2cd23df7..b114055f 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 a7c88cef..e3b34676 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 -- GitLab