Skip to content

Commit

Permalink
add 'tostring(variant)'
Browse files Browse the repository at this point in the history
  • Loading branch information
brentp committed Jun 11, 2024
1 parent e77339f commit 6f22980
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
18 changes: 18 additions & 0 deletions src/variant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,24 @@ use log::{debug, log_enabled, Level};

pub fn register_variant(lua: &Lua) -> mlua::Result<()> {
lua.register_userdata_type::<Variant>(|reg| {
reg.add_meta_function(MetaMethod::ToString, |_lua, this: AnyUserData| {
let v = &this.borrow::<Variant>()?.0;
let mut kstr = rust_htslib::htslib::kstring_t {
l: 0,
m: 0,
s: std::ptr::null_mut(),
};
let h = v.header();
unsafe { rust_htslib::htslib::vcf_format(h.inner, v.inner(), &mut kstr) };
let s = unsafe {
String::from_utf8_unchecked(
std::slice::from_raw_parts(kstr.s as *const u8, kstr.l as usize).to_vec(),
)
};
eprintln!("s: {}", s);

Ok(s)
});
reg.add_meta_function(
MetaMethod::Index,
|_lua, (_, name): (AnyUserData, String)| {
Expand Down
4 changes: 2 additions & 2 deletions src/vcfexpr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -170,8 +170,8 @@ impl<'lua> VCFExpr<'lua> {
lua.scope(|scope| {
globals.raw_set("header", scope.create_any_userdata_ref_mut(&mut hv)?)?;
for path in lua_prelude {
let code = std::fs::read_to_string(path)?;
lua.load(&code).exec()?;
let code = std::fs::read_to_string(&path)?;
lua.load(&code).set_name(path).exec()?;
}
Ok(())
})?;
Expand Down

0 comments on commit 6f22980

Please sign in to comment.