All Versions
17
Latest Version
Avg Release Cycle
34 days
Latest Release
345 days ago

Changelog History
Page 2

  • v0.4.0 Changes

    April 08, 2019

    πŸš€ This is a release with plenty of new features that allow you to parse many more XML variations than previously. Compatibility with Xcode 10.2 and Swift 5.0 is also improved. A huge thank you to @JoeMatt and @regexident for their contributions, to @hodovani for maintaining the project, and to @Inukinator, @qmoya, @Ma-He, @khoogheem and @thecb4 for reporting issues during development!

    Notable changes

    • 🍱 Ordered encoding: this was one of the most requested changes and it's finally here! πŸŽ‰ Now both keyed and unkeyed elements are encoded in the exactly same order that was used in original containers. This is applicable to both compiler-generated encoding implementations (just reorder properties or cases in your CodingKeys enum if you have it) and manually implemented func encode(to: Encoder).
    • Stripping namespace prefix: now if your coding key string values contain an XML namespace prefix (e.g. prefix h in <h:td>Apples</h:td>), you can set shouldProcessNamespaces property to true on your XMLDecoder instance for the prefix to be stripped before decoding keys in your Decodable types.
    • Previously it was possible to customize encoding with NodeEncodingStrategy, but no such type existed for decoding. A corresponding NodeDecodingStrategy type was added with nodeDecodingStrategy property on XMLDecoder.
    • Thanks to the previous change, XMLCoder now provides two helper protocols that allow you to easily customize whether nodes are encoded and decoded as attributes or elements for conforming types: DynamicNodeEncoding and DynamicNodeDecoding.
    • Previously if you needed to decode or encode an XML element with both attributes and values, this was impossible to do with XMLCoder. Now with the addition of coding key value intrinsic, this is as easy as adding one coding key with a specific string raw value ("value" or empty string "" if you already have an XML attribute named "value").

    Closed issues

    • πŸ“œ Crash: Range invalid bounds in XMLStackParser.swift #83
    • Document DynamicNodeEncoding and attributed intrinsic #80
    • πŸ›  Fix nested attributed intrinsic #78
    • nodeEncodingStrategy #49
    • XmlEncoder: ordering of elements #17
    • Can’t reach an XML value #12

    πŸ”€ Merged pull requests

  • v0.3.1 Changes

    February 06, 2019

    πŸ›  A bugfix release that adds missing CFBundleVersion in generated framework's Info.plist (#72 reported by @stonedauwg).

    πŸ”„ Changes:

  • v0.3.0 Changes

    January 22, 2019

    πŸš€ 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(…) for OutputFormatting.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)
  • v0.2.1 Changes

    November 18, 2018
    • πŸš€ watchOS deployment target set to 2.0 for Carthage (@MaxDesiatov)
  • v0.2.0 Changes

    November 18, 2018
  • v0.1.1 Changes

    November 18, 2018
  • v0.1.0 Changes

    November 08, 2018
    • βž• Add support for decoupled, type-dependent node-encoding strategies (@regexident)
    • βž• Add missing visibility declarations (@regexident)
    • πŸ‘Œ Improve .gitignore and remove tracked *.xcuserdata files (@regexident)
    • πŸ–¨ Make XMLEncoder.OutputFormatting.prettyPrinted actually do something (@regexident)
    • βž• Add tvOS deployment target to podspec (@edc1591)
    • πŸ›  Fix Carthage command (@salavert)
    • πŸš€ Set deployment versions to allow older SDKs (@Lutzifer)
    • βž• Add Info.plist to allow Framework use in App Store Connect via Carthage (@Lutzifer)
    • Set CURRENT_PROJECT_VERSION (@Lutzifer)
    • βž• Add convertFromCapitalized strategy, simple test (@MaxDesiatov)
    • πŸ‘ Allow older iOS/tvOS deployment targets in podspec (@MaxDesiatov)