Releases: patrickomatic/csv-plus-plus
Releases · patrickomatic/csv-plus-plus
v0.8.0
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
toConfig
- 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
v0.7.0
Features
- Build a statically-linked
x86_64-unknown-linux-musl
andaarch64-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 toa1
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
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 likevalidate=in_list('foo bar', 'bar foo')
- Fix
</<=/>/>=
lexing - Don't allow (throw an error) if there are multiple infinite fills
Breaking Changes
- Operator precedence has changed to match the OpenFormula spec
Dependency Updates
umya-spreadsheet
to v1.2.0env_logger
to v0.11.1
v0.6.0
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
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 likefn fn_name
where the "fn" part is repeated twice
v0.5.0
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
toModule
- Rename
CodeSection
toScope
- Rename
Error::ObjectWriteError
toError::ObjectCodeError
Template.write_object_file
made crate-privateError::EvalError
changed
v0.4.1
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
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
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
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