Prism Ruby parser
Loading...
Searching...
No Matches
Data Fields
pm_options Struct Reference

The options that can be passed to the parser. More...

#include <options.h>

Collaboration diagram for pm_options:
Collaboration graph
[legend]

Data Fields

pm_options_shebang_callback_t shebang_callback
 The callback to call when additional switches are found in a shebang comment.
 
void * shebang_callback_data
 Any additional data that should be passed along to the shebang callback if one was set.
 
pm_string_t filepath
 The name of the file that is currently being parsed.
 
int32_t line
 The line within the file that the parse starts on.
 
pm_string_t encoding
 The name of the encoding that the source file is in.
 
size_t scopes_count
 The number of scopes surrounding the code that is being parsed.
 
pm_options_scope_tscopes
 The scopes surrounding the code that is being parsed.
 
pm_options_version_t version
 The version of prism that we should be parsing with.
 
uint8_t command_line
 A bitset of the various options that were set on the command line.
 
int8_t frozen_string_literal
 Whether or not the frozen string literal option has been set.
 
bool encoding_locked
 Whether or not the encoding magic comments should be respected.
 
bool main_script
 When the file being parsed is the main script, the shebang will be considered for command-line flags (or for implicit -x).
 
bool partial_script
 When the file being parsed is considered a "partial" script, jumps will not be marked as errors if they are not contained within loops/blocks.
 

Detailed Description

The options that can be passed to the parser.

Field Documentation

◆ line

int32_t pm_options::line

The line within the file that the parse starts on.

This value is 1-indexed.

◆ encoding

pm_string_t pm_options::encoding

The name of the encoding that the source file is in.

Note that this must correspond to a name that can be found with Encoding.find in Ruby.

◆ scopes

pm_options_scope_t* pm_options::scopes

The scopes surrounding the code that is being parsed.

For most parses this will be NULL, but for evals it will be the locals that are in scope surrounding the eval. Scopes are ordered from the outermost scope to the innermost one.

◆ version

pm_options_version_t pm_options::version

The version of prism that we should be parsing with.

This is used to allow consumers to specify which behavior they want in case they need to parse exactly as a specific version of CRuby.

◆ frozen_string_literal

int8_t pm_options::frozen_string_literal

Whether or not the frozen string literal option has been set.

May be:

  • PM_OPTIONS_FROZEN_STRING_LITERAL_DISABLED
  • PM_OPTIONS_FROZEN_STRING_LITERAL_ENABLED
  • PM_OPTIONS_FROZEN_STRING_LITERAL_UNSET

◆ encoding_locked

bool pm_options::encoding_locked

Whether or not the encoding magic comments should be respected.

This is a niche use-case where you want to parse a file with a specific encoding but ignore any encoding magic comments at the top of the file.

◆ main_script

bool pm_options::main_script

When the file being parsed is the main script, the shebang will be considered for command-line flags (or for implicit -x).

The caller needs to pass this information to the parser so that it can behave correctly.

◆ partial_script

bool pm_options::partial_script

When the file being parsed is considered a "partial" script, jumps will not be marked as errors if they are not contained within loops/blocks.

This is used in the case that you're parsing a script that you know will be embedded inside another script later, but you do not have that context yet. For example, when parsing an ERB template that will be evaluated inside another script.


The documentation for this struct was generated from the following file: