psych 1.2.1 → 1.2.2.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,9 @@
1
+ Fri Sep 2 04:05:25 2011 Aaron Patterson <aaron@tenderlovemaking.com>
2
+
3
+ * ext/psych/lib/psych/visitors/yaml_tree.rb: emit strings tagged as
4
+ ascii-8bit as binary in YAML.
5
+ * test/psych/test_string.rb: corresponding test.
6
+
1
7
  Thu Aug 25 06:11:35 2011 Aaron Patterson <aaron@tenderlovemaking.com>
2
8
 
3
9
  * ext/psych/lib/psych/nodes/node.rb: default `to_yaml` encoding to be
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ require "rake/extensiontask"
13
13
 
14
14
  Hoe.plugin :debugging, :doofus, :git, :gemspec
15
15
 
16
- Hoe.spec 'psych' do
16
+ $hoe = Hoe.spec 'psych' do
17
17
  developer 'Aaron Patterson', 'aaron@tenderlovemaking.com'
18
18
 
19
19
  self.extra_rdoc_files = Dir['*.rdoc']
@@ -37,6 +37,11 @@ Hoe.add_include_dirs('.:lib/psych')
37
37
 
38
38
  task :test => :compile
39
39
 
40
+ task :hack_spec do
41
+ $hoe.spec.extra_rdoc_files.clear
42
+ end
43
+ task 'core:spec' => [:hack_spec, 'gem:spec']
44
+
40
45
  desc "merge psych in to ruby trunk"
41
46
  namespace :merge do
42
47
  basedir = File.expand_path File.dirname __FILE__
@@ -90,7 +90,7 @@ require 'psych/json'
90
90
 
91
91
  module Psych
92
92
  # The version is Psych you're using
93
- VERSION = '1.2.1'
93
+ VERSION = '1.2.2.rc1'
94
94
 
95
95
  # The version of libyaml Psych is using
96
96
  LIBYAML_VERSION = Psych.libyaml_version.join '.'
@@ -1,5 +1,9 @@
1
1
  require 'psych/scalar_scanner'
2
2
 
3
+ unless defined?(Regexp::NOENCODING)
4
+ Regexp::NOENCODING = 32
5
+ end
6
+
3
7
  module Psych
4
8
  module Visitors
5
9
  ###
@@ -214,12 +214,19 @@ module Psych
214
214
  end
215
215
  end
216
216
 
217
+ def binary? string
218
+ string.encoding == Encoding::ASCII_8BIT ||
219
+ string.index("\x00") ||
220
+ string.count("\x00-\x7F", "^ -~\t\r\n").fdiv(string.length) > 0.3
221
+ end
222
+ private :binary?
223
+
217
224
  def visit_String o
218
225
  plain = false
219
226
  quote = false
220
227
  style = Nodes::Scalar::ANY
221
228
 
222
- if o.index("\x00") || o.count("\x00-\x7F", "^ -~\t\r\n").fdiv(o.length) > 0.3
229
+ if binary?(o)
223
230
  str = [o].pack('m').chomp
224
231
  tag = '!binary' # FIXME: change to below when syck is removed
225
232
  #tag = 'tag:yaml.org,2002:binary'
@@ -304,11 +311,27 @@ module Psych
304
311
  end
305
312
 
306
313
  private
307
- def format_time time
308
- if time.utc?
309
- time.strftime("%Y-%m-%d %H:%M:%S.%9N Z")
310
- else
311
- time.strftime("%Y-%m-%d %H:%M:%S.%9N %:z")
314
+ # '%:z' was no defined until 1.9.3
315
+ if RUBY_VERSION < '1.9.3'
316
+ def format_time time
317
+ formatted = time.strftime("%Y-%m-%d %H:%M:%S.%9N")
318
+
319
+ if time.utc?
320
+ formatted += " Z"
321
+ else
322
+ zone = time.strftime('%z')
323
+ formatted += " #{zone[0,3]}:#{zone[3,5]}"
324
+ end
325
+
326
+ formatted
327
+ end
328
+ else
329
+ def format_time time
330
+ if time.utc?
331
+ time.strftime("%Y-%m-%d %H:%M:%S.%9N Z")
332
+ else
333
+ time.strftime("%Y-%m-%d %H:%M:%S.%9N %:z")
334
+ end
312
335
  end
313
336
  end
314
337
 
@@ -145,7 +145,7 @@ module Psych
145
145
  end
146
146
 
147
147
  class YamlAs
148
- yaml_as 'helloworld'
148
+ psych_yaml_as 'helloworld' # this should be yaml_as but to avoid syck
149
149
  end
150
150
 
151
151
  def test_yaml_as
@@ -2,6 +2,14 @@ require 'psych/helper'
2
2
 
3
3
  module Psych
4
4
  class TestString < TestCase
5
+ def test_tagged_binary_should_be_dumped_as_binary
6
+ string = "hello world!"
7
+ string.force_encoding 'ascii-8bit'
8
+ yml = Psych.dump string
9
+ assert_match(/binary/, yml)
10
+ assert_equal string, Psych.load(yml)
11
+ end
12
+
5
13
  def test_binary_string_null
6
14
  string = "\x00"
7
15
  yml = Psych.dump string
metadata CHANGED
@@ -1,13 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: psych
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
4
+ hash: 15424007
5
+ prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
+ - 2
10
+ - rc
9
11
  - 1
10
- version: 1.2.1
12
+ version: 1.2.2.rc1
11
13
  platform: ruby
12
14
  authors:
13
15
  - Aaron Patterson
@@ -15,7 +17,7 @@ autorequire:
15
17
  bindir: bin
16
18
  cert_chain: []
17
19
 
18
- date: 2011-08-24 00:00:00 Z
20
+ date: 2011-10-03 00:00:00 Z
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  name: rake-compiler
@@ -176,16 +178,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
178
  required_rubygems_version: !ruby/object:Gem::Requirement
177
179
  none: false
178
180
  requirements:
179
- - - ">="
181
+ - - ">"
180
182
  - !ruby/object:Gem::Version
181
- hash: 3
183
+ hash: 25
182
184
  segments:
183
- - 0
184
- version: "0"
185
+ - 1
186
+ - 3
187
+ - 1
188
+ version: 1.3.1
185
189
  requirements: []
186
190
 
187
191
  rubyforge_project: psych
188
- rubygems_version: 1.8.8
192
+ rubygems_version: 1.8.10
189
193
  signing_key:
190
194
  specification_version: 3
191
195
  summary: Psych is a YAML parser and emitter