Bash.Parser.VariableExpander (Bash v0.6.0)

Copy Markdown View Source

Hand-written parser and expander for Bash variable expansions.

Handles all forms of parameter expansion:

  • Simple: $VAR
  • Braced: ${VAR}
  • Default values: ${VAR:-default}, ${VAR:=default}, ${VAR:?error}, ${VAR:+alternate}
  • Pattern removal: ${VAR#pattern}, ${VAR##pattern}, ${VAR%pattern}, ${VAR%%pattern}
  • Substitution: ${VAR/pattern/replacement}, ${VAR//pattern/replacement}
  • Substring: ${VAR:offset}, ${VAR:offset:length}
  • Length: ${#VAR}

References:

Summary

Functions

Parse a string into a list of tokens for variable expansion.

Types

modifier()

@type modifier() ::
  {:length}
  | {:default, String.t(), String.t()}
  | {:pattern, String.t(), String.t()}
  | {:subst, String.t(), String.t()}
  | {:substring, String.t()}

token()

@type token() ::
  {:literal, String.t()}
  | {:var_simple, String.t()}
  | {:var_braced, String.t(), [modifier()]}

Functions

parse(text)

@spec parse(String.t()) :: {:ok, [token()]} | {:error, String.t()}

Parse a string into a list of tokens for variable expansion.

Returns {:ok, tokens} or {:error, reason}.