EntryParser
in package
Table of Contents
Constants
- COMMENT_STATE = 6
- DOUBLE_QUOTED_STATE = 3
- ESCAPE_SEQUENCE_STATE = 4
- INITIAL_STATE = 0
- REJECT_STATES = [self::SINGLE_QUOTED_STATE, self::DOUBLE_QUOTED_STATE, self::ESCAPE_SEQUENCE_STATE]
- SINGLE_QUOTED_STATE = 2
- UNQUOTED_STATE = 1
- WHITESPACE_STATE = 5
Methods
- parse() : Result<Entry, string>
- Parse a raw entry into a proper entry.
- __construct() : void
- This class is a singleton.
- getErrorMessage() : string
- Generate a friendly error message.
- isQuotedName() : bool
- Is the given variable name quoted?
- isValidName() : bool
- Is the given variable name valid?
- parseName() : Result<string, string>
- Parse the given variable name.
- parseValue() : Result<Value, string>
- Parse the given variable value.
- processToken() : Result<array{: string, : bool, : int}, string>
- Process the given token.
- splitStringIntoParts() : Result<array{: string, : string|null}, string>
- Split the compound string into parts.
Constants
COMMENT_STATE
private
mixed
COMMENT_STATE
= 6
DOUBLE_QUOTED_STATE
private
mixed
DOUBLE_QUOTED_STATE
= 3
ESCAPE_SEQUENCE_STATE
private
mixed
ESCAPE_SEQUENCE_STATE
= 4
INITIAL_STATE
private
mixed
INITIAL_STATE
= 0
REJECT_STATES
private
mixed
REJECT_STATES
= [self::SINGLE_QUOTED_STATE, self::DOUBLE_QUOTED_STATE, self::ESCAPE_SEQUENCE_STATE]
SINGLE_QUOTED_STATE
private
mixed
SINGLE_QUOTED_STATE
= 2
UNQUOTED_STATE
private
mixed
UNQUOTED_STATE
= 1
WHITESPACE_STATE
private
mixed
WHITESPACE_STATE
= 5
Methods
parse()
Parse a raw entry into a proper entry.
public
static parse(string $entry) : Result<Entry, string>
That is, turn a raw environment variable entry into a name and possibly a value. We wrap the answer in a result type.
Parameters
- $entry : string
Return values
Result<Entry, string>__construct()
This class is a singleton.
private
__construct() : void
Tags
getErrorMessage()
Generate a friendly error message.
private
static getErrorMessage(string $cause, string $subject) : string
Parameters
- $cause : string
- $subject : string
Return values
stringisQuotedName()
Is the given variable name quoted?
private
static isQuotedName(string $name) : bool
Parameters
- $name : string
Return values
boolisValidName()
Is the given variable name valid?
private
static isValidName(string $name) : bool
Parameters
- $name : string
Return values
boolparseName()
Parse the given variable name.
private
static parseName(string $name) : Result<string, string>
That is, strip the optional quotes and leading "export" from the variable name. We wrap the answer in a result type.
Parameters
- $name : string
Return values
Result<string, string>parseValue()
Parse the given variable value.
private
static parseValue(string $value) : Result<Value, string>
This has the effect of stripping quotes and comments, dealing with special characters, and locating nested variables, but not resolving them. Formally, we run a finite state automaton with an output tape: a transducer. We wrap the answer in a result type.
Parameters
- $value : string
Return values
Result<Value, string>processToken()
Process the given token.
private
static processToken(int $state, string $token) : Result<array{: string, : bool, : int}, string>
Parameters
- $state : int
- $token : string
Return values
Result<array{: string, : bool, : int}, string>splitStringIntoParts()
Split the compound string into parts.
private
static splitStringIntoParts(string $line) : Result<array{: string, : string|null}, string>
Parameters
- $line : string