easy-struct 0.0.2

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/easy_struct.rb +23 -0
  3. metadata +73 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e88b136d41949ed8ee9718cccdecb569e282b004
4
+ data.tar.gz: cd69aa1cf4d84a5174327f886f966f6728e659a4
5
+ SHA512:
6
+ metadata.gz: 1ecfa10aaf6949783d144a0ccc49a846071ef68a00fc869d12c39ac9e6a87a425be5ef4c5c5a0f7c516e5855e39a6cc9eba219c24d8ece6981acebde160edbf7
7
+ data.tar.gz: d0d67f4dea58cbe3ca71120a3d231ca18acbedcdcaebc5fa4c6d7362bacf52de868f9506167ebbbb1b64f27b0c399744f87741938029a9ae432adb5e16b361b3
@@ -0,0 +1,23 @@
1
+ require 'ostruct'
2
+ require 'httparty'
3
+ require 'active_support/core_ext/string/inflections'
4
+
5
+ # A small hack written by David Roy to make OpenStruct not care about calling
6
+ # a object via snake_case when it is camelCase
7
+ class CamelAndSankeStruct < OpenStruct
8
+ def method_missing(method, *args, &blk)
9
+ (/(?<name>.+?)(?<setter>=)?$/ =~ method.to_s)
10
+ property = name.camelcase(:lower).to_sym
11
+ if @table.has_key?(property)
12
+ setter ? @table[property] = args.first : @table[property]
13
+ else
14
+ super
15
+ end
16
+ end
17
+ end
18
+
19
+ class EasyStruct < HTTParty::Parser
20
+ def parse
21
+ JSON.parse(body, object_class: CamelAndSankeStruct)
22
+ end
23
+ end
metadata ADDED
@@ -0,0 +1,73 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: easy-struct
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - David Roy
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-06-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.15.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.15.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 5.1.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 5.1.1
41
+ description: A parser for HTTParty that parses the responce to objects and snake_case
42
+ access to camelCase methods.
43
+ email: david.roy@cabbit.co.uk
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/easy_struct.rb
49
+ homepage: http://rubygems.org/gems/easy_struct
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - lib
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 2.6.12
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Easy Struct
73
+ test_files: []