Skip to content

Commit 5582e96

Browse files
committed
minor fix
1 parent 20b188e commit 5582e96

6 files changed

Lines changed: 65 additions & 70 deletions

File tree

Cargo.lock

Lines changed: 42 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ eframe = { version = "0.36.1", default-features = false, features = [
4949
"glow",
5050
] }
5151
getrandom = { version = "0.3.4", features = ["wasm_js"] }
52-
wasm-bindgen = "0.2.127"
53-
wasm-bindgen-futures = "0.4.77"
52+
wasm-bindgen = "0.2.128"
53+
wasm-bindgen-futures = "0.4.78"
5454
web-time = "1.1.0"
55-
web-sys = { version = "0.3.104", features = [
55+
web-sys = { version = "0.3.105", features = [
5656
"Clipboard",
5757
"Document",
5858
"Element",

src/app/file_import.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -336,20 +336,22 @@ fn parse_points_from_csv_bytes(file_bytes: &[u8]) -> Result<Vec<Point>, String>
336336
.has_headers(false)
337337
.flexible(true)
338338
.delimiter(delimiter)
339-
.from_reader(std::io::Cursor::new(normalized));
339+
.from_reader(normalized);
340340

341341
let mut points = Vec::new();
342-
for (line_index, record_result) in reader.byte_records().enumerate() {
343-
let line_number = line_index + 1;
344-
let record = record_result
345-
.map_err(|error| format!("CSV parse error at line {line_number}: {error}"))?;
346-
342+
let mut record = csv::ByteRecord::new();
343+
let mut line_number = 1;
344+
while reader
345+
.read_byte_record(&mut record)
346+
.map_err(|error| format!("CSV parse error at line {line_number}: {error}"))?
347+
{
347348
if let Some(point) = parse_point_from_clipboard_like_fragments(
348349
line_number,
349350
record.iter().map(String::from_utf8_lossy),
350351
)? {
351352
points.push(point);
352353
}
354+
line_number += 1;
353355
}
354356

355357
if points.is_empty() {
@@ -426,11 +428,7 @@ fn spreadsheet_cell_to_text(cell: &Data) -> Cow<'_, str> {
426428

427429
#[cfg(not(target_arch = "wasm32"))]
428430
fn strip_utf8_bom(file_bytes: &[u8]) -> &[u8] {
429-
if file_bytes.starts_with(&UTF8_BOM) {
430-
&file_bytes[UTF8_BOM.len()..]
431-
} else {
432-
file_bytes
433-
}
431+
file_bytes.strip_prefix(&UTF8_BOM).unwrap_or(file_bytes)
434432
}
435433

436434
#[cfg(not(target_arch = "wasm32"))]

src/app/input_parse.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,11 @@ impl CurveFitApp {
119119
ParsedSplineInitialKnotY::parse(&self.spline_initial_knot_y_inputs, expected_count)
120120
}
121121
}
122+
122123
fn parse_indexed_f64_inputs(inputs: &[String], field_prefix: &str) -> Result<Vec<f64>, String> {
123124
inputs
124125
.iter()
125126
.enumerate()
126-
.map(|(index, raw_value)| parse_f64(&format!("{field_prefix}[{index}]"), raw_value))
127+
.map(|(index, raw_value)| parse_f64(format_args!("{field_prefix}[{index}]"), raw_value))
127128
.collect()
128129
}

src/app/normalization.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,8 @@ impl ParametricNormalization {
143143
}
144144

145145
fn transform_polynomial_params(self, values: &mut [f64], direction: ScaleDirection) {
146-
let degree = values.len() - 1;
147-
for (index, value) in values.iter_mut().enumerate() {
148-
let power = (degree - index) as i32;
146+
for (power, value) in values.iter_mut().rev().enumerate() {
147+
let power = power as i32;
149148
self.transform_value(value, ParamScale::new(power, -1), direction);
150149
}
151150
}
@@ -170,14 +169,11 @@ impl ParametricNormalization {
170169
return;
171170
}
172171

173-
let numerator_len = degree + 1;
174-
for (index, value) in values.iter_mut().enumerate().take(numerator_len) {
175-
let power = (degree - index) as i32;
176-
self.transform_value(value, ParamScale::new(power, -1), direction);
177-
}
172+
let (numerator, denominator) = values.split_at_mut(degree + 1);
173+
self.transform_polynomial_params(numerator, direction);
178174

179-
for (index, value) in values.iter_mut().enumerate().skip(numerator_len) {
180-
let power = (index - degree) as i32;
175+
for (index, value) in denominator.iter_mut().enumerate() {
176+
let power = (index + 1) as i32;
181177
self.transform_value(value, ParamScale::new(power, 0), direction);
182178
}
183179
}

src/app/points_text.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//! Парсинг и сериализация текстового и clipboard-представления точек.
22
33
use std::borrow::Cow;
4-
use std::fmt::Write as _;
4+
use std::fmt::{Display, Write as _};
55

66
use egui_plot::PlotPoint;
77

@@ -64,7 +64,7 @@ impl<'a> Iterator for ClipboardNumericTokens<'a> {
6464
}
6565
}
6666

67-
pub(super) fn parse_f64(field_name: &str, raw_value: &str) -> Result<f64, String> {
67+
pub(super) fn parse_f64(field_name: impl Display, raw_value: &str) -> Result<f64, String> {
6868
let trimmed = raw_value.trim();
6969
if trimmed.is_empty() {
7070
return Err(format!("Field '{field_name}' is empty"));
@@ -82,7 +82,7 @@ pub(super) fn parse_f64(field_name: &str, raw_value: &str) -> Result<f64, String
8282
}
8383

8484
fn parse_line_coordinate(line_number: usize, axis: &str, raw_value: &str) -> Result<f64, String> {
85-
parse_f64(&format!("line {line_number} {axis}"), raw_value)
85+
parse_f64(format_args!("line {line_number} {axis}"), raw_value)
8686
}
8787

8888
fn parse_line_point_values(line_number: usize, x_raw: &str, y_raw: &str) -> Result<Point, String> {

0 commit comments

Comments
 (0)