psych 5.2.6 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 05acbda06dbd35a8f8c87f1958f7cce8b49b4b62ff5a0031550239e6dda480d8
4
- data.tar.gz: 97a80f54e0892f89a402bfc907f8c00176a52298268282740870a96bea664a47
3
+ metadata.gz: c76501960d9e1f76da817745bcf5b6b5d34ba5f6c33802b742035682a5a062d3
4
+ data.tar.gz: dc5219b7de7a7fcde49f94123dbea690ce8fd31374ed5070f48a1b2a281c86bf
5
5
  SHA512:
6
- metadata.gz: c6f885777c68d13210936594f36b55789672e6cdce57a7cdfe711f42d076b84215a6fe7ff135e36bfd3d6e5eca0ac75b576cd654be8eff41ad7a6ffa26685fd8
7
- data.tar.gz: 3f701bf7fd4c95540e2e0bec5ec33e218c80211655f5b4aef4e30d6c9314ff16f38cc7f6d1505fc34bb1b840d837d715e000b5037a3c38f725738c927a8d3421
6
+ metadata.gz: 25a56e306eb46df408a9a0b34100e2f825adf8ae1dffeb85c4ce2ab35544c33a94de8c2a91d4e1a5f59c6cfeaa18ee1b97d53bc2d8536657f3d671344ba3827d
7
+ data.tar.gz: 63cd6890821bf311ca8bbce351e137390f592619eeb7bb912b8926cb6e31f22750e95ecd083eab392c62903095359acd1fff18623cb36d00eae195fabf4f7b10
data/README.md CHANGED
@@ -57,6 +57,16 @@ gem 'psych'
57
57
 
58
58
  JRuby ships with a pure Java implementation of Psych.
59
59
 
60
+ ## Release
61
+
62
+ We used the trusted publisher and [rubygems/release-gem](https://github.com/rubygems/release-gem) workflow.
63
+
64
+ We can release the new version with:
65
+
66
+ ```bash
67
+ git tag vXXX && git push origin vXXX
68
+ ```
69
+
60
70
  ## License
61
71
 
62
72
  Copyright 2009 Aaron Patterson, et al.
data/ext/psych/extconf.rb CHANGED
@@ -36,8 +36,11 @@ if yaml_source
36
36
  libyaml = "libyaml.#$LIBEXT"
37
37
  $cleanfiles << libyaml
38
38
  $LOCAL_LIBS.prepend("$(LIBYAML) ")
39
- else # default to pre-installed libyaml
40
- pkg_config('yaml-0.1')
39
+
40
+ # default to pre-installed libyaml
41
+ elsif pkg_config('yaml-0.1')
42
+ # found with pkg-config
43
+ else
41
44
  dir_config('libyaml')
42
45
  find_header('yaml.h') or abort "yaml.h not found"
43
46
  find_library('yaml', 'yaml_get_version') or abort "libyaml not found"
@@ -10,7 +10,11 @@ static VALUE build_exception(VALUE self, VALUE klass, VALUE mesg)
10
10
  {
11
11
  VALUE e = rb_obj_alloc(klass);
12
12
 
13
+ #ifdef TRUFFLERUBY
14
+ rb_exc_set_message(e, mesg);
15
+ #else
13
16
  rb_iv_set(e, "mesg", mesg);
17
+ #endif
14
18
 
15
19
  return e;
16
20
  }
@@ -24,12 +28,9 @@ static VALUE path2class(VALUE self, VALUE path)
24
28
  return rb_path_to_class(path);
25
29
  }
26
30
 
27
- static VALUE init_struct(VALUE self, VALUE data, VALUE attrs)
31
+ static VALUE init_data(VALUE self, VALUE data, VALUE values)
28
32
  {
29
- VALUE args = rb_ary_new2(1);
30
- rb_ary_push(args, attrs);
31
- rb_struct_initialize(data, args);
32
-
33
+ rb_struct_initialize(data, values);
33
34
  return data;
34
35
  }
35
36
 
@@ -42,7 +43,7 @@ void Init_psych_to_ruby(void)
42
43
  VALUE visitor = rb_define_class_under(visitors, "Visitor", rb_cObject);
43
44
  cPsychVisitorsToRuby = rb_define_class_under(visitors, "ToRuby", visitor);
44
45
 
45
- rb_define_private_method(cPsychVisitorsToRuby, "init_struct", init_struct, 2);
46
+ rb_define_private_method(cPsychVisitorsToRuby, "init_data", init_data, 2);
46
47
  rb_define_private_method(cPsychVisitorsToRuby, "build_exception", build_exception, 2);
47
48
  rb_define_private_method(class_loader, "path2class", path2class, 1);
48
49
  }
@@ -14,13 +14,9 @@ class Object
14
14
  end
15
15
  end
16
16
 
17
- if defined?(::IRB)
18
- require_relative 'y'
19
- end
20
-
21
17
  # Up to Ruby 3.4, Set was a regular object and was dumped as such
22
18
  # by Pysch.
23
- # Starting from Ruby 3.5 it's a core class written in C, so we have to implement
19
+ # Starting from Ruby 4.0 it's a core class written in C, so we have to implement
24
20
  # #encode_with / #init_with to preserve backward compatibility.
25
21
  if defined?(::Set) && Set.new.instance_variables.empty?
26
22
  class Set
@@ -45,8 +45,8 @@ module Psych
45
45
  # Convert this node to Ruby.
46
46
  #
47
47
  # See also Psych::Visitors::ToRuby
48
- def to_ruby(symbolize_names: false, freeze: false, strict_integer: false)
49
- Visitors::ToRuby.create(symbolize_names: symbolize_names, freeze: freeze, strict_integer: strict_integer).accept(self)
48
+ def to_ruby(symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true)
49
+ Visitors::ToRuby.create(symbolize_names: symbolize_names, freeze: freeze, strict_integer: strict_integer, parse_symbols: parse_symbols).accept(self)
50
50
  end
51
51
  alias :transform :to_ruby
52
52
 
@@ -27,10 +27,11 @@ module Psych
27
27
  attr_reader :class_loader
28
28
 
29
29
  # Create a new scanner
30
- def initialize class_loader, strict_integer: false
30
+ def initialize class_loader, strict_integer: false, parse_symbols: true
31
31
  @symbol_cache = {}
32
32
  @class_loader = class_loader
33
33
  @strict_integer = strict_integer
34
+ @parse_symbols = parse_symbols
34
35
  end
35
36
 
36
37
  # Tokenize +string+ returning the Ruby object
@@ -72,7 +73,7 @@ module Psych
72
73
  -Float::INFINITY
73
74
  elsif string.match?(/^\.nan$/i)
74
75
  Float::NAN
