Sha256: 02142702ffc1b5cf68a036ab86008e82f98e36c3064a10e496ea9b72fd493b37

Contents?: true

Size: 785 Bytes

Versions: 1

Compression:

Stored size: 785 Bytes

Contents

class String
	def number?
		return true if self =~ /[+-]?([0-9]*[.])?[0-9]+/
	end
end

module Tippy
	class Builder
		@@const_hash = { "HIGH" => 25.0, "LOW" => 15.0, "STANDARD" => 18.0, "ZERO" => 0.0 }
		def initialize(total:, gratuity:)
			@total = total.to_i
			@gratuity = gratuity
		end

		def generate
			return calculation if number_based?
			@gratuity = string_based?
			calculation
		end

		private
		def number_based?
			if (@gratuity.is_a? Numeric or @gratuity.number?)
				@gratuity = @gratuity.to_f
				return true
			end
			false
		end

		def string_based?
			gratuity = @gratuity.upcase
			return @@const_hash[gratuity] if @@const_hash.has_key? gratuity
			return @@const_hash["ZERO"]
		end

		def calculation
			return @total + (@total * @gratuity / 100)
		end

	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tippy_technov-0.1.1 lib/tippy/builder.rb