(&self)
| 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(); |
no test coverage detected