# frozen_string_literal: true require 'forwardable' BigDecimal.class_eval do # @return [BigDecimal] def to_d self end end FalseClass.class_eval do # @return [BigDecimal] def to_d BigDecimal('0') end end Float.class_eval do extend Forwardable def_delegators :to_s, :to_d end Integer.class_eval do extend Forwardable def_delegators :to_s, :to_d end NilClass.class_eval do # @return [BigDecimal] def to_d BigDecimal('0') end end String.class_eval do # @return [BigDecimal] def to_d BigDecimal(self) end end TrueClass.class_eval do # @return [BigDecimal] def to_d BigDecimal('1') end end