parser_version_set: Work with parser versions

View source: R/environments.R

parser_version_setR Documentation

Work with parser versions

Description

The structure of the parse data affects many operations in styler. There was unexpected behavior of the parser that styler was initially designed to work around. Examples are #187, #216, #100 and others. With #419, the structure of the parse data changes and we need to dispatch for older versions. As it is inconvenient to pass a parser version down in the call stack in various places, the environment env_current is used to store the current version globally but internally.

Usage

parser_version_set(version)

parser_version_get()

parser_version_find(pd)

Arguments

version

The version of the parser to be used.

pd

A parse table such as the output from utils::getParseData(parse(text = text)).

Details

We version the parser as follows:

  • version 1: Before fix mentioned in #419. R < 3.6

  • version 2: After #419. R >= 3.6

version 3: After #582. R >= 4.0

The following utilities are available:

  • parser_version_set() sets the parser version in the environment env_current.

  • parser_version_get() retrieves the parser version from the environment env_current.

  • parser_version_find() determines the version of the parser from parse data. This does not necessarily mean that the version found is the actual version, but it behaves like it. For example, code that does not contain EQ_ASSIGN is parsed the same way with version 1 and 2. If the behavior is identical, the version is set to 1. Since the package now requires R >= 4.0, the version is always set to 3.


krlmlr/styler documentation built on Dec. 12, 2024, 8:36 a.m.