meander 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff8d696385670ddbb344d817d92194bc31cdb880
4
- data.tar.gz: d9caa19b08da3a35f8bf4c60a5363b3c2e23432e
3
+ metadata.gz: 6806984c8648500b8f01dc412f430a8c0a8d46a5
4
+ data.tar.gz: be7ac8abcf8f8c1f2667c8776a9725b73353764c
5
5
  SHA512:
6
- metadata.gz: 84a6f5794aae64b1ddc88cfc2112613c4e362b067e3e2b9112ebdedbfdb0da277cce9a4e983055ca10fcb59cad9cf2cb932f9734beac4710395c9bd61202e284
7
- data.tar.gz: 6e5a019466c37f96864471e93b051d3376ebffe2e75a3823a1cd1765a09cd8706d852aa842369c80d3c7b4aed0e7661d90b12e6c70400cc0ea3483546633bd24
6
+ metadata.gz: 6f8997e20d34d1b77d52dbeee098e0a9162fd3d7cf77c23c20b9f60d1f969504fae67a7e8c4747a8e23d1b7c44717b5933f6f2dad4c418d89202c9a38e3dbaa7
7
+ data.tar.gz: 1a6f48159a49563b0a0aef243f5f18f5d33a26ed7843e014fd81c7b98605422c58afbc5b75f93156967377262f0d13823ea5e6608192e4e18db0f20d47cb988c
data/README.md CHANGED
@@ -1,39 +1,26 @@
1
1
  # Meander
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/meander`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ [![Build Status](https://travis-ci.org/bombazook/meander.svg?branch=master)](https://travis-ci.org/bombazook/meander)
4
+ [![Gem Version](https://badge.fury.io/rb/meander.svg)](https://badge.fury.io/rb/meander)
4
5
 
5
- TODO: Delete this and the text above, and describe your gem
6
+ ## WAT
7
+ Just another ruby Hash extension
6
8
 
7
- ## Installation
9
+ Hashie clone with a bit more sugar
8
10
 
9
- Add this line to your application's Gemfile:
11
+ Best for configuration storage
10
12
 
11
- ```ruby
12
- gem 'meander'
13
- ```
14
-
15
- And then execute:
16
-
17
- $ bundle
18
-
19
- Or install it yourself as:
20
-
21
- $ gem install meander
13
+ Natively supports:
14
+ - default values
15
+ - key-based accessor methods
16
+ - block-based dsl-like value access
17
+ - stores updates in separate hash
18
+ - performs well with Hashie deep_merge extension
22
19
 
23
20
  ## Usage
21
+ [Meander::Plain](http://www.rubydoc.info/gems/meander/Meander/Plain)
24
22
 
25
- TODO: Write usage instructions here
26
-
27
- ## Development
28
-
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
-
31
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
-
33
- ## Contributing
34
-
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/meander.
36
-
23
+ [Meander::Mutable](http://www.rubydoc.info/gems/meander/Meander/Mutable)
37
24
 
38
25
  ## License
39
26
 
@@ -39,16 +39,19 @@ module Meander
39
39
  # m.a # => 3 # Value is up to date
40
40
  # m.b # => 2 # Attention! Value remains unchanged
41
41
  class Mutable < Delegator
42
- class MutableProxy < Plain # :nodoc:
43
- self.cover_class = Mutable
44
- end
45
-
46
42
  include CommonMethods
47
43
 
44
+ def self.own_keys_cover_class
45
+ klass = self
46
+ @own_keys_cover_class ||= Class.new(Plain) do
47
+ self.cover_class = klass
48
+ end
49
+ end
50
+
48
51
  def initialize(obj = {})
49
52
  super
50
53
  @delegate_sd_obj = obj
51
- @own_keys = MutableProxy.new
54
+ @own_keys = self.class.own_keys_cover_class.new
52
55
  end
53
56
 
54
57
  def __getobj__
@@ -67,6 +70,10 @@ module Meander
67
70
  end
68
71
  end
69
72
 
73
+ def is_a?(klass)
74
+ klass.ancestors.include?(Hash) || super
75
+ end
76
+
70
77
  def keys
71
78
  origin = __getobj__
72
79
  own = @own_keys
@@ -80,8 +87,8 @@ module Meander
80
87
  val = @own_keys[key]
81
88
  else
82
89
  val = get_delegated_value key
83
- if val.is_a?(Hash) || val.is_a?(Mutable)
84
- val = Mutable.new(val)
90
+ if val.is_a?(Hash)
91
+ val = self.class.new(val)
85
92
  self[key] = val
86
93
  end
87
94
  end
@@ -1,3 +1,3 @@
1
1
  module Meander
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
data/meander.gemspec CHANGED
@@ -38,4 +38,5 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency 'rspec', '~> 3.0'
39
39
  spec.add_development_dependency 'rubocop'
40
40
  spec.add_development_dependency 'rubocop-rspec'
41
+ spec.add_development_dependency 'hashie'
41
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: meander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kostrov Alexander
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-03 00:00:00.000000000 Z
11
+ date: 2017-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hashie
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  description: Hashie clone with a bit more sugar
98
112
  email:
99
113
  - bombazook@gmail.com