Support parsing multiple levels descriptors (#325)

* [descriptor] fix parser to support multiple levels descriptors

* add andTokenSize constant
This commit is contained in:
Louis Singer
2024-09-20 15:20:57 +02:00
committed by GitHub
parent 9e3d667b51
commit 877b7d38cd
3 changed files with 169 additions and 12 deletions

View File

@@ -11,6 +11,9 @@ const UnspendableKey = "0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f281
func ParseTaprootDescriptor(desc string) (*TaprootDescriptor, error) {
desc = strings.ReplaceAll(desc, " ", "")
desc = strings.ReplaceAll(desc, "\n", "")
desc = strings.ReplaceAll(desc, "\t", "")
desc = strings.ReplaceAll(desc, "\r", "")
if !strings.HasPrefix(desc, "tr(") || !strings.HasSuffix(desc, ")") {
return nil, fmt.Errorf("invalid descriptor format")
@@ -93,6 +96,8 @@ func splitScriptTree(scriptTreeStr string) ([]string, error) {
for _, char := range scriptTreeStr {
switch char {
case '{', '}':
continue
case '(':
depth++
current.WriteRune(char)