Sha256: af55142eb27c5c718afb42455fc1a2d981f0178b49e1a3d2aebae56c919c7424

Contents?: true

Size: 1.63 KB

Versions: 7

Compression:

Stored size: 1.63 KB

Contents

require "jsduck/tag/tag"
require "jsduck/logger"

module JsDuck::Tag
  class Fires < Tag
    def initialize
      @pattern = "fires"
      @tagname = :fires
      @repeatable = true
      @html_position = POS_FIRES
    end

    # @fires eventname
    def parse_doc(p, pos)
      tag = {:tagname => :fires}

      # event name from other class
      if p.look(/.+#/)
        tag[:cls] = p.ident_chain
        p.match(/#/)
        if p.look(/static-/)
          tag[:static] = true
          p.match(/static-/)
        end
        if p.look(JsDuck::MemberRegistry.regex)
          tag[:type] = p.match(/\w+/).to_sym
          p.match(/-/)
        end
        tag[:member] = p.ident
      # event name from own class
      else
        tag[:cls] = nil
        tag[:type] = :event
        tag[:member] = p.ident
      end

      tag
    end

    def process_doc(h, tags, pos)
      h[:fires] = tags.select {|t| t[:tagname] == :fires }
      h
    end

    def format(m, formatter)
      m[:fires] = m[:fires].map do |f|
        member = f[:member];
        owner = f[:cls] || m[:owner]

        # Check event existence.
        cls = formatter.relations[owner]
        if cls.find_members({:tagname => :event, :name => member}).length > 0
          formatter.link(owner, member, member, :event, m[:static])
        else
          JsDuck::Logger.warn(:fires, "@fires unknown event: #{label}", m[:files][0])
        end
      end
    end

    def to_html(m)
      return unless m[:fires] && m[:fires].length > 0

      return [
        "<h3 class='pa'>Fires</h3>",
        "<ul>",
          m[:fires].map {|e| "<li>#{e}</li>" },
        "</ul>",
      ]
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
jsduck-troopjs-0.0.10 lib/jsduck/tag/fires.rb
jsduck-troopjs-0.0.9 lib/jsduck/tag/fires.rb
jsduck-troopjs-0.0.8 lib/jsduck/tag/fires.rb
jsduck-troopjs-0.0.7 lib/jsduck/tag/fires.rb
jsduck-troopjs-0.0.5 lib/jsduck/tag/fires.rb
jsduck-troopjs-0.0.4 lib/jsduck/tag/fires.rb
jsduck-troopjs-0.0.3 lib/jsduck/tag/fires.rb