gpt4 book ai didi

ruby - 为什么 YAML 解析器(syck 和 psych)的行为不同?

转载 作者:数据小太阳 更新时间:2023-10-29 07:36:48 25 4
gpt4 key购买 nike

看看这个案例:

ruby 1.9.2p0(2010-08-18 修订版 29036)[i686-linux]

irb(main):006:0> YAML::ENGINE.yamler = "psych"
=> "psych"

irb(main):007:0> '8902-20-13'.to_yaml
ArgumentError: invalid date
from /usr/local/lib/ruby/1.9.1/date.rb:1022:in `new_by_frags'
from /usr/local/lib/ruby/1.9.1/date.rb:1046:in `strptime'
from /usr/local/lib/ruby/1.9.1/psych/scalar_scanner.rb:45:in `tokenize'
from /usr/local/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:191:in `visit_String'
from /usr/local/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:63:in `accept'
from /usr/local/lib/ruby/1.9.1/psych/visitors/yaml_tree.rb:36:in `<<'
from /usr/local/lib/ruby/1.9.1/psych.rb:165:in `dump'
from /usr/local/lib/ruby/1.9.1/psych/core_ext.rb:13:in `psych_to_yaml'

irb(main):008:0> YAML::ENGINE.yamler = "syck"
=> "syck"

irb(main):009:0> '8902-20-13'.to_yaml
=> "--- \"8902-20-13\"\n"

当我在使用 psych 解析器时,我需要格式化一个隐约类似于日期的字符串,它会抛出异常,因为他认为这是一个日期字符串。使用syck不会出现这个问题。

有人知道吗?

最佳答案

Psych 几乎独立于 Syck,我不认为 Psych 的作者有兴趣成为 bug-compatible与赛克。我认为他们无论如何都实现了不同版本的 YAML 规范。

一个解决方法应该是在类似日期的数字周围放置字符串。

关于ruby - 为什么 YAML 解析器(syck 和 psych)的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com