Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
ryuichiueda committed Jan 11, 2025
1 parent ca10e93 commit 663475d
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 16 deletions.
11 changes: 4 additions & 7 deletions src/core/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,15 +160,12 @@ impl DataBase {
}

fn set_layer_param(&mut self, name: &str, val: &str, layer: usize) -> Result<(), String> {
Self::name_check(name)?;
self.write_check(name)?;

if env::var(name).is_ok() {
env::set_var(name, val);
}

if self.params[layer].get(name).is_none() {
self.params[layer].insert(name.to_string(), Box::new(SingleData::from("")));
SingleData::set_new_entry(&mut self.params[layer], name, "")?;
}

self.params[layer].get_mut(name).unwrap().set_as_single(val)
Expand Down Expand Up @@ -206,7 +203,7 @@ impl DataBase {
match self.params[layer].get_mut(name) {
Some(d) => d.set_as_array(&pos.to_string(), val),
None => {
ArrayData::set(&mut self.params[layer], name, vec![])?;
ArrayData::set_new_entry(&mut self.params[layer], name, vec![])?;
self.set_layer_array_elem(name, val, layer, pos)
},
}
Expand Down Expand Up @@ -240,14 +237,14 @@ impl DataBase {
Self::name_check(name)?;
self.write_check(name)?;
let layer = self.get_target_layer(name, layer);
ArrayData::set(&mut self.params[layer], name, v)
ArrayData::set_new_entry(&mut self.params[layer], name, v)
}

pub fn set_assoc(&mut self, name: &str, layer: Option<usize>) -> Result<(), String> {
Self::name_check(name)?;
self.write_check(name)?;
let layer = self.get_target_layer(name, layer);
AssocData::set(&mut self.params[layer], name)
AssocData::set_new_entry(&mut self.params[layer], name)
}

pub fn push_local(&mut self) {
Expand Down
2 changes: 1 addition & 1 deletion src/core/database/data/array.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ impl Data for ArrayData {
}

impl ArrayData {
pub fn set(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str, v: Vec<String>) -> Result<(), String> {
pub fn set_new_entry(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str, v: Vec<String>) -> Result<(), String> {
db_layer.insert(name.to_string(), Box::new(ArrayData::from(v)));
Ok(())
}
Expand Down
2 changes: 1 addition & 1 deletion src/core/database/data/assoc.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ impl Data for AssocData {
}

impl AssocData {
pub fn set(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str) -> Result<(), String> {
pub fn set_new_entry(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str) -> Result<(), String> {
db_layer.insert(name.to_string(), Box::new(AssocData::default()));
Ok(())
}
Expand Down
8 changes: 8 additions & 0 deletions src/core/database/data/single.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//SPDXFileCopyrightText: 2024 Ryuichi Ueda [email protected]
//SPDXLicense-Identifier: BSD-3-Clause

use crate::core::HashMap;
use super::Data;

#[derive(Debug, Clone)]
Expand All @@ -27,3 +28,10 @@ impl Data for SingleData {
fn len(&mut self) -> usize { self.body.chars().count() }
fn is_single(&self) -> bool {true}
}

impl SingleData {
pub fn set_new_entry(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str, value: &str)-> Result<(), String> {
db_layer.insert( name.to_string(), Box::new(SingleData::from(value)) );
Ok(())
}
}
4 changes: 2 additions & 2 deletions src/core/database/data/special.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ impl Data for SpecialData {
}

impl SpecialData {
pub fn set(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str,
f: fn(&mut Vec<String>)-> String)-> Result<(), String> {
pub fn set_new_entry(db_layer: &mut HashMap<String, Box<dyn Data>>, name: &str,
f: fn(&mut Vec<String>)-> String)-> Result<(), String> {
db_layer.insert( name.to_string(), Box::new(SpecialData::from(f)) );
Ok(())
}
Expand Down
10 changes: 5 additions & 5 deletions src/core/database/setter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ pub fn initialize(db: &mut DataBase) -> Result<(), String> {
db.set_param("HOME", &env::var("HOME").unwrap_or("/".to_string()), None)?;
db.set_param("OPTIND", "1", None)?;

SpecialData::set(&mut db.params[0], "SRANDOM", random::get_srandom)?;
SpecialData::set(&mut db.params[0], "RANDOM", random::get_random)?;
SpecialData::set(&mut db.params[0], "EPOCHSECONDS", clock::get_epochseconds)?;
SpecialData::set(&mut db.params[0], "EPOCHREALTIME", clock::get_epochrealtime)?;
SpecialData::set(&mut db.params[0], "SECONDS", clock::get_seconds)?;
SpecialData::set_new_entry(&mut db.params[0], "SRANDOM", random::get_srandom)?;
SpecialData::set_new_entry(&mut db.params[0], "RANDOM", random::get_random)?;
SpecialData::set_new_entry(&mut db.params[0], "EPOCHSECONDS", clock::get_epochseconds)?;
SpecialData::set_new_entry(&mut db.params[0], "EPOCHREALTIME", clock::get_epochrealtime)?;
SpecialData::set_new_entry(&mut db.params[0], "SECONDS", clock::get_seconds)?;

getter::special_variable(db, "SECONDS");

Expand Down

0 comments on commit 663475d

Please sign in to comment.