Skip to content

Latest commit

 

History

History
722 lines (601 loc) · 34.5 KB

CHANGELOG.md

File metadata and controls

722 lines (601 loc) · 34.5 KB

0.14.0 (31 July 2022)

What's Changed

  • Simplify string isAllWhitespace implementation by @LucianoPAlmeida in #235
  • Bump cocoapods-downloader from 1.5.1 to 1.6.3 by @dependabot in #239
  • Update link to project's GitHub Pages by @christopherweems in #240
  • Fix iOS 11 support warnings by @kikeenrique in #242
  • Make AnySequence public XMLDecodableSequence by @MaxDesiatov in #244

New Contributors

  • @LucianoPAlmeida made their first contribution in #235
  • @dependabot made their first contribution in #239
  • @christopherweems made their first contribution in #240
  • @kikeenrique made their first contribution in #242

Full Changelog: https://github.com/CoreOffice/XMLCoder/compare/0.13.1...0.14.0

0.13.1 (7 November 2021)

This is a bugfix release that fixes an edge case with the use of trimValueWhitespaces configuration on XMLDecoder, and adds official Windows support for users of Swift 5.5. Many thanks to @MartinP7r for multiple contributions to this release!

Closed issues:

  • Encoding an Attribute doesn't work anymore (#231)
  • How to "skip" certain XML tags / element in a TCX file (#227)
  • Encode element with empty key, no elements, and attributes (#224)

Merged pull requests:

0.13.0 (6 August 2021)

This release adds two new features and a bugfix.

Namely:

  • removeWhitespaceElements boolean flag on XMLDecoder allows removing elements that have purely whitespace content.
  • convertFromUppercase case on KeyDecodingStrategy allows converting ALL_CAPS_SNAKE_CASE to camelCase.
  • an edge case in intrinsic key value decoding has been fixed.

Many thanks to @huwr, @kneekey23, and @wooj2 for their contributions!

Closed issues:

  • Decoding special whitespace characters (#219)
  • Help with mix of attributes and elements (#212)

Merged pull requests:

  • Encode element with empty key, empty element, and attributes (#223) via @wooj2
  • Implement removeWhitespaceElements on XMLDecoder (#222) via @wooj2
  • Add convert from UPPERCASE decoding key strategy (#214) via @huwr

0.12.0 (26 January 2021)

This release adds a few new features. Namely:

  • New charactersEscapedInAttributes and charactersEscapedInElements properties on XMLEncoder that allow customizing how certain characters are escaped.
  • You can now override the implementation of TopLevelEncoder Combine protocol conformance when subclassing XMLEncoder.
  • New prettyPrintIndentation property on XMLEncoder, which can take XMLEncoder.PrettyPrintIndentation values such as .tabs(1) or .spaces(2).

Thanks to Kenta Kubo for the contribution!

Closed issues:

  • How to decode <itunes:episode> tags (#201)
  • Fail to build in Xcode 12 beta (#196)
  • Changing the root node name ? (#191)
  • " in XML element may not always be escaping (#187)
  • &#10; in XML attributes (#185)
  • " and &quot; are not decoded equally (#184)
  • Use 2 spaces instead of 4 when .prettyPrinted (#183)
  • (Help using) How to decode this XML? (#180)

Merged pull requests:

0.11.1 (3 May 2020)

This release fixes an issue, where non-string values used CDATA encoding. Thanks to @ksoftllc for reporting it!

Closed issues:

  • Non-string values are being encoded as CData (#178)
  • How to encode as an empty element (#177)

Merged pull requests:

0.11.0 (13 April 2020)

This is a bugfix and feature release, which fixes an issue with CDATA decoding and adds TopLevelEncoder conformance to XMLEncoder. New rootAttributes argument has been added to the encode function on XMLEncoder that allows adding attributes on root elements without adding them to your model types. Thanks to @portellaa, @Kirow and others for their contributions and bug reports!

Closed issues:

  • CDATA Decoding not working (#168)
  • Decode special XML Structure (#156)
  • Root level attributes don't get encoded back to attribute when converting back to XML file from Plist (#127)
  • Bad access error when running on device (#100)

Merged pull requests:

0.10.0 (4 April 2020)

This is a bugfix release, which improves encoding and decoding of enums with associated values (also known as "choice coding") with the XMLChoiceCodingKey protocol. This release is also tested on Xcode 11.4 and Swift 5.2.1 on Linux. A few breaking changes were introduced, which were needed to simplify and improve internals of the library. Please refer to the corresponding section below for more details. Thanks to @bwetherfield and @ultramiraculous for their contributions!

Breaking changes:

This change was needed to accommodate for multiple edges cases with how arrays of empty elements and empty strings are decoded.

The value intrinsic now only accepts the empty string key "", as the previous "value" key caused naming collisions with attributes and elemenents that had the same name.

Closed issues:

  • Bundle identifier in wrong format (#164)
  • Can inheritance be implemented? (#159)
  • EXC_BAD_ACCESS when running tests (#153)
  • EXC_BAD_ACCESS on XCode 11.2 and iOS13.2 (#150)
  • Date formatting on 24h region with display set to 12h (#148)
  • Decoding containers with (potentially)-empty elements (#123)

Merged pull requests:

0.9.0 (19 October 2019)

This release fixes a few bugs with Float type parsing and Swift 5.1 support on Linux. It also adds a helper extension to improve compatibility with Combine and adds a few tests to confirm that a few edges cases are working well. Thanks to @bwetherfield, @DJBen, @jsbean, @mxcl, @marcblanchet and @sharplet for bug reports and pull requests!

Implemented enhancements:

  • Conditionally conform to Combine.TopLevelDecoder #132 (sharplet)

Fixed bugs:

  • Value with copyright symbol © has its preceding whitespace trimmed off even trimValueWhitespaces is set to false #141
  • Float vs Float64=Double not parsing 3.14 #130

Closed issues:

  • TrackPoint position parameter is ignored #125
  • TCX file need an XML root node #124
  • [Swift 5.1] Import FoundationXML rather than Foundation #121

Merged pull requests:

0.8.0 (4 August 2019)

This release adds support for decoding and encoding ordered sequences of different elements as enums with associated values. In addition, XMLCoder now supports Linux. Many thanks to @jsbean, @bwetherfield and @drewag for implementing this!

Breaking changes:

  • Fixed typo in XMLDecoder property: errorContextLenght has been renamed to errorContextLength in #114.

Closed issues:

  • XML with autoclosed tags #116
  • Arrays of enums #91
  • Array of enums with associated values #25

Merged pull requests:

0.7.0 (2 July 2019)

This release changes the behavior of attributes coding: now order of XML attributes is fully preserved. One of the benefits is that it improves unit testing for users of XMLCoder, which allows testing against specific encoded attributes without accounting for their randomized order. Also a small coding style fix is included. In addition, XMLCoder now uses Azure Pipelines instead of Travis for CI with great improvements to overall CI stability, speed, and parallel builds. Thanks to Andrés Cecilia Luque and Jay Hickey for the contributions!

Merged pull requests:

0.6.0 (17 June 2019)

An improvement release that introduces convertFromKebabCase and convertToKebabCase key decoding strategies. There were a few changes that aren't visible to end-users: the way that keys and values are stored internally has changed and a few more tests added. Thanks to Andrés Cecilia Luque and Vincent Esche for the contributions!

Merged pull requests:

0.5.1 (2 May 2019)

Bugfix release that restores decoding of empty sequences, which became broken in 0.5.0.

Merged pull requests:

0.5.0 (2 May 2019)

A small improvement release tagged early to resolve blocking issues in CoreXLSX.

Notable changes:

  • Empty value strings are no longer decoded as nil when a String is expected, but are decoded as empty strings, which represents the actual value.
  • trimValueWhitespaces property was added on XMLDecoder, which allows overriding the default behaviour, where starting and trailing whitespaces are trimmed from string values.

Closed issues:

  • Trimmed whitespace on decoding String #94

Merged pull requests:

  • Fixed a bug when decoding a key with one character only #96 (@TheFlow95)
  • Add more cases to AttributedIntrinsicTest #95 (@MaxDesiatov)
  • Use map instead of mapValues/shuffle in XMLCoderElement.flatten #93 (@jsbean)
  • Fix decoding empty element as optional #92 (@MaxDesiatov)

0.4.1 (12 April 2019)

A bugfix release removing unused Xcode project scheme to improve build time for Carthage users.

Notable changes:

0.4.0 (8 April 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:

0.3.1 (6 February 2019)

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

Changes:

0.3.0 (22 January 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:

0.2.1 (18 November 2018)

  • watchOS deployment target set to 2.0 for Carthage (@MaxDesiatov)

0.2.0 (18 November 2018)

0.1.1 (18 November 2018)

0.1.0 (8 November 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)