Чтение YAML-файлов с использованием гепардов в C# - PullRequest
2 голосов
/ 11 февраля 2020

В моем приложении C# я пытаюсь прочитать файлы YAML, созданные в Python с использованием шаблона Cheetah . Файлы YAML выглядят так:

{% set name = "a_name" %}
{% set version = "1.2" %}

package:
  name: {{ name|lower }}
  version: {{ version }}

source:
  url: https://a_website.com/{{ version }}.tar.gz

Вот как я пытаюсь его проанализировать:

using YamlDotNet.RepresentationModel;

using var reader = new StreamReader(yaml_filename);
var yaml = new YamlStream();
yaml.Load(reader);

Используя этот код, я получаю сообщение об ошибке следующим образом:

найден символ, который не может запустить токен при сканировании следующего токена в строке 1 столбца 2

Ответы [ 2 ]

1 голос
/ 12 февраля 2020

Кажется, что вы пытаетесь прочитать шаблон гепарда, а не результат запуска гепарда против этого файла.

Если вы проверите файл с помощью валидатора, вы получите ошибку:

YAMLException: missed comma between flow collection entries at line 1,
column 2:
    {% set name = "a_name" %}
     ^

Если предположить, что% относится к гепарду, то решение сначала запускает гепард для этого файла, а затем загружает его.

Предполагается, что если вы снова запустите cheetah для этого файла, то конечный результат должен быть тем, что является допустимым файлом yaml, и должен иметь возможность корректной загрузки.

package:
  name: a_name
  version: 1.2

source:
  url: https://a_website.com/1.2.tar.gz
0 голосов
/ 11 февраля 2020

В настоящее время это сообщение об ошибке, которое они рассматривают, заменив более полезным:

В YAML табуляция не допускается для отступов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...