pat-maddox-fixjour 0.1.5 → 0.1.6

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/lib/fixjour.rb CHANGED
@@ -2,7 +2,6 @@ $LOAD_PATH << File.dirname(__FILE__)
2
2
 
3
3
  require 'rubygems'
4
4
  require 'activerecord'
5
- require 'core_ext/hash'
6
5
  require 'core_ext/object'
7
6
  require 'fixjour/merging_proxy'
8
7
  require 'fixjour/redundant_check'
@@ -14,6 +13,7 @@ require 'fixjour/definitions'
14
13
  require 'fixjour/counter'
15
14
  require 'fixjour/builders'
16
15
  require 'fixjour/deprecation'
16
+ require 'fixjour/attributes'
17
17
 
18
18
  # This method is just for prettiness
19
19
  def Fixjour(options={}, &block)
@@ -0,0 +1,25 @@
1
+ module Fixjour
2
+ class Attributes < Hash
3
+ def initialize(hash)
4
+ hash.each do |k, v|
5
+ self[k.to_s] = v unless v.nil?
6
+ end
7
+
8
+ each do |k, v|
9
+ (class << self; self; end).send(:define_method, k) { v }
10
+ end
11
+ end
12
+
13
+ def [](key)
14
+ super key.to_s
15
+ end
16
+
17
+ def has_key?(key)
18
+ super key.to_s
19
+ end
20
+
21
+ def ==(other)
22
+ other.all? {|k, v| self[k] == v }
23
+ end
24
+ end
25
+ end
@@ -1,8 +1,5 @@
1
1
  module Fixjour
2
- def counter(key=nil)
3
- Counter.counter(key)
4
- end
5
-
2
+ include Counter
6
3
  class << self
7
4
  include Definitions
8
5
 
@@ -29,7 +26,7 @@ module Fixjour
29
26
  name = name_for(klass)
30
27
 
31
28
  define_create(name)
32
- define_valid_attributes(name)
29
+ define_valid_attributes(name, options)
33
30
  end
34
31
 
35
32
  # Adds builders to Fixjour.
@@ -1,30 +1,20 @@
1
1
  module Fixjour
2
- class Counter
3
- class << self
4
- def reset(key=nil)
5
- key ? counters.delete(key) : counters.clear
6
- end
7
-
8
- def counter(key)
9
- counters[key] ||= new
10
- counters[key].next
11
- end
12
-
13
- private
14
-
15
- def counters
16
- @counters ||= {}
2
+ module Counter
3
+ def self.reset(key=nil)
4
+ if key
5
+ @counters[key] = lambda { s ||= 0; s += 1 }
6
+ else
7
+ @counters = Hash.new { |h,k| s ||= 0; c = lambda { s += 1 }; h[k] = c }
17
8
  end
18
9
  end
19
-
20
10
  reset
21
11
 
22
- def initialize
23
- @value = 0
12
+ def self.counter(key)
13
+ @counters[key][]
24
14
  end
25
15
 
26
- def next
27
- @value += 1
16
+ def counter(key=nil)
17
+ Counter.counter(key)
28
18
  end
29
19
  end
30
20
  end
@@ -15,16 +15,12 @@ module Fixjour
15
15
  model
16
16
  end
17
17
  end
18
-
18
+
19
19
  # Defines the valid_*_attributes method
20
- def define_valid_attributes(name)
20
+ def define_valid_attributes(name, options)
21
21
  define_method("valid_#{name}_attributes") do |*args|
22
- valid_attributes = send("new_#{name}", *args).attributes
23
- valid_attributes.delete_if { |key, value| value.nil? }
24
- valid_attributes.stringify_keys!
25
- valid_attributes.make_indifferent!
26
- valid_attributes
22
+ Attributes.new(options.empty?? send("new_#{name}", *args).attributes : options)
27
23
  end
28
24
  end
29
25
  end
30
- end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pat-maddox-fixjour
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pat Nakajima
@@ -22,26 +22,6 @@ dependencies:
22
22
  - !ruby/object:Gem::Version
23
23
  version: "0"
24
24
  version:
25
- - !ruby/object:Gem::Dependency
26
- name: faker
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: acts_as_fu
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: "0"
44
- version:
45
25
  description:
46
26
  email: patnakajima@gmail.com
47
27
  executables: []
@@ -52,9 +32,9 @@ extra_rdoc_files: []
52
32
 
53
33
  files:
54
34
  - lib/core_ext
55
- - lib/core_ext/hash.rb
56
35
  - lib/core_ext/object.rb
57
36
  - lib/fixjour
37
+ - lib/fixjour/attributes.rb
58
38
  - lib/fixjour/builders.rb
59
39
  - lib/fixjour/counter.rb
60
40
  - lib/fixjour/definitions.rb
data/lib/core_ext/hash.rb DELETED
@@ -1,9 +0,0 @@
1
- class Hash
2
- # Makes a hash able to be accessed via symbol or string keys.
3
- def make_indifferent!
4
- keys_values = self.dup
5
- indifferent = Hash.new { |h,k| h[k.to_s] if Symbol === k }
6
- replace(indifferent)
7
- merge!(keys_values)
8
- end
9
- end