Sha256: 683858c6482fc75d961bc5bf70d52f66aea72ab99b1102fee1dab858bb0b5da1

Contents?: true

Size: 853 Bytes

Versions: 1

Compression:

Stored size: 853 Bytes

Contents

# frozen_string_literal: true

module Zapata
  module Predictor
    class Value
      extend Memoist

      def initialize(name, finder = nil)
        @name = name
        @finder = finder
      end

      def choose
        return Primitive::Raw.new(:nil, nil) if @name.nil?
        return @finder if @finder && FINAL_TYPES.include?(@finder.type)
        return Primitive::Raw.new(:super, @name) if possible_values.empty?

        Chooser.new(possible_values).by_probability
      end

      def a_finder?(primitive)
        return false unless @finder

        primitive.class == @finder.class && primitive.name == @finder.name
      end

      def possible_values
        Revolutionist.analysis_as_array.select do |element|
          !a_finder?(element) && element.name == @name
        end
      end
      memoize :possible_values
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zapata-1.0.0 lib/zapata/predictor/value.rb