Sha256: 582c17b4be9674264f0eaf19d70d4f054a19fb8288cbc34252c50cbbbfee073d

Contents?: true

Size: 752 Bytes

Versions: 1

Compression:

Stored size: 752 Bytes

Contents

require "jsduck/tag/class_list_tag"

module JsDuck::Tag
  class Mixins < ClassListTag
    def initialize
      @pattern = ["mixin", "mixins"]
      @tagname = :mixins
      @ext_define_pattern = "mixins"
      @ext_define_default = {:mixins => []}
    end

    # Override definition in parent class.  In addition to Array
    # literal, mixins can be defined with an object literal.
    def parse_ext_define(cls, ast)
      cls[:mixins] = to_mixins_array(ast)
    end

    # converts AstNode, whether it's a string, array or hash into
    # array of strings (when possible).
    def to_mixins_array(ast)
      v = ast.to_value
      mixins = v.is_a?(Hash) ? v.values : Array(v)
      mixins.all? {|mx| mx.is_a? String } ? mixins : []
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jsduck-5.0.0.beta01 lib/jsduck/tag/mixins.rb