On Wed, Aug 5, 2009 at 1:13 PM, Niels Mayer <[email protected]> wrote:
>
> I wrote my first macro-bridge macro (see attachment
> Main.TestMacroBridge.xar
> ) in groovy in preparation for my experiments with scripting in Clojure.
> The
> hardest thing was finding out that the name of "context" had changed to
> "xcontext" for groovy and other JSR-223 languages, whereas velocity (and
> WikiMacroTutorial<http://platform.xwiki.org/xwiki/bin/view/DevGuide/WikiMacroTutorial>)
> uses "context". This has been discussed on the lists (
> http://markmail.org/message/o2trzrnv5xts6x6v ), and the WikiMacroTutorial
> needs updating to reflect the final status & naming-conventions.


Actually, it's in the documentation for the GroovyMacro:
http://code.xwiki.org/xwiki/bin/view/Macros/GroovyMacro

Note that since context is a reserved binding in JSR-223 specifications used
> for Scripting Macros, the XWiki Api Context is now accessible
> throught xcontext


What is the full list of globals bound for groovy? e.g. "request" "xwiki"
"xcontext" etc. Are there any additional
bindings when accessed through the macro-bridge? (other than
"xcontext.macro.content" and "xcontext.macro.context").

Is there a way to access the parameters passed in to a "script" macro. If
one sets
extra parameters beyond the defined ones, e.g. "{{script language=groovy
zip=92625}}" is there a way to access the "extra" "zip=92625" parameter
passed in to the "script" macro?

....

Also, the code I posted from "XWiki.WikiMacroClass WikiMacroClass 0:
weather_by_zip" had its line-feeds removed "in transit". Here it is again,
hopefully intact:

{{script language=groovy}}

  def rss = new XmlSlurper().parseText(("
> http://weather.yahooapis.com/forecastrss?p=";

                                        +
> xcontext.macro.params.zip).toURL().text)

  println rss.channel.title

  println "Sunrise: ${rss.channel.astrono...@sunrise}"

  println "Sunset: ${rss.channel.astrono...@sunset}"

  println "Currently:"

  println "\t" + rss.channel.item.conditi...@date

  println "\t" + rss.channel.item.conditi...@temp

  println "\t" + rss.channel.item.conditi...@text

{{/script}}


Same example, in the form of a 2.0 document w/o macro bridge. using
"request.zip" to pass parameter to groovy:

== Groovy Example From [[IBM DeveloperWorks>>
> http://www.ibm.com/developerworks/java/library/j-pg05199/index.html]]==


> Note: correct usage requres {{code}}request.zip{{/code}} parameter, e.g
> [[92625>>Main.GroovyTest3?zip=92625]] [[92660>>Main.GroovyTest3?zip=92660]]
> [[10001>>Main.GroovyTest3?zip=10001]]...


> {{groovy}}

  def rss = new XmlSlurper().parseText(("
> http://weather.yahooapis.com/forecastrss?p=";

                                        + request.zip).toURL().text)

  println rss.channel.title

  println "Sunrise: ${rss.channel.astrono...@sunrise}"

  println "Sunset: ${rss.channel.astrono...@sunset}"

  println "Currently:"

  println "\t" + rss.channel.item.conditi...@date

  println "\t" + rss.channel.item.conditi...@temp

  println "\t" + rss.channel.item.conditi...@text

{{/groovy}}


-- Niels
http://nielsmayer.com
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to