use crate::utils::datetime::XmpDateTime as RustXmpDateTime;
use crate::wasm::error::{xmp_error_to_wasm_error, XmpError};
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
#[derive(Clone, Default)]
pub struct XmpDateTime {
pub(crate) inner: RustXmpDateTime,
}
#[wasm_bindgen]
impl XmpDateTime {
#[wasm_bindgen(constructor)]
pub fn new() -> XmpDateTime {
XmpDateTime::default()
}
pub fn parse(s: &str) -> Result<XmpDateTime, XmpError> {
RustXmpDateTime::parse(s)
.map(|dt| XmpDateTime { inner: dt })
.map_err(xmp_error_to_wasm_error)
}
pub fn format(&self) -> String {
self.inner.format()
}
#[wasm_bindgen(getter)]
pub fn year(&self) -> i32 {
self.inner.year
}
#[wasm_bindgen(getter)]
pub fn month(&self) -> u8 {
self.inner.month
}
#[wasm_bindgen(getter)]
pub fn day(&self) -> u8 {
self.inner.day
}
#[wasm_bindgen(getter)]
pub fn hour(&self) -> u8 {
self.inner.hour
}
#[wasm_bindgen(getter)]
pub fn minute(&self) -> u8 {
self.inner.minute
}
#[wasm_bindgen(getter)]
pub fn second(&self) -> u8 {
self.inner.second
}
#[wasm_bindgen(getter)]
pub fn nanosecond(&self) -> u32 {
self.inner.nanosecond
}
#[wasm_bindgen(getter)]
pub fn has_date(&self) -> bool {
self.inner.has_date
}
#[wasm_bindgen(getter)]
pub fn has_time(&self) -> bool {
self.inner.has_time
}
#[wasm_bindgen(getter)]
pub fn has_timezone(&self) -> bool {
self.inner.has_timezone
}
#[wasm_bindgen(getter)]
pub fn tz_sign(&self) -> i8 {
self.inner.tz_sign
}
#[wasm_bindgen(getter)]
pub fn tz_hour(&self) -> u8 {
self.inner.tz_hour
}
#[wasm_bindgen(getter)]
pub fn tz_minute(&self) -> u8 {
self.inner.tz_minute
}
}