Commit graph

417 commits

Author SHA1 Message Date
Nick Alexander
724c37466d Add an SQLite connection abstraction. 2016-07-12 13:56:26 -07:00
Nick Alexander
d42e2f02a6 Expose with-open to CLJS. 2016-07-12 13:56:26 -07:00
Nick Alexander
d5cfbeaa45 Add tempfile and with-tempfile to CLJS.
We already have a nice library like this for CLJ (tempfile); this builds
the same thing for CLJS, using Node.js's tmp.
2016-07-12 13:56:26 -07:00
Nick Alexander
0a312b4f40 Add an async and async testing framework.
This is a well-worn idea: use a `promise-channel` of `[result nil]` or
`[nil error]` pairs.  The `go-pair` and `<?` macros handle catching
exceptions (important, given that synchronous CLJ code expects to throw
rather than return an error promise or similar), allowing code like:
```
(go-pair
  (let [result (<? (pair-chan-fn))]
    (when (not result)
      (throw (Exception. "No result!")))
    (transform result)))
```
to be expressed naturally.  These are the equivalents of `async` and
`await` in JS.

The implementation is complicated by significant incompatibilities
between CLJ and CLJS.  The solution presented here takes care to
separate the macro definitions into CLJ.  Sadly, this requires
namespacing the per-environment symbols explicitly; but we hope to
minimize such code in files like this.

The most significant restriction to this approach is that consumers must
require the transitive dependencies of the macro-defining modules.  See
the included tests (both CLJ and CLJS) for the appropriate
incantations (for pair-chan, core.async, and test).
2016-07-12 13:56:26 -07:00
Richard Newman
ca62b7b5d2 Might as well ignore .cljs_rhino_repl too. 2016-07-08 11:23:18 -07:00
Richard Newman
1cf2c4fba7 Fix wrapper.prefix to refer to the right library name. r=nalexander
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-08 11:23:04 -07:00
Nick Alexander
08f7084d92 Add lein-doo to run ClojureScript tests. 2016-07-06 16:42:40 -07:00
Nick Alexander
f2365646d2 Add lein-cljsbuild and adapt datascript's release-js vehicle. 2016-07-06 16:42:37 -07:00
Richard Newman
55baa1685d More README tweaks.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-06 12:14:24 -07:00
Richard Newman
6db476d265 Document the process of starting a REPL or connecting from Vim.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-06 11:19:52 -07:00
Richard Newman
adee532770 Add notes comparing to raw SQLite.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-05 17:43:47 -07:00
Richard Newman
27d35f030d Take dependencies on a few libraries.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-05 17:01:27 -07:00
Richard Newman
df08fe23d0 Improve BUILDING.md. 2016-07-05 12:38:55 -07:00
Richard Newman
9e3df19798 Stub code, build, and REPL.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-05 12:36:55 -07:00
Richard Newman
f7621712df Stub out Leiningen and npm project files.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-05 12:36:45 -07:00
Richard Newman
3a56c159fa Add initial README.md and CONTRIBUTING.md.
Signed-off-by: Richard Newman <rnewman@twinql.com>
2016-07-05 12:36:37 -07:00
Richard Newman
2fc1b884bf Initial commit 2016-07-05 11:29:35 -07:00