Truncates the buffer string to at most integer bytes. The strio must be opened for writing.
Appends str
to the string being scanned. This method does not affect scan pointer.
s = StringScanner.new("Fri Dec 12 1975 14:39") s.scan(/Fri /) s << " +1000 GMT" s.string # -> "Fri Dec 12 1975 14:39 +1000 GMT" s.scan(/Dec/) # -> "Dec"
Tests whether the given pattern
is matched from the current scan pointer. Returns the length of the match, or nil
. The scan pointer is not advanced.
s = StringScanner.new('test string') p s.match?(/\w+/) # -> 4 p s.match?(/\w+/) # -> 4 p s.match?(/\s+/) # -> nil
Returns true
iff the last match was successful.
s = StringScanner.new('test string') s.match?(/\w+/) # => 4 s.matched? # => true s.match?(/\d+/) # => nil s.matched? # => false
Returns the last matched string.
s = StringScanner.new('test string') s.match?(/\w+/) # -> 4 s.matched # -> "test"
Sets current codepage. The WIN32OLE.codepage
is initialized according to Encoding.default_internal
. If Encoding.default_internal
is nil then WIN32OLE.codepage
is initialized according to Encoding.default_external
.
WIN32OLE.codepage = WIN32OLE::CP_UTF8 WIN32OLE.codepage = 65001
disconnects OLE server. If this method called, then the WIN32OLE_EVENT
object does not receive the OLE server event any more. This method is trial implementation.
ie = WIN32OLE.new('InternetExplorer.Application') ev = WIN32OLE_EVENT.new(ie) ev.on_event() {...} ... ev.unadvise
Returns true if argument is optional.
tobj = WIN32OLE_TYPE.new('Microsoft Excel 9.0 Object Library', 'Workbook') method = WIN32OLE_METHOD.new(tobj, 'SaveAs') param1 = method.params[0] puts "#{param1.name} #{param1.optional?}" # => Filename true
Returns the number of key-value pairs in the hash.
h = { "d" => 100, "a" => 200, "v" => 300, "e" => 400 } h.size #=> 4 h.delete("a") #=> 200 h.size #=> 3 h.length #=> 3
Hash#length
is an alias for Hash#size
.
Adds the contents of the given hashes to the receiver.
If no block is given, entries with duplicate keys are overwritten with the values from each other_hash
successively, otherwise the value for each duplicate key is determined by calling the block with the key, its value in the receiver and its value in each other_hash
.
h1 = { "a" => 100, "b" => 200 } h1.merge! #=> {"a"=>100, "b"=>200} h1 #=> {"a"=>100, "b"=>200} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h1.merge!(h2) #=> {"a"=>100, "b"=>246, "c"=>300} h1 #=> {"a"=>100, "b"=>246, "c"=>300} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) {|key, v1, v2| v1 } #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400}
Hash#update
is an alias for Hash#merge!
.
Adds the contents of the given hashes to the receiver.
If no block is given, entries with duplicate keys are overwritten with the values from each other_hash
successively, otherwise the value for each duplicate key is determined by calling the block with the key, its value in the receiver and its value in each other_hash
.
h1 = { "a" => 100, "b" => 200 } h1.merge! #=> {"a"=>100, "b"=>200} h1 #=> {"a"=>100, "b"=>200} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h1.merge!(h2) #=> {"a"=>100, "b"=>246, "c"=>300} h1 #=> {"a"=>100, "b"=>246, "c"=>300} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge!(h2, h3) {|key, v1, v2| v1 } #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>200, "c"=>300, "d"=>400}
Hash#update
is an alias for Hash#merge!
.
Returns a new hash that combines the contents of the receiver and the contents of the given hashes.
If no block is given, entries with duplicate keys are overwritten with the values from each other_hash
successively, otherwise the value for each duplicate key is determined by calling the block with the key, its value in the receiver and its value in each other_hash
.
When called without any argument, returns a copy of the receiver.
h1 = { "a" => 100, "b" => 200 } h2 = { "b" => 246, "c" => 300 } h3 = { "b" => 357, "d" => 400 } h1.merge #=> {"a"=>100, "b"=>200} h1.merge(h2) #=> {"a"=>100, "b"=>246, "c"=>300} h1.merge(h2, h3) #=> {"a"=>100, "b"=>357, "c"=>300, "d"=>400} h1.merge(h2) {|key, oldval, newval| newval - oldval} #=> {"a"=>100, "b"=>46, "c"=>300} h1.merge(h2, h3) {|key, oldval, newval| newval - oldval} #=> {"a"=>100, "b"=>311, "c"=>300, "d"=>400} h1 #=> {"a"=>100, "b"=>200}
Returns a new array that is a one-dimensional flattening of this hash. That is, for every key or value that is an array, extract its elements into the new array. Unlike Array#flatten
, this method does not flatten recursively by default. The optional level argument determines the level of recursion to flatten.
a = {1=> "one", 2 => [2,"two"], 3 => "three"} a.flatten # => [1, "one", 2, [2, "two"], 3, "three"] a.flatten(2) # => [1, "one", 2, 2, "two", 3, "three"]
Returns a new hash with the nil values/key pairs removed
h = { a: 1, b: false, c: nil } h.compact #=> { a: 1, b: false } h #=> { a: 1, b: false, c: nil }
Removes all nil values from the hash. Returns nil if no changes were made, otherwise returns the hash.
h = { a: 1, b: false, c: nil } h.compact! #=> { a: 1, b: false }
Returns true
if the given key is present in hsh.
h = { "a" => 100, "b" => 200 } h.has_key?("a") #=> true h.has_key?("z") #=> false
Note that include?
and member?
do not test member equality using ==
as do other Enumerables.
See also Enumerable#include?
Adds the contents of hash
to the environment variables. If no block is specified entries with duplicate keys are overwritten, otherwise the value of each duplicate name is determined by calling the block with the key, its value from the environment and its value from the hash.
Returns the number of environment variables.
Returns true
if there is an environment variable with the given name
.
Reads at most maxlen bytes from the ARGF
stream.
If the optional outbuf argument is present, it must reference a String
, which will receive the data. The outbuf will contain only the received data after the method call even if it is not empty at the beginning.
It raises EOFError
on end of ARGF
stream. Since ARGF
stream is a concatenation of multiple files, internally EOF is occur for each file. ARGF.readpartial
returns empty strings for EOFs except the last one and raises EOFError
for the last one.
Parse an HTTP query string into a hash of key=>value pairs.
params = CGI::parse("query_string") # {"name1" => ["value1", "value2", ...], # "name2" => ["value1", "value2", ...], ... }
This method wraps a String
you provide, or an empty default String
, in a CSV
object which is passed to the provided block. You can use the block to append CSV
rows to the String
and when the block exits, the final String
will be returned.
Note that a passed String
is modified by this method. Call dup() before passing if you need a new String
.
The options
parameter can be anything CSV::new()
understands. This method understands an additional :encoding
parameter when not passed a String
to set the base Encoding
for the output. CSV
needs this hint if you plan to output non-ASCII compatible data.
This method can be used to easily parse CSV
out of a String
. You may either provide a block
which will be called with each row of the String
in turn, or just use the returned Array
of Arrays (when no block
is given).
You pass your str
to read from, and an optional options
containing anything CSV::new()
understands.