numbered_list 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 79540e08854546322cebaad39bd3f4fccbdcc8c641548625730b5f35856878f5
4
- data.tar.gz: a1165badb0836befe17d4797579e3f49a19e3f2e825d5f50f61cd5e858a79626
3
+ metadata.gz: 80cf710fa3e25cd38aba46fe6cd82b17821ab14d4d95dacce3c2a63a5537104b
4
+ data.tar.gz: 60c24f1eac0320eb8ddb0638468d9afde5911c489148baf2ed3c9ce4b2acd1d8
5
5
  SHA512:
6
- metadata.gz: 1f32ad1b28551385ed558a43b324a2a6b43b15ab1d1908476669a461a0f82c17fc419c4379ac8da81c95d5701aa5cbb676b9ad2fdf594388e15e705460d6a1b3
7
- data.tar.gz: 96e94e066a41ed96d971e98aaa3ba34cc5eeb080aa65c187e0f526d9f3dd6736c31c5a1415a68f9872052b1786d7dbe477cbee31882bf930bb88e717ddf2f330
6
+ metadata.gz: 7acdc946c956c2cc2c82e0b02b39f3728f6ba25fb5fed3e39b31969bc9017291364491ea0637babf075074619539d35ce5abcaa8e57429ede6c7898bac4fef9e
7
+ data.tar.gz: 442cbb49b8e4b80f675faef0f84e100dc6988dcf83920925488adc6b254624021206595e99fd46993e86e60afaec6ea67b429c6d5f748df2533f6f353fd4fa99
@@ -1,120 +1,122 @@
1
+ require "rubygems"
2
+ require "active_record"
3
+ require "values"
1
4
  require 'numbered_list/item_value'
5
+ require 'numbered_list/marshall_base'
6
+ module NumberedList
7
+ class List
8
+ attr_reader :item
2
9
 
3
- class NumberedList
4
- attr_reader :item
10
+ delegate :formatted, :name, :description, :order_value, :to_item_description, to: :item
5
11
 
6
- delegate :formatted, :name, :description, :order_value, :to_item_description, to: :item
7
-
8
- class BadType < StandardError
9
- end
12
+ class BadType < StandardError
13
+ end
10
14
 
11
- class DuplicateKey < StandardError
12
- end
15
+ class DuplicateKey < StandardError
16
+ end
13
17
 
14
- def self.reset_list!
18
+ def self.reset_list!
15
19
 
16
- list.values.each do |item|
20
+ list.values.each do |item|
17
21
 
18
- if respond_to?(item.builder_method_name)
22
+ if respond_to?(item.builder_method_name)
19
23
 
20
- (
21
- class << self;
22
- self;
23
- end).send(:remove_method, item.builder_method_name)
24
+ (
25
+ class << self;
26
+ self;
27
+ end).send(:remove_method, item.builder_method_name)
24
28
 
25
- end #https://www.ruby-forum.com/topic/116025
26
- if respond_to?(item.query_method_name)
27
- remove_method item.query_method_name
29
+ end #https://www.ruby-forum.com/topic/116025
30
+ if respond_to?(item.query_method_name)
31
+ remove_method item.query_method_name
32
+ end
28
33
  end
34
+ @items = {}
29
35
  end
30
- @items = {}
31
- end
32
36
 
33
- def self.list
34
- @items || {}
35
- end
37
+ def self.list
38
+ @items || {}
39
+ end
36
40
 
37
- def self.add_item(item)
41
+ def self.add_item(item)
38
42
 
39
- if list.has_key?(item.name)
40
- raise DuplicateKey, "The key #{item.name} has already been registered."
43
+ if list.has_key?(item.name)
44
+ raise DuplicateKey, "The key #{item.name} has already been registered."
45
+ end
46
+ @items ||= {}
47
+ @items[item.name] = item
41
48
  end
42
- @items ||= {}
43
- @items[item.name] = item
44
- end
45
49
 
46
- def self.add_item_builder(item)
50
+ def self.add_item_builder(item)
47
51
 
48
- self.define_singleton_method(item.builder_method_name) do
49
- self.new(item.name)
52
+ self.define_singleton_method(item.builder_method_name) do
53
+ self.new(item.name)
54
+ end
50
55
  end
51
- end
52
56
 
53
- def self.add_item_query(item)
54
- define_method(item.query_method_name) do
55
- name == item.name
57
+ def self.add_item_query(item)
58
+ define_method(item.query_method_name) do
59
+ name == item.name
60
+ end
56
61
  end
57
- end
58
62
 
