numbered_list 0.0.3 → 0.0.5

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
  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