mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
Switch yaml.Parser to parse binary scalars as Bytes (#1277)
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||
* Copyright © 2024-2025 Apple Inc. and the Pkl project authors. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -322,12 +322,13 @@ public final class ParserNodes {
|
||||
}
|
||||
}
|
||||
|
||||
// Pkl doesn't have a binary type, so parse as base64 string with whitespace removed
|
||||
private static class ConstructBinary implements ConstructNode {
|
||||
@Override
|
||||
public String construct(Node node) {
|
||||
public VmBytes construct(Node node) {
|
||||
var value = ((ScalarNode) node).getValue();
|
||||
return WHITESPACE.matcher(value).replaceAll("");
|
||||
var encoded = WHITESPACE.matcher(value).replaceAll("");
|
||||
var decoded = Base64.getDecoder().decode(encoded);
|
||||
return decoded.length == 0 ? VmBytes.EMPTY : new VmBytes(decoded);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -109,9 +109,16 @@ examples {
|
||||
parser.parse("!!timestamp 2001-12-15T02:59:43.1Z")
|
||||
}
|
||||
|
||||
// parsed as string because Pkl doesn't have a binary type
|
||||
["binary"] {
|
||||
parser.parse("!!binary dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==")
|
||||
parser.parse("!!binary AQID")
|
||||
parser.parse("!!binary 'AQID'")
|
||||
parser.parse("!!binary \"AQID\"")
|
||||
parser.parse("""
|
||||
!!binary |-
|
||||
AQID
|
||||
AQID
|
||||
AQID
|
||||
""")
|
||||
}
|
||||
|
||||
["string"] {
|
||||
@@ -195,6 +202,7 @@ examples {
|
||||
price : 2392.00
|
||||
tax : 251.42
|
||||
total: 4443.52
|
||||
logo: !!binary AQID
|
||||
comments: >
|
||||
Late afternoon is best.
|
||||
Backup contact is Nancy
|
||||
|
||||
@@ -97,7 +97,10 @@ examples {
|
||||
"2001-12-15T02:59:43.1Z"
|
||||
}
|
||||
["binary"] {
|
||||
"dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw=="
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3, 1, 2, 3, 1, 2, 3)
|
||||
}
|
||||
["string"] {
|
||||
null
|
||||
@@ -190,6 +193,7 @@ examples {
|
||||
}
|
||||
tax = 251.42
|
||||
total = 4443.52
|
||||
logo = Bytes(1, 2, 3)
|
||||
comments = "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,10 @@ examples {
|
||||
"2001-12-15T02:59:43.1Z"
|
||||
}
|
||||
["binary"] {
|
||||
"dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw=="
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3, 1, 2, 3, 1, 2, 3)
|
||||
}
|
||||
["string"] {
|
||||
null
|
||||
@@ -190,6 +193,7 @@ examples {
|
||||
}
|
||||
tax = 251.42
|
||||
total = 4443.52
|
||||
logo = Bytes(1, 2, 3)
|
||||
comments = "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +97,10 @@ examples {
|
||||
"2001-12-15T02:59:43.1Z"
|
||||
}
|
||||
["binary"] {
|
||||
"dGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw=="
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3)
|
||||
Bytes(1, 2, 3, 1, 2, 3, 1, 2, 3)
|
||||
}
|
||||
["string"] {
|
||||
null
|
||||
@@ -190,6 +193,7 @@ examples {
|
||||
}
|
||||
tax = 251.42
|
||||
total = 4443.52
|
||||
logo = Bytes(1, 2, 3)
|
||||
comments = "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338."
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user