Last active
September 7, 2016 17:56
-
-
Save dherman/f4131507f070ad049bf557dc0c75de0a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#[macro_use] | |
extern crate neon; | |
extern crate neon_sys; | |
use std::ops::Drop; | |
use neon::*; | |
pub struct Greeter { | |
greeting: String | |
} | |
impl Drop for Greeter { | |
fn drop(&mut self) { | |
println!("dropping greeter: {}", self.greeting); | |
} | |
} | |
module! { | |
export pub class JsDontCallMe as DontCallMe for () { | |
init() { | |
Ok(()) | |
} | |
method snarf() : i32 { | |
println!("snarf!"); | |
Ok(42) | |
} | |
} | |
/// A simple native class for creating greeting strings. | |
export pub class JsGreeter for Greeter { | |
init(greeting: String) { | |
Ok(Greeter { | |
greeting: greeting | |
}) | |
} | |
call() : i32 { | |
println!("in construct.[[Call]]"); | |
Ok(3) | |
} | |
constructor() { | |
let kind = self.kind(); | |
let scope = self.scope; | |
let greeting = self.arguments.this(scope).grab(|greeter| { | |
greeter.greeting.clone() | |
}); | |
println!("in constructor.[[Construct]], call kind is {:?}, greeting is {}", kind, greeting); | |
Ok(()) | |
} | |
method hello(name: String) : String { | |
let scope = self.scope; | |
Ok(call.arguments.this(scope).grab(|greeter| { | |
format!("{}, {}!", greeter.greeting, name) | |
})) | |
} | |
method ƒoo() : String { | |
Ok(String::from("scooby dooby doo")) | |
} | |
} | |
export function returnThis() : JsObject { | |
Ok(self.arguments.this(self.scope)) | |
} | |
export function isGreeter(x: JsValue) : bool { | |
Ok(x.is_a::<JsGreeter>()) | |
} | |
export function printInteger(i: JsInteger) { | |
println!("integer: {}", i.value()); | |
Ok(()) | |
} | |
export function noop() { Ok(()) } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment