Commit 77a0b380 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Extract Js::ExtDefine class from TagRegistry.

TagRegistry doesn't need to deal with this stuff that's only used
in one place.  The Ext.define configs are only needed in Js::Class
and nowhere else.
parent e6c6e1d4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
require "jsduck/util/singleton"
require "jsduck/tag_registry"
require "jsduck/js/ext_define"
require "jsduck/js/method"
require "jsduck/js/property"

@@ -102,12 +102,12 @@ module JsDuck
      # given cls Hash
      def detect_ext_define(cls, ast)
        # defaults
        cls.merge!(TagRegistry.ext_define_defaults)
        cls.merge!(Js::ExtDefine.defaults)
        cls[:members] = []
        cls[:code_type] = :ext_define

        ast["arguments"][1].each_property do |key, value, pair|
          if tag = TagRegistry.get_by_ext_define_pattern(key)
          if tag = Js::ExtDefine.get_tag_by_pattern(key)
            tag.parse_ext_define(cls, value)
          else
            case key
+46 −0
Original line number Diff line number Diff line
require "jsduck/tag_registry"

module JsDuck
  module Js

    # Access to Ext.define-related Tag configs.
    class ExtDefine
      class << self

        # Default values for class config when Ext.define is encountered.
        def defaults
          return @defaults if @defaults

          @defaults = {}
          TagRegistry.tags.each do |tag|
            if tag.ext_define_default
              @defaults.merge!(tag.ext_define_default)
            end
          end
          @defaults
        end

        # Accesses tag by Ext.define pattern
        def get_tag_by_pattern(name)
          patterns[name]
        end

        private

        def patterns
          return @patterns if @patterns

          @patterns = {}
          TagRegistry.tags.each do |tag|
            Array(tag.ext_define_pattern).each do |pattern|
              @patterns[pattern] = tag
            end
          end
          @patterns
        end

      end
    end

  end
end
+0 −18
Original line number Diff line number Diff line
@@ -24,8 +24,6 @@ module JsDuck

    def initialize(load_paths=[])
      @patterns = {}
      @ext_define_patterns = {}
      @ext_define_defaults = {}
      @tagnames = {}
      @signatures = []
      @html_renderers = []
@@ -46,14 +44,6 @@ module JsDuck
          @patterns[pattern] = tag
        end

        Array(tag.ext_define_pattern).each do |pattern|
          @ext_define_patterns[pattern] = tag
        end

        if tag.ext_define_default
          @ext_define_defaults.merge!(tag.ext_define_default)
        end

        if tag.tagname
          @tagnames[tag.tagname] = tag
        end
@@ -84,9 +74,6 @@ module JsDuck
    # Accessors for lists of tags
    #

    # Default values for class config when Ext.define is encountered.
    attr_reader :ext_define_defaults

    # Array of attributes to be shown in member signatures
    # (and in order they should be shown in).
    attr_reader :signatures
@@ -146,11 +133,6 @@ module JsDuck
      @patterns[name]
    end

    # Accesses tag by Ext.define pattern
    def get_by_ext_define_pattern(name)
      @ext_define_patterns[name]
    end

    # Accesses tag by name - the symbol under which the tag data
    # is stored in final hash.
    def get_by_name(name)