weighted_graph 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41020baf8d67aa652af02d9f7a5068c297a3cb8a
4
- data.tar.gz: f8e571e67392eae819f7275ff7c4ad3ffa421e52
3
+ metadata.gz: 2aeaa497d98a2ce3127350c971b0a95ca8b439d7
4
+ data.tar.gz: 2d738d658bff3b8e81f7d6c4cef2d22d4cf8dea0
5
5
  SHA512:
6
- metadata.gz: 991a975216c7a5395bd4af8d4a26edb4ce7f7bb839d0cf71762975a4f97d3530a3e4d34332e195bb7b8599b953ca6b22e989ca69d098f63f8a99c087f93085f7
7
- data.tar.gz: 98de78724c26e51f49f7dbf1b9747508667f0150ddc814f241cd23f303d19a99265bc011626870bb6f3cfb84f59eed37661015a3dc7b216cff06bbb59b8360d7
6
+ metadata.gz: f78b0f3725d12cc951db351850131c772cce8f9f4abed144bcc09f3e0bfbe2528274f7e30226626b3905940e942ec6451b4ab599962b099c35c4dbb0190a8224
7
+ data.tar.gz: bf24cb04fe31638d191f2926a32cc0a142b264121ce8f0d33f04383e4da257f95b709a22954cd9a07ba03ec80b36a0053a4d7a06ca0efbb0797fb4e69676d9a8
data/README.md CHANGED
@@ -28,7 +28,20 @@ get_edge_weight(source, destination)
28
28
  get_adjacent_vertices(source)
29
29
  ```
30
30
 
31
- <!-- TODO: Add installation section after publishing the gem.
31
+ ## WeightedGraph::PositiveWeightedGraph API
32
+
33
+ WeightedGraph::PositiveWeightedGraph extends WeightedGraph::Graph and shares its behaviour, with the following differences:
34
+
35
+ ```ruby
36
+ # Add directed edge (source, destination) to the graph with given weight
37
+ # Requires that weight is a positive number
38
+ add_edge(source, destination, weight)
39
+
40
+ # Add undirected edge (vertex_a, vertex_b) to the graph with given weight
41
+ # Requires that weight is a positive number
42
+ add_undirected_edge(vertex_a, vertex_b, weight)
43
+ ```
44
+
32
45
  ## Installation
33
46
 
34
47
  Add this line to your application's Gemfile:
@@ -37,9 +50,17 @@ Add this line to your application's Gemfile:
37
50
  gem 'weighted_graph'
38
51
  ```
39
52
 
40
- Or install it yourself as:
53
+ Then you can require the gem in Ruby programs:
41
54
 
42
- $ gem install weighted_graph -->
55
+ ```ruby
56
+ require 'weighted_graph'
57
+
58
+ def myMethod()
59
+ graph = WeightedGraph::Graph.new
60
+ graph.add_edge('Vancouver', 'Port Coquitlam', 28)
61
+ # ...
62
+ end
63
+ ```
43
64
 
44
65
  ## Development
45
66
 
@@ -1,5 +1,6 @@
1
- require 'weighted_graph/version'
2
1
  require_relative './weighted_graph/graph'
2
+ require_relative './weighted_graph/positive_weighted_graph'
3
+ require_relative './weighted_graph/version'
3
4
 
4
5
  # A simple graph with weighted edges
5
6
  module WeightedGraph
@@ -0,0 +1,24 @@
1
+ require_relative './graph'
2
+
3
+ # A simple graph with weighted edges
4
+ module WeightedGraph
5
+ # API for a graph that requires positive edge weights
6
+ class PositiveWeightedGraph < WeightedGraph::Graph
7
+ # Initialize an empty adjacency list for edges
8
+ def initialize
9
+ super(Hash.new(0))
10
+ end
11
+
12
+ # Add directed edge (source, destination) to the graph with given weight
13
+ # Requires that weight is a positive number
14
+ def add_edge(source, destination, weight)
15
+ super(source, destination, weight) if weight > 0
16
+ end
17
+
18
+ # Add undirected edge (vertex_a, vertex_b) to the graph with given weight
19
+ # Requires that weight is a positive number
20
+ def add_undirected_edge(vertex_a, vertex_b, weight)
21
+ super(vertex_a, vertex_b, weight) if weight > 0
22
+ end
23
+ end
24
+ end
@@ -1,3 +1,3 @@
1
1
  module WeightedGraph
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
@@ -16,9 +16,7 @@ Gem::Specification.new do |spec|
16
16
  spec.homepage = 'https://github.com/msayson/weighted_graph'
17
17
  spec.license = 'MIT'
18
18
 
19
- # Prevent pushing this gem to RubyGems.org.
20
- # To allow pushes either set the 'allowed_push_host' to allow pushing to
21
- # a single host or delete this section to allow pushing to any host.
19
+ # Specify hosts this gem may be pushed to.
22
20
  if spec.respond_to?(:metadata)
23
21
  spec.metadata['allowed_push_host'] = 'https://rubygems.org/gems/weighted_graph'
24
22
  else
@@ -34,7 +32,7 @@ Gem::Specification.new do |spec|
34
32
  spec.require_paths = ['lib']
35
33
 
36
34
  spec.add_development_dependency 'bundler', '~> 1.14'
37
- spec.add_development_dependency 'pry', '~> 0.10'
35
+ # spec.add_development_dependency 'pry', '~> 0.10' # Local debugging utility
38
36
  spec.add_development_dependency 'rake', '~> 10.0'
39
37
  spec.add_development_dependency 'rspec', '~> 3.0'
40
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weighted_graph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Sayson
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.14'
27
- - !ruby/object:Gem::Dependency
28
- name: pry
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.10'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.10'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -87,6 +73,7 @@ files:
87
73
  - bin/setup
88
74
  - lib/weighted_graph.rb
89
75
  - lib/weighted_graph/graph.rb
76
+ - lib/weighted_graph/positive_weighted_graph.rb
90
77
  - lib/weighted_graph/version.rb
91
78
  - weighted_graph.gemspec
92
79
  homepage: https://github.com/msayson/weighted_graph