js-yaml->解析红宝石类型

时间:2018-07-12 08:06:26

标签: javascript ruby yaml

我正在用JavaScript制作Ruby控制台,因此需要准确地将Ruby对象信息发送到渲染器进程。我决定使用YAML,因为在Ruby方面使用YAML非常容易,并且包含所有必需的信息。但是我总是出错。

采用以下红宝石:

[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'
                        ^

所以我希望这种情况正在发生,因为JavaScript中的YAML没有Ruby类型!我已经看到一种解决方案是创建新的YAML类型来处理这些数据:

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

但是,在理想的世界中,我不必定义每个单独的类型。在理想世界中,所有未知类型都将被视为相同(例如,与yaml序列相同),或者红宝石首先不会生成奇数红宝石类型。我可以解决这个问题而不必在JavaScript中定义每种Ruby类型吗?

1 个答案:

答案 0 :(得分:0)

看起来可以在 JS-YAML 中处理如下:handle_unknown_types.js

不会接受这个作为答案,因为 ruby​​-first 解决方案会更好。