summaryrefslogtreecommitdiff
path: root/src/cursor.rs
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 15:41:31 +0200
committerNathan Reiner <nathan@nathanreiner.xyz>2024-08-10 15:41:31 +0200
commitb747ca8af52129876b577a4f20f7105a05c6b002 (patch)
treed976a5c3cd135dfecb1014246936bb7a8b525c4b /src/cursor.rs
parent4763d8ce3b833df1e7321a407b08666f69657fdb (diff)
add global fileloader registry
Diffstat (limited to 'src/cursor.rs')
-rw-r--r--src/cursor.rs26
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"));