75
- elsif string.match?(/^:./)
76
+ elsif @parse_symbols && string.match?(/^:./)
76
77
  if string =~ /^:(["'])(.*)\1/
77
78
  @symbol_cache[string] = class_loader.symbolize($2.sub(/^:/, ''))
78
79
  else
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Psych
4
4
  # The version of Psych you are using
5
- VERSION = '5.2.6'
5
+ VERSION = '5.3.0'
6
6
 
7
7
  if RUBY_ENGINE == 'jruby'
8
8
  DEFAULT_SNAKEYAML_VERSION = '2.9'.freeze
@@ -12,9 +12,9 @@ module Psych
12
12
  ###
13
13
  # This class walks a YAML AST, converting each node to Ruby
14
14
  class ToRuby < Psych::Visitors::Visitor
15
- def self.create(symbolize_names: false, freeze: false, strict_integer: false)
15
+ def self.create(symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true)
16
16
  class_loader = ClassLoader.new
17
- scanner = ScalarScanner.new class_loader, strict_integer: strict_integer
17
+ scanner = ScalarScanner.new class_loader, strict_integer: strict_integer, parse_symbols: parse_symbols
18
18
  new(scanner, class_loader, symbolize_names: symbolize_names, freeze: freeze)
19
19
  end
20
20
 
@@ -219,7 +219,8 @@ module Psych
219
219
  revive_data_members(members, o)
220
220
  end
221
221
  data ||= allocate_anon_data(o, members)
222
- init_struct(data, **members)
222
+ values = data.members.map { |m| members[m] }
223
+ init_data(data, values)
223
224
  data.freeze
224
225
  data
225
226
 
data/lib/psych.rb CHANGED
@@ -269,10 +269,10 @@ module Psych
269
269
  # YAML documents that are supplied via user input. Instead, please use the
270
270
  # load method or the safe_load method.
271
271
  #
272
- def self.unsafe_load yaml, filename: nil, fallback: false, symbolize_names: false, freeze: false, strict_integer: false
272
+ def self.unsafe_load yaml, filename: nil, fallback: false, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true
273
273
  result = parse(yaml, filename: filename)
274
274
  return fallback unless result
275
- result.to_ruby(symbolize_names: symbolize_names, freeze: freeze, strict_integer: strict_integer)
275
+ result.to_ruby(symbolize_names: symbolize_names, freeze: freeze, strict_integer: strict_integer, parse_symbols: parse_symbols)
276
276
  end
277
277
 
278
278
  ###
@@ -320,13 +320,13 @@ module Psych
320
320
  # Psych.safe_load("---\n foo: bar") # => {"foo"=>"bar"}
321
321
  # Psych.safe_load("---\n foo: bar", symbolize_names: true) # => {:foo=>"bar"}
322
322
  #
323
- def self.safe_load yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false
323
+ def self.safe_load yaml, permitted_classes: [], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true
324
324
  result = parse(yaml, filename: filename)
325
325
  return fallback unless result
326
326
 
327
327
  class_loader = ClassLoader::Restricted.new(permitted_classes.map(&:to_s),
328
328
  permitted_symbols.map(&:to_s))
329
- scanner = ScalarScanner.new class_loader, strict_integer: strict_integer
329
+ scanner = ScalarScanner.new class_loader, strict_integer: strict_integer, parse_symbols: parse_symbols
330
330
  visitor = if aliases
331
331
  Visitors::ToRuby.new scanner, class_loader, symbolize_names: symbolize_names, freeze: freeze
332
332
  else
@@ -366,7 +366,7 @@ module Psych
366
366
  # Raises a TypeError when `yaml` parameter is NilClass. This method is
367
367
  # similar to `safe_load` except that `Symbol` objects are allowed by default.
368
368
  #
369
- def self.load yaml, permitted_classes: [Symbol], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false
369
+ def self.load yaml, permitted_classes: [Symbol], permitted_symbols: [], aliases: false, filename: nil, fallback: nil, symbolize_names: false, freeze: false, strict_integer: false, parse_symbols: true
370
370
  safe_load yaml, permitted_classes: permitted_classes,
371
371
  permitted_symbols: permitted_symbols,
372
372
  aliases: aliases,
@@ -374,7 +374,8 @@ module Psych
374
374
  fallback: fallback,
375
375
  symbolize_names: symbolize_names,
376
376
  freeze: freeze,
377
- strict_integer: strict_integer
377
+ strict_integer: strict_integer,
378
+ parse_symbols: parse_symbols
378
379
  end
379
380
 
380
381
  ###
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: psych
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.6
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Patterson
8
8
  - SHIBATA Hiroshi
9
9
  - Charles Oliver Nutter
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2025-05-12 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: stringio
@@ -112,7 +111,6 @@ licenses:
112
111
  metadata:
113
112
  msys2_mingw_dependencies: libyaml
114
113
  changelog_uri: https://github.com/ruby/psych/releases
115
- post_install_message:
116
114
  rdoc_options:
117
115
  - "--main"
118
116
  - README.md
@@ -129,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
127
  - !ruby/object:Gem::Version
130
128
  version: '0'
131
129
  requirements: []
132
- rubygems_version: 3.5.22
133
- signing_key:
130
+ rubygems_version: 3.6.9
134
131
  specification_version: 4
135
132
  summary: Psych is a YAML parser and emitter
136
133
  test_files: []