lib/vedeu/geometry/generic_coordinate.rb in vedeu-0.6.4 vs lib/vedeu/geometry/generic_coordinate.rb in vedeu-0.6.5

- old
+ new

@@ -1,172 +1,178 @@ module Vedeu - # Crudely corrects out of range values. - # - class GenericCoordinate + module Geometry - # Return a new instance of Vedeu::GenericCoordinate. + # Crudely corrects out of range values. # - # @param attributes [Hash] - # @option attributes name [String] - # @option attributes type [Symbol] - # @option attributes offset [Fixnum] - # @return [Vedeu::GenericCoordinate] - def initialize(attributes = {}) - @attributes = defaults.merge!(attributes) + class GenericCoordinate - @attributes.each { |key, value| instance_variable_set("@#{key}", value) } - end + # Return a new instance of Vedeu::Geometry::GenericCoordinate. + # + # @param attributes [Hash] + # @option attributes name [String] + # @option attributes type [Symbol] + # @option attributes offset [Fixnum] + # @return [Vedeu::Geometry::GenericCoordinate] + def initialize(attributes = {}) + @attributes = defaults.merge!(attributes) - # Returns the maximum coordinate for an area. - # - # @example - # # d = 2 - # # d_dn = 4 - # dn # => 6 - # - # @return [Fixnum] - def dn - if d_dn <= 0 - 0 + @attributes.each do |key, value| + instance_variable_set("@#{key}", value) + end + end - else - d + d_dn + # Returns the maximum coordinate for an area. + # + # @example + # # d = 2 + # # d_dn = 4 # represents width or height + # dn # => 6 + # + # @return [Fixnum] + def dn + if d_dn <= 0 + 0 + else + d + d_dn + + end end - end - alias_method :xn, :dn - alias_method :yn, :dn + alias_method :xn, :dn + alias_method :yn, :dn - # Returns the coordinate for a given index. - # - # @example - # # d_range = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] - # position # => 4 - # position(-2) # => 4 - # position(2) # => 6 - # position(15) # => 13 - # - # @return [Fixnum] - def position - pos = case - when offset <= 0 then d - when offset > dn_index then dn - else - d_range[offset] - end + # Returns the coordinate for a given index. + # + # @example + # # d_range = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + # position # => 4 + # position(-2) # => 4 + # position(2) # => 6 + # position(15) # => 13 + # + # @return [Fixnum] + def position + pos = case + when offset <= 0 then d + when offset > dn_index then dn + else + d_range[offset] + end - pos = pos < bd ? bd : pos - pos = pos > bdn ? bdn : pos - pos - end - alias_method :x_position, :position - alias_method :y_position, :position + pos = pos < bd ? bd : pos + pos = pos > bdn ? bdn : pos + pos + end + alias_method :x_position, :position + alias_method :y_position, :position - protected + protected - # @!attribute [r] name - # @return [String] - attr_reader :name + # @!attribute [r] name + # @return [String] + attr_reader :name - # @!attribute [r] offset - # @return [Fixnum] - attr_reader :offset + # @!attribute [r] offset + # @return [Fixnum] + attr_reader :offset - # @!attribute [r] type - # @return [Symbol] - attr_reader :type + # @!attribute [r] type + # @return [Symbol] + attr_reader :type - private + private - # @see Vedeu::Borders#by_name - def border - @border ||= Vedeu.borders.by_name(name) - end + # @see Vedeu::Borders::Repository#by_name + def border + @border ||= Vedeu.borders.by_name(name) + end - # Return the :x or :y value from the border. - # - # @return [Fixnum] - def d - border.send(coordinate_type[0]) - end + # Return the :x or :y value from the border. + # + # @return [Fixnum] + def d + border.send(coordinate_type[0]) + end - # Return the :bx or :by value from the border. - # - # @return [Fixnum] - def bd - border.send(coordinate_type[1]) - end + # Return the :bx or :by value from the border. + # + # @return [Fixnum] + def bd + border.send(coordinate_type[1]) + end - # Return the :bxn or :byn value from the border. - # - # @return [Fixnum] - def bdn - border.send(coordinate_type[2]) - end + # Return the :bxn or :byn value from the border. + # + # @return [Fixnum] + def bdn + border.send(coordinate_type[2]) + end - # Return the :width or :height value from the border. - # - # @return [Fixnum] - def d_dn - border.send(coordinate_type[3]) - end + # Return the :width or :height value from the border. + # + # @return [Fixnum] + def d_dn + border.send(coordinate_type[3]) + end - # Ascertain the correct methods to use for determining the coordinates. - # - # @raise [Vedeu::Error::InvalidSyntax] When the coordinate type is not - # given. - # @return [Fixnum] - def coordinate_type - @_type ||= case type - when :x then [:x, :bx, :bxn, :width] - when :y then [:y, :by, :byn, :height] - else - fail Vedeu::Error::InvalidSyntax, - 'Coordinate type not given, cannot continue.' - end - end + # Ascertain the correct methods to use for determining the coordinates. + # + # @raise [Vedeu::Error::InvalidSyntax] When the coordinate type is not + # given. + # @return [Fixnum] + def coordinate_type + @_type ||= case type + when :x then [:x, :bx, :bxn, :width] + when :y then [:y, :by, :byn, :height] + else + fail Vedeu::Error::InvalidSyntax, + 'Coordinate type not given, cannot continue.' + end + end - # Returns the maximum index for an area. - # - # @example - # # d_dn = 3 - # dn_index # => 2 - # - # @return [Fixnum] - def dn_index - if d_dn < 1 - 0 + # Returns the maximum index for an area. + # + # @example + # # d_dn = 3 + # dn_index # => 2 + # + # @return [Fixnum] + def dn_index + if d_dn < 1 + 0 - else - d_dn - 1 + else + d_dn - 1 + end end - end - # Returns an array with all coordinates from d to dn. - # - # @example - # # d_dn = 10 - # # d = 4 - # # dn = 14 - # d_range # => [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] - # - # @return [Array] - def d_range - (d...dn).to_a - end + # Returns an array with all coordinates from d to dn. + # + # @example + # # d_dn = 10 + # # d = 4 + # # dn = 14 + # d_range # => [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] + # + # @return [Array] + def d_range + (d...dn).to_a + end - # The default values for a new instance of this class. - # - # @return [Hash] - def defaults - { - name: '', - offset: nil, - type: :x, - } - end + # The default values for a new instance of this class. + # + # @return [Hash] + def defaults + { + name: '', + offset: nil, + type: :x, + } + end - end # GenericCoordinate + end # GenericCoordinate + + end # Geometry end # Vedeu