class YARD::Tags::TypesExplainer::HashCollectionType

@private

Attributes

key_value_pairs[RW]

Public Class Methods

new(name, key_types_or_pairs, value_types = nil) click to toggle source
# File lib/yard/tags/types_explainer.rb, line 97
def initialize(name, key_types_or_pairs, value_types = nil)
  @name = name

  if value_types.nil?
    # New signature: (name, key_value_pairs)
    @key_value_pairs = key_types_or_pairs || []
  else
    # Old signature: (name, key_types, value_types)
    @key_value_pairs = [[key_types_or_pairs, value_types]]
  end
end

Public Instance Methods

key_types() click to toggle source

Backward compatibility accessors

# File lib/yard/tags/types_explainer.rb, line 110
def key_types
  return [] if @key_value_pairs.empty?
  @key_value_pairs.first[0] || []
end
key_types=(types) click to toggle source
# File lib/yard/tags/types_explainer.rb, line 115
def key_types=(types)
  if @key_value_pairs.empty?
    @key_value_pairs = [[types, []]]
  else
    @key_value_pairs[0][0] = types
  end
end
to_s(_singular = true) click to toggle source
# File lib/yard/tags/types_explainer.rb, line 136
def to_s(_singular = true)
  return "a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name}" if @key_value_pairs.empty?

  result = "a#{name[0, 1] =~ /[aeiou]/i ? 'n' : ''} #{name} with "
  parts = @key_value_pairs.map do |keys, values|
    "keys made of (" + list_join(keys.map {|t| t.to_s(false) }) +
    ") and values of (" + list_join(values.map {|t| t.to_s(false) }) + ")"
  end
  result + parts.join(" and ")
end
value_types() click to toggle source
# File lib/yard/tags/types_explainer.rb, line 123
def value_types
  return [] if @key_value_pairs.empty?
  @key_value_pairs.first[1] || []
end
value_types=(types) click to toggle source
# File lib/yard/tags/types_explainer.rb, line 128
def value_types=(types)
  if @key_value_pairs.empty?
    @key_value_pairs = [[[], types]]
  else
    @key_value_pairs[0][1] = types
  end
end