Sha256: ed363bc482126e7aee1a4e9333f36e82b61e7e15400b8f274daaf2bd2019ed87

Contents?: true

Size: 1.19 KB

Versions: 1

Compression:

Stored size: 1.19 KB

Contents

require 'gobstones/lang/expressions/one_arg_expression'
require 'gobstones/extensions/boolean'
require 'gobstones/extensions/fixnum'
require 'gobstones/type_check_result'

module Gobstones

  module Lang

    class NroBolitas < OneArgExpression

      def evaluate(context)
        context.head.number_of_balls(arg.evaluate(context)).to_gbs_num
      end

    end

    class HayBolitas < OneArgExpression

      def evaluate(context)
        context.head.are_there_balls?(arg.evaluate(context)).to_gbs_bool
      end

    end

    class PuedeMover < OneArgExpression

      def evaluate(context)
        context.head.can_move?(arg.evaluate(context)).to_gbs_bool
      end

      def arg_type
        :Direction
      end

      def type_check
        Gobstones::TypeCheckResult.new arg_type, arg.return_type
      end

    end

    class Siguiente < OneArgExpression

      def evaluate(context=nil)
        arg.evaluate(context).next
      end

    end

    class Previo < OneArgExpression

      def evaluate(context=nil)
        arg.evaluate(context).previous
      end

    end

    class Opuesto < OneArgExpression

      def evaluate(context=nil)
        arg.evaluate(context).opposite
      end

    end

  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gobstones-0.0.1.1 lib/gobstones/lang/expressions/primitive_functions.rb