class JsDuck::Exporter::App
Exports data for Docs app.
Public Class Methods
new(relations, opts)
click to toggle source
# File lib/jsduck/exporter/app.rb, line 11 def initialize(relations, opts) @full_exporter = Exporter::Full.new(relations, opts) @relations = relations @renderer = Render::Class.new(opts) end
Public Instance Methods
export(cls)
click to toggle source
Returns compacted class data hash which contains an additional :html field with full HTML to show on class overview page.
# File lib/jsduck/exporter/app.rb, line 19 def export(cls) data = @full_exporter.export(cls) data[:classIcon] = Web::ClassIcons.get(cls) data[:superclasses] = cls.superclasses.collect {|c| c[:name] } data[:subclasses] = @relations.subclasses(cls).collect {|c| c[:name] }.sort data[:mixedInto] = @relations.mixed_into(cls).collect {|c| c[:name] }.sort data[:alternateClassNames] = cls[:alternateClassNames].sort if cls[:alternateClassNames] data[:mixins] = cls.deps(:mixins).collect {|c| c[:name] }.sort data[:parentMixins] = cls.parent_deps(:mixins).collect {|c| c[:name] }.sort data[:requires] = cls.deps(:requires).collect {|c| c[:name] }.sort data[:uses] = cls.deps(:uses).collect {|c| c[:name] }.sort data[:html] = @renderer.render(data) return compact(data) end
Private Instance Methods
combine_meta(m)
click to toggle source
Add data for builtin tags with signatures to :meta field.
# File lib/jsduck/exporter/app.rb, line 59 def combine_meta(m) meta = {} TagRegistry.signatures.each do |s| name = s[:tagname] meta[name] = m[name] if m[name] end meta end
compact(cls)
click to toggle source
removes extra data from export
# File lib/jsduck/exporter/app.rb, line 41 def compact(cls) cls.delete(:doc) cls[:members] = cls[:members].map {|m| compact_member(m) } cls[:files] = compact_files(cls[:files]) cls[:meta] = combine_meta(cls) cls end
compact_files(files)
click to toggle source
Remove full path from filename for privacy considerations as the path can reveal information about the system where JSDuck was run. The docs app doesn't need to have this information.
# File lib/jsduck/exporter/app.rb, line 71 def compact_files(files) files.map do |f| {:filename => File.basename(f[:filename]), :href => f[:href]} end end
compact_member(m)
click to toggle source
# File lib/jsduck/exporter/app.rb, line 49 def compact_member(m) m_copy = {} [:name, :tagname, :owner, :id].each do |key| m_copy[key] = m[key] end m_copy[:meta] = combine_meta(m) m_copy end