Skip to content

Releases: patrickomatic/csv-plus-plus

v0.8.0

15 Nov 22:53
v0.8.0
Compare
Choose a tag to compare

v0.8.0

Features

  • Slashes are no longer needed to separate cell options
    • [[text=bold halign=left]] is now equivalent to [[text=bold/halign=left]].
  • Support for multi-line cells
  • Support for text wrapping cell option (i.e. [[wrap=clip]] to clip the text in a cell)
  • csv++ User Guide
  • Switch to custom CSV parser (csvp)
  • Switch from CBOR to bincode for object file serialization

Breaking Changes

  • Added enum variant Error::CsvParseError
  • Renamed Options to Config
  • Modules made crate-private:
    • BorderSide
    • BorderStyle
    • Cell
    • Config
    • Fill
    • HorizontalAlign
    • NumberFormat
    • Output
    • CompilationTarget
    • TextFormat
    • VerticalAlign

Deprecated Features

  • You should no longer use / to separate cell options

v0.7.0

25 Oct 02:20
v0.7.0
Compare
Choose a tag to compare

v0.7.0

Features

  • Build a statically-linked x86_64-unknown-linux-musl and aarch64-unknown-linux-musl for people
    who are on a system with an outdated glibc
  • Quoting rules for single and double quoted strings have changed to align with OpenFormula and how
    popular spreadsheet programs do it. Rather than using a backslash like "a \"quote\"" or
    'a \'quote\'' you just double the character. So "a ""quote""" and 'a ''quote'''.
  • Builds for more platforms:
    • aarch64-unknown-linux-musl
    • i686-unknown-linux-gnu
    • i686-unknown-linux-musl
    • i686-pc-windows-gnu
    • x86_64-unknown-linux-musl
  • Switch from a1_notation crate to a1

Bugfixes

  • Fix a bug causing double-quoted strings (i.e, ""foo"")

Breaking Changes

  • Double-quoted strings now use double-quote ("") to escape a single-quote. Previously it used
    \" to escape.

v0.6.1

13 Feb 03:25
v0.6.1
Compare
Choose a tag to compare

Features

  • Allow for a single infinite fill but any number of finite fills before and after it
  • Support % postfix operator
  • Support = comparison operator
  • Support + prefix operator

Bugfixes

  • Fix bug where styles weren't being applied to Excel files
  • Fix a bug where the spreadsheet was not getting re-compiled if a .csvpo file existed
  • Fix quoted in_list validations like validate=in_list('foo bar', 'bar foo')
  • Fix </<=/>/>= lexing
  • Don't allow (throw an error) if there are multiple infinite fills

Breaking Changes

Dependency Updates

  • umya-spreadsheet to v1.2.0
  • env_logger to v0.11.1

v0.6.0

15 Jan 19:23
v0.6.0
Compare
Choose a tag to compare

v0.6.0

Features

  • Eval rows in parallel
  • Support for backing up on Google Sheets
  • Dates, times and datetimes are now tz-unaware

Bugfixes

  • Fix fills being evaluated every time they're loaded from a .csvpo cache (and blowing up the
    resulting spreadsheet)
  • The main module will always use it's csvpo cache when possible
  • Fixes a potential overflow when calculating fills past row 1000

Breaking Changes

  • DateTime no longer supports a variant with fixed TZ offset
  • Various functions on Fill made crate-private
  • Removed Error::ObjectCodeError variant

v0.5.1

29 Dec 19:22
v0.5.1
Compare
Choose a tag to compare

v0.5.1

Features

  • Generate and use csvpo cache files (increase compilation speed)
  • Ugprade umya-spreadsheet to v1.1.1
  • Deprecate Error::ObjectCodeError

Bugfixes

  • Fix leaking of namespaces from dependencies making their way into the dependent. Only exported
    symbols should have been propagated
  • Fix evaluation of variables dependent on variables from another file
  • Fix lexing of the fn keyword in places like fn fn_name where the "fn" part is repeated twice

v0.5.0

23 Dec 14:54
v0.5.0
Compare
Choose a tag to compare

Features

  • use statement for importing code from other files
  • Using object code files (.csvpo) during compilation
  • Allow for . characters in a function name
  • Support various levels of verbosity by repeating -v (i.e., -vvvv)
  • Improved error messages for syntax errors in cells
  • Use a proper logger (env_logger) and tune output according to the -v[vvv] flag
  • Code coverage reporting
  • Tooling to run benchmarks

Bugfixes

  • Fix unfriendly error when calling a function with the wrong number of arguments

Breaking (Language) Changes

  • All builtin variables & functions are removed. All of the functionality provided by them could be done with native spreadsheet functions anyway. And we're adding support for module loading which means they could just be implemented as a lib instead.
  • Rename ![[expand]] to ![[fill]] and all related code references
  • Rename [[format]] to [[text]]
  • Rename Template to Module
  • Rename CodeSection to Scope
  • Rename Error::ObjectWriteError to Error::ObjectCodeError
  • Template.write_object_file made crate-private
  • Error::EvalError changed

v0.4.1

08 Nov 02:20
v0.4.1
Compare
Choose a tag to compare

Features

  • data validations via the validate=... syntax
  • Google Sheets API access via user accounts (which previously required service accounts)
  • More clear and colored error messages throughout
  • Dates assume local TZ if not specified

Bugfixes

  • Variables defined on rows (i.e., ![[var=this_row]],=this_row) weren't being evaluated to the correct results
  • Expands were incorrectly filling into the rows below them, only for excel
  • More consistent parsing of dates
  • Fix line count in syntax error messages

Breaking Changes

  • Various parser classes made crate-private

v0.4.0

12 Oct 22:29
v0.4.0
Compare
Choose a tag to compare

v0.4.0

Features

  • Ability to reference variables defined in an expand, outside of an expand. If they're referenced inside an expand they'll resolve to their exact location, otherwise they resolve to the range represented by that column in the range.
  • Support for ![[var=...]] both in and outside expands. They'll reference either a row (if defined outside an expand), a row relative to the expand (if defined and referenced in an expand) or the entire row range of the expand (if defined in an expand and referenced outside it).
  • Much better error reporting - pretty much everything now includes some contextual code highlighting
  • Excel: note support
  • More useful -v/--verbose output

Bugfixes

  • Fix cellabove/cellbelow/celladjacent to all take columns (A/B/C/etc)
  • Reading and writing CSV with inconsistent column lengths would fail
  • Trim leading and trailing spaces on input CSV
  • Excel: Fix workbooks being created with an empty first sheet
  • Excel: Fix background/foreground coloring

Breaking Changes

  • A lot of functions and structs made pub(crate) privacy
  • Error classes significantly refactored

v0.3.0

10 Sep 20:42
v0.3.0
6c0b016
Compare
Choose a tag to compare

Complete rewrite in Rust. This provides:

  • hand-written parser which gives us better error messaging
  • much faster
  • better types
  • short-hand notation for modifiers
  • can build binaries for various platforms

0.2.0

15 May 12:59
Compare
Choose a tag to compare

Breaking changes:

  • Remove the $$ operator - now you can just reference anything and it will either be resolved or left alone in the final input.

Features:

  • Proper merging of values in the spreadsheet being written to. Imagine you compile a spreadsheet then insert some values, then edit the csvpp template and compile again - in the previous versions we'd drop the inserted values and now it plays nicely and preserves them.
  • More generous spacing in the CSV section - reflected in the example in the README, you can now have spacing between the separators allowing you to line things up visually