store2 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 462d37b0c81d0e774272fa08c03f0525d7556a6f
4
+ data.tar.gz: b9f70df4a2d8b3f02ffdaa184bf9700a598e8d10
5
+ SHA512:
6
+ metadata.gz: db6596b207fa4d09bdcd3df0037095e8513de1dab9ee7930d50dac15cabf93f0c06884583ad2e53b5f11431bf73447e165a12eca251667274759faafc5d38581
7
+ data.tar.gz: 3f8af30002e9425e0804cbace7eb8ac1e15e1c8577ad62241c5b57198802c66da08b34587a7a4e53d9eb082e2905851cc8527ffae758c80556f9c3e9644d6d1b
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in store2.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Oleksii Fedorov
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,126 @@
1
+ # Store2
2
+
3
+ Persistence in YAML files, yay!
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem "store2"
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install store2
20
+
21
+ ## Usage
22
+
23
+ ```ruby
24
+ require "store2"
25
+ ```
26
+
27
+ ### Open a file
28
+
29
+ ```ruby
30
+ store2 = Store2.open("test.yml")
31
+ # => <#Store2::File:0x00f28746a47 @filename = "test.yml">
32
+ ```
33
+
34
+ ### Get root-scoped store object
35
+
36
+ ```ruby
37
+ root_scoped = store2.build
38
+ # => <#Store2::Scoped:0x00f2d746a41 @keys = []>
39
+ ```
40
+
41
+ ### Get scoped store object
42
+
43
+ ```ruby
44
+ user_scoped = store2.scoped("users", "72AC97F03A")
45
+ # => <#Store2::Scoped:0x00a2d746a91 @keys = ["users", "72AC97F03A"]
46
+ ```
47
+
48
+ ### Get scoped store object out of another scoped store object
49
+
50
+ ```ruby
51
+ items_scoped = user_scoped.scoped("items")
52
+ # => <#Store2::Scoped:0x00922faa907 @keys = ["users", "72AC97F03A", "items"]
53
+ ```
54
+
55
+ ### Reading the value
56
+
57
+ ```ruby
58
+ user_scoped.get("profile", "email")
59
+ # => "john@example.org"
60
+ ```
61
+
62
+ raises `KeyError` if value is not present
63
+
64
+ ### Writing the value
65
+
66
+ ```ruby
67
+ user_scoped.set("profile", "name", "John Smith")
68
+ # => "John Smith"
69
+ ```
70
+
71
+ ### Reading the value with writing the default if missing
72
+
73
+ ```ruby
74
+ # when profile/email is present
75
+ user_scoped.get_or_set("profile", "email", "john.smith@example.org")
76
+ # => "john@example.org"
77
+
78
+ # when profile/alternative_email is not present
79
+ user_scoped.get_or_set("profile", "alternative_email", "john.smith@example.org")
80
+ # => "john.smith@example.org"
81
+ ```
82
+
83
+ Does not raise `KeyError`
84
+
85
+ ### Check if value is present
86
+
87
+ ```ruby
88
+ user_scoped.has?("profile", "email")
89
+ # => true
90
+
91
+ user_scoped.has?("profile", "some", "long", "nested", "and", "boring", "attribute")
92
+ # => false
93
+ ```
94
+
95
+ ### Fetch value and provide block for execution if it is not present
96
+
97
+ ```ruby
98
+ items_scoped.fetch(item_code) do
99
+ fail ItemNotFound, "Item #{item_code} is not found"
100
+ end
101
+ ```
102
+
103
+ ### Saving your changes back to the file
104
+
105
+ ```ruby
106
+ store.save
107
+
108
+ # the same as
109
+ root_scoped.save
110
+
111
+ # the same as
112
+ user_scoped.save
113
+
114
+ # and
115
+ items_scoped.save
116
+ ```
117
+
118
+ All of them eventually will delegate to `store.save`
119
+
120
+ ## Contributing
121
+
122
+ 1. Fork it ( https://github.com/waterlink/store2/fork )
123
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
124
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
125
+ 4. Push to the branch (`git push origin my-new-feature`)
126
+ 5. Create a new Pull Request
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,5 @@
1
+ require "store2/version"
2
+
3
+ module Store2
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module Store2
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'store2/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "store2"
8
+ spec.version = Store2::VERSION
9
+ spec.authors = ["Oleksii Fedorov"]
10
+ spec.email = ["waterlink000@gmail.com"]
11
+ spec.summary = %q{Persistence in YAML files, yay!}
12
+ spec.description = %q{Persistence in YAML files, yay!}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ end
metadata ADDED
@@ -0,0 +1,80 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: store2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Oleksii Fedorov
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.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: Persistence in YAML files, yay!
42
+ email:
43
+ - waterlink000@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - lib/store2.rb
54
+ - lib/store2/version.rb
55
+ - store2.gemspec
56
+ homepage: ''
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.2.2
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: Persistence in YAML files, yay!
80
+ test_files: []