typecollection 0.0.9 → 0.0.10
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/Gemfile +2 -3
- data/Rakefile +0 -8
- data/VERSION +1 -1
- data/examples/xml_generator.rb +85 -0
- data/lib/typecollection/base.rb +2 -2
- data/lib/typecollection/class+inferred_type.rb +2 -2
- data/typecollection.gemspec +10 -12
- metadata +25 -20
data/Gemfile
CHANGED
@@ -7,7 +7,6 @@ source "http://rubygems.org"
|
|
7
7
|
# Include everything needed to run rake, tests, features, etc.
|
8
8
|
group :development do
|
9
9
|
gem "shoulda", ">= 0"
|
10
|
-
gem "bundler", "
|
11
|
-
gem "jeweler", "
|
12
|
-
gem "rcov", ">= 0"
|
10
|
+
gem "bundler", ">= 1.0.0"
|
11
|
+
gem "jeweler", ">= 1.8.4"
|
13
12
|
end
|
data/Rakefile
CHANGED
@@ -33,14 +33,6 @@ Rake::TestTask.new(:test) do |test|
|
|
33
33
|
test.verbose = true
|
34
34
|
end
|
35
35
|
|
36
|
-
require 'rcov/rcovtask'
|
37
|
-
Rcov::RcovTask.new do |test|
|
38
|
-
test.libs << 'test'
|
39
|
-
test.pattern = 'test/**/test_*.rb'
|
40
|
-
test.verbose = true
|
41
|
-
test.rcov_opts << '--exclude "gems/*"'
|
42
|
-
end
|
43
|
-
|
44
36
|
task :default => :test
|
45
37
|
|
46
38
|
require 'rake/rdoctask'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.10
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'typecollection'
|
2
|
+
require 'builder'
|
3
|
+
|
4
|
+
class XMLGenerator
|
5
|
+
include TypeCollection::Base
|
6
|
+
|
7
|
+
class UnimplementedMethod < StandardError; end
|
8
|
+
|
9
|
+
def self.process_elements(elements)
|
10
|
+
raise XMLGenerator::UnimplementedMethod.new("#{self.name} doesn't implement process_elements!")
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.get_writer_instance; FileWriter.get_associated_type(self).new(); end
|
14
|
+
|
15
|
+
def self.generate_feed(elements)
|
16
|
+
writer = self.get_writer_instance()
|
17
|
+
writer.write_contents(self.process_elements(elements))
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.generate_all_feeds(elements)
|
21
|
+
XMLGenerator.all_types.each do |klass|
|
22
|
+
klass.generate_feed(elements)
|
23
|
+
end
|
24
|
+
true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class FileWriter
|
29
|
+
include TypeCollection::Base
|
30
|
+
|
31
|
+
class UnimplementedMethod < StandardError; end
|
32
|
+
|
33
|
+
def self.file_name; "#{self.inferred_type}.xml"; end
|
34
|
+
|
35
|
+
def write_contents(string_contents)
|
36
|
+
raise FileWriter::UnimplementedMethod.new("#{self.name} doesn't implement write_contents!")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class FirstXMLGenerator < XMLGenerator
|
41
|
+
|
42
|
+
def self.process_elements(elements)
|
43
|
+
xml = Builder::XmlMarkup.new()
|
44
|
+
xml.body do
|
45
|
+
xml.name "First" # => Alternatively, self.inferred_type
|
46
|
+
xml.elements do
|
47
|
+
elements.each do |element|
|
48
|
+
xml.element "One way to handle #{element.to_s}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
xml.target!
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class FirstFileWriter < FileWriter
|
57
|
+
def write_contents(string_contents)
|
58
|
+
File.open(self.class.file_name, 'w'){|f| f.write(string_contents) }
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
class SecondXMLGenerator < XMLGenerator
|
63
|
+
def self.process_elements(elements)
|
64
|
+
xml = Builder::XmlMarkup.new()
|
65
|
+
xml.body do
|
66
|
+
xml.name self.inferred_type
|
67
|
+
xml.elements do
|
68
|
+
elements.each do |element|
|
69
|
+
xml.element "Another Way to Handle #{element.to_s}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
xml.target!
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class SecondFileWriter < FileWriter
|
78
|
+
def write_contents(string_contents)
|
79
|
+
File.open(self.class.file_name, 'a'){|f| f.write(string_contents) }
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Example of how you might perform this example
|
84
|
+
#
|
85
|
+
# XMLGenerator.generate_all_feeds(["one", 2, "three"])
|
data/lib/typecollection/base.rb
CHANGED
@@ -10,7 +10,7 @@ module TypeCollection
|
|
10
10
|
def get_type(type)
|
11
11
|
type = type.inferred_type() if (type.kind_of?(Class))
|
12
12
|
mems = __tc_members()
|
13
|
-
raise TypeCollection::UnknownChildType.new("
|
13
|
+
raise TypeCollection::UnknownChildType.new("Unregistered type: #{type}") unless (mems.has_key?(type))
|
14
14
|
return mems[type]
|
15
15
|
end
|
16
16
|
# Get similar type based on the object passed in which can be a String,
|
@@ -31,4 +31,4 @@ module TypeCollection
|
|
31
31
|
base.extend(TypeCollection::Base::BaseClassMethods)
|
32
32
|
end
|
33
33
|
end
|
34
|
-
end
|
34
|
+
end
|
@@ -3,9 +3,9 @@ class Class
|
|
3
3
|
klass_name = self.name.split("::").last
|
4
4
|
parent_klass = self.superclass
|
5
5
|
while(parent_klass != nil)
|
6
|
-
check = parent_klass.name.split("::").last
|
6
|
+
check = /#{parent_klass.name.split("::").last}$/
|
7
7
|
if (klass_name.match(check))
|
8
|
-
return klass_name.gsub(check,
|
8
|
+
return klass_name.gsub(check, '')
|
9
9
|
end
|
10
10
|
parent_klass = parent_klass.superclass
|
11
11
|
end
|
data/typecollection.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "typecollection"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.10"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["James Petty"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-08-13"
|
13
13
|
s.description = "Easily map subtypes into their parent type for later retrieval"
|
14
14
|
s.email = "jp@jibe.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"README.rdoc",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
|
+
"examples/xml_generator.rb",
|
26
27
|
"lib/typecollection.rb",
|
27
28
|
"lib/typecollection/base.rb",
|
28
29
|
"lib/typecollection/class+inferred_type.rb",
|
@@ -35,7 +36,7 @@ Gem::Specification.new do |s|
|
|
35
36
|
s.homepage = "http://github.com/pettyjamesm/TypeCollection"
|
36
37
|
s.licenses = ["MIT"]
|
37
38
|
s.require_paths = ["lib"]
|
38
|
-
s.rubygems_version = "1.8.
|
39
|
+
s.rubygems_version = "1.8.24"
|
39
40
|
s.summary = "TypeCollection maintains a record of sub-types for a given class based on a common suffix."
|
40
41
|
|
41
42
|
if s.respond_to? :specification_version then
|
@@ -43,20 +44,17 @@ Gem::Specification.new do |s|
|
|
43
44
|
|
44
45
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
46
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
46
|
-
s.add_development_dependency(%q<bundler>, ["
|
47
|
-
s.add_development_dependency(%q<jeweler>, ["
|
48
|
-
s.add_development_dependency(%q<rcov>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
48
|
+
s.add_development_dependency(%q<jeweler>, [">= 1.8.4"])
|
49
49
|
else
|
50
50
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
51
|
-
s.add_dependency(%q<bundler>, ["
|
52
|
-
s.add_dependency(%q<jeweler>, ["
|
53
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
51
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
52
|
+
s.add_dependency(%q<jeweler>, [">= 1.8.4"])
|
54
53
|
end
|
55
54
|
else
|
56
55
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
57
|
-
s.add_dependency(%q<bundler>, ["
|
58
|
-
s.add_dependency(%q<jeweler>, ["
|
59
|
-
s.add_dependency(%q<rcov>, [">= 0"])
|
56
|
+
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
57
|
+
s.add_dependency(%q<jeweler>, [">= 1.8.4"])
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: typecollection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
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-
|
12
|
+
date: 2012-08-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: shoulda
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,40 +21,44 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bundler
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
|
-
- -
|
35
|
+
- - ! '>='
|
31
36
|
- !ruby/object:Gem::Version
|
32
37
|
version: 1.0.0
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.0.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: jeweler
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
|
-
- -
|
51
|
+
- - ! '>='
|
42
52
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
53
|
+
version: 1.8.4
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rcov
|
49
|
-
requirement: &70353724811160 !ruby/object:Gem::Requirement
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
57
|
none: false
|
51
58
|
requirements:
|
52
59
|
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
55
|
-
type: :development
|
56
|
-
prerelease: false
|
57
|
-
version_requirements: *70353724811160
|
61
|
+
version: 1.8.4
|
58
62
|
description: Easily map subtypes into their parent type for later retrieval
|
59
63
|
email: jp@jibe.com
|
60
64
|
executables: []
|
@@ -69,6 +73,7 @@ files:
|
|
69
73
|
- README.rdoc
|
70
74
|
- Rakefile
|
71
75
|
- VERSION
|
76
|
+
- examples/xml_generator.rb
|
72
77
|
- lib/typecollection.rb
|
73
78
|
- lib/typecollection/base.rb
|
74
79
|
- lib/typecollection/class+inferred_type.rb
|
@@ -92,7 +97,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
97
|
version: '0'
|
93
98
|
segments:
|
94
99
|
- 0
|
95
|
-
hash:
|
100
|
+
hash: 110654369381516186
|
96
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
102
|
none: false
|
98
103
|
requirements:
|
@@ -101,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
106
|
version: '0'
|
102
107
|
requirements: []
|
103
108
|
rubyforge_project:
|
104
|
-
rubygems_version: 1.8.
|
109
|
+
rubygems_version: 1.8.24
|
105
110
|
signing_key:
|
106
111
|
specification_version: 3
|
107
112
|
summary: TypeCollection maintains a record of sub-types for a given class based on
|