plexus 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,8 +30,6 @@ require 'set'
30
30
 
31
31
  module Plexus
32
32
  # Plexus internals: graph builders and additionnal behaviors
33
- autoload :GraphAPI, 'plexus/graph_api'
34
-
35
33
  autoload :GraphBuilder, 'plexus/graph'
36
34
  autoload :AdjacencyGraphBuilder, 'plexus/adjacency_graph'
37
35
 
@@ -4,7 +4,7 @@ module Plexus
4
4
  # {DigraphBuilder}, {UndirectedGraphBuilder}, {DirectedPseudoGraphBuilder},
5
5
  # {UndirectedPseudoGraphBuilder}, {DirectedMultiGraphBuilder} and {UndirectedMultiGraphBuilder}
6
6
  # modules, each of them streamlining {AdjacencyGraphBuilder}'s behavior. Those
7
- # implementations rely on the {GraphBuilder}, under the control of the {GraphAPI}.
7
+ # implementations rely on the {GraphBuilder}.
8
8
  module AdjacencyGraphBuilder
9
9
 
10
10
  # Defines a useful `push` -> `add` alias for arrays.
@@ -28,7 +28,7 @@ class Object
28
28
  #
29
29
  # class A; include Digraph; end
30
30
  # a.singleton_class.ancestors
31
- # # => [Plexus::GraphAPI, Plexus::DirectedGraph::Algorithms, ...
31
+ # # => [Plexus::DirectedGraph::Algorithms, ...
32
32
  # Plexus::Labels, Enumerable, Object, Plexus, Kernel, BasicObject]
33
33
  # a.is_a? Plexus::Graph
34
34
  # # => true
@@ -1,7 +1,6 @@
1
1
  module Plexus
2
- # Using the methods required by the {GraphAPI}, it implements all the
3
- # *basic* functions of a {Graph} using *only* functions
4
- # requested in {GraphAPI}. The process is under the control of the pattern
2
+ # Using only a basic methods set, it implements all the *basic* functions
3
+ # of a graph. The process is under the control of the pattern
5
4
  # {AdjacencyGraphBuilder}, unless a specific implementation is specified
6
5
  # during initialization.
7
6
  #
@@ -49,7 +48,6 @@ module Plexus
49
48
  # These inclusions trigger some validations checks by the way.
50
49
  include(args[:implementation] ? args[:implementation] : Plexus::AdjacencyGraphBuilder)
51
50
  include(args[:algorithmic_category] ? args[:algorithmic_category] : Plexus::DigraphBuilder )
52
- include Plexus::GraphAPI
53
51
  end
54
52
 
55
53
  implementation_initialize(*params)
@@ -20,7 +20,7 @@ module Plexus
20
20
 
21
21
  def remove_edge!(u, v=nil)
22
22
  unless u.kind_of? Plexus::Arc
23
- raise ArgumentError if @parallel_edges
23
+ raise ArgumentError if @parallel_edges
24
24
  u = edge_class[u,v]
25
25
  end
26
26
  super(u.reverse) unless u.source == u.target
@@ -49,7 +49,7 @@ module Plexus
49
49
 
50
50
  def chromatic_number
51
51
  return triangulated_chromatic_number if triangulated?
52
- raise NotImplementedError
52
+ raise NotImplementedError
53
53
  end
54
54
 
55
55
  # An interval graph can have its vertices into one-to-one
@@ -1,6 +1,6 @@
1
1
  module Plexus
2
2
  MAJOR = 0
3
3
  MINOR = 5
4
- PATCH = 5
4
+ PATCH = 6
5
5
  VERSION = [MAJOR, MINOR, PATCH].join('.')
6
6
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: plexus
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.5.5
5
+ version: 0.5.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Bruce Williams
@@ -95,7 +95,6 @@ files:
95
95
  - lib/plexus/directed_graph.rb
96
96
  - lib/plexus/comparability.rb
97
97
  - lib/plexus/chinese_postman.rb
98
- - lib/plexus/graph_api.rb
99
98
  - lib/plexus/classes/graph_classes.rb
100
99
  - lib/plexus/strong_components.rb
101
100
  - lib/plexus/support/support.rb
@@ -1,35 +0,0 @@
1
- module Plexus
2
- # This module defines the minimum set of functions required to make a graph that can
3
- # use the algorithms defined by this library.
4
- #
5
- # Each implementation module must implement the following routines:
6
- #
7
- # * directed? # Is the graph directed?
8
- # * add_vertex!(v,l=nil) # Add a vertex to the graph and return the graph. `l` is an optional label.
9
- # * add_edge!(u,v=nil,l=nil) # Add an edge to the graph and return the graph. `u` can be an {Arc} or {Edge}, or `u,v` a {Edge} pair. The last parameter `l` is an optional label.
10
- # * remove_vertex!(v) # Remove a vertex to the graph and return the graph.
11
- # * remove_edge!(u,v=nil) # Remove an edge from the graph and return the graph.
12
- # * vertices # Returns an array of of all vertices.
13
- # * edges # Returns an array of all edges.
14
- # * edge_class # Returns the class used to store edges.
15
- module GraphAPI
16
- # @raise if the API is not completely implemented
17
- def self.included(klass)
18
- @api_methods ||= [:directed?, :add_vertex!, :add_edge!, :remove_vertex!, :remove_edge!, :vertices, :edges, :edge_class]
19
- ruby_18 { @api_methods.each { |m| m.to_s } }
20
-
21
- @api_methods.each do |meth|
22
- raise "Must implement #{meth}" unless klass.instance_methods.include?(meth)
23
- end
24
-
25
- klass.class_eval do
26
- # Is this right?
27
- alias remove_arc! remove_edge!
28
- alias add_arc! add_edge!
29
- alias arcs edges
30
- alias arc_class edge_class
31
- end
32
- end
33
-
34
- end # GraphAPI
35
- end # Plexus