module Graphify

Constants

VERSION

Public Class Methods

get_graph(name, num_vertices, num_edges, storage_type, type, weight_limit) click to toggle source
# File lib/graphify.rb, line 5
def self.get_graph(name, num_vertices, num_edges, storage_type, type, weight_limit)
  errors = check_params(name, num_vertices, num_edges, storage_type, type, weight_limit)
  p errors if errors != {}
  raise 'Invalid Parameters as above' if errors != {}
  Graph.new({'name': name, 'num_vertices': num_vertices, 'num_edges': num_edges, 'storage_type': storage_type,
            'type': type, 'weight_limit': weight_limit})
end

Private Class Methods

check_name(name) click to toggle source
# File lib/graphify.rb, line 27
def self.check_name(name)
  [] << 'Name cannot be empty or nil' if name == '' || name.nil?
end
check_num_edges(num_edges, num_vertices, type) click to toggle source
# File lib/graphify.rb, line 35
def self.check_num_edges(num_edges, num_vertices, type)
  errors = []
  errors << 'Number of edges cannot be negative' if num_edges < 0
  edge_limit = type == 'directed' ? (num_vertices) * (num_vertices - 1) : ((num_vertices) * (num_vertices - 1) / 2)
  errors << 'The number of edges is too large' if num_edges > edge_limit
end
check_num_vertices(num_vertices) click to toggle source
# File lib/graphify.rb, line 31
def self.check_num_vertices(num_vertices)
  [] << 'Number of vertices cannot be negative' if num_vertices < 0
end
check_params(name, num_vertices, num_edges, storage_type, type, weight_limit) click to toggle source
# File lib/graphify.rb, line 15
def self.check_params(name, num_vertices, num_edges, storage_type, type, weight_limit)
  errors = {}
  errors['name'] = check_name(name) unless check_name(name).nil?
  errors['num_vertices'] = check_num_vertices(num_vertices) unless check_num_vertices(num_vertices).nil?
  errors['type'] = check_type(type) unless check_type(type).nil?
  errors['weight_limit'] = check_weight_limit(weight_limit) unless check_weight_limit(weight_limit).nil?
  errors['storage_type'] = check_storage_type(storage_type) unless check_storage_type(storage_type).nil?
  errors['num_edges'] =
      check_num_edges(num_edges, num_vertices, type) unless check_num_edges(num_edges, num_vertices, type).nil?
  errors
end
check_storage_type(storage_type) click to toggle source
# File lib/graphify.rb, line 42
def self.check_storage_type(storage_type)
  [] << 'Storage type is invalid' if storage_type != 'matrix' && storage_type != 'list'
end
check_type(type) click to toggle source
# File lib/graphify.rb, line 46
def self.check_type(type)
  [] << 'Type of graph is invalid' if type != 'directed' && type != 'undirected'
end
check_weight_limit(weight_limit) click to toggle source
# File lib/graphify.rb, line 50
def self.check_weight_limit(weight_limit)
  [] << 'Weight limit cannot be negative' if weight_limit < 0
end