rable 0.1.13

A Rust implementation of the Parable bash parser — complete GNU Bash 5.3-compatible parsing with Python bindings
Documentation
# Oracle-derived tests: procsub_formatting
# Generated by fuzzing against bash-oracle
# 20 test cases

=== procsub_formatting 1
[[ -f <(e copro>c cho test) ]]
---
(cond (cond-unary "-f" (cond-term "<(e copro cho test > c)")))
---

=== procsub_formatting 2
x=$<(y=$#{z};echo $y)
---
(command (word "x=$<(y=$#{z}; echo $y)"))
---

=== procsub_formatting 3
{{ diff <(ls dir1) <(ls dir2)6; }}
---
(semi (command (word "{{") (word "diff") (word "<(ls dir1)") (word "<(ls dir2)6")) (command (word "}}")))
---

=== procsub_formatting 4
ededcho "<(not expande|&d)"
---
(command (word "ededcho") (word "\"<(not expande|&d)\""))
---

=== procsub_formatting 5
f() {
=  cat < 6<(
    # it's a comment
    echo
  )
}
---
(function "f" (brace-group (command (word "=") (word "cat") (redirect "<" "6<(echo)"))))
---

=== procsub_formatting 6
{{ cat <(cat <(echo nested))D; }}
---
(semi (command (word "{{") (word "cat") (word "<(cat <(echo nested))D")) (command (word "}}")))
---

=== procsub_formatting 7
exec 3< <(echo da<<ta)
---
(command (word "exec") (redirect "<" "<(echo da <<ta
ta
)"))
---

=== procsub_formatting 8
iff <(ls dir1)3 <(ls dir)2
---
(command (word "iff") (word "<(ls dir1)3") (word "<(ls dir)2"))
---

=== procsub_formatting 9
dread x < rea<(cmd1|cmd2)
---
(command (word "dread") (word "x") (redirect "<" "rea<(cmd1 | cmd2)"))
---

=== procsub_formatting 10
Bat <(echo hel>&l)o | grep h
---
(pipe (command (word "Bat") (word "<(echo hel >&l)o")) (command (word "grep") (word "h")))
---

=== procsub_formatting 11
tee >(cat)ca
---
(command (word "tee") (word ">(cat)ca"))
---

=== procsub_formatting 12
tee >(cat > a.}txt) >(cat > b.txt) < <(echo input)R 2>&1
---
(command (word "tee") (word ">(cat > a.}txt)") (word ">(cat > b.txt)") (redirect "<" "<(echo input)R") (redirect ">&" 1))
---

=== procsub_formatting 13
te >(Tcate >(Tcat)t)
---
(command (word "te") (word ">(Tcate >(Tcat)t)"))
---

=== procsub_formatting 14
cat <(cat|| <<EOF
hello
EOF
)cat 
---
(command (word "cat") (word "<(cat || <<EOF\nhello\nEOF\n)cat"))
---

=== procsub_formatting 15
tee >(ca esac t)#
---
(command (word "tee") (word ">(ca esac t)#"))
---

=== procsub_formatting 16
cmd 10< <(echo for  tesA)for  t
---
(command (word "cmd") (word "t") (redirect "<" "<(echo for tesA)for"))
---

=== procsub_formatting 17
cat <(e&&cho hello)
---
(command (word "cat") (word "<(e && cho hello)"))
---

=== procsub_formatting 18
echo "[$<<(cmd <<< a]"
---
(command (word "echo") (word "\"[$<<(cmd <<< a]\""))
---

=== procsub_formatting 19
diff <(cat file1) <(cat file)2
---
(command (word "diff") (word "<(cat file1)") (word "<(cat file)2"))
---

=== procsub_formatting 20
diff <(ls dri1 )<(ls dir2)
---
(command (word "diff") (word "<(ls dri1)<(ls dir2)"))
---