Sha256: 9fc52a0b2e8b3e4ce19017adc481ccbd76175b865fb81be8c8c7803f9edffc53

Contents?: true

Size: 1.18 KB

Versions: 16

Compression:

Stored size: 1.18 KB

Contents

require 'ostruct'

module JsDuck
  module Process

    # Appends Ext4 options parameter to the parameter list of each event
    # in each class.
    #
    # But only does so when :ext4_events option is set to true or the
    # code itself is detected as being writted in Ext4 style.
    class Ext4Events
      def initialize(classes, opts=OpenStruct.new)
        @classes = classes
        @opts = opts
      end

      def process_all!
        if @opts.ext4_events == true || (@opts.ext4_events == nil && ext4_style_code?)
          @classes.each_value {|cls| process(cls) }
        end
      end

      # Are we dealing with code looking like ExtJS 4?
      # True if any of the classes is defined with Ext.define()
      def ext4_style_code?
        @classes.values.any? {|cls| cls[:code_type] == :ext_define }
      end

      def process(cls)
        cls[:members].each do |m|
          m[:params] << OPTIONS if m[:tagname] == :event
        end
      end

      OPTIONS = {
        :tagname => :params,
        :name => "eOpts",
        :type => "Object",
        :doc => "The options object passed to {@link Ext.util.Observable#addListener}.",
        :ext4_auto_param => true,
      }

    end

  end
end

Version data entries

16 entries across 16 versions & 3 rubygems

Version Path
solvas-jsduck-6.0.0.30539 lib/jsduck/process/ext4_events.rb
solvas-jsduck-6.0.0.9571 lib/jsduck/process/ext4_events.rb
solvas-jsduck-6.0.0.6154 lib/jsduck/process/ext4_events.rb
solvas-jsduck-6.0.0.4021 lib/jsduck/process/ext4_events.rb
solvas-jsduck-6.0.0.2554 lib/jsduck/process/ext4_events.rb
solvas-jsduck-6.0.0.1891 lib/jsduck/process/ext4_events.rb
solvas-jsduck-6.0.0.beta.1888 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.10 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.9 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.8 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.7 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.5 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.4 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.3 lib/jsduck/process/ext4_events.rb
jsduck-troopjs-0.0.1 lib/jsduck/process/ext4_events.rb
jsduck-6.0.0beta lib/jsduck/process/ext4_events.rb