Class: Necropsy::ValueFact

Inherits:
Data
  • Object
show all
Defined in:
lib/necropsy/models.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(kind:, values: [], exact: true, nilable: false, origin: nil, summary: nil) ⇒ ValueFact

Returns a new instance of ValueFact.

Raises:

  • (ArgumentError)


722
723
724
725
726
727
728
729
730
731
# File 'lib/necropsy/models.rb', line 722

def initialize(kind:, values: [], exact: true, nilable: false, origin: nil, summary: nil)
  kind = kind.to_sym
  raise ArgumentError, "invalid value fact kind: #{kind.inspect}" unless VALUE_FACT_KINDS.include?(kind)

  values = Array(values).map(&:to_s).uniq.sort.freeze
  exact = (exact == true)
  nilable = (nilable == true)
  origin = origin&.to_s
  super
end

Instance Attribute Details

#exactObject (readonly)

Returns the value of attribute exact

Returns:

  • (Object)

    the current value of exact



721
722
723
# File 'lib/necropsy/models.rb', line 721

def exact
  @exact
end

#kindObject (readonly)

Returns the value of attribute kind

Returns:

  • (Object)

    the current value of kind



721
722
723
# File 'lib/necropsy/models.rb', line 721

def kind
  @kind
end

#nilableObject (readonly)

Returns the value of attribute nilable

Returns:

  • (Object)

    the current value of nilable



721
722
723
# File 'lib/necropsy/models.rb', line 721

def nilable
  @nilable
end

#originObject (readonly)

Returns the value of attribute origin

Returns:

  • (Object)

    the current value of origin



721
722
723
# File 'lib/necropsy/models.rb', line 721

def origin
  @origin
end

#summaryObject (readonly)

Returns the value of attribute summary

Returns:

  • (Object)

    the current value of summary



721
722
723
# File 'lib/necropsy/models.rb', line 721

def summary
  @summary
end

#valuesObject (readonly)

Returns the value of attribute values

Returns:

  • (Object)

    the current value of values



721
722
723
# File 'lib/necropsy/models.rb', line 721

def values
  @values
end

Class Method Details

.from_h(attributes) ⇒ Object



741
742
743
744
745
746
747
748
749
750
751
# File 'lib/necropsy/models.rb', line 741

def self.from_h(attributes)
  data = attributes.transform_keys(&:to_s)
  new(
    kind: data.fetch('kind'),
    values: data.fetch('values', []),
    exact: data.fetch('exact', false),
    nilable: data.fetch('nilable', false),
    origin: data['origin'],
    summary: data['summary']
  )
end

.instance_types(types, origin: :direct_constructor, nilable: false) ⇒ Object



733
734
735
# File 'lib/necropsy/models.rb', line 733

def self.instance_types(types, origin: :direct_constructor, nilable: false)
  new(kind: :instance_types, values: types, exact: true, nilable: nilable, origin: origin)
end

.unknown(origin = :unsupported) ⇒ Object



737
738
739
# File 'lib/necropsy/models.rb', line 737

def self.unknown(origin = :unsupported)
  new(kind: :unknown, exact: false, origin: origin)
end

Instance Method Details

#exact_instance_types?Boolean

Returns:

  • (Boolean)


753
754
755
# File 'lib/necropsy/models.rb', line 753

def exact_instance_types?
  kind == :instance_types && exact && !values.empty?
end

#to_hObject



757
758
759
760
761
762
763
764
765
766
# File 'lib/necropsy/models.rb', line 757

def to_h
  {
    'kind' => kind.to_s,
    'values' => values,
    'exact' => exact,
    'nilable' => nilable,
    'origin' => origin,
    'summary' => summary
  }
end