liquid-hash-or-array-drop 1.0.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/Gemfile +9 -0
- data/lib/liquid/drop/hash_or_array.rb +67 -0
- data/lib/liquid/drop/hash_or_array/version.rb +12 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 707100ec7c513639145fe2efc3aee68b93f4ee04
|
4
|
+
data.tar.gz: 4e3186fd7d86b0168c89056f203c5bdd4f6c559d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 711d6723d495d6ba6628e6987924d5e526a5396515d3118a8f55d66eb2e97d2db615a614a785fd2041adbc7d02ec9c52650f5d4cdb3b6ae41c1bd647bc89cc2c
|
7
|
+
data.tar.gz: 9c461614d98ee584aab7efb76315ede9ca0b0c96fd62f5664498a0491cc7a5b3fbdae5f7b8e28c1114a2219e7d07da158cb4883626126122a7bdc2be008de6c5
|
data/Gemfile
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# Frozen-string-literal: true
|
2
|
+
# Copyright: 2017 Jordon Bedwell - MIT License
|
3
|
+
# Encoding: utf-8
|
4
|
+
|
5
|
+
require "forwardable/extended"
|
6
|
+
require "liquid/drop"
|
7
|
+
|
8
|
+
module Liquid
|
9
|
+
class Drop
|
10
|
+
class HashOrArray < Drop
|
11
|
+
extend Forwardable::Extended
|
12
|
+
|
13
|
+
# --
|
14
|
+
# @return [<HashOrArray>] the instance
|
15
|
+
# There is no need for explaining it.
|
16
|
+
# --
|
17
|
+
def initialize(data)
|
18
|
+
@data = data
|
19
|
+
end
|
20
|
+
|
21
|
+
# --
|
22
|
+
# @return [<Any>] the value or nil.
|
23
|
+
# Standard hash method so that you can also access
|
24
|
+
# the data like a hash/array.
|
25
|
+
# --
|
26
|
+
def [](key)
|
27
|
+
liquid_method_missing(key)
|
28
|
+
end
|
29
|
+
|
30
|
+
# --
|
31
|
+
# Uses Liquids method missing method to get the key
|
32
|
+
# when you try and access the drop like a chained method
|
33
|
+
# we do the case because oen day we might split out the
|
34
|
+
# class and it would require minimal refactor.
|
35
|
+
# @return [<Any>] the value or nil.
|
36
|
+
# --
|
37
|
+
def liquid_method_missing(key)
|
38
|
+
val = @data.fetch(key.to_s, @data[key.to_sym])
|
39
|
+
|
40
|
+
case true
|
41
|
+
when val.is_a?(Array) then HashOrArray.new(val)
|
42
|
+
when val.is_a?( Hash) then HashOrArray.new(val)
|
43
|
+
else
|
44
|
+
val
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# --
|
49
|
+
# Delegate methods directly to the hash or the Array,
|
50
|
+
# we don't need to carry these, enumerable does.
|
51
|
+
# --
|
52
|
+
|
53
|
+
rb_delegate :keys, to: :@data
|
54
|
+
rb_delegate :last, to: :@data
|
55
|
+
rb_delegate :each, to: :@data
|
56
|
+
rb_delegate :first, to: :@data
|
57
|
+
rb_delegate :values, to: :@data
|
58
|
+
rb_delegate :each_with_index, to: :@data
|
59
|
+
rb_delegate :inspect, to: :@data
|
60
|
+
rb_delegate :to_enum, to: :@data
|
61
|
+
rb_delegate :fetch, to: :@data
|
62
|
+
rb_delegate :to_h, to: :@data
|
63
|
+
rb_delegate :to_a, to: :@data
|
64
|
+
rb_delegate :map, to: :@data
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: liquid-hash-or-array-drop
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jordon Bedwell
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-08-14 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: '3'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '4'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '4'
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: luna-rspec-formatters
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3.7'
|
40
|
+
type: :development
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '3.7'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: forwardable-extended
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '2.6'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2.6'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: liquid
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - "~>"
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '4.0'
|
68
|
+
type: :runtime
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '4.0'
|
75
|
+
description: A drop that wraps hashes and arrays.
|
76
|
+
email:
|
77
|
+
- jordon@envygeeks.io
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- Gemfile
|
83
|
+
- lib/liquid/drop/hash_or_array.rb
|
84
|
+
- lib/liquid/drop/hash_or_array/version.rb
|
85
|
+
homepage: http://github.com/envygeeks/liquid-string-drop
|
86
|
+
licenses:
|
87
|
+
- MIT
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options: []
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 2.1.0
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubyforge_project:
|
105
|
+
rubygems_version: 2.6.11
|
106
|
+
signing_key:
|
107
|
+
specification_version: 4
|
108
|
+
summary: A drop for hashes and arrays.
|
109
|
+
test_files: []
|