jumunge 0.1.0 → 0.2.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 +5 -5
- data/.travis.yml +8 -3
- data/jumunge.gemspec +3 -3
- data/lib/jumunge.rb +35 -1
- data/lib/jumunge/version.rb +1 -1
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 37e08bf99fc91e7a0b1b317b6f2c668cadb5d24ac6184cfca2c680a2dc1d73d7
|
4
|
+
data.tar.gz: 70336a84087344df1822ffb25d4c30b11ed0f7565b84890b8a0db556409d58fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc7d79fcd0ff309ee7b1dc39ff94acf78d7c26059bd1f18247efc43bfd1c76bb9ebbf97d0ea8933766d09125e0c2dafbca03f47f4e0c034b093221fd768f6c17
|
7
|
+
data.tar.gz: 0ed59ce3815b2a2e442c1b0c2e15343ffd6023b1f323e0f0b8c3756989dd76d4cf4496bb407dde757026db3b22414c4d9eb7d65cab233a4dfe8afc4d0a502ec2
|
data/.travis.yml
CHANGED
@@ -1,12 +1,17 @@
|
|
1
|
-
sudo: false
|
2
1
|
language: ruby
|
2
|
+
sudo: false
|
3
|
+
cache:
|
4
|
+
bundler: true
|
3
5
|
rvm:
|
4
|
-
- 2.4
|
5
|
-
|
6
|
+
- 2.4
|
7
|
+
- 2.5
|
8
|
+
before_install:
|
9
|
+
- gem install bundler
|
6
10
|
deploy:
|
7
11
|
provider: rubygems
|
8
12
|
api_key:
|
9
13
|
secure: YgPD3zs9Am0R1w7xOYlLrI7ls8v1nuOQpC+R+4GyULeDYMIJg9kHe59n3CuiUmaVs3bQZTlW921sluY6+GPQrZdOf5fF0wGluF7X71DtZYEabic611QI1y4hgrFrHX7JFerqjoDATUMIkN+MAk3m+Ok7czs9PSL89CltNznJcV3PXVFyPHrWZE9+XY8Bl2hh8N3PHdcVKDiT1JK1d3qLoiklW32bOvD0Vt5VPnThps+hDRY+Gm4sfNDextd1LqptXdAGrrd1y+agQD+9GDf6m9Ypo2LofpY0J29nZ93eV04bP5zC2gVWCwwmPANLX7LcUboDt309j5ytbwQT9zAd4ms/mIH+8Jf6taOvugmGDJOzCBSXyDl4sj9gLAeHkrYFv5l/cka0bvBAHiyBNOEJAUyrmc7ZKGAIYJiwCZQ4cExyiQE3ywPMC7z2FhR5OOMpJyXawbgdMkLma1fIWnBUdPBudKYt0yni5+BVlWyDymoduWQxYllkVrLyAfdOLzjUGWF6oXZMTsqQTJ2s34pitrMeXa5Q4RUIN/2A1Yav0pQQ3yP0vODMzLxi3rCj9NM7XX2KC3H+EEfc9zLPOIMSnlnnu7SlX9+65HJQMgFAm/u3zRHSF3FdBX2ZtwmEZbjwhqhdkKWlW4SA70TLoYDyeNqshRlgoJ663jox38iL92Y=
|
14
|
+
gem: jumunge
|
10
15
|
on:
|
11
16
|
tags: true
|
12
17
|
repo: miyucy/jumunge
|
data/jumunge.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_development_dependency "bundler"
|
24
|
-
spec.add_development_dependency "rake"
|
25
|
-
spec.add_development_dependency "rspec"
|
23
|
+
spec.add_development_dependency "bundler"
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "rspec"
|
26
26
|
end
|
data/lib/jumunge.rb
CHANGED
@@ -100,12 +100,44 @@ module Jumunge
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
+
class JuOpt
|
104
|
+
def initialize(object, trail, trails)
|
105
|
+
@object = object
|
106
|
+
@trail = trail
|
107
|
+
@trails = trails
|
108
|
+
end
|
109
|
+
|
110
|
+
def perform
|
111
|
+
if @object.key? key_name
|
112
|
+
@object[key_name] = deep_applied_value
|
113
|
+
@object
|
114
|
+
else
|
115
|
+
@object
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
private
|
120
|
+
|
121
|
+
def key_name
|
122
|
+
@key_name ||= @trail[0..-2]
|
123
|
+
end
|
124
|
+
|
125
|
+
def deep_applied_value
|
126
|
+
Jumunge.new(@object[key_name], remaining_trails).perform
|
127
|
+
end
|
128
|
+
|
129
|
+
def remaining_trails
|
130
|
+
@remaining_trails ||= @trails.join('.')
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
103
134
|
class Jumunge
|
104
135
|
def initialize(object, path)
|
105
136
|
@object = object
|
106
137
|
@trail, *@trails = path.split '.'
|
107
138
|
@is_array = @trail[-2..-1] == '[]'
|
108
139
|
@is_value = @trail[-1] == '!'
|
140
|
+
@is_opt = @trail[-1] == '?'
|
109
141
|
@performer = performer_class.new @object, @trail, @trails
|
110
142
|
end
|
111
143
|
|
@@ -121,6 +153,8 @@ module Jumunge
|
|
121
153
|
JuArray
|
122
154
|
elsif @is_value
|
123
155
|
JuValue
|
156
|
+
elsif @is_opt
|
157
|
+
JuOpt
|
124
158
|
else
|
125
159
|
JuOther
|
126
160
|
end
|
@@ -129,7 +163,7 @@ module Jumunge
|
|
129
163
|
end
|
130
164
|
end
|
131
165
|
end
|
132
|
-
private_constant :Jumunge, :JuArray, :JuValue, :JuOther, :JuThru
|
166
|
+
private_constant :Jumunge, :JuArray, :JuValue, :JuOther, :JuThru, :JuOpt
|
133
167
|
|
134
168
|
def jumunge(object, *paths)
|
135
169
|
paths.inject(object) do |result, path|
|
data/lib/jumunge/version.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jumunge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- miyucy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '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: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '0'
|
55
55
|
description: Write a longer description or delete this line.
|
56
56
|
email:
|
57
57
|
- fistfvck@gmail.com
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
version: '0'
|
92
92
|
requirements: []
|
93
93
|
rubyforge_project:
|
94
|
-
rubygems_version: 2.
|
94
|
+
rubygems_version: 2.7.7
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Write a short summary, because Rubygems requires one.
|