container 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 +7 -0
- data/lib/container/version.rb +3 -0
- data/lib/container.rb +102 -0
- metadata +74 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e109ffe065283c8d6753670448d1bead7a9e641f
|
4
|
+
data.tar.gz: 34639bc46c3f8d1f356bbb5e9d0f7e125f6220b0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f209a30550e51fd0cbfb669c45324d8f02f87d32345d373ab375e66091caf71921d3452d2fb611d9190edb1228f224c842f63cb4484d6cedb7a2a5ebd73755b8
|
7
|
+
data.tar.gz: 4a4de71691b15e68aad6c5e97f52c0b54730c5a3aec737faee53de6e9c2062a87bd7c72d6d2afd2ce4ac01392d39dca90577505d3614a843a80e76f719a01e28
|
data/lib/container.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'container/version'
|
2
|
+
|
3
|
+
class Container
|
4
|
+
include Enumerable
|
5
|
+
attr_accessor :array, :hash
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@array = []
|
9
|
+
@hash = Hash.new { NullObject.new }
|
10
|
+
end
|
11
|
+
|
12
|
+
def empty?
|
13
|
+
@array.empty? && @hash.empty?
|
14
|
+
end
|
15
|
+
|
16
|
+
def each(&block)
|
17
|
+
@array.each do |member|
|
18
|
+
block.call(member)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def <<(value)
|
23
|
+
@array << value
|
24
|
+
end
|
25
|
+
|
26
|
+
def push(value)
|
27
|
+
@array.push(value)
|
28
|
+
end
|
29
|
+
|
30
|
+
def [](key)
|
31
|
+
if key.is_a?(Numeric)
|
32
|
+
@array[key] || NullObject.new
|
33
|
+
else
|
34
|
+
@hash[key]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def []=(key, value)
|
39
|
+
if key.is_a?(Numeric)
|
40
|
+
@array[key] = value
|
41
|
+
else
|
42
|
+
@hash[key] = value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_hash(*allowed_keys)
|
47
|
+
output_hash = Hash.new { NullObject.new }
|
48
|
+
|
49
|
+
if allowed_keys.blank?
|
50
|
+
# return all keys symbolized
|
51
|
+
@hash.each do |key, value|
|
52
|
+
output_hash[key.to_sym] = value
|
53
|
+
end
|
54
|
+
else
|
55
|
+
@hash.each do |key, value|
|
56
|
+
key_sym = key.to_sym
|
57
|
+
if allowed_keys.include?(key_sym)
|
58
|
+
output_hash[key_sym] = value
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
output_hash
|
64
|
+
end
|
65
|
+
|
66
|
+
def method_missing(method_sym, *arguments, &block)
|
67
|
+
method_last_char = method_sym[-1]
|
68
|
+
hash_key = method_sym.to_s.gsub('?','').gsub('=','').to_sym
|
69
|
+
|
70
|
+
if method_last_char == '='
|
71
|
+
@hash[hash_key] = arguments.first
|
72
|
+
else
|
73
|
+
if @hash.keys.include?(hash_key)
|
74
|
+
@hash[hash_key]
|
75
|
+
else
|
76
|
+
NullObject.new
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
class NullObject
|
82
|
+
def nil?
|
83
|
+
true
|
84
|
+
end
|
85
|
+
|
86
|
+
def empty?
|
87
|
+
true
|
88
|
+
end
|
89
|
+
|
90
|
+
def blank?
|
91
|
+
true
|
92
|
+
end
|
93
|
+
|
94
|
+
def to_s
|
95
|
+
""
|
96
|
+
end
|
97
|
+
|
98
|
+
def method_missing(method_sym, *arguments, &block)
|
99
|
+
return NullObject.new
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
metadata
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: container
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Joshua Arvin Lat
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
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: Handy Ruby object container for cleaner views
|
42
|
+
email:
|
43
|
+
- joshua.arvin.lat@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/container.rb
|
49
|
+
- lib/container/version.rb
|
50
|
+
homepage: ''
|
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.4.6
|
71
|
+
signing_key:
|
72
|
+
specification_version: 4
|
73
|
+
summary: Handy Ruby object container for cleaner views
|
74
|
+
test_files: []
|