Sha256: 0cd76ffaa40544b4531905e3a325f40b1e9d7fffd5133048b405effb6bf306a8

Contents?: true

Size: 986 Bytes

Versions: 4

Compression:

Stored size: 986 Bytes

Contents

module CosSinCalc
  class Triangle
    class VariableHash < Hash
      attr_accessor :unit
      
      # Initializes the variables.
      def initialize
        super()
        CosSinCalc::Triangle::VARIABLES.each { |v| self[v] = nil }
      end
      
      # If a symbol is given, returns the associated value.
      # If an array of symbols is given, returns an array of the associated values.
      def [](vars)
        vars.is_a?(Array) ? vars.map { |v| super(v) } : super(vars)
      end
      
      # Returns the amount of variables that have a value.
      def amount
        self.values.compact.size
      end
      
      # Returns an array of variables whose values are known.
      def known(vars = CosSinCalc::Triangle::VARIABLES)
        vars.reject { |v| !self[v] }
      end
      
      # Returns an array of variables whose values are unknown.
      def unknown(vars = CosSinCalc::Triangle::VARIABLES)
        vars.reject { |v| self[v] }
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cossincalc-1.0.10 lib/cossincalc/triangle/variable_hash.rb
cossincalc-1.0.9 lib/cossincalc/triangle/variable_hash.rb
cossincalc-1.0.8 lib/cossincalc/triangle/variable_hash.rb
cossincalc-1.0.7 lib/cossincalc/triangle/variable_hash.rb