Sha256: 41eafdad153c5763bffdf80733e54e01d8665510a03abf2d7d267ec6748513ed

Contents?: true

Size: 1004 Bytes

Versions: 16

Compression:

Stored size: 1004 Bytes

Contents

require 'jsduck/json_duck'
require 'jsduck/class'

module JsDuck

  # Exporter for simple JSON format listing only class name and names
  # of all of its members.
  #
  # It produces the following structure:
  #
  # {
  #   :name => "Panel",
  #   :members => {
  #     :cfg => ["width", "height", "title"],
  #     :method => ["getWidth", "setWidth"],
  #     ...
  #   },
  #   :statics => { ... }
  # }
  #
  class ApiExporter
    def initialize(relations)
      # All params ignored, they're present to be compatible with
      # other exporters.
    end

    # Returns hash of class name and member names
    def export(cls)
      {
        :name => cls[:name],
        :members => export_members(cls, :members),
        :statics => export_members(cls, :statics),
      }
    end

    private

    def export_members(cls, context)
      h = {}
      Class.default_members_hash.each_key do |type|
        h[type] = cls.members(type, context).map {|m| m[:name] }
      end
      h
    end

  end

end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
jsduck-3.9.1 lib/jsduck/api_exporter.rb
jsduck-3.9.0 lib/jsduck/api_exporter.rb
jsduck-3.9.0.pre lib/jsduck/api_exporter.rb
jsduck-3.8.4 lib/jsduck/api_exporter.rb
jsduck-3.8.3 lib/jsduck/api_exporter.rb
jsduck-3.8.2 lib/jsduck/api_exporter.rb
jsduck-3.8.1 lib/jsduck/api_exporter.rb
jsduck-3.8.0 lib/jsduck/api_exporter.rb
jsduck-3.7.0 lib/jsduck/api_exporter.rb
jsduck-3.6.1 lib/jsduck/api_exporter.rb
jsduck-3.6.0 lib/jsduck/api_exporter.rb
jsduck-3.5.0 lib/jsduck/api_exporter.rb
jsduck-3.4.1 lib/jsduck/api_exporter.rb
jsduck-3.4.0 lib/jsduck/api_exporter.rb
jsduck-3.3.1 lib/jsduck/api_exporter.rb
jsduck-3.3.0 lib/jsduck/api_exporter.rb