source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/xsd/namedelements.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.4 KB
Line 
1# XSD4R - WSDL named element collection.
2# Copyright (C) 2002, 2003, 2005 NAKAMURA, Hiroshi <[email protected]>.
3
4# This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5# redistribute it and/or modify it under the same terms of Ruby's license;
6# either the dual license version in 2003, or any later version.
7
8
9module XSD
10
11
12class NamedElements
13 include Enumerable
14
15 def initialize
16 @elements = []
17 @cache = {}
18 end
19
20 def dup
21 o = NamedElements.new
22 o.elements = @elements.dup
23 o
24 end
25
26 def freeze
27 super
28 @elements.freeze
29 self
30 end
31
32 def empty?
33 size == 0
34 end
35
36 def size
37 @elements.size
38 end
39
40 def [](idx)
41 if idx.is_a?(Numeric)
42 @elements[idx]
43 else
44 @cache[idx] ||= @elements.find { |item| item.name == idx }
45 end
46 end
47
48 def find_name(name)
49 @elements.find { |item| item.name.name == name }
50 end
51
52 def keys
53 collect { |element| element.name }
54 end
55
56 def each
57 @elements.each do |element|
58 yield(element)
59 end
60 end
61
62 def <<(rhs)
63 @elements << rhs
64 self
65 end
66
67 def delete(rhs)
68 @elements.delete(rhs)
69 end
70
71 def +(rhs)
72 o = NamedElements.new
73 o.elements = @elements + rhs.elements
74 o
75 end
76
77 def concat(rhs)
78 @elements.concat(rhs.elements)
79 self
80 end
81
82 Empty = NamedElements.new.freeze
83
84protected
85
86 def elements=(rhs)
87 @elements = rhs
88 end
89
90 def elements
91 @elements
92 end
93end
94
95end
Note: See TracBrowser for help on using the repository browser.