===
Expression: If-Else: simple
===

a := if a == b { c } else { d }

---

(file
  (assignment
    (identifier)
    (expression
      (condition
        (expression
          (value
            (identifier)))
        (expression
          (value
            (identifier))))
      (expression
        (value
          (identifier)))
      (expression
        (value
          (identifier))))))

===
Expression: If-Else: regex operators
===

a := if "abc" =~ "xyx" { "hello" } else { d }

a := if "abc" !~ "xyx" { "hello" } else { d }

---

(file
  (assignment
    (identifier)
    (expression
      (condition
        (expression
          (value
            (string)))
        (regex
          (value
            (string))))
      (expression
        (value
          (string)))
      (expression
        (value
          (identifier)))))
  (assignment
    (identifier)
    (expression
      (condition
        (expression
          (value
            (string)))
        (regex
          (value
            (string))))
      (expression
        (value
          (string)))
      (expression
        (value
          (identifier))))))

===
Expression: If-Else: nested
===

a := if "a" + os() == (arch() / shell("bash", "-c", 'echo', "toto" + "titi")) {
    os_family() + if "4" == num_cpus() {
        invocation_dir() / just_pid()
    } else {
        append(capitalize("abc"), "zvc")
    }
} else {
    uuid() + blake3_file(justfile())
}

---

(file
  (assignment
    (identifier)
    (expression
      (condition
        (expression
          (value
            (string))
          (expression
            (value
              (function_call
                (identifier)))))
        (expression
          (value
            (expression
              (value
                (function_call
                  (identifier)))
              (expression
                (value
                  (function_call
                    (identifier)
                    (function_parameters
                      (expression
                        (value
                          (string)))
                      (expression
                        (value
                          (string)))
                      (expression
                        (value
                          (string)))
                      (expression
                        (value
                          (string))
                        (expression
                          (value
                            (string))))))))))))
      (expression
        (value
          (function_call
            (identifier)))
        (expression
          (condition
            (expression
              (value
                (string)))
            (expression
              (value
                (function_call
                  (identifier)))))
          (expression
            (value
              (function_call
                (identifier)))
            (expression
              (value
                (function_call
                  (identifier)))))
          (expression
            (value
              (function_call
                (identifier)
                (function_parameters
                  (expression
                    (value
                      (function_call
                        (identifier)
                        (function_parameters
                          (expression
                            (value
                              (string)))))))
                  (expression
                    (value
                      (string)))))))))
      (expression
        (value
          (function_call
            (identifier)))
        (expression
          (value
            (function_call
              (identifier)
              (function_parameters
                (expression
                  (value
                    (function_call
                      (identifier))))))))))))
