state_store 0.0.4 → 0.1.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.
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - jruby-19mode
6
+ - rbx-19mode
7
+ - ruby-head
8
+ - jruby-head
data/Gemfile CHANGED
@@ -7,11 +7,11 @@ source "http://rubygems.org"
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
9
  gem "rdoc", "~> 3.12"
10
- gem "bundler", "~> 1.0.0"
10
+ gem "bundler", "~> 1.1.3"
11
11
  gem "jeweler", "~> 1.8.3"
12
12
  end
13
13
 
14
14
  group :test do
15
- gem "rspec", "~>2.9.0"
15
+ gem "rspec", "~>2"
16
16
  end
17
17
 
data/Gemfile.lock CHANGED
@@ -25,7 +25,7 @@ PLATFORMS
25
25
  ruby
26
26
 
27
27
  DEPENDENCIES
28
- bundler (~> 1.0.0)
28
+ bundler (~> 1.1.3)
29
29
  jeweler (~> 1.8.3)
30
30
  rdoc (~> 3.12)
31
- rspec (~> 2.9.0)
31
+ rspec (~> 2)
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
1
  # State store
2
+ [![Build Status](https://secure.travis-ci.org/kalifs/state_store.png?branch=master)](http://travis-ci.org/kalifs/state_store)
3
+ [![Gemnasium status](https://gemnasium.com/kalifs/state_store.png)](https://gemnasium.com/kalifs/state_store)
4
+ [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/kalifs/state_store)
2
5
 
3
6
  ## Installation
4
7
 
@@ -8,7 +11,7 @@
8
11
 
9
12
  For Bundler add this in you Gemfile
10
13
 
11
- `gem state_store, '~>0.0.2'`
14
+ `gem state_store, '~>0.0.4'`
12
15
 
13
16
  And then run
14
17
 
@@ -50,7 +53,7 @@ When you need to add new states and you keep want to previous states configurati
50
53
  has_states :big,:bad, :in => :characteristic, :as => :nature
51
54
  end
52
55
 
53
- wolf = Wold.new()
56
+ wolf = Wolf.new()
54
57
  wolf.nature = [:bad]
55
58
  wolf.characteristic #=> 1
56
59
 
@@ -68,7 +71,6 @@ Then if you decide to add _hungry_ then you change states as shown below and tha
68
71
  wolf.nature = [:bad]
69
72
  wolf.characteristic #=> 1
70
73
  wolf.nature = [:hungry,:bad]
71
- wolf.nature << :bad
72
74
  wolf.has_charasteristic?(:bad) #=> true
73
75
  wolf.characteristic #=> 5
74
76
  ```
@@ -93,7 +95,7 @@ It is possible to alter states Array and changes storage attribute will be updat
93
95
  apple.status #=> 5
94
96
  ```
95
97
 
96
- But remember if you will modify `states` with other methods, like '<<' or 'delete' or others changes will not be stored in status.
98
+ But remember if you will modify `states` with other methods, like `<<` or `delete` or others changes will not be stored in status.
97
99
 
98
100
 
99
101
  ## Copyright
data/Rakefile CHANGED
@@ -17,8 +17,8 @@ Jeweler::Tasks.new do |gem|
17
17
  gem.name = "state_store"
18
18
  gem.homepage = "http://github.com/kalifs/state_store"
19
19
  gem.license = "MIT"
20
- gem.summary = %Q{Convert numeric value to Array of states}
21
- gem.description = %Q{Create numeric value to Array of states.}
20
+ gem.summary = %Q{Store Array of states in single Integer.}
21
+ gem.description = %Q{It allows to store pre-defined set of states in one attribute as Integer}
22
22
  gem.email = "arturs.meisters@gmail.com"
23
23
  gem.authors = ["Arturs Meisters"]
24
24
  # dependencies defined in Gemfile
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.1.0
@@ -1,6 +1,8 @@
1
1
  require 'observer'
2
2
 
3
3
  module StateStore
4
+ # This class provides convertation between Array to binary number and vice versa.
5
+ # Each instance of class have its own set of statuses.
4
6
  class BinaryStore
5
7
  attr_reader :statuses, :states, :total_positions
6
8
 
@@ -11,6 +13,7 @@ module StateStore
11
13
  @total_positions = 2**@states-1
12
14
  end
13
15
 
16
+ # Method receives value and return Array of statuses that matches current number.
14
17
  def humanize(value)
15
18
  raise ArgumentError.new("Out of range") if self.total_positions < value
16
19
  humanized_array = value_to_statuses(value)
@@ -18,24 +21,31 @@ module StateStore
18
21
  humanized_array
19
22
  end
20
23
 
24
+ # Method receives Array of statuses and create binary number that respresents this status for store statuses set.
25
+ # =====Example
26
+ # store = StateStore.new([:read,:write,:execute])
27
+ # store.value([:read,:execute]) # will be interpreted as 101 or 5
28
+ # store.value([:write,:execute]) # will be interpreted as 011 or 3
21
29
  def value(humanized_array)
22
30
  raise ArgumentError.new("Out of range") if self.states < humanized_array.size
23
31
  statuses_to_values(humanized_array)
24
32
  end
25
33
 
34
+ # It receives status and value and check if given value match given status.
35
+ # =====Example
36
+ # store = StateStore.new([:read,:write,:execute])
37
+ # store.has_status?(:read,4) # will be false because 4 is for :write only
38
+ # store.has_status?(:read,5) # will be true because 5 is for :read and :execute
26
39
  def has_status?(symbol,value)
27
40
  human_array = humanize(value)
28
41
  human_array.include?(symbol)
29
42
  end
30
43
 
44
+ # This method receives index and state and will retrun status with given index if state is "1"
31
45
  def index(index,state)
32
46
  statuses[index] if state.to_s == "1"
33
47
  end
34
48
 
35
- def index_by_state(state)
36
- statuses[state]
37
- end
38
-
39
49
  private
40
50
 
41
51
  def value_to_statuses(value)
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'cover_me'
1
2
  # This file was generated by the `rspec --init` command. Conventionally, all
2
3
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
4
  # Require this file using `require "spec_helper.rb"` to ensure that it is only
data/state_store.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "state_store"
8
- s.version = "0.0.4"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Arturs Meisters"]
12
- s.date = "2012-03-29"
13
- s.description = "Create numeric value to Array of states."
12
+ s.date = "2012-08-30"
13
+ s.description = "It allows to store pre-defined set of states in one attribute as Integer"
14
14
  s.email = "arturs.meisters@gmail.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.files = [
20
20
  ".document",
21
21
  ".rspec",
22
+ ".travis.yml",
22
23
  "Gemfile",
23
24
  "Gemfile.lock",
24
25
  "LICENSE.txt",
@@ -37,24 +38,24 @@ Gem::Specification.new do |s|
37
38
  s.homepage = "http://github.com/kalifs/state_store"
38
39
  s.licenses = ["MIT"]
39
40
  s.require_paths = ["lib"]
40
- s.rubygems_version = "1.8.10"
41
- s.summary = "Convert numeric value to Array of states"
41
+ s.rubygems_version = "1.8.24"
42
+ s.summary = "Store Array of states in single Integer."
42
43
 
43
44
  if s.respond_to? :specification_version then
44
45
  s.specification_version = 3
45
46
 
46
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
48
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
48
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
+ s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
49
50
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
50
51
  else
51
52
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
52
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
53
+ s.add_dependency(%q<bundler>, ["~> 1.1.3"])
53
54
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
54
55
  end
55
56
  else
56
57
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
57
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
58
+ s.add_dependency(%q<bundler>, ["~> 1.1.3"])
58
59
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
59
60
  end
60
61
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: state_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-29 00:00:00.000000000 Z
12
+ date: 2012-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &11849260 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,21 +21,31 @@ dependencies:
21
21
  version: '3.12'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *11849260
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.12'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: bundler
27
- requirement: &11847580 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
31
36
  - !ruby/object:Gem::Version
32
- version: 1.0.0
37
+ version: 1.1.3
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *11847580
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.3
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: jeweler
38
- requirement: &11865240 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ~>
@@ -43,8 +53,13 @@ dependencies:
43
53
  version: 1.8.3
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *11865240
47
- description: Create numeric value to Array of states.
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.8.3
62
+ description: It allows to store pre-defined set of states in one attribute as Integer
48
63
  email: arturs.meisters@gmail.com
49
64
  executables: []
50
65
  extensions: []
@@ -54,6 +69,7 @@ extra_rdoc_files:
54
69
  files:
55
70
  - .document
56
71
  - .rspec
72
+ - .travis.yml
57
73
  - Gemfile
58
74
  - Gemfile.lock
59
75
  - LICENSE.txt
@@ -83,7 +99,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
99
  version: '0'
84
100
  segments:
85
101
  - 0
86
- hash: -101757466199403532
102
+ hash: -2532584141716833600
87
103
  required_rubygems_version: !ruby/object:Gem::Requirement
88
104
  none: false
89
105
  requirements:
@@ -92,8 +108,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
108
  version: '0'
93
109
  requirements: []
94
110
  rubyforge_project:
95
- rubygems_version: 1.8.10
111
+ rubygems_version: 1.8.24
96
112
  signing_key:
97
113
  specification_version: 3
98
- summary: Convert numeric value to Array of states
114
+ summary: Store Array of states in single Integer.
99
115
  test_files: []