Add possibility to add password name with default just in one short command: a <name>

This commit is contained in:
Oleksandr Kozachuk
2022-12-11 15:46:56 +01:00
parent ad920e8f05
commit dd85460b69
+4 -1
View File
@@ -3,6 +3,7 @@ extern crate peg;
use crate::password::Password; use crate::password::Password;
use crate::structs::{Command, LKErr, Mode}; use crate::structs::{Command, LKErr, Mode};
use chrono::naive::NaiveDate; use chrono::naive::NaiveDate;
use chrono::Local;
use std::{cell::RefCell, rc::Rc}; use std::{cell::RefCell, rc::Rc};
peg::parser! { peg::parser! {
@@ -31,7 +32,9 @@ peg::parser! {
{ Password::new(Some(pr), pn, pl, pm, 99, pd, pc) } { Password::new(Some(pr), pn, pl, pm, 99, pd, pc) }
rule sname() -> Password = &(word() _ num()? mode() _ date()) pn:word() _ pl:num()? pm:mode() _ pd:date() pc:comment()? rule sname() -> Password = &(word() _ num()? mode() _ date()) pn:word() _ pl:num()? pm:mode() _ pd:date() pc:comment()?
{ Password::new(None, pn, pl, pm, 99, pd, pc) } { Password::new(None, pn, pl, pm, 99, pd, pc) }
pub rule name() -> Password = name:(jname() / pname() / mname() / sname())? {? match name { Some(n) => Ok(n), None => Err("failed to parse password description") } } rule ssname() -> Password = &(word()) pn:word()
{ Password::new(None, pn, None, Mode::NoSpaceCamel, 99, Local::now().naive_local().date(), None) }
pub rule name() -> Password = name:(jname() / pname() / mname() / sname() / ssname())? {? match name { Some(n) => Ok(n), None => Err("failed to parse password description") } }
rule date() -> NaiveDate = y:$("-"? ['0'..='9']*<1,4>) "-" m:$(['0'..='9']*<1,2>) "-" d:$(['0'..='9']*<1,2>) {? rule date() -> NaiveDate = y:$("-"? ['0'..='9']*<1,4>) "-" m:$(['0'..='9']*<1,2>) "-" d:$(['0'..='9']*<1,2>) {?
let year: i32 = match y.parse() { Ok(n) => n, Err(_) => return Err("year") }; let year: i32 = match y.parse() { Ok(n) => n, Err(_) => return Err("year") };