refactor(data): use explicit string views for compact numeric names
This commit is contained in:
@@ -4390,9 +4390,9 @@ fn normalize_factor_snapshots(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
let already_normalized = snapshot.extra_factors.iter().all(|(field, value)| {
|
let already_normalized = snapshot.extra_factors.iter().all(|(field, value)| {
|
||||||
let trimmed = field.as_ref().trim().trim_matches('"').trim_matches('\'');
|
let trimmed = field.as_str().trim().trim_matches('"').trim_matches('\'');
|
||||||
!trimmed.is_empty()
|
!trimmed.is_empty()
|
||||||
&& trimmed == field.as_ref()
|
&& trimmed == field.as_str()
|
||||||
&& trimmed.bytes().all(|byte| !byte.is_ascii_uppercase())
|
&& trimmed.bytes().all(|byte| !byte.is_ascii_uppercase())
|
||||||
&& value.is_finite()
|
&& value.is_finite()
|
||||||
});
|
});
|
||||||
@@ -4403,10 +4403,10 @@ fn normalize_factor_snapshots(
|
|||||||
.extra_factors
|
.extra_factors
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|(field, value)| {
|
.filter_map(|(field, value)| {
|
||||||
let trimmed = field.as_ref().trim().trim_matches('"').trim_matches('\'');
|
let trimmed = field.as_str().trim().trim_matches('"').trim_matches('\'');
|
||||||
if trimmed.is_empty() || !value.is_finite() {
|
if trimmed.is_empty() || !value.is_finite() {
|
||||||
None
|
None
|
||||||
} else if trimmed == field.as_ref()
|
} else if trimmed == field.as_str()
|
||||||
&& trimmed.bytes().all(|byte| !byte.is_ascii_uppercase())
|
&& trimmed.bytes().all(|byte| !byte.is_ascii_uppercase())
|
||||||
{
|
{
|
||||||
Some((field, value))
|
Some((field, value))
|
||||||
|
|||||||
@@ -40,14 +40,14 @@ impl NumericFactorMap {
|
|||||||
|
|
||||||
pub fn get(&self, key: &str) -> Option<&f64> {
|
pub fn get(&self, key: &str) -> Option<&f64> {
|
||||||
self.entries
|
self.entries
|
||||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key))
|
.binary_search_by(|(name, _)| name.as_str().cmp(key))
|
||||||
.ok()
|
.ok()
|
||||||
.map(|index| &self.entries[index].1)
|
.map(|index| &self.entries[index].1)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_mut(&mut self, key: &str) -> Option<&mut f64> {
|
pub fn get_mut(&mut self, key: &str) -> Option<&mut f64> {
|
||||||
self.entries
|
self.entries
|
||||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key))
|
.binary_search_by(|(name, _)| name.as_str().cmp(key))
|
||||||
.ok()
|
.ok()
|
||||||
.map(|index| &mut self.entries[index].1)
|
.map(|index| &mut self.entries[index].1)
|
||||||
}
|
}
|
||||||
@@ -64,14 +64,14 @@ impl NumericFactorMap {
|
|||||||
if self
|
if self
|
||||||
.entries
|
.entries
|
||||||
.last()
|
.last()
|
||||||
.is_none_or(|(last, _)| last.as_ref() < key.as_ref())
|
.is_none_or(|(last, _)| last.as_str() < key.as_str())
|
||||||
{
|
{
|
||||||
self.entries.push((key, value));
|
self.entries.push((key, value));
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
match self
|
match self
|
||||||
.entries
|
.entries
|
||||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key.as_ref()))
|
.binary_search_by(|(name, _)| name.as_str().cmp(key.as_str()))
|
||||||
{
|
{
|
||||||
Ok(index) => Some(std::mem::replace(&mut self.entries[index].1, value)),
|
Ok(index) => Some(std::mem::replace(&mut self.entries[index].1, value)),
|
||||||
Err(index) => {
|
Err(index) => {
|
||||||
@@ -83,7 +83,7 @@ impl NumericFactorMap {
|
|||||||
|
|
||||||
pub fn remove(&mut self, key: &str) -> Option<f64> {
|
pub fn remove(&mut self, key: &str) -> Option<f64> {
|
||||||
self.entries
|
self.entries
|
||||||
.binary_search_by(|(name, _)| name.as_ref().cmp(key))
|
.binary_search_by(|(name, _)| name.as_str().cmp(key))
|
||||||
.ok()
|
.ok()
|
||||||
.map(|index| self.entries.remove(index).1)
|
.map(|index| self.entries.remove(index).1)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4905,7 +4905,7 @@ impl PlatformExprStrategy {
|
|||||||
.iter()
|
.iter()
|
||||||
.filter(|(field, _)| {
|
.filter(|(field, _)| {
|
||||||
self.stock_extra_factor_map_required
|
self.stock_extra_factor_map_required
|
||||||
|| self.stock_extra_factor_identifiers.contains(field.as_ref())
|
|| self.stock_extra_factor_identifiers.contains(field.as_str())
|
||||||
})
|
})
|
||||||
.map(|(field, value)| (field.clone(), *value))
|
.map(|(field, value)| (field.clone(), *value))
|
||||||
.collect()
|
.collect()
|
||||||
@@ -5653,7 +5653,7 @@ impl PlatformExprStrategy {
|
|||||||
Dynamic::from(stock.stock_volume_ma100),
|
Dynamic::from(stock.stock_volume_ma100),
|
||||||
);
|
);
|
||||||
for (key, value) in &stock.extra_factors {
|
for (key, value) in &stock.extra_factors {
|
||||||
factors.insert(key.as_ref().into(), Dynamic::from(*value));
|
factors.insert(key.as_str().into(), Dynamic::from(*value));
|
||||||
}
|
}
|
||||||
for (key, value) in &stock.extra_text_factors {
|
for (key, value) in &stock.extra_text_factors {
|
||||||
factors.insert(key.clone().into(), Dynamic::from(value.clone()));
|
factors.insert(key.clone().into(), Dynamic::from(value.clone()));
|
||||||
@@ -17561,7 +17561,7 @@ mod tests {
|
|||||||
assert_eq!(copied_state.extra_factors["negative_zero"].to_bits(), (-0.0_f64).to_bits());
|
assert_eq!(copied_state.extra_factors["negative_zero"].to_bits(), (-0.0_f64).to_bits());
|
||||||
assert!(copied_state.extra_factors["undefined_value"].is_nan());
|
assert!(copied_state.extra_factors["undefined_value"].is_nan());
|
||||||
let exposed = copied_state.extra_factors.iter()
|
let exposed = copied_state.extra_factors.iter()
|
||||||
.map(|(key, value)| (key.as_ref().into(), Dynamic::from(*value)))
|
.map(|(key, value)| (key.as_str().into(), Dynamic::from(*value)))
|
||||||
.collect::<Map>();
|
.collect::<Map>();
|
||||||
assert_eq!(exposed["negative_zero"].as_float().unwrap().to_bits(), (-0.0_f64).to_bits());
|
assert_eq!(exposed["negative_zero"].as_float().unwrap().to_bits(), (-0.0_f64).to_bits());
|
||||||
assert!(exposed["undefined_value"].as_float().unwrap().is_nan());
|
assert!(exposed["undefined_value"].as_float().unwrap().is_nan());
|
||||||
|
|||||||
Reference in New Issue
Block a user