typecollection 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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