Bash.AST.Case (Bash v0.3.0)

Copy Markdown View Source

Case statement: pattern matching.

Examples

# case $var in
#   pattern1) commands1 ;;
#   pattern2|pattern3) commands2 ;;
#   *) default ;;
# esac
%Case{
  word: %Word{parts: [{:variable, "var"}]},
  cases: [
    {[%Word{parts: [{:literal, "pattern1"}]}], [...]},
    {[%Word{parts: [{:literal, "pattern2"}]},
      %Word{parts: [{:literal, "pattern3"}]}
    ], [...]},
    {[%Word{parts: [{:literal, "*"}]}], [...]}
  ]
}

Summary

Types

case_clause()

@type case_clause() ::
  {patterns :: [Bash.AST.Word.t()], body :: [Bash.Statement.t()], terminator()}

t()

@type t() :: %Bash.AST.Case{
  cases: [case_clause()],
  exit_code: 0..255 | nil,
  matched_pattern_index: non_neg_integer() | nil,
  meta: Bash.AST.Meta.t(),
  state_updates: map(),
  word: Bash.AST.Word.t()
}

terminator()

@type terminator() :: :break | :fallthrough | :continue_matching

Functions

execute(case, stdin, session_state)