meander 0.1.1 → 0.1.2

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 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