diff --git a/build.rs b/build.rs index 48d021a..75d2980 100644 --- a/build.rs +++ b/build.rs @@ -11,8 +11,10 @@ fn main() { .flag("-Os") .compile("sword_rs"); - println!("cargo:rerun-if-changed=src/mgr.rs"); + println!("cargo:rerun-if-changed=src/cxx/mod.rs"); println!("cargo:rerun-if-changed=src/cxx/mgr.cc"); println!("cargo:rerun-if-changed=src/cxx/mgr.h"); + println!("cargo:rerun-if-changed=src/cxx/module.cc"); + println!("cargo:rerun-if-changed=src/cxx/module.h"); println!("cargo:rustc-link-lib=sword"); } diff --git a/src/cxx/mod.rs b/src/cxx/mod.rs index 438e497..153a814 100644 --- a/src/cxx/mod.rs +++ b/src/cxx/mod.rs @@ -15,6 +15,7 @@ pub mod ffi { type Module; fn get_name(self: &Module) -> String; + fn render_text(self: Pin<&mut Module>) -> String; fn set_key_text(self: Pin<&mut Module>, key_text: &String) -> (); fn strip_text(self: Pin<&mut Module>) -> String; } diff --git a/src/cxx/module.cc b/src/cxx/module.cc index b0df901..17bf3c4 100644 --- a/src/cxx/module.cc +++ b/src/cxx/module.cc @@ -7,13 +7,19 @@ namespace sword_rs { return rust::String(this->module->getName()); } + rust::String Module::render_text() { + return std::string( + (const char*) this->module->renderText() + ); + } + + void Module::set_key_text(const rust::String& keyText) { + this->module->setKeyText(std::string(keyText).c_str()); + } + rust::String Module::strip_text() { return std::string( (const char*) this->module->stripText() ); } - - void Module::set_key_text(const rust::String& keyText) { - this->module->setKeyText(std::string(keyText).c_str()); - } } diff --git a/src/cxx/module.h b/src/cxx/module.h index 6ce5572..82336d9 100644 --- a/src/cxx/module.h +++ b/src/cxx/module.h @@ -15,8 +15,10 @@ namespace sword_rs { rust::String get_name() const; - rust::String strip_text(); + rust::String render_text(); void set_key_text(const rust::String& keyText); + + rust::String strip_text(); }; } diff --git a/src/main.rs b/src/main.rs index 7212247..d8856e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,8 @@ use rand::Rng; -use sword_rs::mgr::Mgr; +use sword_rs::mgr::{Format, Mgr}; fn main() { - let mut mgr = Mgr::new(); + let mut mgr = Mgr::new_with_format(Format::HTMLHref); for mod_name in mgr.get_modules() { let mut module = mgr.get_module(&mod_name); println!("Module: {}", module.get_name()); @@ -12,7 +12,7 @@ fn main() { println!( "Text John 3:{} is \"{}\"", random_number, - module.strip_text() + module.render_text() ); } } diff --git a/src/module.rs b/src/module.rs index 70aef8a..38e7944 100644 --- a/src/module.rs +++ b/src/module.rs @@ -14,11 +14,15 @@ impl Module { self.module.get_name() } - pub fn strip_text(&mut self) -> String { - self.module.pin_mut().strip_text() + pub fn render_text(&mut self) -> String { + self.module.pin_mut().render_text() } pub fn set_key_text(&mut self, key_text: &String) { self.module.pin_mut().set_key_text(key_text); } + + pub fn strip_text(&mut self) -> String { + self.module.pin_mut().strip_text() + } }