Changelog History
Page 2
-
v0.5.1 Changes
May 02, 2019π Bugfix release that restores decoding of empty sequences, which became broken in 0.5.0.
π Merged pull requests:
- π Fix decoding of empty sequences #98 (@MaxDesiatov)
- β
Rename
flatten
totransformToBoxTree
, rename tests #97 (@MaxDesiatov)
-
v0.5.0 Changes
May 02, 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 aString
is expected, but are decoded as empty strings, which represents the actual value. trimValueWhitespaces
property was added onXMLDecoder
, 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 ofmapValues
/shuffle
inXMLCoderElement.flatten
#93 (@jsbean) - π Fix decoding empty element as optional #92 (@MaxDesiatov)
- Empty value strings are no longer decoded as
-
v0.4.1 Changes
April 12, 2019π A bugfix release removing unused Xcode project scheme to improve build time for Carthage users.
Notable changes:
- β Remove unused scheme in Xcode project (@MaxDesiatov)
-
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 implementedfunc 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 setshouldProcessNamespaces
property totrue
on yourXMLDecoder
instance for the prefix to be stripped before decoding keys in yourDecodable
types. - Previously it was possible to customize encoding with
NodeEncodingStrategy
, but no such type existed for decoding. A correspondingNodeDecodingStrategy
type was added withnodeDecodingStrategy
property onXMLDecoder
. - 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
andDynamicNodeDecoding
. - 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
- π Make value intrinsic smarter #89 (@MaxDesiatov)
- π¨ Refactor XMLCoderElement.flatten, add tests #88 (@MaxDesiatov)
- β Add separate lint stage to .travis.yml #87 (@MaxDesiatov)
- β Add multiple Xcode versions to Travis build matrix #86 (@MaxDesiatov)
- β Add DynamicNodeDecoding protocol #85 (@MaxDesiatov)
- π Improve tests and fix error context handling #84 (MaxDesiatov)
- Ordered encoding #82 (@MaxDesiatov)
- β Add
shouldProcessNamespaces
decoder property #81 (@MaxDesiatov) - π Fix nested attributed intrinsic #79 (@MaxDesiatov)
- π Fix compatibility with Swift 5.0 #77 (@MaxDesiatov)
- Attributed Intrinsic (value coding key) #73 (JoeMatt)
- π Dynamic node encoding + new formatters + various fixes #70 (@JoeMatt)
- β Add
NodeDecodingStrategy
, mirroringNodeEncodingStrategy
#45 (@regexident)
- π± 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
-
v0.3.1 Changes
February 06, 2019π A bugfix release that adds missing
CFBundleVersion
in generated framework'sInfo.plist
(#72 reported by @stonedauwg).π Changes:
- Set
CURRENT_PROJECT_VERSION
in project file (#74, @MaxDesiatov)
- Set
-
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 onXMLDecoder
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 toNodeEncodingStrategy
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 makeXMLCoder
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)
-
v0.2.1 Changes
November 18, 2018- π watchOS deployment target set to 2.0 for Carthage (@MaxDesiatov)
-
v0.2.0 Changes
November 18, 2018- β Add watchOS 2.0 deployment target (@MaxDesiatov)
-
v0.1.1 Changes
November 18, 2018- π Set iOS deployment target to 9.0 (@MaxDesiatov)
-
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)