59
- def self.item(item_values)
63
+ def self.item(item_values)
60
64
 
61
- item = NumberedList::ItemValue.with(item_values)
65
+ item = NumberedList::ItemValue.with(item_values)
62
66
 
63
- add_item(item)
64
- add_item_builder(item)
65
- add_item_query(item)
66
- class_exists = "#{self}::Marshall".constantize rescue nil #https://stackoverflow.com/a/32869926
67
+ add_item(item)
68
+ add_item_builder(item)
69
+ add_item_query(item)
70
+ class_exists = "#{self}::Marshall".constantize rescue nil #https://stackoverflow.com/a/32869926
67
71
 
68
- add_marshall_class unless class_exists
69
- end
72
+ add_marshall_class unless class_exists
73
+ end
70
74
 
71
- def self.add_marshall_class
72
- klass = self.const_set("Marshall", Class.new(NumberedList::MarshallBase))
73
- original_class = self
74
- klass.class_eval do
75
- define_method(:value_class) do
76
- return original_class
75
+ def self.add_marshall_class
76
+ klass = self.const_set("Marshall", Class.new(NumberedList::MarshallBase))
77
+ original_class = self
78
+ klass.class_eval do
79
+ define_method(:value_class) do
80
+ return original_class
81
+ end
77
82
  end
78
83
  end
79
- end
80
84
 
81
- def initialize(name)
82
- if !self.class.types.include?(name.to_s.upcase)
83
- raise BadType, "'#{name}' Class #{name.class} is not a valid #{self.class.to_s}"
85
+ def initialize(name)
86
+ if !self.class.types.include?(name.to_s.upcase)
87
+ raise BadType, "'#{name}' Class #{name.class} is not a valid #{self.class.to_s}"
88
+ end
89
+ @item = self.class.find_item(name.to_s)
84
90
  end
85
- @item = self.class.find_item(name.to_s)
86
- end
87
-
88
91
 
89
- def self.find_item(key)
90
- list && list.has_key?(key) ? list[key] : raise(BadType, "Unable to find the #{key}/#{key.class} for #{self.to_s} #{self.types} NumberedItem")
91
- end
92
92
 
93
+ def self.find_item(key)
94
+ list && list.has_key?(key) ? list[key] : raise(BadType, "Unable to find the #{key}/#{key.class} for #{self.to_s} #{self.types} NumberedItem")
95
+ end
93
96
 
94
- def self.description(label)
95
- find_item(label).description
96
- end
97
97
 
98
- def self.as_objs
99
- self.types.collect {|t| self.new(t)}
100
- end
98
+ def self.description(label)
99
+ find_item(label).description
100
+ end
101
101
 
102
- def ==(other)
103
- other.to_s == self.to_s
104
- end
102
+ def self.as_objs
103
+ self.types.collect { |t| self.new(t) }
104
+ end
105
105
 
106
- def to_s
107
- name
108
- end
106
+ def ==(other)
107
+ other.to_s == self.to_s
108
+ end
109
109
 
110
- def to_str
111
- to_s
112
- end
110
+ def to_s
111
+ name
112
+ end
113
113
 
114
- def self.types
115
- list.keys
114
+ def to_str
115
+ to_s
116
+ end
116
117
 
118
+ def self.types
119
+ list.keys
120
+ end
117
121
  end
118
-
119
-
120
- end
122
+ end
@@ -1,5 +1,6 @@
1
1
 
2
- class NumberedList::ItemValue < Value.new(:name, :formatted, :order_value, :description)
2
+ module NumberedList
3
+ class ItemValue < Value.new(:name, :formatted, :order_value, :description)
3
4
  def builder_method_name
4
5
  method_name.to_sym
5
6
  end
@@ -13,3 +14,4 @@
13
14
  "#{formatted} :: #{description}"
14
15
  end
15
16
  end
17
+ end
@@ -1,5 +1,6 @@
1
1
 
2
- class NumberedList::MarshallBase < ActiveRecord::Type::Value
2
+ module NumberedList
3
+ class MarshallBase < ActiveRecord::Type::Value
3
4
 
4
5
  def value_class
5
6
  Item
@@ -21,3 +22,4 @@
21
22
  end
22
23
  end
23
24
 
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: numbered_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dirk Elmendorf
@@ -24,6 +24,48 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: values
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '1.8'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '1.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.7'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: values
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '1.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '1.8'
27
69
  description: This is a simpler wrapper object to make it easy to build usefule Enum/Value
28
70
  Objects
29
71
  email: dirk@r26d.com