Sha256: f26c7c4ddc8e832b2dda4651ef11094afa33c3a6f34da3229d4cad1e912b5542

Contents?: true

Size: 1.25 KB

Versions: 26

Compression:

Stored size: 1.25 KB

Contents

module PgGraph::Data
  # Dimension of the node (corresponding kind shown in parenthesis):
  #
  #   0   A single value (:value)
  #   1   A single record (:record)
  #   2   A map from id to record (:table)
  #   3   A map from id to array of duplicate records (:table)
  # 
  # The dimension defines class and structures of GraphData objects
  #
  class Dimension
    def self.valid?(dimension, min: 0)
      dimension.is_a?(Integer) && (min..3).include?(dimension) 
    end

    def self.kind(dimension)
      case dimension
        when 0; :value
        when 1; :record
        when 2, 3; :table
      end
    end

    def self.field_class(dimension)
      validate(dimension)
      case dimension
        when 0; Column
        when 1; RecordField
        when 2; TableField
        when 3; MmTableField
      end
    end

    def self.value_class(dimension)
      validate(dimension, min: 1)
      case dimension
        when 1; RecordValue
        when 2; TableValue
        when 3; MmTableValue
      end
    end

    def self.validate(dim, min: 0, unwind: 1)
      constrain dim, Integer, unwind: unwind
      constrain dim, 
          lambda { |d| Dimension.valid?(d, min: min) }, 
          "Out of range value: #{dim}", 
          unwind: unwind
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
pg_graph-0.5.3 lib/pg_graph/data/dimension.rb
pg_graph-0.5.2 lib/pg_graph/data/dimension.rb
pg_graph-0.5.1 lib/pg_graph/data/dimension.rb
pg_graph-0.5.0 lib/pg_graph/data/dimension.rb
pg_graph-0.4.2 lib/pg_graph/data/dimension.rb
pg_graph-0.4.1 lib/pg_graph/data/dimension.rb
pg_graph-0.4.0 lib/data/dimension.rb
pg_graph-0.3.6 lib/data/dimension.rb
pg_graph-0.3.5 lib/data/dimension.rb
pg_graph-0.3.4 lib/data/dimension.rb
pg_graph-0.3.3 lib/data/dimension.rb
pg_graph-0.3.2 lib/data/dimension.rb
pg_graph-0.3.1 lib/data/dimension.rb
pg_graph-0.3.0 lib/data/dimension.rb
pg_graph-0.2.1 lib/data/dimension.rb
pg_graph-0.2.0 lib/data/dimension.rb
pg_graph-0.1.9 lib/data/dimension.rb
pg_graph-0.1.8 lib/data/dimension.rb
pg_graph-0.1.7 lib/data/dimension.rb
pg_graph-0.1.6 lib/data/dimension.rb