Ruby: pm_options Struct Reference

Ruby 3.4.3p32 (2025-04-14 revision d0b7e5b6a04bde21ca483d20a1546b28b401c2d4)

Data Fields
pm_options Struct Reference

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

`#include <options.h>`

## 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_t * | scopes
| 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.

Definition at line 95 of file options.h.

## Field Documentation

## ◆ command_line

uint8_t pm_options::command_line

A bitset of the various options that were set on the command line.

Definition at line 144 of file options.h.

Referenced by pm_options_command_line_set(), pm_options_read(), and pm_parser_init().

## ◆ 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.

Definition at line 121 of file options.h.

Referenced by pm_options_encoding_set(), pm_options_free(), pm_options_read(), and pm_parser_init().

## ◆ 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.

Definition at line 160 of file options.h.

Referenced by pm_options_encoding_locked_set(), pm_options_read(), and pm_parser_init().

## ◆ filepath

pm_string_t pm_options::filepath

The name of the file that is currently being parsed.

Definition at line 109 of file options.h.

Referenced by pm_options_filepath_set(), pm_options_free(), pm_options_read(), and pm_parser_init().

## ◆ 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

Definition at line 153 of file options.h.

Referenced by pm_options_frozen_string_literal_set(), pm_options_read(), and pm_parser_init().

## ◆ line

int32_t pm_options::line

The line within the file that the parse starts on.

This value is 1-indexed.

Definition at line 115 of file options.h.

Referenced by pm_options_line_set(), pm_options_read(), and pm_parser_init().

## ◆ 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.

Definition at line 167 of file options.h.

Referenced by pm_options_main_script_set(), pm_options_read(), and pm_parser_init().

## ◆ 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.

Definition at line 177 of file options.h.

Referenced by pm_options_partial_script_set(), pm_options_read(), and pm_parser_init().

## ◆ 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.

Definition at line 134 of file options.h.

Referenced by pm_options_free(), pm_options_read(), pm_options_scope_get(), and pm_options_scopes_init().

## ◆ scopes_count

size_t pm_options::scopes_count

The number of scopes surrounding the code that is being parsed.

Definition at line 126 of file options.h.

Referenced by pm_options_free(), pm_options_scopes_init(), and pm_parser_init().

## ◆ shebang_callback

pm_options_shebang_callback_t pm_options::shebang_callback

The callback to call when additional switches are found in a shebang comment.

Definition at line 100 of file options.h.

Referenced by pm_options_shebang_callback_set(), and pm_parser_init().

## ◆ shebang_callback_data

void* pm_options::shebang_callback_data

Any additional data that should be passed along to the shebang callback if one was set.

Definition at line 106 of file options.h.

Referenced by pm_options_shebang_callback_set().

## ◆ 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.

Definition at line 141 of file options.h.

Referenced by pm_options_read(), pm_options_version_set(), and pm_parser_init().

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

- prism/options.h