Adds a local gem requested using dep_name
with the given spec
that can be loaded and installed using the source
.
Returns tokens corresponding to the location of the node. Returns nil
if keep_tokens
is not enabled when parse method is called.
root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true) root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...] root.tokens.map{_1[2]}.join # => "x = 1 + 2"
Token is an array of:
id
token type
source code text
location [ first_lineno
, first_column
, last_lineno
, last_column
]
Sends “close notify” to the peer and tries to shut down the SSL
connection gracefully.
If a timestamp token is present, this returns it in the form of a OpenSSL::PKCS7
.
Parses a source buffer and returns the AST, the source code comments, and the tokens emitted by the lexer.
Like Enumerable#drop_while
, but chains operation to be lazy-evaluated.
Loads the given private key identified by id and data.
An EngineError
is raised of the OpenSSL::PKey
is unavailable.
Load an iseq object from binary format String
object created by RubyVM::InstructionSequence.to_binary
.
This loader does not have a verifier, so that loading broken/modified binary causes critical problem.
You should not load binary data provided by others. You should use binary data translated by yourself.
Takes file
, a String
with the location of a Ruby
source file, reads, parses and compiles the file, and returns iseq
, the compiled InstructionSequence
with source location metadata set. It parses and compiles using prism.
Optionally takes options
, which can be true
, false
or a Hash
, to modify the default behavior of the Ruby
iseq compiler.
For details regarding valid compile options see ::compile_option=
.
# /tmp/hello.rb puts "Hello, world!" # elsewhere RubyVM::InstructionSequence.compile_file_prism("/tmp/hello.rb") #=> <RubyVM::InstructionSequence:<main>@/tmp/hello.rb>
When a call node has the attribute_write flag set, it means that the call is using the attribute write syntax. This is either a method call to []= or a method call to a method that ends with =. Either way, the = sign is present in the source.
Prism
returns the message_loc without the = sign attached, because there can be any amount of space between the message and the = sign. However, sometimes you want the location of the full message including the inner space and the = sign. This method provides that.
Regular gems take precedence over default gems
Gems higher up in gem_path
take precedence
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
.
Extra files to add to RDoc
such as README or doc/examples.txt
When the user elects to generate the RDoc
documentation for a gem (typically at install time), all the library files are sent to RDoc
for processing. This option allows you to have some non-code files included for a more complete set of documentation.
Usage:
spec.extra_rdoc_files = ['README', 'doc/user-guide.txt']
Sets extra_rdoc_files
to files
, ensuring it is an array.