Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

If you are more familiar with the python standard classes and objects, such as strings and dictionaries, you can use them via IronPython.

In your boo project, add a reference to the IronPython.dll included with IronPython, and then you can use code like this:

No Format
import IronPython.Objects //for Dict, Str
import IronPython.Modules.__builtin__ //for eval

//using the python dictionary:
//this converts a boo Hash to a python dictionary:
d = Dict({"key1": "value1", "key2": "value2"})
for item in d:
        print item, ":", d[item]
print d.__len__()
print len(d)
print d.get("badkey", "default1") 


//using python string methods:
s = Str("firstname lastname")
for word in s.split():
	print Str(word).capitalize()
print s.ToString() //convert back to .NET string class


//eval simple python code
pythonglobals = {"X": 1, "Y": 2}
pythonlocals = null
pythonsrc = "float(X) / Y"
try:
	result = eval(pythonsrc, pythonglobals, pythonlocals)
	print "result of \"${pythonsrc}\" is:", result, "(type:", result.GetType(), ")"
except e:
	print "Error:", e.Message

Running full python scripts is not working:

No Format
import IronPython.Objects //for Dict, Str
import IronPython.Modules //sys
import IronPython.Modules.__builtin__ //for eval
import IronPython.AST

//compile a python script
pythonsrc = """
from System.Windows.Forms import *
f = Form(Text="Experiment #1")
f.ShowDialog()
"""

sys.path.append(System.Environment.CurrentDirectory)
sys.LoadAssemblyByName("System.Windows.Forms")

topframe = Frame(module())
p = Parser.fromString(pythonsrc)
stmt = p.parseStmt()
code as FrameCode = SnippetMaker.generate(stmt, "input")
code.Run(topframe)