⚰️ [config] Elimina código no usado
This commit is contained in:
parent
3167c3780d
commit
33415a14bb
2 changed files with 1 additions and 166 deletions
|
|
@ -1,7 +1,7 @@
|
|||
use crate::config::error::*;
|
||||
use crate::config::path;
|
||||
use crate::config::source::Source;
|
||||
use crate::config::value::{Table, Value};
|
||||
use crate::config::value::Value;
|
||||
|
||||
use serde::de::Deserialize;
|
||||
|
||||
|
|
@ -38,14 +38,6 @@ pub struct ConfigData {
|
|||
}
|
||||
|
||||
impl ConfigData {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
kind: ConfigKind::default(),
|
||||
// Config root should be instantiated as an empty table to avoid deserialization errors.
|
||||
cache: Value::new(None, Table::new()),
|
||||
}
|
||||
}
|
||||
|
||||
/// Merge in a configuration property source.
|
||||
pub fn merge<T>(&mut self, source: T) -> Result<&mut ConfigData>
|
||||
where
|
||||
|
|
@ -63,24 +55,6 @@ impl ConfigData {
|
|||
self.refresh()
|
||||
}
|
||||
|
||||
/// Merge in a configuration property source.
|
||||
pub fn with_merged<T>(mut self, source: T) -> Result<Self>
|
||||
where
|
||||
T: 'static,
|
||||
T: Source + Send + Sync,
|
||||
{
|
||||
match self.kind {
|
||||
ConfigKind::Mutable {
|
||||
ref mut sources, ..
|
||||
} => {
|
||||
sources.push(Box::new(source));
|
||||
}
|
||||
}
|
||||
|
||||
self.refresh()?;
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
/// Refresh the configuration cache with fresh data from added sources.
|
||||
///
|
||||
/// Configuration is automatically refreshed after a mutation operation (`set`, `merge`,
|
||||
|
|
@ -145,59 +119,6 @@ impl ConfigData {
|
|||
self.refresh()
|
||||
}
|
||||
|
||||
pub fn set_once(&mut self, key: &str, value: Value) -> Result<()> {
|
||||
let expr: path::Expression = key.parse()?;
|
||||
|
||||
// Traverse the cache using the path to (possibly) retrieve a value.
|
||||
if let Some(ref mut val) = expr.get_mut(&mut self.cache) {
|
||||
**val = value;
|
||||
} else {
|
||||
expr.set(&mut self.cache, value);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get<'de, T: Deserialize<'de>>(&self, key: &str) -> Result<T> {
|
||||
// Parse the key into a path expression.
|
||||
let expr: path::Expression = key.parse()?;
|
||||
|
||||
// Traverse the cache using the path to (possibly) retrieve a value.
|
||||
let value = expr.get(&self.cache).cloned();
|
||||
|
||||
match value {
|
||||
Some(value) => {
|
||||
// Deserialize the received value into the requested type.
|
||||
T::deserialize(value).map_err(|e| e.extend_with_key(key))
|
||||
}
|
||||
|
||||
None => Err(ConfigError::NotFound(key.into())),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_str(&self, key: &str) -> Result<String> {
|
||||
self.get(key).and_then(Value::into_str)
|
||||
}
|
||||
|
||||
pub fn get_int(&self, key: &str) -> Result<i64> {
|
||||
self.get(key).and_then(Value::into_int)
|
||||
}
|
||||
|
||||
pub fn get_float(&self, key: &str) -> Result<f64> {
|
||||
self.get(key).and_then(Value::into_float)
|
||||
}
|
||||
|
||||
pub fn get_bool(&self, key: &str) -> Result<bool> {
|
||||
self.get(key).and_then(Value::into_bool)
|
||||
}
|
||||
|
||||
pub fn get_table(&self, key: &str) -> Result<HashMap<String, Value>> {
|
||||
self.get(key).and_then(Value::into_table)
|
||||
}
|
||||
|
||||
pub fn get_array(&self, key: &str) -> Result<Vec<Value>> {
|
||||
self.get(key).and_then(Value::into_array)
|
||||
}
|
||||
|
||||
/// Attempt to deserialize the entire configuration into the requested type.
|
||||
pub fn try_into<'de, T: Deserialize<'de>>(self) -> Result<T> {
|
||||
T::deserialize(self)
|
||||
|
|
|
|||
|
|
@ -30,92 +30,6 @@ fn sindex_to_uindex(index: isize, len: usize) -> usize {
|
|||
}
|
||||
|
||||
impl Expression {
|
||||
pub fn get(self, root: &Value) -> Option<&Value> {
|
||||
match self {
|
||||
Expression::Identifier(id) => {
|
||||
match root.kind {
|
||||
// `x` access on a table is equivalent to: map[x].
|
||||
ValueKind::Table(ref map) => map.get(&id),
|
||||
|
||||
// All other variants return None.
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
Expression::Child(expr, key) => {
|
||||
match expr.get(root) {
|
||||
Some(value) => {
|
||||
match value.kind {
|
||||
// Access on a table is identical to Identifier, it just forwards.
|
||||
ValueKind::Table(ref map) => map.get(&key),
|
||||
|
||||
// All other variants return None.
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
Expression::Subscript(expr, index) => match expr.get(root) {
|
||||
Some(value) => match value.kind {
|
||||
ValueKind::Array(ref array) => {
|
||||
let index = sindex_to_uindex(index, array.len());
|
||||
|
||||
if index >= array.len() {
|
||||
None
|
||||
} else {
|
||||
Some(&array[index])
|
||||
}
|
||||
}
|
||||
|
||||
_ => None,
|
||||
},
|
||||
|
||||
_ => None,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_mut<'a>(&self, root: &'a mut Value) -> Option<&'a mut Value> {
|
||||
match *self {
|
||||
Expression::Identifier(ref id) => match root.kind {
|
||||
ValueKind::Table(ref mut map) => map.get_mut(id),
|
||||
|
||||
_ => None,
|
||||
},
|
||||
|
||||
Expression::Child(ref expr, ref key) => match expr.get_mut(root) {
|
||||
Some(value) => match value.kind {
|
||||
ValueKind::Table(ref mut map) => map.get_mut(key),
|
||||
|
||||
_ => None,
|
||||
},
|
||||
|
||||
_ => None,
|
||||
},
|
||||
|
||||
Expression::Subscript(ref expr, index) => match expr.get_mut(root) {
|
||||
Some(value) => match value.kind {
|
||||
ValueKind::Array(ref mut array) => {
|
||||
let index = sindex_to_uindex(index, array.len());
|
||||
|
||||
if index >= array.len() {
|
||||
None
|
||||
} else {
|
||||
Some(&mut array[index])
|
||||
}
|
||||
}
|
||||
|
||||
_ => None,
|
||||
},
|
||||
|
||||
_ => None,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_mut_forcibly<'a>(&self, root: &'a mut Value) -> Option<&'a mut Value> {
|
||||
match *self {
|
||||
Expression::Identifier(ref id) => match root.kind {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue