xamplr 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/CHANGES.txt +13 -0
  2. data/LICENSE +3 -0
  3. data/README.rdoc +26 -0
  4. data/README.rdoc.orig +118 -0
  5. data/Rakefile +85 -0
  6. data/VERSION.yml +4 -0
  7. data/examples/random-people-shared-addresses/Makefile +16 -0
  8. data/examples/random-people-shared-addresses/batch-load-users.rb +83 -0
  9. data/examples/random-people-shared-addresses/find-mentions.rb +47 -0
  10. data/examples/random-people-shared-addresses/find-people-by-address.rb +104 -0
  11. data/examples/random-people-shared-addresses/optimise.rb +16 -0
  12. data/examples/random-people-shared-addresses/people.rb +35 -0
  13. data/examples/random-people-shared-addresses/query.rb +75 -0
  14. data/examples/random-people-shared-addresses/query2.rb +73 -0
  15. data/examples/random-people-shared-addresses/random-names.csv +10000 -0
  16. data/examples/random-people-shared-addresses/settings.rb +3 -0
  17. data/examples/random-people-shared-addresses/what-to-query-on.rb +82 -0
  18. data/examples/random-people-shared-addresses/xampl-gen.rb +36 -0
  19. data/examples/random-people-shared-addresses/xml/people.xml +14 -0
  20. data/examples/random-people/Makefile +16 -0
  21. data/examples/random-people/batch-load-users.rb +61 -0
  22. data/examples/random-people/optimise.rb +16 -0
  23. data/examples/random-people/people.rb +22 -0
  24. data/examples/random-people/query.rb +73 -0
  25. data/examples/random-people/query2.rb +73 -0
  26. data/examples/random-people/random-names.csv +10000 -0
  27. data/examples/random-people/rawtc.rb +91 -0
  28. data/examples/random-people/settings.rb +3 -0
  29. data/examples/random-people/what-to-query-on.rb +80 -0
  30. data/examples/random-people/xampl-gen.rb +36 -0
  31. data/examples/random-people/xml/people.xml +11 -0
  32. data/examples/read-testing/Makefile +10 -0
  33. data/examples/read-testing/load.rb +65 -0
  34. data/examples/read-testing/read.rb +51 -0
  35. data/examples/read-testing/rrr.rb +87 -0
  36. data/examples/read-testing/settings.rb +2 -0
  37. data/examples/read-testing/xampl-gen.rb +36 -0
  38. data/examples/read-testing/xml/text.xml +8 -0
  39. data/examples/tokyo-cabinet-experimental/expt-query.rb +42 -0
  40. data/examples/tokyo-cabinet-experimental/expt-query2.rb +42 -0
  41. data/examples/tokyo-cabinet-experimental/expt-query3.rb +41 -0
  42. data/examples/tokyo-cabinet-experimental/expt-reader.rb +32 -0
  43. data/examples/tokyo-cabinet-experimental/expt.rb +61 -0
  44. data/examples/tokyo-cabinet-experimental/xampl-gen.rb +36 -0
  45. data/examples/tokyo-cabinet-experimental/xml/tcx.xml +6 -0
  46. data/lib/xampl-generator.rb +3 -0
  47. data/lib/xampl.rb +3 -0
  48. data/lib/xamplr-generator.rb +10 -0
  49. data/lib/xamplr.rb +37 -0
  50. data/lib/xamplr/README-POSSIBLE-PROBLEMS +5 -0
  51. data/lib/xamplr/TODO +1 -0
  52. data/lib/xamplr/exceptions.rb +97 -0
  53. data/lib/xamplr/from-xml-orig.rb +350 -0
  54. data/lib/xamplr/from-xml.rb +439 -0
  55. data/lib/xamplr/gen-elements.xml +6230 -0
  56. data/lib/xamplr/gen.elements.xml +108 -0
  57. data/lib/xamplr/generate-elements.rb +15 -0
  58. data/lib/xamplr/generator.rb +5 -0
  59. data/lib/xamplr/graphml-out.rb +470 -0
  60. data/lib/xamplr/handwritten/example.rb +698 -0
  61. data/lib/xamplr/handwritten/hand-example.rb +533 -0
  62. data/lib/xamplr/handwritten/test-handwritten.rb +873 -0
  63. data/lib/xamplr/indexed-array.rb +115 -0
  64. data/lib/xamplr/mixins.rb +397 -0
  65. data/lib/xamplr/my.gen.elements.xml +461 -0
  66. data/lib/xamplr/notifications.rb +57 -0
  67. data/lib/xamplr/obsolete/fsdb.rb +62 -0
  68. data/lib/xamplr/persist-to-xml.rb +249 -0
  69. data/lib/xamplr/persistence.rb +522 -0
  70. data/lib/xamplr/persistence.rb.more_thread_safe +771 -0
  71. data/lib/xamplr/persistence.rb.partially_thread_safe +763 -0
  72. data/lib/xamplr/persister.rb +310 -0
  73. data/lib/xamplr/persisters/caches.rb +186 -0
  74. data/lib/xamplr/persisters/caching.rb +172 -0
  75. data/lib/xamplr/persisters/filesystem.rb +60 -0
  76. data/lib/xamplr/persisters/in-memory.rb +180 -0
  77. data/lib/xamplr/persisters/simple.rb +59 -0
  78. data/lib/xamplr/persisters/tokyo-cabinet.rb +641 -0
  79. data/lib/xamplr/simpleTemplate/danger.rx +4 -0
  80. data/lib/xamplr/simpleTemplate/obsolete/input-c.r4 +35 -0
  81. data/lib/xamplr/simpleTemplate/obsolete/play.r6.txt +12 -0
  82. data/lib/xamplr/simpleTemplate/obsolete/play_more.r6.txt +20 -0
  83. data/lib/xamplr/simpleTemplate/obsolete/test001.r5 +8 -0
  84. data/lib/xamplr/simpleTemplate/obsolete/test002.r5 +13 -0
  85. data/lib/xamplr/simpleTemplate/obsolete/test003.r5 +37 -0
  86. data/lib/xamplr/simpleTemplate/old/r6.000.rb +122 -0
  87. data/lib/xamplr/simpleTemplate/old/r6.001.rb +145 -0
  88. data/lib/xamplr/simpleTemplate/play.r6 +12 -0
  89. data/lib/xamplr/simpleTemplate/play_more.r6 +20 -0
  90. data/lib/xamplr/simpleTemplate/play_noblanks.r6 +21 -0
  91. data/lib/xamplr/simpleTemplate/playq.r6 +16 -0
  92. data/lib/xamplr/simpleTemplate/r6.rb +87 -0
  93. data/lib/xamplr/simpleTemplate/simple-template.rb +75 -0
  94. data/lib/xamplr/templates/child.template +47 -0
  95. data/lib/xamplr/templates/child_indexed.template +89 -0
  96. data/lib/xamplr/templates/child_modules.template +5 -0
  97. data/lib/xamplr/templates/element_classes.template +11 -0
  98. data/lib/xamplr/templates/element_data.template +282 -0
  99. data/lib/xamplr/templates/element_empty.template +285 -0
  100. data/lib/xamplr/templates/element_mixed.template +277 -0
  101. data/lib/xamplr/templates/element_simple.template +276 -0
  102. data/lib/xamplr/templates/package.template +26 -0
  103. data/lib/xamplr/test-support/Makefile +47 -0
  104. data/lib/xamplr/test-support/bench-cache.rb +80 -0
  105. data/lib/xamplr/test-support/bench-script.rb +21 -0
  106. data/lib/xamplr/test-support/bench.rb +116 -0
  107. data/lib/xamplr/test-support/bench2.rb +132 -0
  108. data/lib/xamplr/test-support/test-cache.rb +147 -0
  109. data/lib/xamplr/test-support/test-data/binding.xml +7 -0
  110. data/lib/xamplr/test-support/test-data/example.xml +14 -0
  111. data/lib/xamplr/test-support/test-data/internationalization-utf8.txt +1 -0
  112. data/lib/xamplr/test-support/test-data/labels.xml +37 -0
  113. data/lib/xamplr/test-support/test-data/labels001.xml +38 -0
  114. data/lib/xamplr/test-support/test-deep-change.rb +135 -0
  115. data/lib/xamplr/test-support/test-elements.rb +109 -0
  116. data/lib/xamplr/test-support/test-indexed-array.rb +169 -0
  117. data/lib/xamplr/test-support/test-misc.rb +73 -0
  118. data/lib/xamplr/test-support/test-names.rb +67 -0
  119. data/lib/xamplr/test-support/test-rollback.rb +106 -0
  120. data/lib/xamplr/test-support/test.rb +1504 -0
  121. data/lib/xamplr/to-ruby.rb +220 -0
  122. data/lib/xamplr/to-xml.rb +158 -0
  123. data/lib/xamplr/version.rb +67 -0
  124. data/lib/xamplr/visitor.rb +140 -0
  125. data/lib/xamplr/visitors.rb +573 -0
  126. data/lib/xamplr/xampl-generator.rb +533 -0
  127. data/lib/xamplr/xampl-hand-generated.rb +1535 -0
  128. data/lib/xamplr/xampl-module.rb +36 -0
  129. data/lib/xamplr/xampl-object-internals.rb +6 -0
  130. data/lib/xamplr/xampl-object.rb +202 -0
  131. data/lib/xamplr/xampl-persisted-object.rb +122 -0
  132. data/lib/xamplr/xml-text.rb +117 -0
  133. data/lib/xamplr/xml/document.xml +7 -0
  134. data/lib/xamplr/xml/elements.xml +101 -0
  135. data/lib/xamplr/xml/elements000.xml +73 -0
  136. data/lib/xamplr/xml/example.xml +23 -0
  137. data/lib/xamplr/xml/options.xml +12 -0
  138. data/lib/xamplr/xml/uche.xml +38 -0
  139. data/lib/xamplr/yEd-sample.graphml +300 -0
  140. data/test/test_helper.rb +10 -0
  141. data/test/xamplr_test.rb +7 -0
  142. metadata +245 -0
