Sha256: d0664706f1ebc3becc66dc61bc64c2262a6a7f6bfc7e48b9257977a09eda6f99

Contents?: true

Size: 1010 Bytes

Versions: 15

Compression:

Stored size: 1010 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, opts)
      # 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

15 entries across 15 versions & 1 rubygems

Version Path
jsduck-4.0.1 lib/jsduck/api_exporter.rb
jsduck-4.0.0 lib/jsduck/api_exporter.rb
jsduck-3.11.2 lib/jsduck/api_exporter.rb
jsduck-4.0.beta2 lib/jsduck/api_exporter.rb
jsduck-3.11.1 lib/jsduck/api_exporter.rb
jsduck-4.0.beta lib/jsduck/api_exporter.rb
jsduck-3.11.0 lib/jsduck/api_exporter.rb
jsduck-3.10.5 lib/jsduck/api_exporter.rb
jsduck-3.10.4 lib/jsduck/api_exporter.rb
jsduck-3.10.3 lib/jsduck/api_exporter.rb
jsduck-3.10.2 lib/jsduck/api_exporter.rb
jsduck-3.10.1 lib/jsduck/api_exporter.rb
jsduck-3.10.0 lib/jsduck/api_exporter.rb
jsduck-3.2.1 lib/jsduck/api_exporter.rb
jsduck-3.1.0 lib/jsduck/api_exporter.rb