hashstruct 1.3.1 → 1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 015c8589bd7af72a393ec494cf5c044adc9b45170d09f8c7207027c0450aae34
4
- data.tar.gz: 23ec8d2a0848ecfbb212cd68694ca2e151559c35e640e7c78bc930e948d813be
3
+ metadata.gz: 2859100ae0f6c106591cc4319e4748ef00dabc6fbc54fa44f0cd1cd9c8a56d4e
4
+ data.tar.gz: 0e26a1dde2d422f4ece4f61fa1aceb03fd394afcf7a0c85fe2bba3f1bbb3b4c5
5
5
  SHA512:
6
- metadata.gz: 8403282f22c80051296c10a65c17b4b9398288859d40c2ca10c41db2d26ccd9429a5c0ea0a90fe3c678f71c3f68f53c0ed9c5b2ea9e9d94a6f7258de394150c6
7
- data.tar.gz: 645ca574efb7cd3e93eec60dc78e48a29070861db6f4f4a6406ecdfac0f53e9e97c7376b8b93bff0b023d63f9dbd4301e86748c20fbea4f89aa4c3b59d4ccfbf
6
+ metadata.gz: eabd38283c9d2f0750feb25b7a69bdf2264c1a76cd369ddbf22973561fb3239747a39312c1d159f20442634bf600f3ed24555e3537ed0d577515bee7969714ec
7
+ data.tar.gz: 35d432323b4379676faf24b8bd00e221b033cc258705b761639712b146155cc3be22eb2b1ec07a21015effb35e8761f39472b103e2338b63c7f0cea7d03c49d1
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  .DS_Store
2
+ Gemfile.lock
2
3
  *.gem
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Rakefile CHANGED
@@ -1,2 +1,9 @@
1
- require 'rubygems/tasks'
2
- Gem::Tasks.new
1
+ require 'bundler/gem_tasks'
2
+ Bundler.require
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.test_files = FileList['test/*test.rb']
7
+ end
8
+
9
+ task :default => :test
data/hashstruct.gemspec CHANGED
@@ -1,10 +1,6 @@
1
- #encoding: utf-8
2
-
3
- require_relative 'lib/hashstruct/version'
4
-
5
1
  Gem::Specification.new do |s|
6
2
  s.name = 'hashstruct'
7
- s.version = HashStruct::VERSION
3
+ s.version = '1.4'
8
4
  s.summary = 'Overly helpful magic hash structure.'
9
5
  s.author = 'John Labovitz'
10
6
  s.email = 'johnl@johnlabovitz.com'
@@ -20,6 +16,5 @@ Gem::Specification.new do |s|
20
16
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
21
17
  s.require_path = 'lib'
22
18
 
23
- s.add_development_dependency 'rake', '~> 12.3'
24
- s.add_development_dependency 'rubygems-tasks', '~> 0.2'
19
+ s.add_development_dependency 'rake', '~> 13.0'
25
20
  end
data/lib/hashstruct.rb CHANGED
@@ -9,22 +9,12 @@ class HashStruct < Hash
9
9
  end
10
10
 
11
11
  def [](key)
12
- key = key.to_sym
13
- if methods.include?(key)
14
- method(key).call
15
- elsif has_key?(key)
16
- fetch(key)
17
- else
18
- nil
19
- end
12
+ key = make_key(key)
13
+ has_key?(key) ? fetch(key) : nil
20
14
  end
21
15
 
22
16
  def []=(key, value)
23
- if methods.include?(:"#{key}=")
24
- method(:"#{key}=").call(convert_object(value))
25
- else
26
- store(key.to_s.to_sym, convert_object(value))
27
- end
17
+ store(make_key(key), convert_object(value))
28
18
  end
29
19
 
30
20
  def method_missing(method_id, *args)
@@ -32,13 +22,17 @@ class HashStruct < Hash
32
22
  if method_name =~ /=$/
33
23
  raise ArgumentError, "wrong number of arguments for method #{method_name.inspect} (#{args.length} for 1)", caller(1) if args.length != 1
34
24
  raise TypeError, "can't modify frozen #{self.class}", caller(1) if self.frozen?
35
- self[method_name.chop.to_sym] = args.first
25
+ self[method_name.chop] = args.first
36
26
  else
37
27
  raise ArgumentError, "wrong number of arguments (#{args.length} for 0)", caller(1) if args.length != 0
38
28
  self[method_id]
39
29
  end
40
30
  end
41
31
 
32
+ def make_key(obj)
33
+ obj.to_s.downcase.to_sym
34
+ end
35
+
42
36
  def convert_object(obj)
43
37
  case obj
44
38
  when String
@@ -62,11 +56,10 @@ class HashStruct < Hash
62
56
  when %r{^(\d+)/(\d+)$}
63
57
  Rational($1.to_i, $2.to_i)
64
58
  # date
65
- when %r{^\d{4}-\d{2}-\d{2}}, # 2010-06-06
66
- %r{^\d{1,2}/\d{1,2}/\d{4}}, # 06/06/2010
67
- %r{^\d{4}/\d{1,2}/\d{1,2}}, # 2010/06/06
68
- %r{^(Sun|Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s*\d*\s*\b(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\b} # Sun, 06 Jun 2010 23:02:25 GMT
69
- DateTime.parse(obj)
59
+ when %r{^\d{4}-\d{2}-\d{2}$}, # 2010-06-06
60
+ %r{^\d{1,2}/\d{1,2}/\d{4}$}, # 06/06/2010
61
+ %r{^\d{4}/\d{1,2}/\d{1,2}$} # 2010/06/06
62
+ Date.parse(obj)
70
63
  # boolean true
71
64
  when 'true', 'yes', 'on'
72
65
  true
@@ -87,4 +80,4 @@ class HashStruct < Hash
87
80
  end
88
81
  end
89
82
 
90
- end
83
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hashstruct
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: '1.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Labovitz
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-08 00:00:00.000000000 Z
11
+ date: 2023-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -16,28 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '12.3'
19
+ version: '13.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '12.3'
27
- - !ruby/object:Gem::Dependency
28
- name: rubygems-tasks
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.2'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.2'
26
+ version: '13.0'
41
27
  description: "\n HashStruct provides an object based on Hash, but acts like Struct
42
28
  (or OpenStruct), providing helpful\n accessors for each key from the get-go.
43
29
  It also magically parses string values when it can (eg, dates,\n URIs, numbers,
@@ -48,16 +34,16 @@ extensions: []
48
34
  extra_rdoc_files: []
49
35
  files:
50
36
  - ".gitignore"
37
+ - Gemfile
51
38
  - README.md
52
39
  - Rakefile
53
40
  - hashstruct.gemspec
54
41
  - lib/hashstruct.rb
55
- - lib/hashstruct/version.rb
56
42
  homepage: http://github.com/jslabovitz/hashstruct
57
43
  licenses:
58
44
  - MIT
59
45
  metadata: {}
60
- post_install_message:
46
+ post_install_message:
61
47
  rdoc_options: []
62
48
  require_paths:
63
49
  - lib
@@ -72,9 +58,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
58
  - !ruby/object:Gem::Version
73
59
  version: '0'
74
60
  requirements: []
75
- rubyforge_project:
76
- rubygems_version: 2.7.4
77
- signing_key:
61
+ rubygems_version: 3.4.17
62
+ signing_key:
78
63
  specification_version: 4
79
64
  summary: Overly helpful magic hash structure.
80
65
  test_files: []
@@ -1,5 +0,0 @@
1
- class HashStruct
2
-
3
- VERSION = '1.3.1'
4
-
5
- end