hstorable 0.0.1 → 0.0.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: a56275999230cf78d65804c8e404e4ddf4e4ef47
4
- data.tar.gz: 12040b430a90ead22a84ee8953876a743bc310b6
3
+ metadata.gz: 2147ada7cb59fbcdecb31bd32ec1d2b1cf6913ef
4
+ data.tar.gz: 5a3dcc28952e3dd900e03f5051ea64e0c026273c
5
5
  SHA512:
6
- metadata.gz: 42aa471017da9eab2d6ee97e1a0c0917e2e1084c9dddeeb7e6ab52b8cca1f6e70504f56abd43f24a80376a896290afa283785cd3933b48878a71ab3578b40b78
7
- data.tar.gz: 867818f823c55fd8fd968af10a988df9fcdfdcbec66aec41470dc11e1a72ca390fe6f3ee2bba3b7c59e85a9a440ef24175a6544213676b69cf5e295b511a942e
6
+ metadata.gz: a9228e6b9a0a4a7ec83550124dfe36327b719736c4d6351facafbf0a08fe4042044c66590f342dff9e242f40f25d7659bc5a4b3f70c7e1a5e37d8caa48c81b68
7
+ data.tar.gz: 54f35e078b97ad89ae38cedc98aa5568f866dd0d97828a2a6812a7f5c1c6ac9a0228c7bfadf9031977de0ce93be30602e92410d93faaed927e6143513d823480
data/hstorable.gemspec CHANGED
@@ -19,5 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", "~> 10.3.2"
23
+
24
+ spec.add_runtime_dependency "pg", "0.17.1"
23
25
  end
@@ -0,0 +1,23 @@
1
+ module Hstorable
2
+ module Base
3
+ def hstore_register_field(name, options)
4
+ @hstore_fields ||= []
5
+ @hstore_fields << { name: name }.merge(options)
6
+ end
7
+
8
+ def hstore_field_names
9
+ @hstore_fields ||= []
10
+ @hstore_fields.map { |field| field[:name] }
11
+ end
12
+
13
+ def hstore_readonly_field?(name)
14
+ options = hstore_options_for_field(name)
15
+ options && options[:readonly]
16
+ end
17
+
18
+ def hstore_options_for_field(name)
19
+ @hstore_fields ||= []
20
+ @hstore_fields.find { |field| field[:name] == name }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ module Hstorable
2
+ module ModelFields
3
+ def hstore_model(options)
4
+ raise 'This feature is not implemented yet'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ module Hstorable
2
+ module SimpleFields
3
+ def hstore_simple(field, options)
4
+ name = options[:name]
5
+ default = options[:default]
6
+
7
+ define_method "#{name}" do
8
+ hstore = self.send(field)
9
+ value = hstore[name]
10
+ value ? value : default
11
+ end
12
+
13
+ define_method "#{name}=" do |value|
14
+ hstore = self.send(field)
15
+ self.send("#{field}_will_change!") if hstore[name] != value
16
+ hstore[name] = value
17
+ hstore[name]
18
+ end
19
+
20
+ hstore_register_field(name, options)
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module Hstorable
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/hstorable.rb CHANGED
@@ -1,52 +1,9 @@
1
- require "hstorable/version"
1
+ require 'hstorable/model'
2
2
 
3
3
  module Hstorable
4
- def hstore_register_field(name, options)
5
- @hstore_fields ||= []
6
- @hstore_fields << { name: name }.merge(options)
7
- end
8
-
9
- def hstore_field_names
10
- @hstore_fields.map { |field| field[:name] }
11
- end
12
-
13
- def hstore_readonly_field?(name)
14
- options = hstore_options_for_field(name)
15
- options && options[:readonly]
16
- end
17
-
18
- def hstore_options_for_field(name)
19
- @hstore_fields.find { |field| field[:name] == name }
20
- end
21
-
22
- def hstore_simple(field, options)
23
- name = options[:name]
24
- default = options[:default]
25
-
26
- define_method "#{name}" do
27
- hstore = self.send(field)
28
- value = hstore[name]
29
- value ? value : default
30
- end
31
-
32
- define_method "#{name}=" do |value|
33
- hstore = self.send(field)
34
- self.send("#{field}_will_change!") if hstore[name] != value
35
- hstore[name] = value
36
- hstore[name]
37
- end
38
-
39
- hstore_register_field(name, options)
40
- end
41
-
42
- def hstore_model(options)
43
- # TODO Implement handling of model dependencies here
44
- end
45
-
46
- def hstore(type, field, options)
47
- case type
48
- when :simple then hstore_simple(field, options)
49
- when :model then hstore_model(field, options)
50
- end
4
+ def self.included(base)
5
+ base.extend Hstorable::Base
6
+ base.extend Hstorable::SimpleFields
7
+ base.extend Hstorable::ModelFields
51
8
  end
52
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hstorable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Tsvetkov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-01 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,30 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 10.3.2
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 10.3.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: pg
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.17.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
39
53
  - !ruby/object:Gem::Version
40
- version: '0'
54
+ version: 0.17.1
41
55
  description: This gem simplifies working wih fields stored using Hstore
42
56
  email:
43
57
  - sergey.a.tsvetkov@gmail.com
@@ -52,6 +66,9 @@ files:
52
66
  - Rakefile
53
67
  - hstorable.gemspec
54
68
  - lib/hstorable.rb
69
+ - lib/hstorable/base.rb
70
+ - lib/hstorable/model_fields.rb
71
+ - lib/hstorable/simple_fields.rb
55
72
  - lib/hstorable/version.rb
56
73
  homepage: http://hstorable.kimrgrey.org/
57
74
  licenses: