xvcd で九九の表をつくる: jruby を利用して try中
jruby の次のようなコードで, html の table で九九の表を生成できる。
(jruby で実行させる場合、最後に p a などとして a の内容を表示させる必要がある)
------------------------------
attr = 'align="right" width="20"'
a = "<html><body>"
a << "<table border='1'>¥n"
a << " <tr>¥n"
a << "<th></th>"
for x in 1..9
a << sprintf("<th %s>%d</th>", attr, x)
end
a << " </tr>¥n"
for y in 1..9
a << " <tr>¥n"
a << sprintf("<td>%d</td>", y)
for x in 1..9
a << sprintf("<td %s>%d</td>", attr, x * y)
end
a << "¥n"
a << " </tr>¥n"
end
a << "</table>¥n"
a << "</body></html>"
このコードの <, > を < > に変更する。
さらに 生成するのは <tqable>...</table> 部のみにして、
xfy で実行させてみることもできた。
しかし、jruby の実行結果の html をxfy 画面に表示させることが出来ない。
こんな xvcd にしているのだが...
<!-- ================= -->
<xvcd:command name="add-result">
<instruction:with-param name="val" />
<instruction:with-param name="pos" />
<xvcd:insert ref="$pos" position="last-child">
<xvcd:copy-of select="$val"/>
</xvcd:insert>
</xvcd:command>
<!-- ================= -->
<xvcd:template match="h:ruby2">
<xvcd:variable name="val" select="example:ruby(./text())" />
<ctrl:trigger>
<ctrl:label>Show result</ctrl:label>
<xvcd:action event="ctrl:triggered">
<instruction:call name="add-result">
<instruction:param name="val" select="function:xml-string-to-dom($val)"/>
<instruction:param name="pos" select="../h:div"/>
</instruction:call>
</xvcd:action>
</ctrl:trigger>
</xvcd:template>
<xvcd:template match="h:div">
<div>
<xvcd:copy-of select="./*"/>
</div>
</xvcd:template>
ソース DOM 上の <h:div> 以下には jruby で生成した table データがうまく追加される。
しかしその内容が表として画面に表示されない。
(xvcd はむずかしいなぁ... ajax だと javascript で <div> 以下に要素を追加するだけで表示に反映されるけど...)
最近のコメント