aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2021-11-27 16:23:41 -0500
committerMarshall Lochbaum <mwlochbaum@gmail.com>2021-11-27 16:26:24 -0500
commit91a329eeb75519795137b48fa1d3df64a82db980 (patch)
treebe31fb25160259dde54d9b19488888bb2f90374c
parentc376c359e39eaa255ccb6a4962e4985e55c90c0f (diff)
Specify and support •wdpath
-rwxr-xr-xbqn.js1
-rw-r--r--docs/spec/system.html5
-rw-r--r--spec/system.md3
3 files changed, 9 insertions, 0 deletions
diff --git a/bqn.js b/bqn.js
index d4ce27d2..aa584708 100755
--- a/bqn.js
+++ b/bqn.js
@@ -121,6 +121,7 @@ sysvals.path=dynsys(s=>s.path);
sysvals.name=dynsys(s=>s.name);
sysvals.args=dynsys(s=>s.args);
sysvals.state=dynsys(s=>s.state);
+sysvals.wdpath=dynsys(_=>str(dir(path.resolve('.'))));
bqn.setexec(update_state, push_state);
let bqn_file = (st,f,t,w) => bqn_state(st)(
t, [ str(dir(path.dirname(f))), str(path.basename(f)), w ]
diff --git a/docs/spec/system.html b/docs/spec/system.html
index 41b98728..1fad9ee3 100644
--- a/docs/spec/system.html
+++ b/docs/spec/system.html
@@ -90,6 +90,10 @@
<td>Current filename</td>
</tr>
<tr>
+<td><code><span class='Value'>•wdpath</span></code></td>
+<td>Shell's working directory path</td>
+</tr>
+<tr>
<td><code><span class='Function'>•Exit</span></code></td>
<td>Leave the top-level running program</td>
</tr>
@@ -100,6 +104,7 @@
<p><code><span class='Value'>•args</span></code> is the arguments passed as the file was invoked, either from the command line or <code><span class='Function'>•Import</span></code>. For command line calls it is a list of strings.</p>
<p><code><span class='Value'>•path</span></code> simply gives the path of the file in which it appears. It includes a trailing slash but not the name of the file itself.</p>
<p><code><span class='Value'>•name</span></code> gives the name, including the extension, of the file in which it appears. It doesn't include the path.</p>
+<p><code><span class='Value'>•wdpath</span></code> returns the path of the current working directory, like the Unix <code><span class='Value'>pwd</span></code> command, but including a trailing slash.</p>
<p><code><span class='Function'>•Exit</span></code> immediately terminates the running BQN process. If the argument is a valid return code (on Unix, an integer), it is returned; otherwise, the default return code (the one returned when the end of the program is reached) is used.</p>
<h2 id="files"><a class="header" href="#files">Files</a></h2>
<p>The system namespace value <code><span class='Value'>•file</span></code> deals with file operations. For the purposes of <code><span class='Value'>•file</span></code>, paths in the filesystem are always strings. As with <code><span class='Function'>•Import</span></code>, file paths may be relative or absolute, and relative paths are relative to <code><span class='Value'>•path</span></code>, except in <code><span class='Value'>•file.</span><span class='Function'>At</span></code> which allows <code><span class='Value'>𝕨</span></code> to specify an alternate base directory. The value <code><span class='Value'>•path</span></code> used for a particular instance of <code><span class='Value'>•file</span></code> is determined by the file that contains that instance.</p>
diff --git a/spec/system.md b/spec/system.md
index b7c66ce9..872126c3 100644
--- a/spec/system.md
+++ b/spec/system.md
@@ -38,6 +38,7 @@ The option `repl` indicates how variables are retained across calls: with "none"
| `•args` | Arguments passed to current file
| `•path` | Current file's path
| `•name` | Current filename
+| `•wdpath` | Shell's working directory path
| `•Exit` | Leave the top-level running program
`•Import` loads another BQN script. The script is evaluated in its own isolated scope, and its result is either the result of the last line, or a module if it exports with `⇐` at the top level. If it is a module, then it must be destructured immediately unless first-class namespaces are possible.
@@ -50,6 +51,8 @@ The right argument is a filename, which may be relative or absolute. Relative pa
`•name` gives the name, including the extension, of the file in which it appears. It doesn't include the path.
+`•wdpath` returns the path of the current working directory, like the Unix `pwd` command, but including a trailing slash.
+
`•Exit` immediately terminates the running BQN process. If the argument is a valid return code (on Unix, an integer), it is returned; otherwise, the default return code (the one returned when the end of the program is reached) is used.
## Files