@@ -0,0 +1,91 @@
1
+
2
+ require 'fileutils'
3
+ require 'fastercsv'
4
+ require 'tokyocabinet'
5
+
6
+ module RawTokyoCabinet
7
+ include TokyoCabinet
8
+
9
+ def RawTokyoCabinet.note_errors(msg="TokyoCabinet Error:: %s\n")
10
+ result = yield
11
+
12
+ rmsg = nil
13
+ unless result then
14
+ rmsg = sprintf(msg, @tc_db.errmsg(@tc_db.ecode))
15
+ STDERR.printf(rmsg)
16
+ caller(0).each do |trace|
17
+ STDERR.puts(trace)
18
+ end
19
+ end
20
+ return rmsg
21
+ end
22
+
23
+ start_at = Time.now
24
+
25
+ arr_of_arrs = FasterCSV.read("random-names.csv")
26
+
27
+ parsed_at = Time.now
28
+
29
+ @tc_db = TDB.new
30
+ RawTokyoCabinet.note_errors("TC:: tuning error: %s\n") do
31
+ @tc_db.tune(-1, -1, -1, TDB::TDEFLATE)
32
+ end
33
+
34
+ FileUtils.mkdir_p('repo/raw') unless File.exist?('repo/raw')
35
+
36
+ 10.times do | iter |
37
+ RawTokyoCabinet.note_errors("TC:: open error: %s\n") do
38
+ @tc_db.open('repo/raw/repo.tct', TDB::OWRITER | TDB::OCREAT | TDB::OLCKNB ) #TDB::OTSYNC slows it down by almost 50 times
39
+ end
40
+
41
+ # Don't care if there are errors (in fact, if the index exists a failure is the expected thing)
42
+ %w{ surname city state email }.each do | index_name |
43
+ @tc_db.setindex(index_name, TDB::ITLEXICAL | TDB::ITKEEP)
44
+ end
45
+
46
+ $tc_time = 0
47
+ record_count = @tc_db.rnum()
48
+
49
+ inner_start = Time.now
50
+
51
+ arr_of_arrs.each_with_index do | row, i |
52
+
53
+ # indexes = {
54
+ # 'surname' => row[1],
55
+ # 'city' => row[3],
56
+ # 'state' => row[4],
57
+ # 'email' => row[6]
58
+ # }
59
+
60
+ data = {
61
+ 'given_name' => row[0],
62
+ 'surname' => row[1],
63
+ 'street_address' => row[2],
64
+ 'city' => row[3],
65
+ 'state' => row[4],
66
+ 'postal_code' => row[5],
67
+ 'email' => row[6],
68
+ 'phone' => row[7]
69
+ }
70
+
71
+ RawTokyoCabinet.note_errors("TC:: write error: %s\n") do
72
+ start = Time.now
73
+ @tc_db.put("person-#{ record_count + i }", data)
74
+ $tc_time += Time.now - start
75
+ end
76
+
77
+ end
78
+
79
+ final_count = @tc_db.rnum
80
+
81
+ RawTokyoCabinet.note_errors("TC:: close error: %s\n") do
82
+ @tc_db.close
83
+ end
84
+
85
+ processed_at = Time.now
86
+
87
+ p "parsed in #{ parsed_at - start_at }, processed in: #{ processed_at - parsed_at }"
88
+ p "starting at #{ record_count } records, now with: #{ final_count }"
89
+ end
90
+
91
+ end
@@ -0,0 +1,3 @@
1
+ Xampl.set_default_persister_kind(:tokyo_cabinet)
2
+ Xampl.set_default_persister_format(:xml_format)
3
+ #Xampl.set_default_persister_format(:ruby_format)
@@ -0,0 +1,80 @@
1
+ $LOAD_PATH.unshift("xampl_generated_code")
2
+
3
+ require 'set'
4
+ require 'fastercsv'
5
+ require 'RandomPeople'
6
+ require 'people'
7
+ require 'settings'
8
+
9
+ module RandomPeople
10
+ arr_of_arrs = FasterCSV.read("random-names.csv")
11
+
12
+ surnames = Set.new
13
+ cities = Set.new
14
+ states = Set.new
15
+ email_domains = Set.new
16
+
17
+ arr_of_arrs.each do | row |
18
+ surname = row[1]
19
+ city = row[3]
20
+ state = row[4]
21
+
22
+ surnames << surname
23
+ cities << city
24
+ states << state
25
+
26
+ email = row[6]
27
+ domain = email.split("@")
28
+ if 2 == domain.size then
29
+ email_domains << domain[1]
30
+ end
31
+
32
+ end
33
+
34
+ puts "surnames: #{ surnames.size }"
35
+ puts "cities: #{ cities.size }"
36
+ puts "states: #{ states.size }"
37
+ puts "email_domains: #{ email_domains.size }"
38
+
39
+ puts "STATES:"
40
+ puts states.to_a.sort.inspect
41
+
42
+ puts "EMAIL DOMAINS:"
43
+ puts email_domains.to_a.sort.inspect
44
+
45
+ #GivenName,Surname,StreetAddress,City,State,ZipCode,EmailAddress,TelephoneNumber
46
+ #<people pid='' xmlns="http://xampl.com/people">
47
+ # <person pid=''
48
+ # given-name=''
49
+ # surname=''
50
+ # street-address=''
51
+ # city=''
52
+ # state=''
53
+ # postal-code=''
54
+ # email=''
55
+ # phone=''/>
56
+ #</people>
57
+
58
+ # Xampl.transaction("random-people") do
59
+ #
60
+ # people = People.new('people')
61
+ #
62
+ # arr_of_arrs.each_with_index do | row, i |
63
+ # person = people.new_person("person-#{ i }")
64
+ # person.given_name = row[0]
65
+ # person.surname = row[1]
66
+ # person.street_address = row[2]
67
+ # person.city = row[3]
68
+ # person.state = row[4]
69
+ # person.postal_code = row[5]
70
+ # person.email = row[6]
71
+ # person.phone = row[7]
72
+ # end
73
+ # end
74
+ #
75
+ # processed_at = Time.now
76
+ #
77
+ # p counts
78
+ # p "parsed in #{ parsed_at - start_at }, counted in: #{ counted_at - parsed_at }, processed in: #{ processed_at - counted_at }"
79
+
80
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby -w -I..
2
+
3
+ if $0 == __FILE__ then
4
+
5
+ class File
6
+ def File.sjoin(*args)
7
+ File.join(args.select{ | o | o })
8
+ end
9
+ end
10
+
11
+ require 'xamplr-generator'
12
+
13
+ include XamplGenerator
14
+ include Xampl
15
+
16
+ Xampl.transaction("setup", :in_memory) do
17
+ directory = File.sjoin(".", "xampl_generated_code")
18
+
19
+ options = Xampl.make(Options) do |options|
20
+ options.new_index_attribute("pid").persisted = true
21
+ options.new_index_attribute("id")
22
+
23
+ options.resolve("http://xampl.com/people", "RandomPeople", "p")
24
+ end
25
+
26
+ filenames = Dir.glob("./xml/**/*.xml")
27
+
28
+ generator = Generator.new
29
+ generator.go(:options => options,
30
+ :filenames => filenames,
31
+ :directory => directory)
32
+
33
+ #puts generator.print_elements("./generated-elements.xml")
34
+ exit!
35
+ end
36
+ end
@@ -0,0 +1,11 @@
1
+ <people pid='' xmlns="http://xampl.com/people">
2
+ <person pid=''
3
+ given-name=''
4
+ surname=''
5
+ street-address=''
6
+ city=''
7
+ state=''
8
+ postal-code=''
9
+ email=''
10
+ phone=''/>
11
+ </people>
@@ -0,0 +1,10 @@
1
+
2
+ nope:
3
+
4
+ read:
5
+ time ruby read.rb
6
+
7
+ load:
8
+ rm -rf repo
9
+ time ruby load.rb
10
+
@@ -0,0 +1,65 @@
1
+ $LOAD_PATH.unshift("xampl_generated_code")
2
+
3
+ require 'rubygems'
4
+ require 'Perf'
5
+ require 'settings'
6
+
7
+ module Perf
8
+
9
+ count = 0
10
+ root = nil
11
+ $total_lines = 0
12
+
13
+ srand( 12345 )
14
+
15
+ def Perf.make_text(count)
16
+ lines = 1 + rand(10)
17
+ $total_lines += lines
18
+
19
+ s = ""
20
+ lines.times do | i |
21
+ s << "this is a line for count: #{ count }, #{ i } of #{ lines } with scary stuff: <>&'\" ..."
22
+ end
23
+ return s
24
+ end
25
+
26
+
27
+ #<root pid=''
28
+ # xmlns="http://xampl.com/performance">
29
+ # <text pid=''
30
+ # size=''
31
+ # stuff=''>
32
+ # actual text
33
+ # </text>
34
+ #</root>
35
+
36
+ start_at = Time.now
37
+
38
+ 1.times do | outer |
39
+ Xampl.transaction("random-people") do
40
+ unless root then
41
+ root = Root.new('root')
42
+ end
43
+
44
+ 10000.times do | iter |
45
+
46
+ count += 1
47
+
48
+ text = root.new_text("text-#{ count }")
49
+ text.stuff = "---<>&\"'---"
50
+ text.content = make_text(count)
51
+
52
+ # puts "#{File.basename(__FILE__)}:#{__LINE__} #{ text.pp_xml }"
53
+
54
+ end
55
+ end
56
+
57
+ puts "transaction #{ outer } ending... #{ Time.now - start_at } seconds"
58
+ # puts "#{File.basename(__FILE__)}:#{__LINE__} #{ root.pp_xml }"
59
+ end
60
+
61
+ done_at = Time.now
62
+
63
+ p "loaded #{ count }, total lines: #{ $total_lines }, in #{ done_at - start_at }"
64
+
65
+ end
@@ -0,0 +1,51 @@
1
+ require 'rubygems'
2
+ require 'xampl_generated_code/Perf'
3
+ require 'settings'
4
+
5
+ module Perf
6
+
7
+ count = 0
8
+ root = nil
9
+ $total_lines = 0
10
+
11
+ #<root pid=''
12
+ # xmlns="http://xampl.com/performance">
13
+ # <text pid=''
14
+ # size=''
15
+ # stuff=''>
16
+ # actual text
17
+ # </text>
18
+ #</root>
19
+
20
+ start_at = Time.now
21
+
22
+ Xampl.transaction("random-people") do
23
+ root = Root['root']
24
+ end
25
+ root_at = Time.now
26
+ puts "#{File.basename(__FILE__)}:#{__LINE__} Root read in #{ root_at - start_at}"
27
+
28
+ root.text.each do | text |
29
+ count += 1
30
+ end
31
+
32
+ #puts root.pp_xml
33
+
34
+ looped_at = Time.now
35
+ puts "#{File.basename(__FILE__)}:#{__LINE__} looped over #{ count } text in #{ looped_at - root_at } NO LOADING"
36
+
37
+ count = 0
38
+ total_lines = 0
39
+
40
+ root.text.each do | text |
41
+ content = text.content
42
+ # puts "#{File.basename(__FILE__)}:#{__LINE__} content: [[#{ content }]]"
43
+ total_lines += content.length() if content
44
+ count += 1
45
+ end
46
+
47
+ done_at = Time.now
48
+
49
+ puts "loaded #{ count }, total lines: #{ total_lines }, in #{ done_at - looped_at } seconds, total time: #{ done_at - start_at } seconds"
50
+
51
+ end
@@ -0,0 +1,87 @@
1
+ require 'rubygems'
2
+ require 'libxml'
3
+
4
+ xml = %Q{
5
+ <root pid='aaaaa'
6
+ xmlns:x="http://xampl.com/extra"
7
+ xmlns="http://xampl.com/performance">
8
+ <text pid='bbbb'
9
+ x:size='ccccc'
10
+ stuff='ddddd'>
11
+ actual text &quot; well?
12
+ actual text &quot; well?
13
+ actual text &quot; well?
14
+ actual text &quot; well?
15
+ xxxxx <![CDATA[ <>"'& ]]> xxxxx
16
+ </text>
17
+ <nothing/>
18
+ <x:blob v='blob value'/>
19
+ </root>
20
+ }
21
+
22
+ reader = LibXML::XML::Reader.string(xml,
23
+ :options => LibXML::XML::Parser::Options::NOENT |
24
+ LibXML::XML::Parser::Options::NONET |
25
+ LibXML::XML::Parser::Options::NOCDATA |
26
+ LibXML::XML::Parser::Options::DTDATTR |
27
+ LibXML::XML::Parser::Options::NSCLEAN |
28
+ LibXML::XML::Parser::Options::COMPACT)
29
+
30
+ while reader.read do
31
+ # puts reader.node_type
32
+ # puts "line: #{ reader.line_number }, column: #{ reader.column_number }"
33
+
34
+ case reader.node_type
35
+ # when LibXML::XML::Reader::TYPE_ATTRIBUTE
36
+ # puts "attribute"
37
+ when LibXML::XML::Reader::TYPE_DOCUMENT
38
+ puts "DOCUMENT"
39
+ when LibXML::XML::Reader::TYPE_ELEMENT
40
+ attribute_count = reader.attribute_count
41
+ puts "element #{ reader.local_name }, ns: #{ reader.namespace_uri }, #attributes: #{ attribute_count }, depth: #{ reader.depth }"
42
+ if reader.has_attributes? then
43
+ reader.move_to_first_attribute
44
+ attribute_count.times do | i |
45
+ next if reader.namespace_declaration?
46
+ puts " attr[#{ i }]:: lname: #{ reader.local_name }, ns: #{ reader.namespace_uri } ---> #{ reader.value }"
47
+ reader.move_to_next_attribute
48
+ end
49
+ end
50
+
51
+ when LibXML::XML::Reader::TYPE_END_ELEMENT
52
+ puts "END ELEMENT"
53
+ when LibXML::XML::Reader::TYPE_TEXT
54
+ puts "TEXT [[#{ reader.read_string }]]"
55
+ when LibXML::XML::Reader::TYPE_CDATA
56
+ puts "CDATA [[#{ reader.read_string }]]"
57
+ when LibXML::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE
58
+ puts "SIGNIFICANT white space [[#{ reader.read_string }]]"
59
+ when LibXML::XML::Reader::TYPE_ENTITY_REFERENCE
60
+ puts "entity ref"
61
+ when LibXML::XML::Reader::TYPE_WHITESPACE
62
+ puts "whitespace"
63
+ when LibXML::XML::Reader::TYPE_PROCESSING_INSTRUCTION
64
+ puts "processing instruction"
65
+ when LibXML::XML::Reader::TYPE_COMMENT
66
+ puts "comment"
67
+ when LibXML::XML::Reader::TYPE_DOCUMENT_TYPE
68
+ puts "doc type"
69
+
70
+ when LibXML::XML::Reader::TYPE_XML_DECLARATION
71
+ puts "xml decl"
72
+ when LibXML::XML::Reader::TYPE_NONE
73
+ puts "NONE!!"
74
+ when LibXML::XML::Reader::TYPE_NOTATION
75
+ puts "notifiation"
76
+ when LibXML::XML::Reader::TYPE_DOCUMENT_FRAGMENT
77
+ puts "doc fragment"
78
+ when LibXML::XML::Reader::TYPE_ENTITY
79
+ puts "entity"
80
+ when LibXML::XML::Reader::TYPE_END_ENTITY
81
+ puts "
82
+ end entity"
83
+ else
84
+ puts "UNKNOWN: #{reader.node_type}"
85
+ end
86
+
87
+ end