[IronPython] Two questions regarding exposing an API.

TraumaPony pontheangelofdeath at gmail.com
Wed Jul 9 04:47:32 CEST 2008


Ah yeah, that worked. I'm a bit rusty on Python, heh.

Thanks :D

2008/7/9 Han Kejing <Colin.Han at grapecity.com>:

>  About first question, I think it should be write as follows. Because you
> just input ScriptManager symbol to current scope. You had not import
> CoolEngine into your current scope.
>
>
>
> import clr
> clr.AddReference("CoolEngine")
> def randomIntNoParams():
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return ScriptManager.RandomInt()
> def randomIntOneParam(i):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return ScriptManager.RandomInt(i)
> def randomIntTwoParams(i, j):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return ScriptManager.RandomInt(i, j)
> def randomIntThreeParams(i, j, k):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return ScriptManager.RandomInt(i, j, k)
> def randomIntThreeParamsNoReturn(i, j, k):
>     from CoolEngine.Engine.Scripting import ScriptManager
>    ScriptManager.RandomIntNoReturn(i, j, k)
>
>
>
>
>
> ----------------------------------------------------------------
>
> Follow my heart
>
> *Colin Han** **@* *MultiRow Developer Team (A Strong Team)*
>
>
>
> *From:* users-bounces at lists.ironpython.com [mailto:
> users-bounces at lists.ironpython.com] *On Behalf Of *TraumaPony
> *Sent:* 2008年7月8日 19:41
> *To:* users at lists.ironpython.com
> *Subject:* [IronPython] Two questions regarding exposing an API.
>
>
>
> Hi, I have two questions regarding the IronPython 2.0 B3.
>
>
>
> 1. I'm trying to expose only a few methods from my assembly, but I haven't
> the faintest idea how to do it. The best I can come up with is the
> following:
>
>
>
> import clr
> clr.AddReference("CoolEngine")
> def randomIntNoParams():
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return CoolEngine.Engine.Scripting.ScriptManager.RandomInt()
> def randomIntOneParam(i):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return CoolEngine.Engine.Scripting.ScriptManager.RandomInt(i)
> def randomIntTwoParams(i, j):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return CoolEngine.Engine.Scripting.ScriptManager.RandomInt(i, j)
> def randomIntThreeParams(i, j, k):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     return CoolEngine.Engine.Scripting.ScriptManager.RandomInt(i, j, k)
> def randomIntThreeParamsNoReturn(i, j, k):
>     from CoolEngine.Engine.Scripting import ScriptManager
>     CoolEngine.Engine.Scripting.ScriptManager.RandomIntNoReturn(i, j, k)
>
>
> But alas, it says "name 'CoolEngine' is not defined" . What am I doing
> wrong there?
>
>
>
> 2. I'm trying to create a module dynamically at runtime. I have the
> following code which I want to be placed in a module called "Script":
>
>
>
> import clr
> clr.AddReference("System.Threading")
> def Pause(milliseconds):
>     from System.Threading.Tasks import Task
>     Task.CurrentTask.Wait(milliseconds)
>
> However, I have no idea how to get it into its own module from there, and
> including it in its own file called Script.py is out of the question; I have
> that code as a string resource in my assembly.
>
> I'm doing the following:
>
> *Engine.CreateScriptSourceFromString(*
>
> *"import imp\n"*
>
> *+ *
>
> *"import sys\n"*
>
> *+ *
>
> *"newModule = imp.new_module(moduleName)\n"*
>
> *+ *
>
> *"exec(moduleSource, newModule.__dict__)\n"*
>
> *+ *
>
> *"sys.modules[moduleName] = newModule"*
>
> *, *SourceCodeKind*.Statements).Execute(scope);*
>
> where the moduleName variable is "Script" and the moduleSource is the above
> source code. However, I get the following message:
>
> An unhandled exception of type 'Microsoft.Scripting.SyntaxErrorException'
> occurred in Unknown Module.
>
> Additional information: unexpected token '\r'
>
> Any ideas?
>
>
>
> --
> /"\
> \ / ASCII RIBBON CAMPAIGN
> X AGAINST HTML MAIL
> / \
>
> This message has been encrypted with ROT-26. Any unauthorised decryption
> will result in prosecution to the full extent of the law.
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>


-- 
/"\
\ / ASCII RIBBON CAMPAIGN
X AGAINST HTML MAIL
/ \

This message has been encrypted with ROT-26. Any unauthorised decryption
will result in prosecution to the full extent of the law.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20080709/3a702a1e/attachment.html>


More information about the Ironpython-users mailing list