Skip to content

Commit

Permalink
[ruby/psych] issue #443: quote Y and N when dumping
Browse files Browse the repository at this point in the history
  • Loading branch information
ColinDKelley authored and matzbot committed Jan 17, 2024
1 parent cf8fb94 commit 8ae24e6
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
2 changes: 1 addition & 1 deletion ext/psych/lib/psych/visitors/yaml_tree.rb
Expand Up @@ -267,7 +267,7 @@ def visit_String o
tag = 'tag:yaml.org,2002:str'
plain = false
quote = false
elsif o == 'y' || o == 'n'
elsif o == 'y' || o == 'Y' || o == 'n' || o == 'N'
style = Nodes::Scalar::DOUBLE_QUOTED
elsif @line_width && o.length > @line_width
style = Nodes::Scalar::FOLDED
Expand Down
9 changes: 9 additions & 0 deletions test/psych/test_string.rb
Expand Up @@ -24,10 +24,19 @@ def initialize
# "ambiguity" in the emitted document
def test_y_is_quoted
assert_match(/"y"/, Psych.dump("y"))
assert_match(/"Y"/, Psych.dump("Y"))
end

def test_n_is_quoted
assert_match(/"n"/, Psych.dump("n"))
assert_match(/"N"/, Psych.dump("N"))
end

def test_all_yaml_1_1_booleans_are_quoted
yaml_1_1_booleans = %w[y Y yes Yes YES n N no No NO true True TRUE false False FALSE on On ON off Off OFF] # from https://yaml.org/type/bool.html
yaml_1_1_booleans.each do |boolean|
assert_match(/"#{boolean}"|'#{boolean}'/, Psych.dump(boolean))
end
end

def test_string_with_newline
Expand Down

0 comments on commit 8ae24e6

Please sign in to comment.