Создать набор из строки элементов в Rego - PullRequest
0 голосов
/ 02 мая 2020

Как создать набор из строки на языке Re go Open Policy Agent?

У меня есть строка таких элементов, как "values": "pvc-volume,emptydir-volume,hostPath,ConfigMaps", какие элементы должны быть проверены на соответствие заданному набору допустимых значения

valid_backup_profiles := {
      "pvc-volume",
      "emptydir-volume"
    }

, например, с использованием пересечения

valid_backup_profiles & elements_coming_from_string_above

Мне известна функция split(string, ","), возвращающая массив элементов, но массив не может пересекаться с множеством , Есть ли какой-нибудь умный способ генерировать набор из строки вместо массива?

1 Ответ

1 голос
/ 02 мая 2020

Хитрость заключается в том, чтобы использовать заданное понимание :

s := {x |
  some i
  parts := split(string, ",")
  x := parts[i]
}

Вы можете сделать это в одну строку следующим образом, если хотите:

s := {x | x := split(string, ",")[_]}

Очевидно, что это красиво и компактно, но приведенную выше форму немного легче читать. Если вы хотите сделать логику c многоразовой, просто определите функцию:

split_csv_set(str) = {x |
  some i
  parts := split(str, ",")
  x := parts[i]
}
...