js-yaml -> Рубить рубиновые типы

Я создаю консоль Ruby в JavaScript и, следовательно, необходимо точно отправлять информацию о объекте Ruby в процесс рендеринга. Я решил использовать YAML, учитывая, что он очень прост в использовании YAML на стороне Ruby и содержит всю необходимую информацию. Но я все время получаю ошибки.

Возьмите следующий рубин:

[Test,Test.new].to_yaml

Это преобразуется в следующий YAML:

---
- !ruby/class 'Test'
- !ruby/object:Test {}

Когда я пытаюсь разобрать это, JS-YAMLмы получаем следующую ошибку:

unknown tag !<!ruby/class> at line 2, column 21:
    - !ruby/class 'Test'
                        ^

Поэтому я ожидаю, что это произойдет, потому что YAML в JavaScript не имеет типов Ruby! Я видел, что одним из решений является создание новых типов YAML для обработки этих данных:

var RubyClassType = new jsyaml.Type('!ruby/class', {
  kind: 'class'
});

Однако в идеальном мире я бы не стал определять каждый отдельный тип. В идеальном мире либо все неизвестные типы будут обрабатываться одинаково (например, как последовательности ямлов), либо рубин не будет генерировать нечетные типы рубинов в первую очередь. Могу ли я обойти эту проблему без необходимости определять каждый тип Ruby в JavaScript?

javascript,ruby,yaml,

2

Ответов: 0

js-yaml -> Рубить рубиновые типы

Я создаю консоль Ruby в JavaScript и, следовательно, необходимо точно отправлять информацию о объекте Ruby в процесс рендеринга. Я решил использовать YAML, учитывая, что он очень прост в использовании YAML на стороне Ruby и содержит всю необходимую информацию. Но я все время получаю ошибки.

Возьмите следующий рубин:

[Test,Test.new].to_yaml

Это преобразуется в следующий YAML:

---
- !ruby/class 'Test'
- !ruby/object:Test {}

Когда я пытаюсь разобрать это, JS-YAMLмы получаем следующую ошибку:

unknown tag !<!ruby/class> at line 2, column 21:
    - !ruby/class 'Test'
                        ^

Поэтому я ожидаю, что это произойдет, потому что YAML в JavaScript не имеет типов Ruby! Я видел, что одним из решений является создание новых типов YAML для обработки этих данных:

var RubyClassType = new jsyaml.Type('!ruby/class', {
  kind: 'class'
});

Однако в идеальном мире я бы не стал определять каждый отдельный тип. В идеальном мире либо все неизвестные типы будут обрабатываться одинаково (например, как последовательности ямлов), либо рубин не будет генерировать нечетные типы рубинов в первую очередь. Могу ли я обойти эту проблему без необходимости определять каждый тип Ruby в JavaScript?

02JavaScript, Ruby, YAML,
Похожие вопросы