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 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", "~> 1.0.0"
11
- gem "jeweler", "~> 1.6.4"
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.9
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"])
@@ -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("Unregisterred type: #{type}") unless (mems.has_key?(type))
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
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "typecollection"
8
- s.version = "0.0.9"
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-01-23"
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.10"
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>, ["~> 1.0.0"])
47
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
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>, ["~> 1.0.0"])
52
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
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>, ["~> 1.0.0"])
58
- s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
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.9
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-01-23 00:00:00.000000000 Z
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: &70353724765300 !ruby/object:Gem::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: *70353724765300
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: &70353724761620 !ruby/object:Gem::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: *70353724761620
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: &70353724757700 !ruby/object:Gem::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.6.4
53
+ version: 1.8.4
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70353724757700
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: '0'
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: 3480049945705184429
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.10
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