This project is a Swift port of the Taum's altered-deckfmt npm module.
A compact format to share deck lists for Altered TCG.
This binary format can be encoded to Base64URL to share decks in URL-safe codes. As an example, a reasonable deck list such as:
1 ALT_CORE_B_YZ_03_C
3 ALT_CORE_B_BR_16_R2
2 ALT_CORE_B_YZ_04_C
3 ALT_CORE_B_YZ_07_R1
1 ALT_CORE_B_BR_10_R2
1 ALT_CORE_B_MU_08_R2
3 ALT_CORE_B_YZ_06_C
2 ALT_CORE_B_YZ_11_C
1 ALT_CORE_B_YZ_12_C
3 ALT_CORE_B_YZ_14_C
3 ALT_CORE_B_BR_25_R2
3 ALT_CORE_B_YZ_19_C
1 ALT_CORE_B_BR_28_R2
3 ALT_CORE_B_MU_25_R2
3 ALT_CORE_B_YZ_21_C
3 ALT_CORE_B_YZ_22_C
2 ALT_CORE_B_YZ_24_C
1 ALT_CORE_B_YZ_26_C
1 ALT_CORE_B_YZ_25_C
Can be encoded into the string:
EBAk3DNQrEPHVKmIvGLLHMPONZvTFcuZvVPWLYHaHZA=
This project provides a Swift Package containing an API to encode of decode this format.
The format specification is available under the original project, see External documentation.
- Original altered-deckfmt repository
- Original altered-deckfmt format specification
- Base64URL specification
See Tests/altered-deckfmtTests/AlteredDeckFormatTests
for an example of using the basic API.
import AlteredDeckFormat
let myList = "1 ALT_CORE_B_YZ_03_C\n3 ALT_CORE_B_BR_16_R2 ..."
let base64URLDeck = try AlteredDeckFormat.encodeToBase64URL(myList)
print(base64URLDeck) // "EBAk3DNQrEPHVKmIvGLLHMPONZvTFcuZvVPWLYHaHZA="
import AlteredDeckFormat
let base64URLDeck = "EBAk3DNQrEPHVKmIvGLLHMPONZvTFcuZvVPWLYHaHZA="
let deckList = try AlteredDeckFormat.decodeFromBase64URL(base64URLDeck)
print(deckList) // "1 ALT_CORE_B_YZ_03_C\n3 ALT_CORE_B_BR_16_R2 ..."
Encode a deck list string into binary data using the altered-deckfmt.
AlteredDeckFormat.encode(_ deckListString: String) throws -> Data
Encode a deck list string into a base64URL string using the altered-deckfmt.
AlteredDeckFormat.encodeToBase64URL(_ deckListString: String) throws -> String
Errors
AlteredDeckFormat.ParseError.invalidFormat(faultyLine: String)
The deck list string contains at least an invalid line (that you can retrieve through faultyLine
parameter).
AlteredDeckFormat.ParseError.invalidIdentifier(faultyIdentifier: String)
The deck list string contains at least an invalid card identifier (that you can retrieve through faultyIdentifier
parameter).
AlteredDeckFormat.EncodeError.exceedMaxCardQuantity
One of the cards in the list exceed to maximum quantity of 65 copies.
AlteredDeckFormat.EncodeError.invalidCardIDInFaction
One of the cards in the list has an invalid ID in faction (allowed range: 0-32).
Decode binary data using the altered-deckfmt into a deck list string.
AlteredDeckFormat.decode(_ data: Data) throws -> String
Decode a base64URL string using the altered-deckfmt into a deck list string.
AlteredDeckFormat.decodeFromBase64URL(_ base64URLSafeString: String) throws -> String
Errors
AlteredDeckFormat.DecodeError.invalidFormat
The provided base64URL string is invalid.
AlteredDeckFormat.DecodeError.invalidVersion
The format version isn't supported.
AlteredDeckFormat.DecodeError.invalidCardSet
Data contains an unsupported card set value.
AlteredDeckFormat.DecodeError.invalidProduct
Data contains an unsupported product value.
AlteredDeckFormat.DecodeError.invalidFaction
Data contains an unsupported faction value.
AlteredDeckFormat.DecodeError.invalidRarity
Data contains an unsupported rarity value.