summaryrefslogtreecommitdiff
path: root/man/1/sh-sexprs
diff options
context:
space:
mode:
Diffstat (limited to 'man/1/sh-sexprs')
-rw-r--r--man/1/sh-sexprs131
1 files changed, 131 insertions, 0 deletions
diff --git a/man/1/sh-sexprs b/man/1/sh-sexprs
new file mode 100644
index 00000000..b73f08bd
--- /dev/null
+++ b/man/1/sh-sexprs
@@ -0,0 +1,131 @@
+.TH SH-SEXPRS 1
+.SH NAME
+sexprs, islist, els, text, textels, mktext, mklist, mktextlist \- parse and generate S-expressions
+.SH SYNOPSIS
+.B load sexprs
+
+.B getsexprs
+.I command
+.br
+.B islist
+.I sexpr
+.br
+.B ${els
+.IB sexpr }
+.br
+.B ${text
+.IB sexpr }
+.br
+.B ${textels
+.IB sexpr }
+.br
+.B ${mktext
+.IB val }
+.br
+.B ${mklist
+[
+.IR val ...
+.BR "" ] }
+.br
+.B ${mktextlist
+[
+.IR val ...
+.BR "" ] }
+.br
+.SH DESCRIPTION
+.B Sexprs
+is a loadable module for
+.IR sh (1)
+that provides the facility to parse and generate
+S-expressions (see
+.IR sexprs (2)).
+The following primitives are provided:
+.TP 10
+.B getsexprs
+.B Getsexprs
+works similiarly to
+.B getlines
+in
+.IR sh-std (1).
+It reads S-expressions from the standard input, and for expression read, it
+invokes
+.I command
+with
+.B $sexp
+set to the text representation of that expression.
+.B Getsexprs
+recognises the usual loop
+.B break
+and
+.B continue
+exceptions.
+.TP
+.BI islist\ sexp
+.B Islist
+yields a nil (true) status if
+.IR sexp ,
+which must be a well-formed S-expression,
+is a list element.
+.TP
+.BI ${els\ sexp }
+If
+.I sexp
+is an S-expression containing a list,
+then
+.B els
+returns a list of the S-expressions it contains.
+It is an error if
+.I sexp
+is not a valid S-expression.
+.TP
+.BI ${text\ sexp }
+If
+.I sexp
+is an S-expression containing a simple element,
+then
+.B text
+returns the value of that element. If
+.I sexp
+is a list, the return value will be an empty string.
+Note that elements
+containing binary data will likely be corrupted
+by conversion to utf-8.
+It is an error if
+.I sexp
+is not a valid S-expression.
+.TP
+.BR ${textels\ sexp }
+If
+.I sexp
+is an S-expression containing a list, then
+.B textels
+returns a list of the text values in that S-expression,
+converted as with
+.BR ${text} .
+It is an error if
+.I sexp
+is not a valid S-expression.
+.TP
+.BR ${mktext\ val }
+.B Mktext
+returns a text representation of the S-expression
+containing the simple value
+.IR val .
+.TP
+.BR ${mklist\ \fR[\fPsexp\fR...]\fP }
+.B Mklist
+returns a text representation of the S-expression list
+containing its arguments, which must be well-format
+S-expressions.
+.TP
+.BR ${mktextlist\ \fR[\fPval\fR...]\fP }
+.B Mktextlist
+returns a text representation of the S-expression list
+containing one simple element for each
+.IR val .
+.SH SOURCE
+.B /appl/cmd/sh/sexprs.b
+.SH SEE ALSO
+.IR sh (1),
+.IR sh-std (1),
+.IR sexprs (2)