0.3.0
A maintenance release focused on fixing bugs, improving error reporting and overall internal architecture of the library. For this release we've started tracking test coverage and were able to increase it from 11.8% to 75.6%. 🎉 Thanks to @hodovani and @regexident for their work on improving test coverage in this release.
Additions
You can now set errorContextLength: UInt
property on XMLDecoder
instance, which will make it add a snippet of XML of at most this length from parser state when a parsing error occurs. This change was provided by @hodovani and can greatly help with attempts to parse invalid XML, where previously only a line and column number were reported.
Deprecations
NodeEncodingStrategies
was renamed to NodeEncodingStrategy
for consistency. NodeEncodingStrategies
is still available as a deprecated typealias, which will be removed in future versions. Thanks to @regexident for cleaning this up and providing many more changes in this release that make XMLCoder
better and easier to use.
Changes
- Add SwiftLint and fix linter errors (#35, @MaxDesiatov)
- Add single array element example to tests (#66, @MaxDesiatov)
- Remove generic encode/decode functions (#64, @hodovani)
- Change internal representation to ordered array of children (#55, @regexident)
- Keyed/unkeyed boxes as structs (#36, @regexident)
- Add dedicated benchmarking test suite (#34, @regexident)
- Add tests to increase test coverage (#63, @hodovani)
- Add tests for keyed and unkeyed int types (#62, @hodovani)
- Add test to case when error context size goes outside content size (#61, @hodovani)
- Specify Swift version for packaging, refine CI (#60, @MaxDesiatov)
- Add test for keyed Int types (#58, @hodovani)
- Fix missing trailing semicolon in character escapings (#59, @regexident)
- Increase test coverage (#56, @hodovani)
- Fix
RelationshipsTest.testDecoder
crash on failure (#50, @regexident) - Improve
XMLStackParserTests
to test against CDATA blocks (#51, @regexident) - Remove unnecessary use of
@available(…)
forOutputFormatting.sortedKeys
(#53, @regexident) - Fix decoding of arrays with optional elements (#48, @MaxDesiatov)
- Add Optional Error Context (#46, @hodovani)
- Install Carthage only in before_deploy on Travis (#47, @MaxDesiatov)
- Add coding style and test coverage to README.md (#44, @MaxDesiatov)
- Improve code coverage of auxiliary types (#43, @regexident)
- Improve code coverage of box types (#42, @regexident)
- Make error handling in
XMLDecoder
simpler & safer (#41, @regexident) - Unfold
guard … else
blocks to allow settingbreakpoints (#39, @regexident) - Cleanup throwing unit tests & add tests for missing values (#40, @regexident)
- Let compiler synthesize Equatable conformance for _XMLElement (#33, @jsbean)
- Apply SwiftFormat on CI runs (#32, @MaxDesiatov)
- Fix a bug with throws on
Encodable
encoding nothing (#31, @regexident) - Clean up
XMLElement
,ArrayBox
&DictionaryBox
(#28, @regexident) - Extract URL coding into
URLBox
with tests (#30, @regexident) - Remove use of explicit
internal
(#29, @regexident) - Clean up coding logic, improve box naming (#27, @regexident)
- Clean up
XMLStackParser
(#26, @regexident) - Overhaul internal representation, replacing
NS…
with…Box
types (#19, @regexident) - Added benchmark to RJI test suite (#20, @regexident)
- Fix generation of Jazy docs (#18, @MaxDesiatov)
- Added unit tests for array and dictionary properties (#7, @regexident)
- Moved
_XML…EncodingContainer
into their own files, matching decoder (#4, @regexident) - Convert
Sample XML
code to XCTest (#1, @MaxDesiatov) - Respect .sortedKeys option, add .swiftformat (@qmoya)
- Bring back
gem install cocoapods --pre
to Travis (@MaxDesiatov) - Add --verbose flag to
pod lib lint
in travis.yml (@MaxDesiatov) - Specify stable versions in the installation guide (@MaxDesiatov)
- Implement Travis CI deployment of Carthage archive (@MaxDesiatov)
- Add NodeEncodingStrategies typelias as deprecated (#9, @MaxDesiatov)
- Rename
NodeEncodingStrategies
to match other type names (#8, @regexident) - Consider node encoding strategy for values inside unkeyed containers (#2, @regexident)
- Run tests with coverage, upload to codecov.io (@MaxDesiatov)