NVelocityの馬鹿
IronPython 1.0 (1.0.61005.1977) on .NET 2.0.50727.42 Copyright (c) Microsoft Corporation. All rights reserved. >>> import System >>> import clr >>> clr.AddReference("NVelocity") >>> from NVelocity import * >>> from NVelocity.App import * >>> Velocity.Init() >>> ctx = VelocityContext() >>> ctx.Put("key", "value") 'value' >>> w = System.IO.StringWriter() >>> Velocity.MergeTemplate("hoge.vm", "Shift-JIS", ctx, w) Traceback (most recent call last): File , line 0, in <stdin>##40 File , line 0, in MergeTemplate##48 File NVelocity, line unknown, in MergeTemplate File NVelocity, line unknown, in getTemplate File NVelocity, line unknown, in getResource Exception: Unable to find resource 'hoge.vm' >>> Velocity.MergeTemplate(None, "Shift-JIS", ctx, w) Traceback (most recent call last): File , line 0, in <stdin>##71 File , line 0, in MergeTemplate##52 File NVelocity, line unknown, in MergeTemplate File NVelocity, line unknown, in getTemplate File NVelocity, line unknown, in getResource File NVelocity, line unknown, in get File NVelocity, line unknown, in get_Item File NVelocity, line unknown, in get_Item File mscorlib, line unknown, in get_Item TypeError: キーを Null にすることはできません。 パラメータ名: key >>> >>> f=open('hoge.vm', 'w') >>> f.write("key=$key\r\n") >>> f.close() >>> Velocity.MergeTemplate('hoge.vm', "Shift-JIS", ctx, w) True >>> print w.GetStringBuilder() key=value >>> System.IO.File.Delete('hoge.vm')
ファイル名がnullの場合にキーがNullとかいわれてもこまるよー。
C#でファイル名がinjectionできてないことにきがつかんではまってた。orz
pythonでnullはNoneなんですね。
やっぱりimport書くのがめんどくさいな。
オブジェクトnewとか書いちゃったりするとのでやっぱりちょっとつらい。