json_wrapper 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d43f0be083a577ad94ad7ccb8ac96134815bea10
4
+ data.tar.gz: 921f96757d7bd313ec828de307cffc6bdf686a3f
5
+ SHA512:
6
+ metadata.gz: 991ad5d73f2822c632b9dacaf99a7438535b5a298cfa07a8244097a3a791ead8152446dbbf00cff97b2c7cf540debd4b0abb426b086b6852ac5c7b2633aa1653
7
+ data.tar.gz: a033bdd139bc625476cd7198b8d43a1cabc0f990b4330150a87d6ad625322d9898d96d49a004e4fca9aa4a5b25b91a59a859d2d98629313d3512bb39585271f7
@@ -0,0 +1,5 @@
1
+ #encoding: utf-8
2
+
3
+ class JsonWrapper
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,130 @@
1
+ #encoding: utf-8
2
+
3
+ class JsonWrapper
4
+ autoload :VERSION, 'json_wrapper/version'
5
+ # Internal value
6
+ # @return [Hash, Array, String, Number, Nil] internal value
7
+ attr_reader :value
8
+
9
+ # Create a JsonWrapper
10
+ # @param value [Hash, Array, String, Numeric, Nil] parse result from JSON.parse
11
+ # @return [JsonWrapper] instance
12
+ def initialize(value = nil)
13
+ @value = value
14
+ end
15
+
16
+ # If value is a Hash
17
+ # @return [True, False] if value is a Hash
18
+ def hash?
19
+ @value.kind_of? Hash
20
+ end
21
+
22
+ # If value is a Array
23
+ # @return [True, False] if value is an Array
24
+ def array?
25
+ @value.kind_of? Array
26
+ end
27
+
28
+ # If value is String
29
+ # @return [True,False] if value is a String
30
+ def string?
31
+ @value.kind_of? String
32
+ end
33
+
34
+ # If value is a Number
35
+ # @return [True,False] if value is an Number
36
+ def number?
37
+ @value.kind_of? Numeric
38
+ end
39
+
40
+ # If value is a Nil
41
+ # @return [True, False] if value is a Nil
42
+ def null?
43
+ @value.nil?
44
+ end
45
+
46
+ # Get the value if is a Hash
47
+ # @return [Hash, nil] value if it's a Hash
48
+ def hash
49
+ @value if hash?
50
+ end
51
+
52
+ # Get the value if is a Array
53
+ # @return [Array, Nil] value if it's a Array
54
+ def array
55
+ @value if array?
56
+ end
57
+
58
+ # Get the value if value is string
59
+ # @return [String, Nil] value if it's a String
60
+ def string
61
+ @value if string?
62
+ end
63
+
64
+ # Get the value if value is a number
65
+ # @return [Fixnum, Float, Nil] value if it's a Numeric, typically Fixnum or Float
66
+ def number
67
+ @value if number?
68
+ end
69
+
70
+ # Force convert to Hash
71
+ # @return [Hash] Hash format of value, {} if not capable
72
+ def hash!
73
+ hash || {}
74
+ end
75
+
76
+ # Force convert to Array
77
+ # @return [Array] Array format of value, {} if not capable
78
+ def array!
79
+ array || []
80
+ end
81
+
82
+ # Force convert to String
83
+ # @return [String] String format of value, "" if not capable
84
+ def string!
85
+ return @value if string?
86
+ return @value.to_s if number?
87
+ ""
88
+ end
89
+
90
+ # Force convert to number
91
+ # @return [Numeric] Number format of value, 0 if not capable
92
+ def number!
93
+ return @value if number?
94
+ return @value.to_f if string?
95
+ 0
96
+ end
97
+
98
+ # Force convert to Float
99
+ # @return [Float] Float format of value
100
+ def float!
101
+ number!.to_f
102
+ end
103
+
104
+ # Force convert to Fixnum
105
+ # @return [Fixnum] Fixnum format of value
106
+ def fixnum!
107
+ number!.to_i
108
+ end
109
+
110
+ # Try to get value from Hash or Array
111
+ # @param key [String, Symbol, Fixnum] key
112
+ # @return [JsonWrapper] JsonWrapper of the value
113
+ def get(key)
114
+ return JsonWrapper.new(@value[key]) if array? and key.kind_of?(Fixnum)
115
+ return JsonWrapper.new(@value[key]) if hash? and key.kind_of?(String)
116
+ return JsonWrapper.new(@value[key.to_s]) if hash? and key.kind_of?(Symbol)
117
+ JsonWrapper.new
118
+ end
119
+
120
+ # @see #get
121
+ def [](key)
122
+ get(key)
123
+ end
124
+
125
+ # @see #get
126
+ def method_missing(*args)
127
+ get args.first
128
+ end
129
+
130
+ end
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: json_wrapper
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Guo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rspec
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-core
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: SwiftyJSON inspired JSON lib for Ruby, very handy for JSON access while
42
+ incoming JSON structure is not definite.
43
+ email: ryan@islandzero.net
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/json_wrapper/version.rb
49
+ - lib/json_wrapper.rb
50
+ homepage: http://rubygems.org/gems/json_wrapper
51
+ licenses:
52
+ - MIT
53
+ metadata: {}
54
+ post_install_message:
55
+ rdoc_options: []
56
+ require_paths:
57
+ - lib
58
+ required_ruby_version: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ requirements: []
69
+ rubyforge_project:
70
+ rubygems_version: 2.0.14
71
+ signing_key:
72
+ specification_version: 4
73
+ summary: SwiftyJSON inspired JSON lib for Ruby.
74
+ test_files: []
75
+ has_rdoc: