Sha256: 85fce1182ac7cfdf0fdfcea98b70df23ef4d7f8ef1875c40541e0d1ad90d96d9

Contents?: true

Size: 1.6 KB

Versions: 5

Compression:

Stored size: 1.6 KB

Contents

require 'singleton'
require "jsduck/meta_tag_loader"

module JsDuck

  # Access to meta-tags
  class MetaTagRegistry
    include Singleton

    def initialize
      @tags = []
      @map = {}
    end

    # Loads meta-tags from the given paths.  See MetaTagLoader#load
    # for details.
    #
    # This should only be called once. Calling it twice will override
    # the previously loaded tags.
    def load(paths)
      loader = MetaTagLoader.new
      paths.each {|p| loader.load(p) }
      register(loader.meta_tags)
    end

    # Registers MetaTag instances.
    #
    # NB! This is for testing purposes only, elsewhere always use #load.
    def register(tags)
      @tags = tags
      register_keys
    end

    # Returns array of all available tag instances
    def tags
      @tags
    end

    # Accesses tag by key or name
    def [](name)
      @map[name]
    end

    # Returns the formatter assigned to tags
    def formatter
      @formatter
    end

    # Sets the doc-formatter for all tags
    def formatter=(doc_formatter)
      @formatter = doc_formatter
      @tags.each {|tag| tag.formatter = doc_formatter }
    end

    # Returns array of attributes to be shown in member signatures
    # (and in order they should be shown in).
    def signatures
      if !@signatures
        @signatures = @tags.find_all(&:signature).map do |tag|
          s = tag.signature
          s[:key] = tag.key
          s
        end
      end
      @signatures
    end

    private

    def register_keys
      @map = {}
      @tags.each do |tag|
        @map[tag.key] = tag
        @map[tag.name] = tag
      end
    end
  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
jsduck-3.4.1 lib/jsduck/meta_tag_registry.rb
jsduck-3.4.0 lib/jsduck/meta_tag_registry.rb
jsduck-3.3.1 lib/jsduck/meta_tag_registry.rb
jsduck-3.3.0 lib/jsduck/meta_tag_registry.rb
jsduck-3.2.1 lib/jsduck/meta_tag_registry.rb