From 54fc2d3b1b5cb7441c54d4c8bbe28d9752767e5e Mon Sep 17 00:00:00 2001 From: George Romas Date: Fri, 25 Jun 2021 16:35:16 +0300 Subject: [PATCH 1/8] Japx.Decoder.Options to exclude relationships if it's empty --- Japx/Classes/Core/Japx.swift | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index 97ab798..b68c9c2 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -107,6 +107,14 @@ public extension Japx.Encoder { /// - Tag: includeMetaToCommonNamespce public var includeMetaToCommonNamespce: Bool = false + /// When set to `true` empty object will be encoded send `"relationships": {}` + /// When set to `false`field `relationships` will be removed if empty + /// + /// Defaults to false. + /// + /// - Tag: includeEmptyRelationships + public var includeEmptyRelationships: Bool = true + /// Creates an instance with the specified properties. /// /// - parameter includeMetaToCommonNamespce: Read more [here](includeMetaToCommonNamespce) @@ -520,7 +528,15 @@ private extension Japx.Encoder { object.removeValue(forKey: key) } object[Consts.APIKeys.attributes] = attributes - object[Consts.APIKeys.relationships] = relationships + + if relationships.isEmpty { + if options.includeEmptyRelationships { + object[Consts.APIKeys.relationships] = relationships + } + } else { + object[Consts.APIKeys.relationships] = relationships + } + return object } From 855705197f0d662f370c552f63c950004ef80f19 Mon Sep 17 00:00:00 2001 From: George Romas Date: Fri, 25 Jun 2021 16:50:34 +0300 Subject: [PATCH 2/8] Option description clarified --- Japx/Classes/Core/Japx.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index b68c9c2..904e0b1 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -107,10 +107,10 @@ public extension Japx.Encoder { /// - Tag: includeMetaToCommonNamespce public var includeMetaToCommonNamespce: Bool = false - /// When set to `true` empty object will be encoded send `"relationships": {}` - /// When set to `false`field `relationships` will be removed if empty + /// When set to `true` an empty relationships object will be send as empty JSON object `"relationships": {}`. + /// When set to `false` an empty object will be removed from the encoded data /// - /// Defaults to false. + /// Defaults to ture. Empty JSON object will be sent. /// /// - Tag: includeEmptyRelationships public var includeEmptyRelationships: Bool = true From 7bd3a6bd3bbabb4a2498f78bbb64062606aa7494 Mon Sep 17 00:00:00 2001 From: George Romas Date: Fri, 25 Jun 2021 17:14:10 +0300 Subject: [PATCH 3/8] Fix options constructor --- Japx/Classes/Core/Japx.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index 904e0b1..415e4fb 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -120,8 +120,9 @@ public extension Japx.Encoder { /// - parameter includeMetaToCommonNamespce: Read more [here](includeMetaToCommonNamespce) /// /// - returns: The new `Japx.Decoder.Options` instance. - public init(includeMetaToCommonNamespce: Bool = false) { + public init(includeMetaToCommonNamespce: Bool = false, includeEmptyRelationships: Bool = true) { self.includeMetaToCommonNamespce = includeMetaToCommonNamespce + self.includeEmptyRelationships = includeEmptyRelationships } } } From 7d36b9c333b75aac3f2201db1f8d6058bda5f2d0 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 23 Aug 2021 14:27:27 +0300 Subject: [PATCH 4/8] Fix typo Co-authored-by: Vlaho Poluta --- Japx/Classes/Core/Japx.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index 415e4fb..671c489 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -107,7 +107,7 @@ public extension Japx.Encoder { /// - Tag: includeMetaToCommonNamespce public var includeMetaToCommonNamespce: Bool = false - /// When set to `true` an empty relationships object will be send as empty JSON object `"relationships": {}`. + /// When set to `true` an empty relationships object will be send as empty JSON object `"relationships": {}`. /// When set to `false` an empty object will be removed from the encoded data /// /// Defaults to ture. Empty JSON object will be sent. From d07a7be46c60ed733eb1c7a63786eb5aa3365d84 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 23 Aug 2021 14:29:19 +0300 Subject: [PATCH 5/8] Condition improvement by @Truba Co-authored-by: Vlaho Poluta --- Japx/Classes/Core/Japx.swift | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index 671c489..b00ac8c 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -530,12 +530,8 @@ private extension Japx.Encoder { } object[Consts.APIKeys.attributes] = attributes - if relationships.isEmpty { - if options.includeEmptyRelationships { + if relationships.isNotEmpty || options.includeEmptyRelationships { object[Consts.APIKeys.relationships] = relationships - } - } else { - object[Consts.APIKeys.relationships] = relationships } return object From 9966b334f61551bdbe472082b387ab1996da3468 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 23 Aug 2021 15:12:05 +0300 Subject: [PATCH 6/8] Fix pseudo code implementation --- Japx/Classes/Core/Japx.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index b00ac8c..50f8028 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -530,7 +530,7 @@ private extension Japx.Encoder { } object[Consts.APIKeys.attributes] = attributes - if relationships.isNotEmpty || options.includeEmptyRelationships { + if !relationships.isEmpty || options.includeEmptyRelationships { object[Consts.APIKeys.relationships] = relationships } From 2db887cef0015ce509d7701494cc1916d66a2395 Mon Sep 17 00:00:00 2001 From: George Date: Mon, 23 Aug 2021 15:17:46 +0300 Subject: [PATCH 7/8] Code format --- Japx/Classes/Core/Japx.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index 50f8028..dffa975 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -531,7 +531,7 @@ private extension Japx.Encoder { object[Consts.APIKeys.attributes] = attributes if !relationships.isEmpty || options.includeEmptyRelationships { - object[Consts.APIKeys.relationships] = relationships + object[Consts.APIKeys.relationships] = relationships } return object From aec62424d2bb96ed737d54f36be245d8904a41eb Mon Sep 17 00:00:00 2001 From: George Date: Thu, 2 Sep 2021 16:35:59 +0300 Subject: [PATCH 8/8] Update Japx/Classes/Core/Japx.swift Co-authored-by: Filip Gulan --- Japx/Classes/Core/Japx.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Japx/Classes/Core/Japx.swift b/Japx/Classes/Core/Japx.swift index dffa975..d3bd18c 100644 --- a/Japx/Classes/Core/Japx.swift +++ b/Japx/Classes/Core/Japx.swift @@ -110,7 +110,7 @@ public extension Japx.Encoder { /// When set to `true` an empty relationships object will be send as empty JSON object `"relationships": {}`. /// When set to `false` an empty object will be removed from the encoded data /// - /// Defaults to ture. Empty JSON object will be sent. + /// Defaults to `true`. Empty JSON object will be sent. /// /// - Tag: includeEmptyRelationships public var includeEmptyRelationships: Bool = true