Sha256: 168935a6249f72157bb65c496d74681299d38439524eb4bec03a960f86224e56

Contents?: true

Size: 750 Bytes

Versions: 1

Compression:

Stored size: 750 Bytes

Contents

require 'gobstones/lang/literals/literal'

module Gobstones

  module Lang

    class Number < Literal

      attr_reader :value

      def initialize(num)
        @value = num
      end

      def == other
        super(other) && value == other.value
      end

      def <(other)
        value < other.value
      end

      def return_type
        :Number
      end

      [:+, :-, :*, :/, :%, :**].each do |selector|
        define_method selector do |other|
          self.class.new value.send(selector, other.value)
        end
      end

      def opposite
        self.class.new(-value)
      end

      def previous
        self.class.new(value - 1)
      end

      def next
        self.class.new(value + 1)
      end

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gobstones-0.0.2 lib/gobstones/lang/literals/number.rb