source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/rexml/attlistdecl.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.8 KB
Line 
1#vim:ts=2 sw=2 noexpandtab:
2require 'rexml/child'
3require 'rexml/source'
4
5module REXML
6 # This class needs:
7 # * Documentation
8 # * Work! Not all types of attlists are intelligently parsed, so we just
9 # spew back out what we get in. This works, but it would be better if
10 # we formatted the output ourselves.
11 #
12 # AttlistDecls provide *just* enough support to allow namespace
13 # declarations. If you need some sort of generalized support, or have an
14 # interesting idea about how to map the hideous, terrible design of DTD
15 # AttlistDecls onto an intuitive Ruby interface, let me know. I'm desperate
16 # for anything to make DTDs more palateable.
17 class AttlistDecl < Child
18 include Enumerable
19
20 # What is this? Got me.
21 attr_reader :element_name
22
23 # Create an AttlistDecl, pulling the information from a Source. Notice
24 # that this isn't very convenient; to create an AttlistDecl, you basically
25 # have to format it yourself, and then have the initializer parse it.
26 # Sorry, but for the forseeable future, DTD support in REXML is pretty
27 # weak on convenience. Have I mentioned how much I hate DTDs?
28 def initialize(source)
29 super()
30 if (source.kind_of? Array)
31 @element_name, @pairs, @contents = *source
32 end
33 end
34
35 # Access the attlist attribute/value pairs.
36 # value = attlist_decl[ attribute_name ]
37 def [](key)
38 @pairs[key]
39 end
40
41 # Whether an attlist declaration includes the given attribute definition
42 # if attlist_decl.include? "xmlns:foobar"
43 def include?(key)
44 @pairs.keys.include? key
45 end
46
47 # Itterate over the key/value pairs:
48 # attlist_decl.each { |attribute_name, attribute_value| ... }
49 def each(&block)
50 @pairs.each(&block)
51 end
52
53 # Write out exactly what we got in.
54 def write out, indent=-1
55 out << @contents
56 end
57
58 def node_type
59 :attlistdecl
60 end
61 end
62end
Note: See TracBrowser for help on using the repository browser.