Added a "uuid-string" getter function to obtain a string representation of a 
UUID-instance, which makes for easier interop with apps that require such a 
uuid-string, like web-app, json, databases (i.e. legacy apps that have not been 
made EDN-aware yet ;-) )

(thanks to Robert Stuttaford for the idea!)

Bumped version to [cljs-uuid-utils "0.1.3"]

-FS.


On Dec 2, 2012, at 6:36 PM, Frank Siebenlist <[email protected]> wrote:

> I've wrapped my random uuid generator up in a little library at:
> 
> https://github.com/franks42/cljs-uuid-utils
> 
> ---
> cljs-uuid-utils
> 
> ClojureScript micro-library with an implementation of a type 4, random UUID 
> generator compatible with RFC-4122 and cljs.core/UUID (make-random-uuid), a 
> uuid-string conformance validating predicate (valid-uuid?), and a UUID 
> factory from uuid-string with conformance validation (make-uuid-from).
> ---
> 
> As mentioned before, clojure on the jvm can leverage the ubiquitous 
> "java.util.UUID/randomUUID", while there is no generally available random 
> uuid generator in the javascript world. Although this micro-lib addresses 
> that issue somewhat, I believe that we should have a random-uuid generator as 
> part of the batteries-included cljs-distro. 
> 
> Another issue that I came across is the fact that the 
> java.util.UUID/fromString does do a conformance check of the presented 
> uuid-string, and throws an exception if it does not pass. ClojureScript's 
> reader yields a cljs.core/UUID instance for uuid-literals, but doesn't check 
> for any conformance and essentially accepts any string. This could lead to 
> interesting, surprising bugs during cljs-clj interop. 
> 
> Please let me know if you use this little library, and any 
> suggestions/comments for improvement are always welcome.
> 
> Enjoy, FrankS.
> 
> 
> 
> On Nov 29, 2012, at 10:20 AM, David Nolen <[email protected]> wrote:
> 
>> Also note that testing with the Rhino REPL is not informative about 
>> performance in anyway - you absolutely need to test your code against the 
>> modern JS engines - V8, JavaScriptCore, or SpiderMonkey (with JIT turned 
>> on). For code like this they are often 100X faster if not far greater than 
>> that.
>> 
>> 
>> On Thu, Nov 29, 2012 at 1:07 PM, Frank Siebenlist 
>> <[email protected]> wrote:
>> Thanks for the feedback!
>> 
>> Defining the two helper functions outside of the function-scope doesn't seem 
>> to have any effect on the performance numbers.
>> 
>> …but I have to confess that all testing was done at the repl without any 
>> optimization so far…
>> 
>> -FS.
>> 
>> 
>> 
>> On Nov 29, 2012, at 8:36 AM, David Nolen <[email protected]> wrote:
>> 
>>> Oh though before you lift them out by hand - I would double check that 
>>> :simple optimizations doesn't already do this for you :)
>>> 
>>> 
>>> On Thu, Nov 29, 2012 at 1:25 AM, Frank Siebenlist 
>>> <[email protected]> wrote:
>>> I need UUIDs in my CLJS code…
>>> 
>>> cljs.core does include a UUID type, but no generator.
>>> 
>>> I found a couple of efforts and example code at 
>>> https://github.com/davesann/cljs-uuid and 
>>> http://catamorphic.wordpress.com/2012/03/02/generating-a-random-uuid-in-clojurescript,
>>> but they didn't work with cljs.core/UUID or were too slow.
>>> 
>>> There are many javascript versions out there, but that would require 
>>> another external js-lib.
>>> (really surpising that I couldn't find a UUID generator in closure-lib…)
>>> 
>>> Please take a look at my UUID-playground at 
>>> "https://gist.github.com/4159427";,
>>> which includes a few implementations with some rudimentary timing results.
>>> 
>>> Appreciate any comments or suggestions, or maybe a pointer to a faster, 
>>> cleaner implementation...
>>> 
>>> Thanks, FrankS.
>>> 
>>> PS. I would think that the cljs-community would love to have a UUIDv4 
>>> generator as part of the clojurescript distro...
>>> 
>>> 
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to [email protected]
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> 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 post to this group, send email to [email protected]
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> 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 post to this group, send email to [email protected]
>> Note that posts from new members are moderated - please be patient with your 
>> first post.
>> To unsubscribe from this group, send email to
>> [email protected]
>> 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 post to this group, send email to [email protected]
>> Note that posts from new members are moderated - please be patient with your 
>> first post.
>> To unsubscribe from this group, send email to
>> [email protected]
>> 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 post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to