Sha256: 850fb8d1351a6dd3ee3e4d72fb73de3daea2d16471727fd41bca5fcbf52d0269

Contents?: true

Size: 651 Bytes

Versions: 1

Compression:

Stored size: 651 Bytes

Contents

class Operation < Micro::Service::Base
  attributes :a, :b

  private def result_of(operation_result)
    attributes(:a, :operator, :b).merge(result: operation_result)
  end

  class Add < Operation
    attribute :operator, '+'

    def call!
      Success(result_of(a + b))
    end
  end

  class Subtract < Operation
    attribute :operator, '-'

    def call!
      Success(result_of(a - b))
    end
  end

  class Multiply < Operation
    attribute :operator, 'x'

    def call!
      Success(result_of(a * b))
    end
  end

  class Divide < Operation
    attribute :operator, '/'

    def call!
      Success(result_of(a / b))
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
u-service-0.13.0 examples/calculator/calc/operation.rb