MCPcopy Create free account
hub / github.com/csskit/csskit / can_compact_number

Method can_compact_number

crates/css_lexer/src/source_cursor.rs:188–214  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

186 /// Check if the numeric value could be compacted.
187 #[inline]
188 fn can_compact_number(&self) -> bool {
189 let token = self.token();
190 let value = token.value();
191 let num_len = token.numeric_len() as usize;
192 if value > -1.0 && value < 1.0 && value != 0.0 {
193 let bytes = self.source.as_bytes();
194 if bytes.first() == Some(&b'.') {
195 return false;
196 }
197 if value < 0.0 && bytes.get(1) == Some(&b'.') {
198 return false;
199 }
200 return true;
201 }
202 if token.has_sign() && value > 0.0 {
203 return true;
204 }
205 if token.is_float() && value.fract() == 0.0 {
206 return true;
207 }
208 if token.is_int() {
209 let abs_value = value.abs();
210 let digits = if abs_value == 0.0 { 1 } else { (abs_value.log10().floor() as usize) + 1 };
211 return num_len > (digits + (value < 0.0) as usize);
212 }
213 false
214 }
215
216 fn fmt_compacted(&self, f: &mut Formatter<'_>) -> Result {
217 let token = self.token();

Callers 1

may_compactMethod · 0.80

Calls 7

numeric_lenMethod · 0.80
tokenMethod · 0.45
valueMethod · 0.45
getMethod · 0.45
has_signMethod · 0.45
is_floatMethod · 0.45
is_intMethod · 0.45

Tested by

no test coverage detected