mirror of
https://github.com/lune-org/lune.git
synced 2025-05-04 10:43:57 +01:00
feat: finish luau side implementation
This commit finishes the DateTime implementation for the luau side library. It includes the following methods: * fromLocalTime * toLocalTime
This commit is contained in:
parent
574bc16a1b
commit
6943ed0755
1 changed files with 17 additions and 6 deletions
|
@ -7,12 +7,9 @@ use mlua::prelude::*;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
|
|
||||||
// TODO: Proper error handling and stuff
|
// TODO: Proper error handling and stuff
|
||||||
// TODO: fromLocalTime, toDateTimeBuilder, toLocalTime
|
// TODO: fromLocalTime, toLocalTime
|
||||||
// FIX: DateTime::from_iso_date is broken
|
// FIX: DateTime::from_iso_date is broken
|
||||||
|
|
||||||
// pub fn format_time<T>(&self, timezone: Timezone, fmt_str: T, locale: T) -> String
|
|
||||||
// where
|
|
||||||
// T: ToString,
|
|
||||||
pub fn create(lua: &'static Lua) -> LuaResult<LuaTable> {
|
pub fn create(lua: &'static Lua) -> LuaResult<LuaTable> {
|
||||||
TableBuilder::new(lua)?
|
TableBuilder::new(lua)?
|
||||||
.with_function("now", |_, ()| Ok(DateTime::now()))?
|
.with_function("now", |_, ()| Ok(DateTime::now()))?
|
||||||
|
@ -43,6 +40,12 @@ pub fn create(lua: &'static Lua) -> LuaResult<LuaTable> {
|
||||||
.with_function("toUniversalTime", |_, this: DateTime| {
|
.with_function("toUniversalTime", |_, this: DateTime| {
|
||||||
Ok(this.to_universal_time())
|
Ok(this.to_universal_time())
|
||||||
})?
|
})?
|
||||||
|
.with_function("fromLocalTime", |lua, date_time: LuaValue| {
|
||||||
|
Ok(DateTime::from_local_time(DateTimeBuilder::from_lua(date_time, lua).ok()))
|
||||||
|
})?
|
||||||
|
.with_function("toLocalTime", |_, this: DateTime| {
|
||||||
|
Ok(this.to_local_time())
|
||||||
|
})?
|
||||||
.with_function("fromIsoDate", |_, iso_date: LuaString| {
|
.with_function("fromIsoDate", |_, iso_date: LuaString| {
|
||||||
Ok(DateTime::from_iso_date(iso_date.to_string_lossy()))
|
Ok(DateTime::from_iso_date(iso_date.to_string_lossy()))
|
||||||
})?
|
})?
|
||||||
|
@ -330,7 +333,9 @@ impl LuaUserData for DateTime {
|
||||||
|
|
||||||
fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) {
|
fn add_methods<'lua, M: LuaUserDataMethods<'lua, Self>>(methods: &mut M) {
|
||||||
methods.add_method("now", |_, _this, ()| Ok(DateTime::now()));
|
methods.add_method("now", |_, _this, ()| Ok(DateTime::now()));
|
||||||
|
|
||||||
methods.add_method("toIsoDate", |_, this, ()| Ok(this.to_iso_date()));
|
methods.add_method("toIsoDate", |_, this, ()| Ok(this.to_iso_date()));
|
||||||
|
|
||||||
methods.add_method(
|
methods.add_method(
|
||||||
"formatTime",
|
"formatTime",
|
||||||
|_, this, (timezone, fmt_str, locale): (LuaValue, LuaString, LuaString)| {
|
|_, this, (timezone, fmt_str, locale): (LuaValue, LuaString, LuaString)| {
|
||||||
|
@ -341,9 +346,14 @@ impl LuaUserData for DateTime {
|
||||||
))
|
))
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
methods.add_method("toUniversalTime", |_, this: &DateTime, ()| {
|
methods.add_method("toUniversalTime", |_, this: &DateTime, ()| {
|
||||||
Ok(this.to_universal_time())
|
Ok(this.to_universal_time())
|
||||||
})
|
});
|
||||||
|
|
||||||
|
methods.add_method("toLocalTime", |_, this: &DateTime, ()| {
|
||||||
|
Ok(this.to_local_time())
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +444,8 @@ impl DateTimeBuilder {
|
||||||
|
|
||||||
/// Builder method to set the `Month`.
|
/// Builder method to set the `Month`.
|
||||||
pub fn with_month(&mut self, month: Month) -> &mut Self {
|
pub fn with_month(&mut self, month: Month) -> &mut Self {
|
||||||
self.month = month as u32;
|
// THe Month enum casts to u32 starting at zero, so we add one to it
|
||||||
|
self.month = month as u32 + 1;
|
||||||
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue