All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added support for parsing font tables (but not support for styling fonts yet).
- Added support for parsing color tables (but not support for styling colors yet).
- Added support for parsing stylesheets (but not support for styles yet).
- Moved character sets, font family, and special character control words into sub-directories.
- Updated the
Parse\ControlWord
service to detect control word sub-types and constructor arguments automatically.
- Fixed #11, where the conversion of an RTF document to plain text output the text in the header's font table, color table, and stylesheets too.
- Added support for document encoding. If a document defines a character set (i.e.,
\pc
,\pca
,\mac
) or it defines the\ansi
character set and a code page (e.g.,\ansicpg1252
), this library will use that character encoding to render non-ASCII characters.
- Fixed issue parsing apostrophe control symbol, where a conditional was using the wrong symbol name.
- Fixed issue parsing other tokens, where they caused a variable-not-defined exception to be thrown during parsing.
- Fixed #2, where the
Apostrophe
control symbol did not work correctly.
- Added support for PHP 7.4 and 8.0.
- Added continuous integration with CircleCI.
- Added code coverage analysis with CodeCov.
- Added coding standards with slevomat/coding-standard.
- Added vulnerability checking with roave/security-advisories.
- Modernized the library (i.e., add type hints, refactor big methods, move to services, add guard clauses, etc).
- Updated test suite from PHPUnit version 4 to version 9.
- Extended
jstewmc/stream
with custom methods to make lexing easier.
- Fixed #1, where the classnames in this library's PHPDoc comments were incorrect and prevented IDE code completion.
- Fixed #3, where installation instructions were missing from this library's README.
- Fix
\cxds
control word. The\cxds
control word should glue two words together without a space between them. However, up to now, it only deleted the previous space, not the spaces to either side.
- Add check for mismatched group-open and group-close tokens to
Parser
- Fix logic error in
Snippet
class
- Add
Snippet
class
- Add RTF-CRE control words
- Update
Document::read()
andDocument::load()
to use Jstewmc\Chunker. - Update lexing methods to use Jstewmc\Stream instead of character arrays:
- Replace
Token\Text::createFromSource()
withcreateFromStream()
- Replace
Token\Control\Word::createFromSource()
withcreateFromStream()
- Replace
Token\Control\Symbol::createFromSource()
withcreateFromStream()
- Update
Lexer::lex()
to use accept instance ofJstewmc\Stream\Stream
as argument instead of string
- Replace
Initial release