diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-08-10 15:41:31 +0200 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2024-08-10 15:41:31 +0200 |
| commit | b747ca8af52129876b577a4f20f7105a05c6b002 (patch) | |
| tree | d976a5c3cd135dfecb1014246936bb7a8b525c4b /src/cursor.rs | |
| parent | 4763d8ce3b833df1e7321a407b08666f69657fdb (diff) | |
add global fileloader registry
Diffstat (limited to 'src/cursor.rs')
| -rw-r--r-- | src/cursor.rs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/cursor.rs b/src/cursor.rs index 5027e80..6e49cf7 100644 --- a/src/cursor.rs +++ b/src/cursor.rs @@ -23,24 +23,22 @@ impl<'lua> FromLuaMulti<'lua> for CursorMove { .filter(|v| v.is_integer() || v.is_number()) .map(|v| { if v.is_number() { - v.as_number().unwrap_or(0.0) + v.as_number().unwrap() as usize } else { - v.as_number().unwrap_or(0.0) + v.as_integer().unwrap() as usize } - }) - .map(|n| n as usize); + }); let second = values .get(2) .filter(|v| v.is_integer() || v.is_number()) .map(|v| { if v.is_number() { - v.as_number().unwrap() + v.as_number().unwrap() as usize } else { - v.as_number().unwrap() + v.as_integer().unwrap() as usize } - }) - .map(|n| n as usize); + }); if let Some(value) = values.get(0) { if value.is_string() { @@ -54,15 +52,19 @@ impl<'lua> FromLuaMulti<'lua> for CursorMove { "begin" => return Ok(CursorMove::Begin), "end" => return Ok(CursorMove::End), "jump" => { - if first.is_some() && second.is_some() { - return Ok(CursorMove::Jump((first.unwrap(), second.unwrap()))); + if let Some(first) = first { + if let Some(second) = second { + return Ok(CursorMove::Jump((first.max(0), second.max(0)))); + } } return Err(mlua::Error::runtime("invalid row, column values")); } "relative" => { - if first.is_some() && second.is_some() { - return Ok(CursorMove::Jump((first.unwrap(), second.unwrap()))); + if let Some(first) = first { + if let Some(second) = second { + return Ok(CursorMove::Relative((first as isize, second as isize))); + } } return Err(mlua::Error::runtime("invalid row, column values")); |