Sets a target
name that the user can then use to configure various “with” options with on the command line by using that name. For example, if the target is set to “foo”, then the user could use the --with-foo-dir=prefix
, --with-foo-include=dir
and --with-foo-lib=dir
command line options to tell where to search for header/library files.
You may pass along additional parameters to specify default values. If one is given it is taken as default prefix
, and if two are given they are taken as “include” and “lib” defaults in that order.
In any case, the return value will be an array of determined “include” and “lib” directories, either of which can be nil if no corresponding command line option is given when no default value is specified.
Note that dir_config
only adds to the list of places to search for libraries and include files. It does not link the libraries into your application.
Returns compile/link information about an installed library in a tuple of [cflags, ldflags, libs]
, by using the command found first in the following commands:
If --with-{pkg}-config={command}
is given via command line option: {command} {options}
{pkg}-config {options}
pkg-config {options} {pkg}
Where options
is the option name without dashes, for instance "cflags"
for the --cflags
flag.
The values obtained are appended to $INCFLAGS
, $CFLAGS
, $LDFLAGS
and $libs
.
If one or more options
argument is given, the config command is invoked with the options and a stripped output string is returned without modifying any of the global values mentioned above.
Returns a parse result whose value is an array of tokens that closely resembles the return value of Ripper::lex
. The main difference is that the :on_sp
token is not emitted.
For supported options, see Prism::parse
.
SyntaxSuggest.valid_without?
[Private]
This will tell you if the ‘code_lines` would be valid if you removed the `without_lines`. In short it’s a way to detect if we’ve found the lines with syntax errors in our document yet.
code_lines = [ CodeLine.new(line: "def foo\n", index: 0) CodeLine.new(line: " def bar\n", index: 1) CodeLine.new(line: "end\n", index: 2) ] SyntaxSuggest.valid_without?( without_lines: code_lines[1], code_lines: code_lines ) # => true SyntaxSuggest.valid?(code_lines) # => false
The iterator version of the tsort
method. obj.tsort_each
is similar to obj.tsort.each
, but modification of obj during the iteration may lead to unexpected results.
tsort_each
returns nil
. If there is a cycle, TSort::Cyclic
is raised.
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.tsort_each {|n| p n } #=> 4 # 2 # 3 # 1
The iterator version of the TSort.tsort
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.tsort_each(each_node, each_child) {|n| p n } #=> 4 # 2 # 3 # 1
foo(&bar) ^^^^
Visit the arguments and block of a call node and return the arguments and block as they should be used.
foo.bar, = 1 ^^^^^^^
foo => bar => baz ^^^^^^^^^^
“foo #@bar” ^^^^^
foo => [, bar, ] ^^^^^^^^^^^
foo => {} ^^
foo { |bar,| } ^
foo, = 1 ^^^^^^^^
/(?<foo>foo)/ =~ bar ^^^^^^^^^^^^^^^^^^^^
foo = 1 and bar => ^foo ^^^^
class << self; end ^^^^^^^^^^^^^^^^^^