diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2013-10-29 11:26:35 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2013-10-29 11:26:35 -0700 |
commit | 41152b94465765e77bf5c479e3d542339b61459f (patch) | |
tree | eaf4e2d7990a0f17e94c81ea5372fca607f90ed1 /lib/psych/visitors/yaml_tree.rb | |
parent | 2ffd057a29dc4fdec0f11697af260c4cfb4e3d84 (diff) | |
download | psych-41152b94465765e77bf5c479e3d542339b61459f.zip |
* ext/psych/lib/psych/visitors/yaml_tree.rb: make less garbage when
testing if a string is binary.
Diffstat (limited to 'lib/psych/visitors/yaml_tree.rb')
-rw-r--r-- | lib/psych/visitors/yaml_tree.rb | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb index 65cbba0..b469e2d 100644 --- a/lib/psych/visitors/yaml_tree.rb +++ b/lib/psych/visitors/yaml_tree.rb @@ -264,13 +264,6 @@ module Psych @emitter.scalar o._dump, nil, '!ruby/object:BigDecimal', false, false, Nodes::Scalar::ANY end - def binary? string - (string.encoding == Encoding::ASCII_8BIT && !string.ascii_only?) || - string.index("\x00") || - string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3 - end - private :binary? - def visit_String o plain = true quote = true @@ -380,6 +373,17 @@ module Psych end private + # FIXME: Remove the index and count checks in Psych 3.0 + NULL = "\x00" + BINARY_RANGE = "\x00-\x7F" + WS_RANGE = "^ -~\t\r\n" + + def binary? string + (string.encoding == Encoding::ASCII_8BIT && !string.ascii_only?) || + string.index(NULL) || + string.count(BINARY_RANGE, WS_RANGE).fdiv(string.length) > 0.3 + end + def visit_array_subclass o tag = "!ruby/array:#{o.class}" if o.instance_variables.empty? |