157: def [](*args)
158: begin
159: case args.length
160: when 0
161: err = "wrong # of arguments(#{args.size} for at least 1)"
162: raise ArgumentError, err
163: when 1
164: case args[0]
165: when Array
166: args[0].collect { |e| self[e] }
167: when Regexp
168: self[@column_names.grep(args[0])]
169: else
170: @arr[conv_param(args[0])]
171: end
172:
173:
174: when 2
175: @arr[conv_param(args[0]), conv_param(args[1])]
176: else
177: results = []
178: args.flatten.each{ |arg|
179: case arg
180: when Integer
181: results.push(@arr[arg])
182: when Regexp
183: results.push(self[@column_names.grep(arg)])
184: else
185: results.push(self[conv_param(arg)])
186: end
187: }
188: results.flatten
189: end
190: rescue TypeError
191: nil
192: end
193: end