Display a statement.
Returns the lines matched by the current scan as an array of CodeLines
Return an array of CodeLines in the document
Returns an array of syntax error messages
If no missing pairs are found it falls back on the original error messages
Components of the URI
in the order.
Returns the parser to be used.
Unless a URI::Parser
is defined, DEFAULT_PARSER is used.
Components of the URI
in the order.
Checks the fragment v
component against the URI::Parser
Regexp
for :FRAGMENT.
v
Public setter for the fragment component v
(with validation).
require 'uri' uri = URI.parse("http://my.example.com/?id=25#time=1305212049") uri.fragment = "time=1305212086" uri.to_s #=> "http://my.example.com/?id=25#time=1305212086"
uri
Parses uri
and constructs either matching URI
scheme object (File
, FTP
, HTTP
, HTTPS
, LDAP
, LDAPS
, or MailTo
) or URI::Generic
.
p = URI::Parser.new p.parse("ldap://ldap.example.com/dc=example?user=john") #=> #<URI::LDAP ldap://ldap.example.com/dc=example?user=john>
str
String
to search
schemes
Patterns to apply to str
Attempts to parse and merge a set of URIs. If no block
given, then returns the result, else it calls block
for each element in result.
See also URI::Parser.make_regexp
.
Removes escapes from str
.
uri
Parses uri
and constructs either matching URI
scheme object (File
, FTP
, HTTP
, HTTPS
, LDAP
, LDAPS
, or MailTo
) or URI::Generic
.
p = URI::Parser.new p.parse("ldap://ldap.example.com/dc=example?user=john") #=> #<URI::LDAP ldap://ldap.example.com/dc=example?user=john>
str
String
to search
schemes
Patterns to apply to str
Attempts to parse and merge a set of URIs. If no block
given, then returns the result, else it calls block
for each element in result.
See also URI::Parser.make_regexp
.
Removes escapes from str
.
Returns true
if this lock is currently held by current thread.
Removes all objects from the queue.
Removes all objects from the queue.
Removes all map entries; returns self
.
Parses the given string into an abstract syntax tree, returning the root node of that tree.
RubyVM::AbstractSyntaxTree.parse("x = 1 + 2") # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
If keep_script_lines: true
option is provided, the text of the parsed source is associated with nodes and is available via Node#script_lines
.
If keep_tokens: true
option is provided, Node#tokens
are populated.
SyntaxError
is raised if the given string is invalid syntax. To overwrite this behavior, error_tolerant: true
can be provided. In this case, the parser will produce a tree where expressions with syntax errors would be represented by Node
with type=:ERROR
.
root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2") # <internal:ast>:33:in `parse': syntax error, unexpected ';', expecting ')' (SyntaxError) # x = 1; p(x; y=2 # ^ root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2", error_tolerant: true) # (SCOPE@1:0-1:15 # tbl: [:x, :y] # args: nil # body: (BLOCK@1:0-1:15 (LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)) (ERROR@1:7-1:11) (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2)))) root.children.last.children # [(LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)), # (ERROR@1:7-1:11), # (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))]
Note that parsing continues even after the errored expression.