Performs various checks before installing the gem such as the install repository is writable and its directories exist, required Ruby and rubygems versions are met and that dependencies are installed.
Version and dependency checks are skipped if this install is forced.
The dependent check will be skipped if the install is ignoring dependencies.
Installs from the gem dependencies files in the :gemdeps
option in options
, yielding to the block
as in install
.
If :without_groups
is given in the options
, those groups in the gem dependencies file are not used. See Gem::Installer
for other options
.
Choose from a list of options. question
is a prompt displayed above the list. list
is a list of option strings. Returns the pair [option_name, option_index].
offline mode. read name=value pairs on standard input.
A convenience method, like object_group
, but also reformats the Object’s object_id.
@return the previous sibling (nil if unset)
Asks the user to answer question
with an answer from the given list
.
Add the –prerelease option to the option parser.
Sets IO
operations on io
to be non-blocking
Sets IO
operations on io
to be non-blocking
@return [Array<Vertex>] the vertices of {#graph} that have an edge with
`self` as their {Edge#destination}
Open the specified filename (either in read-only mode or in read-write mode) and lock it for reading or writing.
The opened File
object will be returned. If read_only is true, and the file does not exist, then nil will be returned.
All exceptions are propagated.
Starts tracing object allocations.
Clear recorded tracing information.
The iterator version of the strongly_connected_components
method. obj.each_strongly_connected_component
is similar to obj.strongly_connected_components.each
, but modification of obj during the iteration may lead to unexpected results.
each_strongly_connected_component
returns nil
.
class G include TSort def initialize(g) @g = g end def tsort_each_child(n, &b) @g[n].each(&b) end def tsort_each_node(&b) @g.each_key(&b) end end graph = G.new({1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}) graph.each_strongly_connected_component {|scc| p scc } #=> [4] # [2] # [3] # [1] graph = G.new({1=>[2], 2=>[3, 4], 3=>[2], 4=>[]}) graph.each_strongly_connected_component {|scc| p scc } #=> [4] # [2, 3] # [1]
The iterator version of the TSort.strongly_connected_components
method.
The graph is represented by each_node and each_child. each_node should have call
method which yields for each node in the graph. each_child should have call
method which takes a node argument and yields for each child node.
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]} each_node = lambda {|&b| g.each_key(&b) } each_child = lambda {|n, &b| g[n].each(&b) } TSort.each_strongly_connected_component(each_node, each_child) {|scc| p scc } #=> [4] # [2] # [3] # [1] g = {1=>[2], 2=>[3, 4], 3=>[2], 4=>[]} each_node = lambda {|&b| g.each_key(&b) } each_child = lambda {|n, &b| g[n].each(&b) } TSort.each_strongly_connected_component(each_node, each_child) {|scc| p scc } #=> [4] # [2, 3] # [1]