0.8.3.0

  • update the IronCalc engine to 0.8.3
  • breaking: fill styles use a single color key; fg_color and bg_color are gone
  • breaking: the default font is now Inter 12, was Calibri 13
  • breaking: UserModel#update_range_style takes the engine's area as a Hash, update_range_style({sheet:, row:, column:, width:, height:}, path, value), and styles the whole range; it took a single cell before
  • breaking: every native method has the engine's name and signature, with nil for an optional parameter and Hashes for engine structs. Renamed:
    • Model: clear_cell_contents(sheet, row, column) → range_clear_contents(range), get_cell_content → get_localized_cell_content, get_cell_style → get_style_for_cell, set_frozen_rows_count / set_frozen_columns_count → set_frozen_rows / set_frozen_columns, rename_sheet(sheet, name) → rename_sheet_by_index; rename_sheet(old_name, new_name) renames by name
    • UserModel: clear_cell_contents(sheet, row, column) → range_clear_contents(range), set_column_width(sheet, column, width) → set_columns_width(sheet, column_start, column_end, width), and likewise set_rows_height
  • breaking: style Hashes have Symbol keys (style[:font][:b]); setters accept Symbol or String keys, but no longer a JSON String
  • breaking: UserModel#set_cell_style is removed; style a UserModel per property with update_range_style. It could not write back a style read with get_cell_style, and failed part-way through.
  • set_sheet_color accepts nil to clear a sheet's color
  • sheet colors read back as nil rather than absent when unset
  • defined names on Model and UserModel: defined_names, new_defined_name, update_defined_name, delete_defined_name, is_valid_defined_name (raises with the reason) and valid_defined_name?
  • typed cell setters on Model: update_cell_with_text, _number, _bool, _formula
  • typed cell readers on Model: get_cell_value_by_index, get_cell_value_by_ref, get_cell_formula, is_empty_cell, get_all_cells
  • row and column default styles on Model: get/set/delete_column_style, get/set/delete_row_style, plus copy_cell_style
  • range_clear_all on both APIs, range_clear_formatting on UserModel
  • insert_sheet and set_sheet_state on Model
  • pause_evaluation / resume_evaluation on UserModel, and batch to recalculate once after a block
  • hidden rows and columns: is_column_hidden / is_row_hidden on both APIs, set_column_hidden / set_row_hidden on Model, set_columns_hidden / set_rows_hidden on UserModel
  • xlsx in memory: to_xlsx_bytes on both APIs, load_from_xlsx_bytes and create_user_model_from_xlsx_bytes
  • fix a memory leak: every constructor leaked its string arguments on each call
  • package only README, CHANGELOG and licenses instead of every *.md

0.7.1.5

  • link to changelog and documentation in gemspec
  • update actions
  • work-around for yard bug

0.7.1.4

  • build for Ruby 4.0
  • push with attestation
  • include .yardopts

0.7.1.3

  • fix build-provenance and setup github releases

0.7.1.2

  • Ship precompiled native gems for common platforms (Linux, macOS, Windows), so installing no longer rebuilds the IronCalc engine from source
  • Publish via RubyGems Trusted Publishing with SigStore build provenance

0.7.1.1

  • Fix build: remove internal crate version

0.7.1.0

  • First release
  • Ruby bindings for the IronCalc spreadsheet engine (engine 0.7.1)
  • Raw API (IronCalc::Model) and user API (IronCalc::UserModel)
  • Load/save xlsx and the internal icalc binary format