Apache Zeppelin 的 Groovy 解释器
示例
%groovy
//get a parameter defined as z.angularBind('ngSearchParam', value, 'paragraph_id')
//g is a context object for groovy to avoid mix with z object
def param = g.angular('ngSearchParam')
//send request https://www.googleapis.com/customsearch/v1?q=ngSearchParam_value
def r = HTTP.get(
//assume you defined the groovy interpreter property
// `search_baseurl`='https://www.googleapis.com/customsearch/v1'
//in groovy object o.getProperty('A') == o.'A' == o.A == o['A']
url : g.search_baseurl,
query: [ q: param ],
headers: [
'Accept':'application/json',
//'Authorization:' : g.getProperty('search_auth'),
],
ssl : g.getProperty('search_ssl') // assume groovy interpreter property search_ssl = HTTP.getNaiveSSLContext()
)
//check response code
if( r.response.code==200 ) {
g.html().with{
//g.html() renders %angular to output and returns groovy.xml.MarkupBuilder
h2("the response ${r.response.code}")
span( r.response.body )
h2("headers")
pre( r.response.headers.join('\n') )
}
} else {
//just to show that it's possible to use println with multiline groovy string to render output
println("""%angular
<script> alert ("code=${r.response.code} \n msg=${r.response.message}") </script>
""")
}
%groovy
//renders a table with headers a, b, c and two rows
g.table(
[
['a','b','c'],
['a1','b1','c1'],
['a2','b2','c2'],
]
)
the g 对象
g.angular(String name)按名称返回角度对象。首先查找笔记本范围,然后查找全局范围。
g.angularBind(String name, Object value)将一个新的
value赋值给angular对象namejava.util.Properties g.getProperties()返回为此解释器定义的所有属性
String g.getProperty('PROPERTY_NAME')g.PROPERTY_NAME g.'PROPERTY_NAME' g['PROPERTY_NAME'] g.getProperties().getProperty('PROPERTY_NAME')以上是groovy解释器中定义的命名属性的访问器。 在这种情况下,名称为
PROPERTY_NAMEgroovy.xml.MarkupBuilder g.html()开始或继续渲染
%angular到输出,并返回groovy.xml.MarkupBuilder MarkupBuilder 对于生成 html (xml) 非常有用void g.table(obj)开始或继续渲染表格行。
obj: List(rows) of List(columns) 其中第一行是标题
g.input(name, value )创建带有指定值的
text输入。参数value是可选的。g.select(name, default, Map创建一个带有定义选项的
select输入。参数default是可选的。g.select('sex', 'm', ['m':'man', 'w':'woman'])g.checkbox(name, Collection checked, Map创建
checkbox输入。g.get(name, default)返回基于解释器的变量。可见性取决于解释器的作用域。参数
default是可选的。g.put(name, value)将新值存储到基于解释器的变量中。可见性取决于解释器的作用域。