Skip to content

Commit

Permalink
Add trailing zero between dot and exponential
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed Oct 13, 2023
1 parent ddffadb commit 5c19b44
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.1
1.
1E+1
1E-1
1.E+1
1.0E+1
1.1E+1
11 changes: 7 additions & 4 deletions crates/ruff_python_formatter/src/expression/number.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ fn normalize_floating_number(input: &str) -> Cow<str> {

let mut chars = input.char_indices();

let fraction_ends_with_dot = if let Some((index, '.')) = chars.next() {
let mut prev_char_is_dot = if let Some((index, '.')) = chars.next() {
// Add a leading `0` if `input` starts with `.`.
output.push('0');
output.push('.');
Expand All @@ -155,8 +155,8 @@ fn normalize_floating_number(input: &str) -> Cow<str> {
loop {
match chars.next() {
Some((index, c @ ('e' | 'E'))) => {
if fraction_ends_with_dot {
// Add `0` if fraction part ends with `.`.
if prev_char_is_dot {
// Add `0` if the `e` immediately follows a `.` (e.g., `1.e1`).
output.push_str(&input[last_index..index]);
output.push('0');
last_index = index;
Expand All @@ -177,7 +177,10 @@ fn normalize_floating_number(input: &str) -> Cow<str> {

break;
}
Some(_) => continue,
Some((_index, c)) => {
prev_char_is_dot = c == '.';
continue;
}
None => {
if input.ends_with('.') {
// Add `0` if fraction part ends with `.`.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
source: crates/ruff_python_formatter/tests/fixtures.rs
input_file: crates/ruff_python_formatter/resources/test/fixtures/ruff/expression/number.py
---
## Input
```py
.1
1.
1E+1
1E-1
1.E+1
1.0E+1
1.1E+1
-1.e49
```

## Output
```py
0.1
1.0
1e1
1e-1
1.0e1
1.0e1
1.1e1
-1.0e49
```



0 comments on commit 5c19b44

Please sign in to comment.