Sha256: 0f64770b97f30c379ca92188860a2b8820a38133f444ce53a8016b954cdf03c6

Contents?: true

Size: 828 Bytes

Versions: 4

Compression:

Stored size: 828 Bytes

Contents

module Danica
  class Operator
    class Chained < Operator
      def to_f
        chain(variables.map(&:to_f))
      end

      private

      def tex_string
        (numeric_to_tex + non_numeric_variables.map(&:to_tex)).join(" #{tex_symbol} ")
      end

      def gnu_string
        (numeric_to_tex + non_numeric_variables.map(&:to_gnu)).join(" #{gnu_symbol} ")
      end

      def numeric_variables
        variables.select { |v| v.valued? }
      end

      def non_numeric_variables
        variables.reject { |v| v.valued? }
      end

      def chain(numbers)
        numbers.inject do |a,b|
          chain_operation(a,b)
        end.to_f
      end

      def numeric_to_tex
        return [] if numeric_variables.empty?
        [ Number.new(chain(numeric_variables.map(&:to_f))).to_tex ]
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
danica-2.0.3 lib/danica/operator/chained.rb
danica-2.0.2 lib/danica/operator/chained.rb
danica-2.0.1 lib/danica/operator/chained.rb
danica-2.0.0 lib/danica/operator/chained.rb