Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
/bin/lein
/.lein-deps-sum
.lein*
mori*.js
bonsai*.js
!/spec/mori*.js
!/support/scripts/mori.js
Expand Down
2 changes: 2 additions & 0 deletions dist/mori.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/mori.js.map

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions dist/mori.mjs

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/mori.mjs.map

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions dist/mori.umd.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions dist/mori.umd.js.map

Large diffs are not rendered by default.

622 changes: 622 additions & 0 deletions mori-es6.js

Large diffs are not rendered by default.

162 changes: 162 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 13 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mori",
"version": "0.3.2",
"name": "mori-es6",
"version": "0.4.0-uport-1",
"description": "Persistent Data Structures for JavaScript",
"homepage": "https://github.com/swannodette/mori",
"author": "David Nolen (https://github.com/swannodette)",
Expand All @@ -26,28 +26,32 @@
"url": "https://raw.github.com/swannodette/mori/master/epl-v10.html"
}
],
"main": "./mori.js",
"main": "./dist/mori.js",
"module": "./dist/mori.mjs",
"source": "./mori-es6.js",
"repository": {
"type": "git",
"url": "git://github.com/swannodette/mori.git"
},
"engines": {
"node": ">=0.8.22"
"node": ">=0.8.22"
},
"dependencies": {},
"devDependencies": {
"immutable": "3.5.0",
"jasmine-node": "1.7.0"
"jasmine-node": "1.7.0",
"microbundle": "^0.11.0"
},
"scripts": {
"build": "./scripts/build.sh",
"build-clean": "./scripts/build_clean.sh",
"build-cljs": "./scripts/build_clean.sh",
"bundle": "./node_modules/.bin/microbundle",
"build": "yarn build-cljs && yarn bundle",
"clean": "./scripts/clean.sh",
"prepublish": "npm run-script build-clean",
"prepublish": "yarn build",
"docs": "./scripts/docs.sh",
"test": "jasmine-node spec"
},
"directories": {
"test": "./spec"
"test": "./spec"
}
}
10 changes: 6 additions & 4 deletions project.clj
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
(defproject mori "0.5.0-SNAPSHOT"
:description "Persistent Data Structures for JavaScript"

:dependencies [[org.clojure/clojure "1.7.0"]
[org.clojure/clojurescript "0.0-3308" :classifier "aot"]]
:dependencies [[org.clojure/clojure "1.10.0"]
[org.clojure/clojurescript "1.10.520"]]

:plugins [[lein-cljsbuild "1.0.5"]]
:plugins [[lein-cljsbuild "1.1.7"]]

:clean-targets ["dev" "release" "target"]

Expand All @@ -28,7 +28,9 @@
:output-dir "release"
:output-wrapper false
:pretty-print false
:verbose true
:verbose false
:language-in :es-next
:language-out :es5
:modules
{:cljs-base {:entries #{cljs.core mori}
:output-to "release/build/mori.base.js"}
Expand Down
6 changes: 1 addition & 5 deletions scripts/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ set -e

echo "Finalizing mori.js"

(cat support/wrapper.beg.txt; cat mori.bare.js; cat support/wrapper.end.txt) > mori.js

echo "Deleting mori.bare.js"

rm mori.bare.js
(cat support/wrapper.beg.txt; cat release/build/mori.base.js; cat release/build/mori.extra.js; cat release/build/mori.mutable.js; cat support/wrapper.end.txt) > mori-es6.js

echo "Build finished."
3 changes: 2 additions & 1 deletion scripts/clean.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#!/bin/sh

rm -f mori.js
rm -rf dist
rm -f mori-es6.js

./bin/lein_prefer clean
67 changes: 37 additions & 30 deletions src/mori/extra.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,11 @@
(defn ^:export flatten [x]
(cljs.core/filter #(not (sequential-or-array? %))
(cljs.core/rest (tree-seq sequential-or-array? cljs.core/seq x))))

(mori-export flatten flatten)
; The real lazy-seq is a macro, but it just expands its body into a function
(defn ^:export lazySeq [f]
(new cljs.core/LazySeq nil f nil nil))
(mori-export lazySeq lazySeq)

(mori-export primSeq cljs.core/prim-seq)
(mori-export map cljs.core/map)
Expand Down Expand Up @@ -105,7 +106,7 @@
(mori-export sortedMapBy cljs.core/sorted-map-by)

(def ^:export queue (fn [& args] (into cljs.core.PersistentQueue.EMPTY args)))

(mori-export queue queue)
(mori-export keyword cljs.core/keyword)
(mori-export symbol cljs.core/symbol)

Expand Down Expand Up @@ -158,18 +159,22 @@

(defn ^:export pipeline [& args]
(cljs.core/reduce #(%2 %1) args))
(mori-export pipeline pipeline)

(defn ^:export curry [fun & args]
(fn [arg]
(cljs.core/apply fun (cljs.core/cons arg args))))
(mori-export curry curry)

(defn ^:export juxt [& fns]
(fn [& args]
(cljs.core/into-array (cljs.core/map #(cljs.core/apply % args) fns))))
(mori-export juxt juxt)

(defn ^:export knit [& fns]
(fn [args]
(cljs.core/into-array (cljs.core/map #(% %2) fns args))))
(mori-export knit knit)

;; Useful fns

Expand All @@ -182,19 +187,21 @@
(defn ^:export each [xs f]
(doseq [x xs]
(f x)))

(mori-export each each)
(mori-export identity cljs.core/identity)
(mori-export constantly cljs.core/constantly)

(mori-export toJs cljs.core/clj->js)
(defn ^:export toClj
([x] (cljs.core/js->clj x))
([x keywordize-keys] (cljs.core/js->clj x :keywordize-keys keywordize-keys)))
(mori-export toClj toClj)

(defn ^:export configure [variable value]
(case variable
"print-length" (set! *print-length* value)
"print-level" (set! *print-level* value)))
(mori-export configure configure)

(mori-export meta cljs.core/meta)
(mori-export withMeta cljs.core/with-meta)
Expand All @@ -205,33 +212,33 @@
(mori-export parse reader/read-string)
(mori-export diff data/diff)

(mori-export zipper zip/zipper)
(mori-export seqZip zip/seq-zip)
(mori-export vectorZip zip/vector-zip)
(mori-export node zip/node)
(mori-export isBranch zip/branch?)
(mori-export children zip/children)
(mori-export makeNode zip/make-node)
(mori-export path zip/path)
(mori-export lefts zip/lefts)
(mori-export rights zip/rights)
(mori-export down zip/down)
(mori-export up zip/up)
(mori-export root zip/root)
(mori-export right zip/right)
(mori-export rightmost zip/rightmost)
(mori-export left zip/left)
(mori-export leftmost zip/leftmost)
(mori-export insertLeft zip/insert-left)
(mori-export insertRight zip/insert-right)
(mori-export replace zip/replace)
(mori-export edit zip/edit)
(mori-export insertChild zip/insert-child)
(mori-export appendChild zip/append-child)
(mori-export next zip/next)
(mori-export prev zip/prev)
(mori-export isEnd zip/end?)
(mori-export remove zip/remove)
; (mori-export zipper zip/zipper)
; (mori-export seqZip zip/seq-zip)
; (mori-export vectorZip zip/vector-zip)
; (mori-export node zip/node)
; (mori-export isBranch zip/branch?)
; (mori-export children zip/children)
; (mori-export makeNode zip/make-node)
; (mori-export path zip/path)
; (mori-export lefts zip/lefts)
; (mori-export rights zip/rights)
; (mori-export down zip/down)
; (mori-export up zip/up)
; (mori-export root zip/root)
; (mori-export right zip/right)
; (mori-export rightmost zip/rightmost)
; (mori-export left zip/left)
; (mori-export leftmost zip/leftmost)
; (mori-export insertLeft zip/insert-left)
; (mori-export insertRight zip/insert-right)
; (mori-export replace zip/replace)
; (mori-export edit zip/edit)
; (mori-export insertChild zip/insert-child)
; (mori-export appendChild zip/append-child)
; (mori-export next zip/next)
; (mori-export prev zip/prev)
; (mori-export isEnd zip/end?)
; (mori-export remove zip/remove)

;; =============================================================================
;; Node.js Inspection support
Expand Down
Loading