use crate::refs::{CellRange, CellRef};
#[macro_export]
macro_rules! cell {
(abs $row:expr, abs $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, None, true, $row, true, $col)
};
(abs $row:expr, $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, None, true, $row, false, $col)
};
($row:expr, abs $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, None, false, $row, true, $col)
};
($row:expr, $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, None, false, $row, false, $col)
};
(abs $row:expr, abs $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, true, $col, None, true, $row2, true, $col2,
)
};
(abs $row:expr, abs $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, true, $col, None, true, $row2, false, $col2,
)
};
(abs $row:expr, abs $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, true, $col, None, false, $row2, true, $col2,
)
};
(abs $row:expr, abs $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, true, $col, None, false, $row2, false, $col2,
)
};
(abs $row:expr, $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, false, $col, None, true, $row2, true, $col2,
)
};
(abs $row:expr, $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, false, $col, None, true, $row2, false, $col2,
)
};
(abs $row:expr, $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, false, $col, None, false, $row2, true, $col2,
)
};
(abs $row:expr, $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, true, $row, false, $col, None, false, $row2, false, $col2,
)
};
( $row:expr, abs $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, true, $col, None, true, $row2, true, $col2,
)
};
( $row:expr, abs $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, true, $col, None, true, $row2, false, $col2,
)
};
( $row:expr, abs $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, true, $col, None, false, $row2, true, $col2,
)
};
($row:expr, abs $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, true, $col, None, false, $row2, false, $col2,
)
};
($row:expr, $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, false, $col, None, true, $row2, true, $col2,
)
};
($row:expr, $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, false, $col, None, true, $row2, false, $col2,
)
};
($row:expr, $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, false, $col, None, false, $row2, true, $col2,
)
};
($row:expr, $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None, None, false, $row, false, $col, None, false, $row2, false, $col2,
)
};
($table:expr => abs $row:expr, abs $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, Some($table.into()), true, $row, true, $col)
};
($table:expr => abs $row:expr, $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, Some($table.into()), true, $row, true, $col)
};
($table:expr => $row:expr, abs $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, Some($table.into()), true, $row, true, $col)
};
($table:expr => $row:expr, $col:expr) => {
spreadsheet_ods::CellRef::new_all(None, Some($table.into()), true, $row, true, $col)
};
($table:expr => abs $row:expr, abs $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
true,
$col,
None,
true,
$row2,
true,
$col2,
)
};
($table:expr => abs $row:expr, abs $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
true,
$col,
None,
true,
$row2,
false,
$col2,
)
};
($table:expr => abs $row:expr, abs $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
true,
$col,
None,
false,
$row2,
true,
$col2,
)
};
($table:expr => abs $row:expr, abs $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
true,
$col,
None,
false,
$row2,
false,
$col2,
)
};
($table:expr => abs $row:expr, $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
false,
$col,
None,
true,
$row2,
true,
$col2,
)
};
($table:expr => abs $row:expr, $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
false,
$col,
None,
true,
$row2,
false,
$col2,
)
};
($table:expr => abs $row:expr, $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
false,
$col,
None,
false,
$row2,
true,
$col2,
)
};
($table:expr => abs $row:expr, $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
true,
$row,
false,
$col,
None,
false,
$row2,
false,
$col2,
)
};
($table:expr => $row:expr, abs $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
true,
$col,
None,
true,
$row2,
true,
$col2,
)
};
($table:expr => $row:expr, abs $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
true,
$col,
None,
true,
$row2,
false,
$col2,
)
};
($table:expr => $row:expr, abs $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
true,
$col,
None,
false,
$row2,
true,
$col2,
)
};
($table:expr => $row:expr, abs $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
true,
$col,
None,
false,
$row2,
false,
$col2,
)
};
($table:expr => $row:expr, $col:expr, abs $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
false,
$col,
None,
true,
$row2,
true,
$col2,
)
};
($table:expr => $row:expr, $col:expr, abs $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
false,
$col,
None,
true,
$row2,
false,
$col2,
)
};
($table:expr => $row:expr, $col:expr, $row2:expr, abs $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
false,
$col,
None,
false,
$row2,
true,
$col2,
)
};
($table:expr => $row:expr, $col:expr, $row2:expr, $col2:expr) => {
spreadsheet_ods::CellRange::new_all(
None,
Some($table.into()),
false,
$row,
false,
$col,
None,
false,
$row2,
false,
$col2,
)
};
}
pub fn fcellref(row: u32, col: u32) -> String {
CellRef::local(row, col).to_formula()
}
pub fn fcellrefr(row: u32, col: u32) -> String {
CellRef::local(row, col).absolute_row().to_formula()
}
pub fn fcellrefc(row: u32, col: u32) -> String {
CellRef::local(row, col).absolute_col().to_formula()
}
pub fn fcellrefa(row: u32, col: u32) -> String {
CellRef::local(row, col).absolute().to_formula()
}
pub fn fcellref_table<S: Into<String>>(table: S, row: u32, col: u32) -> String {
CellRef::remote(table, row, col).to_formula()
}
pub fn fcellrefr_table<S: Into<String>>(table: S, row: u32, col: u32) -> String {
CellRef::remote(table, row, col).absolute_row().to_formula()
}
pub fn fcellrefc_table<S: Into<String>>(table: S, row: u32, col: u32) -> String {
CellRef::remote(table, row, col).absolute_col().to_formula()
}
pub fn fcellrefa_table<S: Into<String>>(table: S, row: u32, col: u32) -> String {
CellRef::remote(table, row, col).absolute().to_formula()
}
pub fn frangeref(row: u32, col: u32, row_to: u32, col_to: u32) -> String {
CellRange::local(row, col, row_to, col_to).to_formula()
}
pub fn frangerefr(row: u32, col: u32, row_to: u32, col_to: u32) -> String {
CellRange::local(row, col, row_to, col_to)
.absolute_rows()
.to_formula()
}
pub fn frangerefc(row: u32, col: u32, row_to: u32, col_to: u32) -> String {
CellRange::local(row, col, row_to, col_to)
.absolute_cols()
.to_formula()
}
pub fn frangerefa(row: u32, col: u32, row_to: u32, col_to: u32) -> String {
CellRange::local(row, col, row_to, col_to)
.absolute()
.to_formula()
}
pub fn frangeref_table<S: Into<String>>(
table: S,
row: u32,
col: u32,
row_to: u32,
col_to: u32,
) -> String {
CellRange::remote(table, row, col, row_to, col_to).to_formula()
}
pub fn frangerefr_table<S: Into<String>>(
table: S,
row: u32,
col: u32,
row_to: u32,
col_to: u32,
) -> String {
CellRange::remote(table, row, col, row_to, col_to)
.absolute_rows()
.to_formula()
}
pub fn frangerefc_table<S: Into<String>>(
table: S,
row: u32,
col: u32,
row_to: u32,
col_to: u32,
) -> String {
CellRange::remote(table, row, col, row_to, col_to)
.absolute_cols()
.to_formula()
}
pub fn frangerefa_table<S: Into<String>>(
table: S,
row: u32,
col: u32,
row_to: u32,
col_to: u32,
) -> String {
CellRange::remote(table, row, col, row_to, col_to)
.absolute()
.to_formula()
}