UPDATE: Parses selected row/column/range and selected sheet (#67)

* FIX: Update to Rust 1.78.0

* UPDATE: Parses selected row/column/range and selected sheet
This commit is contained in:
Nicolás Hatcher Andrés
2024-05-09 11:46:26 +02:00
committed by GitHub
parent a78d5593f2
commit f752c90058
8 changed files with 184 additions and 24 deletions

View File

@@ -222,7 +222,7 @@ impl Parser {
pub fn parse(&mut self, formula: &str, context: &Option<CellReferenceRC>) -> Node {
self.lexer.set_formula(formula);
self.context = context.clone();
self.context.clone_from(context);
self.parse_expr()
}

View File

@@ -6,14 +6,16 @@ use crate::{
calc_result::Range,
expressions::{
lexer::LexerMode,
parser::stringify::{rename_sheet_in_node, to_rc_format},
parser::Parser,
parser::{
stringify::{rename_sheet_in_node, to_rc_format},
Parser,
},
types::CellReferenceRC,
},
language::get_language,
locale::get_locale,
model::{get_milliseconds_since_epoch, Model, ParsedDefinedName},
types::{Metadata, SheetState, Workbook, WorkbookSettings, Worksheet},
types::{Metadata, Selection, SheetState, Workbook, WorkbookSettings, Worksheet},
utils::ParsedReference,
};
@@ -48,6 +50,12 @@ impl Model {
color: Default::default(),
frozen_columns: 0,
frozen_rows: 0,
selection: Selection {
is_selected: false,
row: 1,
column: 1,
range: [1, 1, 1, 1],
},
}
}

View File

@@ -71,6 +71,14 @@ impl Display for SheetState {
}
}
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
pub struct Selection {
pub is_selected: bool,
pub row: i32,
pub column: i32,
pub range: [i32; 4],
}
/// Internal representation of a worksheet Excel object
#[derive(Encode, Decode, Debug, PartialEq, Clone)]
pub struct Worksheet {
@@ -87,6 +95,7 @@ pub struct Worksheet {
pub comments: Vec<Comment>,
pub frozen_rows: i32,
pub frozen_columns: i32,
pub selection: Selection,
}
/// Internal representation of Excel's sheet_data

View File

@@ -849,7 +849,7 @@ impl UserModel {
style.fill.fg_color = color(value)?;
}
"num_fmt" => {
style.num_fmt = value.to_owned();
value.clone_into(&mut style.num_fmt);
}
"border.left" => {
style.border.left = border(value)?;