Given a library code that one wants to work in both the browser and node.js. 
When it is using a browser specific API, that is available to node only through 
a 3rd party package, how would you re-write this piece of code? Are nested defs 
ok/bad/un-acceptable?

(if (exists? js/process)
  (do
    (def jsdom (.-jsdom (js/require "jsdom")))
    (def jsdom-L1 (js/require "jsdom/lib/jsdom/level1/core"))
    (def jsdom-L1-core (aget jsdom-L1 "dom" "level1" "core"))
    (def Node (.-Node jsdom-L1-core))
    (let [NodeList (.-NodeList jsdom-L1-core)
          NamedNodeMap (.-NamedNodeMap jsdom-L1-core)
          AttributeList (.-AttributeList jsdom-L1-core)]
      (extend-type-with-seqable NodeList)
      (extend-type-with-seqable NamedNodeMap)
      (extend-type-with-seqable AttributeList)
      (defn DOMParser-fromString
        [s]
        (jsdom s))))
  (do
    (extend-type-with-seqable js/NodeList)
    (when (exists? js/NamedNodeMap)
      (extend-type-with-seqable js/NamedNodeMap))
    (when (exists? js/MozNamedAttrMap)
      (extend-type-with-seqable js/MozNamedAttrMap))
    (def Node js/Node)
    (if (exists? js/DOMParser)
      (defn DOMParser-fromString
        [s]
        (.parseFromString (js/DOMParser.) s "text/html"))
      (def DOMParser-fromString nil))))

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojurescript+unsubscr...@googlegroups.com.
To post to this group, send email to clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to