Recreate a hierarchy

2011-05-05 Thread Steffen
Hello, I'm trying to come up with a way to recreate a directory hierarchy. Entries within zip archives are just flat strings like "top/level/file1", but I would like to operate on them hierarchically. So my problem could be stated as: If (restore-hierarchy [["top" "level" "file1"] ["top" "l

Re: Recreate a hierarchy

2011-05-05 Thread Jonathan Fischer Friberg
This is my take on this: http://gist.github.com/957028 The second file produces the correct result. The result isn't exactly like you asked for. This is because it wouldn't support files that isn't in the lowest level. Ex: (restore-hierarchy [["top" "level" "file1"] ["top" "level" "file2"] ["top"

Re: Recreate a hierarchy

2011-05-05 Thread Juha Arpiainen
(defn add-path [h path] (let [dir (butlast path) entry (last path)] (update-in h dir (fn [x] (if x (conj x entry) [entry]) (defn restore-hierarchy [paths] (reduce add-path {} paths)) Then (restore-hierarchy [["top" "level" "file1"] ["top" "level" "file2"] ["top" "level2" "fil

Re: Recreate a hierarchy

2011-05-05 Thread Ambrose Bonnaire-Sergeant
Beautiful solution, I got a lot out of it. Thanks Juha! -- Ambrose On Thu, May 5, 2011 at 10:08 PM, Juha Arpiainen wrote: > (defn add-path [h path] > (let [dir (butlast path) >entry (last path)] >(update-in h dir (fn [x] (if x (conj x entry) [entry]) > > (defn restore-hierarchy

Re: Recreate a hierarchy

2011-05-05 Thread Timo Mihaljov
On Thu, May 05, 2011 at 05:40:02AM -0700, Steffen wrote: > Hello, > > I'm trying to come up with a way to recreate a directory hierarchy. Entries > within zip archives are just flat strings like "top/level/file1", but I would > like to operate on them hierarchically. So my problem could be stated

Aw: Re: Recreate a hierarchy

2011-05-05 Thread Steffen
Am Donnerstag, 5. Mai 2011 16:06:52 UTC+2 schrieb odyssomay: > > This is my take on this: http://gist.github.com/957028 > The second file produces the correct result. The result isn't exactly like > you asked for. This is because it wouldn't support files that isn't in the > lowest level. Your