Thanks @nepeckman, it is very helpful for me at least.

but... I see some issues if created more export modules then the global 
variables and functions theoretically could be overwritten from latest imported 
module. My suggestion is wrap the export code into {. emit: """(function(){""" 
.} .... {. emit: """})();""" .} See please example:
    
    
    import jsffi
    import ../src/jsExport
    
    {. emit: """(function(){""" .}
    
    type Person* = ref object
      name*: string
      age*: int
    
    proc newPerson(name: cstring, age: cint): Person =
      Person(name: $name, age: int(age))
    
    var name = cstring("Test 3")
    var person =  Person(name: "Test 4", age: 0)
    
    proc greet(name: cstring): cstring =
      "Hello " & name
    
    proc greetPerson(person: Person): cstring =
      "Hello " & person.name
    
    jsExport:
      "nimGreet" = greet
      greetPerson
      (name, person)
      newPerson
    jsExport(newPerson)
    
    {. emit: """})();""" .}
    
    
    Run

Reply via email to