Sounds interesting. Could one attach metadata (such as a time-stamp) on a file-equivalent ? If one could then see that metadata using some parameter to your commands (ls -l), that would make this pretty powerful, IMHO.
Thanks Vish On Monday, March 16, 2015 at 11:41:04 AM UTC-5, Steven Yi wrote: > > Hi All, > > I've posted a small experimental project I've been working on the past day > that I thought was somewhat novel called mapfs: > > https://github.com/kunstmusik/mapfs > > It allows using a Clojure map like a filesystem. An example recording of > it in use is here: > > http://kunstmusik.com/mapfs.gif > > The project is currently a command-line app that loads a map from an .edn > file and provides a shell. You can use familiar commands like cd, rename, > mv, cat, and pwd to navigate key paths in the map and read/modify values. > > The idea came as a result of reading all the REPL talk on clojure-dev, and > also that I wanted a simple way to track some data in some projects of > mine. I had already started on a simple todo system but then the idea to > have a generic fs on a map seemed fun and more useful for creating adhoc > structured data for various purposes. > > The result is the app acts somewhere between a REPL and shell. You can > execute functions as commands, so you can do things like pipe results using > threading macros, i.e.: > > mapfs> ->> (cat :key) (str "The value of :key is ") > > which would format the value of the key in the current path to a string. > > For my own purposes, this has been neat for recording notes and values > that I can later view or process with clojure functions. I can imagine > having a way to extend the available commands by registering namespaces > from other libraries, but I'm not certain yet what way to go for that. > It's somewhat at proof-of-concept stage at the moment, so there are > certainly bugs and things to work out, but I think it's already enough for > testing out the idea. Hopefully this makes making your own data and small > utility apps from just Clojure functions pretty easy. (That's the goal at > least!) > > If you'd like to take it for a spin, you can clone the repo and use "lein > run todo.edn". (There's also a mapfs shell script there for running with a > generated uberjar.) Also, running "help" in the shell shows built-in > functions. I'd also like to mention this uses jline[1] for console > processing, which provides a whole lot of great features (i.e. history, > vim/emacs key bindings, tab completion support). > > Cheers! > steven > > p.s. - I didn't see any existing projects like this, but if so, please let > me know, I'd be happy to learn more about them! > > [1] - https://github.com/jline/jline2 > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.