Commit a9e4fca8 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Extract MemberRegistry from TagRegistry.

Yet another thing that's not really a concern for the TagRegistry,
as it only effects a small subset of tags.

As a result, the TagRegistry class is now quite clean.
parent ee73a231
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
require 'jsduck/tag_registry'
require 'jsduck/member_registry'

module JsDuck

@@ -38,7 +38,7 @@ module JsDuck
    # Returns the detected member type on success.
    # Otherwise nil.
    def self.detect_member(doc_map)
      type = TagRegistry.member_type_names.find {|type| doc_map[type] }
      type = MemberRegistry.names.find {|type| doc_map[type] }

      if type == :cfg
        # Only detect a single @cfg as a :cfg.
+3 −2
Original line number Diff line number Diff line
require 'jsduck/tag_registry'
require 'jsduck/class'
require 'jsduck/member_registry'

module JsDuck
  module Exporter
@@ -27,7 +28,7 @@ module JsDuck
      # Generates flat list of all members
      def export_members(cls)
        groups = []
        TagRegistry.member_type_names.each do |tagname|
        MemberRegistry.names.each do |tagname|
          groups << export_members_group(cls, {:tagname => tagname, :static => false})
          groups << export_members_group(cls, {:tagname => tagname, :static => true})
        end
+2 −2
Original line number Diff line number Diff line
require 'jsduck/logger'
require 'jsduck/tag_registry'
require 'jsduck/member_registry'

module JsDuck
  module Inline
@@ -41,7 +41,7 @@ module JsDuck

      # applies the link template
      def apply_tpl(target, text, full_link)
        if target =~ /^(.*)#(static-)?#{TagRegistry.member_type_regex}?(.*)$/
        if target =~ /^(.*)#(static-)?#{MemberRegistry.regex}?(.*)$/
          cls = $1.empty? ? @class_context : $1
          static = $2 ? true : nil
          type = $3 ? $3.intern : nil
+41 −0
Original line number Diff line number Diff line
require "jsduck/tag_registry"

module JsDuck

  # Access to member tags
  class MemberRegistry
    class << self
      # Same as #definitions, but returns just the names of member types.
      def names
        definitions.map {|mt| mt[:name] }
      end

      # Returns array of available member type definitions.
      # Sorted in the order defined by :position.
      def definitions
        if !@definitions
          @definitions = TagRegistry.tags.find_all do |tag|
            tag.respond_to?(:member_type) && tag.member_type
          end.map do |tag|
            cfg = tag.member_type
            cfg[:name] = tag.tagname
            cfg
          end
          @definitions.sort! {|a, b| a[:position] <=> b[:position] }
        end

        @definitions
      end

      # Regex for matching member type name in member reference.
      #
      # The regex matches strings like: "method-" or "event-".  It
      # contains a capture group to capture the actual name of the
      # member, leaving out the dash "-".
      def regex
        @regex ||= Regexp.new("(?:(" + names.join("|") + ")-)")
      end
    end
  end

end
+3 −2
Original line number Diff line number Diff line
require 'jsduck/render/tags'
require 'jsduck/render/sidebar'
require 'jsduck/tag_registry'
require 'jsduck/member_registry'

module JsDuck
  module Render
@@ -38,8 +39,8 @@ module JsDuck
      end

      def render_all_sections
        TagRegistry.member_types.map do |member_type|
          render_section(member_type)
        MemberRegistry.definitions.map do |member_def|
          render_section(member_def)
        end
      end

Loading