Sha256: bd681ed2082c558d66cef0b9a867cdd97f896aaa63427899d67590fcc545a2a6

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

class Scarpe
  class InvalidAttributeValueError < Scarpe::Error; end

  class Arc < Scarpe::Widget
    display_properties :left, :top, :width, :height, :angle1, :angle2

    def initialize(*args)
      @left, @top, @width, @height, @angle1, @angle2 = args

      @left = convert_to_integer(@left, "left")
      @top = convert_to_integer(@top, "top")
      @width = convert_to_integer(@width, "width")
      @height = convert_to_integer(@height, "height")
      @angle1 = convert_to_float(@angle1, "angle1")
      @angle2 = convert_to_float(@angle2, "angle2")

      super()
      create_display_widget
    end

    private

    def convert_to_integer(value, attribute_name)
      begin
        value = Integer(value)
        raise InvalidAttributeValueError, "Negative number '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0

        value
      rescue ArgumentError
        error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
        raise InvalidAttributeValueError, error_message
      end
    end

    def convert_to_float(value, attribute_name)
      begin
        value = Float(value)
        raise InvalidAttributeValueError, "Negative number '#{value}' not allowed for attribute '#{attribute_name}'" if value < 0

        value
      rescue ArgumentError
        error_message = "Invalid value '#{value}' provided for attribute '#{attribute_name}'. The value should be a number."
        raise InvalidAttributeValueError, error_message
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
scarpe-0.2.1 lib/scarpe/arc.rb
scarpe-0.2.0 lib/scarpe/arc.rb