ovba 0.4.0

An Office VBA project parser written in 100% safe Rust.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 0.X.Y releases attempt to communicate breaking changes by a bump in the 0.X version number, while non-breaking changes increment the Y version number only, leaving the X version number unchanged.

## [Unreleased]

### Added
### Changed
### Deprecated
### Removed
### Fixed
### Security

## [0.4.0] - 2020-12-07

This release primarily introduces convenience implementations. Additions and removals of `error::Error` variants make this a breaking change.

### Added

* `Project::module_source_raw()`: Convenience implementation to return a module's source code (raw codepage encoding).
* `Project::module_source()`: Convenience implemention to return a module's source code converted to UTF-8 encoding.
* `error::Error::ModuleNotFound`. This is used for public functions that identify modules by name.

### Changed

* Restructured documentation to list module source extraction examples first.

### Removed

* `error::Error::Unknown`: This used to be the catch-all variant. This has been a just-in-case fallback that turned out to never have been used any. It's gone now.

## [0.3.0] - 2020-12-03

This release addresses usability issues:

* Previously, `Project`'s associated functions mostly required `&mut self` access. This is a result of exposing implementation details. This requirement has been relaxed, and `Project`'s entire public API requires `&self` access only.
* The whole `ProjectInformation` dance on `Project::information()?` has been flattened into the `Project` struct.

  This makes code like `proj.information()?.information` a thing of the past, at the expense of slightly more parsing during `open_project`. This is entirely acceptable, given that a parse error now is no worse than a parse error later.

### Added

Internal improvements:

* Set up continuous integration workflow.
* Added tests to verify some finicky decompressor internals.

### Changed

* Moved `Project::information()?` to `Project::information`.
* Removed `mut` from `Project`'s public API.

## [0.2.0] - 2020-11-30

### Changed

* Changed `Module::text_offset` from `u32` to `usize`.

### Removed

Breaking changes:

* `Module`:
  * `name_unicode`
  * `stream_name_unicode`
  * `doc_string_unicode`
  * `cookie`

Non-breaking changes:

* `Information`
  * `doc_string_unicode`
  * `help_file_2`
  * `constants_unicode`
* `ReferenceProject`
  * `name.1`
* `ReferenceRegistered`
  * `name.1`
* `ReferenceOriginal`
  * `name.1`
* `ReferenceControl`
  * `name.1`
  * `name_extended.1`

## [0.1.0] - 2020-11-29

### Added

- VBA project parser.
- RLE decompressor for compressed streams.

[Unreleased]: https://github.com/tim-weis/ovba/compare/0.4.0...HEAD
[0.4.0]: https://github.com/tim-weis/ovba/compare/0.3.0...0.4.0
[0.3.0]: https://github.com/tim-weis/ovba/compare/0.2.0...0.3.0
[0.2.0]: https://github.com/tim-weis/ovba/compare/0.1.0...0.2.0
[0.1.0]: https://github.com/tim-weis/ovba/compare/827d416...0.1.0