saxaphone 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,13 +54,13 @@ module Saxaphone
54
54
 
55
55
  def add_element(element)
56
56
  if element_handler = self.class.element_handlers[element.name]
57
- instance_exec(element, &element_handler.proc)
57
+ instance_exec(element, &element_handler.proc) if element_handler.proc
58
58
  end
59
59
  end
60
60
 
61
61
  def new_element(element_name)
62
62
  if element_handler = self.class.element_handlers[element_name]
63
- klass = element_handler.class_name.constantize
63
+ klass = Saxaphone::Util.constantize(element_handler.class_name)
64
64
  else
65
65
  klass = Saxaphone::Element
66
66
  end
@@ -0,0 +1,16 @@
1
+ module Saxaphone
2
+ class Util
3
+ class << self
4
+ def constantize(camel_cased_word)
5
+ names = camel_cased_word.split('::')
6
+ names.shift if names.empty? || names.first.empty?
7
+
8
+ constant = Object
9
+ names.each do |name|
10
+ constant = constant.const_defined?(name, false) ? constant.const_get(name) : constant.const_missing(name)
11
+ end
12
+ constant
13
+ end
14
+ end
15
+ end
16
+ end
data/lib/saxaphone.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module Saxaphone
2
2
  autoload :Document, 'saxaphone/document'
3
3
  autoload :Element, 'saxaphone/element'
4
+ autoload :Util, 'saxaphone/util'
4
5
  end
data/test/element_test.rb CHANGED
@@ -15,9 +15,11 @@ class Saxaphone::ElementTest < MiniTest::Spec
15
15
  element_attributes %w(foo bar)
16
16
  element_attribute 'faz', as: 'baz'
17
17
 
18
- has_element 'omg', 'TestChildElement' do |element|
18
+ has_element 'omg', 'Saxaphone::ElementTest::TestChildElement' do |element|
19
19
  self.child_special = element.special
20
20
  end
21
+
22
+ has_element 'wtf', 'Saxaphone::ElementTest::TestChildElement'
21
23
  end
22
24
 
23
25
  def test_setup
@@ -41,12 +43,23 @@ class Saxaphone::ElementTest < MiniTest::Spec
41
43
  assert_equal({'baz' => 'value'}, element.attributes)
42
44
  end
43
45
 
44
- def test_has_element
46
+ def test_has_element_with_block
45
47
  element = TestElement.new
46
- child_element = TestChildElement.new('omg')
48
+ child_element = element.new_element('omg')
49
+
50
+ assert_kind_of TestChildElement, child_element
47
51
  child_element.special = 'weee'
48
52
  element.add_element(child_element)
49
53
 
50
54
  assert_equal 'weee', element.child_special
51
55
  end
56
+
57
+ def test_has_element_without_block
58
+ element = TestElement.new
59
+ child_element = element.new_element('omg')
60
+
61
+ assert_kind_of TestChildElement, child_element
62
+ element.add_element(child_element)
63
+ # silence?
64
+ end
52
65
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: saxaphone
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.0
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matthew Higgins
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-26 00:00:00 -07:00
13
+ date: 2011-06-01 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -38,6 +38,7 @@ files:
38
38
  - README.rdoc
39
39
  - lib/saxaphone/document.rb
40
40
  - lib/saxaphone/element.rb
41
+ - lib/saxaphone/util.rb
41
42
  - lib/saxaphone.rb
42
43
  - test/document_test.rb
43
44
  - test/element_test.rb
@@ -69,6 +70,6 @@ rubyforge_project:
69
70
  rubygems_version: 1.6.2
70
71
  signing_key:
71
72
  specification_version: 3
72
- summary: Sexy SAX Parsing
73
+ summary: Object Oriented SAX Parsing
73
74
  test_files: []
74
75