This workaround doesn't work if the super-namespace doesn't exist. For example, "goog.async" is never provided, but "goog.async.Deferred" is provided (in the third-party bits of closure) and is itself the Deferred constructor.
(:require [goog.ui :as ui]) similarly throws an error for me. Any other workarounds possible yet? On Saturday, July 30, 2011 11:57:37 PM UTC-5, Chris Granger wrote: > > FWIW, one work around for this is to include the sub-namespace as well > and reference it from that one. So in your example: > > (ns notepad > (:require > [goog.dom :as dom] > [goog.ui :as ui] > [goog.ui.Zippy :as Zippy])) > > (ui/Zippy. "ttt" "sss") > > > On Jul 28, 7:41 am, Marko Kocić <marko.ko...@gmail.com> wrote: > > Hi all, > > > > When dealing with ClojureScript and Closure library it happens pretty > often > > that Closure namespace is in the same time constructor for some object. > > > > Take a look for this example: > > > > (ns notepad > > (:require > > [goog.dom :as dom] > > [goog.ui.Zippy :as Zippy])) > > > > First, require forces me to require goog.ui.Zippy as Zippy and later in > the > > code I have to use fully qualified name instead of provided one. > > > > This works > > (goog.ui.Zippy. headerElement contentElement) > > > > This doesn't work, since Zippy is namespace declaration > > (Zippy. headerElement contentElement) > > > > I know that we can't have both namespace and function with the same > name, > > but this is pretty frequent situation in Closure library, and is a bit > > awkward. > > One solution would be that namespace :as symbol is specialcased so that > > without namespace prefix Zippy and Zippy. works like a regular function, > and > > when in place of namespace prefix, it works as a namespace prefix. That > > would be pretty in line with Closure library itselfi. > > > > Then we would be able to use > > (require [goog.ui.Zippy :as Zippy]) > > (def z (Zippy. "ttt" "sss")) ;; same as calls goog.ui.Zippy. > > (Zippy/someMethod x) ;; same as goog.ui.Zippy > > > > What would be your proposal for this? -- 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