mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* lib/optparse/version.rb: remove variable shadowing to stop
warning. [ruby-core:20612] * lib/irb/completion.rb, lib/net/imap.rb, lib/prime.rb, lib/rinda/ring.rb, lib/racc/parser.rb, lib/shell/command-processor.rb, lib/yaml/yamlnode.rb: ditto. * lib/racc/parser.rb: remove space before parentheses. * lib/shell/command-processor.rb, lib/shell/process-controller.rb: use parentheses around arguments. * lib/irb/ext/change-ws.rb, lib/rexml/validation/relaxng.rb, lib/yaml/baseemitter.rb: indentation fix. * lib/matrix.rb: small cosmetic change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20859 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									cd5c309542
								
							
						
					
					
						commit
						85bae86cb6
					
				
					 14 changed files with 319 additions and 330 deletions
				
			
		
							
								
								
									
										19
									
								
								ChangeLog
									
										
									
									
									
								
							
							
						
						
									
										19
									
								
								ChangeLog
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,22 @@
 | 
			
		|||
Thu Dec 18 16:48:12 2008  Yukihiro Matsumoto  <matz@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* lib/optparse/version.rb: remove variable shadowing to stop
 | 
			
		||||
	  warning.   [ruby-core:20612]
 | 
			
		||||
 | 
			
		||||
	* lib/irb/completion.rb, lib/net/imap.rb, lib/prime.rb,
 | 
			
		||||
	  lib/rinda/ring.rb, lib/racc/parser.rb,
 | 
			
		||||
	  lib/shell/command-processor.rb, lib/yaml/yamlnode.rb: ditto.
 | 
			
		||||
 | 
			
		||||
	* lib/racc/parser.rb: remove space before parentheses.
 | 
			
		||||
 | 
			
		||||
	* lib/shell/command-processor.rb, lib/shell/process-controller.rb:
 | 
			
		||||
	  use parentheses around arguments.
 | 
			
		||||
 | 
			
		||||
	* lib/irb/ext/change-ws.rb, lib/rexml/validation/relaxng.rb,
 | 
			
		||||
	  lib/yaml/baseemitter.rb: indentation fix.
 | 
			
		||||
 | 
			
		||||
	* lib/matrix.rb: small cosmetic change.
 | 
			
		||||
 | 
			
		||||
Thu Dec 18 08:15:04 2008  James Edward Gray II  <jeg2@ruby-lang.org>
 | 
			
		||||
 | 
			
		||||
	* lib/xmlrpc/server.rb:  Restricting method inspection to show only
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -159,7 +159,7 @@ module IRB
 | 
			
		|||
	    end
 | 
			
		||||
	    next if name != "IRB::Context" and 
 | 
			
		||||
	      /^(IRB|SLex|RubyLex|RubyToken)/ =~ name
 | 
			
		||||
	    candidates.concat m.instance_methods(false).collect{|m| m.to_s}
 | 
			
		||||
	    candidates.concat m.instance_methods(false).collect{|x| x.to_s}
 | 
			
		||||
	  }
 | 
			
		||||
	  candidates.sort!
 | 
			
		||||
	  candidates.uniq!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -56,6 +56,6 @@ module IRB
 | 
			
		|||
#       end
 | 
			
		||||
#     end
 | 
			
		||||
#     alias change_workspace change_binding
 | 
			
		||||
   end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										132
									
								
								lib/matrix.rb
									
										
									
									
									
								
							
							
						
						
									
										132
									
								
								lib/matrix.rb
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -140,10 +140,8 @@ class Matrix
 | 
			
		|||
  #
 | 
			
		||||
  #
 | 
			
		||||
  def Matrix.columns(columns)
 | 
			
		||||
    rows = (0 .. columns[0].size - 1).collect {
 | 
			
		||||
      |i|
 | 
			
		||||
      (0 .. columns.size - 1).collect {
 | 
			
		||||
        |j|
 | 
			
		||||
    rows = (0 .. columns[0].size - 1).collect {|i|
 | 
			
		||||
      (0 .. columns.size - 1).collect {|j|
 | 
			
		||||
        columns[j][i]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -159,8 +157,7 @@ class Matrix
 | 
			
		|||
  #
 | 
			
		||||
  def Matrix.diagonal(*values)
 | 
			
		||||
    size = values.size
 | 
			
		||||
    rows = (0 .. size  - 1).collect {
 | 
			
		||||
      |j|
 | 
			
		||||
    rows = (0 .. size  - 1).collect {|j|
 | 
			
		||||
      row = Array.new(size).fill(0, 0, size)
 | 
			
		||||
      row[j] = values[j]
 | 
			
		||||
      row
 | 
			
		||||
| 
						 | 
				
			
			@ -311,13 +308,11 @@ class Matrix
 | 
			
		|||
  #
 | 
			
		||||
  def column(j) # :yield: e
 | 
			
		||||
    if block_given?
 | 
			
		||||
      0.upto(row_size - 1) do
 | 
			
		||||
        |i|
 | 
			
		||||
      0.upto(row_size - 1) do |i|
 | 
			
		||||
        yield @rows[i][j]
 | 
			
		||||
      end
 | 
			
		||||
    else
 | 
			
		||||
      col = (0 .. row_size - 1).collect {
 | 
			
		||||
        |i|
 | 
			
		||||
      col = (0 .. row_size - 1).collect {|i|
 | 
			
		||||
        @rows[i][j]
 | 
			
		||||
      }
 | 
			
		||||
      Vector.elements(col, false)
 | 
			
		||||
| 
						 | 
				
			
			@ -364,8 +359,7 @@ class Matrix
 | 
			
		|||
      Matrix.Raise ArgumentError, param.inspect
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    rows = @rows[from_row, size_row].collect{
 | 
			
		||||
      |row|
 | 
			
		||||
    rows = @rows[from_row, size_row].collect{|row|
 | 
			
		||||
      row[from_col, size_col]
 | 
			
		||||
    }
 | 
			
		||||
    Matrix.rows(rows, false)
 | 
			
		||||
| 
						 | 
				
			
			@ -421,8 +415,7 @@ class Matrix
 | 
			
		|||
  def compare_by_row_vectors(rows, comparison = :==)
 | 
			
		||||
    return false unless @rows.size == rows.size
 | 
			
		||||
    
 | 
			
		||||
    0.upto(@rows.size - 1) do
 | 
			
		||||
      |i|
 | 
			
		||||
    0.upto(@rows.size - 1) do |i|
 | 
			
		||||
      return false unless @rows[i].send(comparison, rows[i])
 | 
			
		||||
    end
 | 
			
		||||
    true
 | 
			
		||||
| 
						 | 
				
			
			@ -462,10 +455,8 @@ class Matrix
 | 
			
		|||
  def *(m) # m is matrix or vector or number
 | 
			
		||||
    case(m)
 | 
			
		||||
    when Numeric
 | 
			
		||||
      rows = @rows.collect {
 | 
			
		||||
        |row|
 | 
			
		||||
        row.collect {
 | 
			
		||||
          |e|
 | 
			
		||||
      rows = @rows.collect {|row|
 | 
			
		||||
        row.collect {|e|
 | 
			
		||||
          e * m
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -477,13 +468,10 @@ class Matrix
 | 
			
		|||
    when Matrix
 | 
			
		||||
      Matrix.Raise ErrDimensionMismatch if column_size != m.row_size
 | 
			
		||||
    
 | 
			
		||||
      rows = (0 .. row_size - 1).collect {
 | 
			
		||||
        |i|
 | 
			
		||||
        (0 .. m.column_size - 1).collect {
 | 
			
		||||
          |j|
 | 
			
		||||
      rows = (0 .. row_size - 1).collect {|i|
 | 
			
		||||
        (0 .. m.column_size - 1).collect {|j|
 | 
			
		||||
          vij = 0
 | 
			
		||||
          0.upto(column_size - 1) do
 | 
			
		||||
            |k|
 | 
			
		||||
          0.upto(column_size - 1) do |k|
 | 
			
		||||
            vij += self[i, k] * m[k, j]
 | 
			
		||||
          end
 | 
			
		||||
          vij
 | 
			
		||||
| 
						 | 
				
			
			@ -516,10 +504,8 @@ class Matrix
 | 
			
		|||
    
 | 
			
		||||
    Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
 | 
			
		||||
    
 | 
			
		||||
    rows = (0 .. row_size - 1).collect {
 | 
			
		||||
      |i|
 | 
			
		||||
      (0 .. column_size - 1).collect {
 | 
			
		||||
        |j|
 | 
			
		||||
    rows = (0 .. row_size - 1).collect {|i|
 | 
			
		||||
      (0 .. column_size - 1).collect {|j|
 | 
			
		||||
        self[i, j] + m[i, j]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -546,10 +532,8 @@ class Matrix
 | 
			
		|||
    
 | 
			
		||||
    Matrix.Raise ErrDimensionMismatch unless row_size == m.row_size and column_size == m.column_size
 | 
			
		||||
    
 | 
			
		||||
    rows = (0 .. row_size - 1).collect {
 | 
			
		||||
      |i|
 | 
			
		||||
      (0 .. column_size - 1).collect {
 | 
			
		||||
        |j|
 | 
			
		||||
    rows = (0 .. row_size - 1).collect {|i|
 | 
			
		||||
      (0 .. column_size - 1).collect {|j|
 | 
			
		||||
        self[i, j] - m[i, j]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -565,10 +549,8 @@ class Matrix
 | 
			
		|||
  def /(other)
 | 
			
		||||
    case other
 | 
			
		||||
    when Numeric
 | 
			
		||||
      rows = @rows.collect {
 | 
			
		||||
        |row|
 | 
			
		||||
        row.collect {
 | 
			
		||||
          |e|
 | 
			
		||||
      rows = @rows.collect {|row|
 | 
			
		||||
        row.collect {|e|
 | 
			
		||||
          e / other
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -603,7 +585,7 @@ class Matrix
 | 
			
		|||
    for k in 0..size
 | 
			
		||||
      i = k
 | 
			
		||||
      akk = a[k][k].abs
 | 
			
		||||
      for j in (k+1)..size
 | 
			
		||||
      ((k+1)..size).each do |j|
 | 
			
		||||
        v = a[j][k].abs
 | 
			
		||||
        if v > akk
 | 
			
		||||
          i = j
 | 
			
		||||
| 
						 | 
				
			
			@ -697,12 +679,13 @@ class Matrix
 | 
			
		|||
    
 | 
			
		||||
    det = 1
 | 
			
		||||
    k = 0
 | 
			
		||||
    begin 
 | 
			
		||||
    loop do
 | 
			
		||||
      if (akk = a[k][k]) == 0
 | 
			
		||||
        i = k
 | 
			
		||||
        begin
 | 
			
		||||
          return 0 if (i += 1) > size
 | 
			
		||||
        end while a[i][k] == 0
 | 
			
		||||
        loop do
 | 
			
		||||
          return 0 if (ii += 1) > size
 | 
			
		||||
          break unless a[i][k] == 0
 | 
			
		||||
        end
 | 
			
		||||
        a[i], a[k] = a[k], a[i]
 | 
			
		||||
        akk = a[k][k]
 | 
			
		||||
        det *= -1
 | 
			
		||||
| 
						 | 
				
			
			@ -710,13 +693,13 @@ class Matrix
 | 
			
		|||
 | 
			
		||||
      for i in k + 1 .. size
 | 
			
		||||
        q = a[i][k].quo(akk)
 | 
			
		||||
        (k + 1).upto(size) do
 | 
			
		||||
          |j|
 | 
			
		||||
        (k + 1).upto(size) do |j|
 | 
			
		||||
          a[i][j] -= a[k][j] * q
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      det *= akk
 | 
			
		||||
    end while (k += 1) <= size
 | 
			
		||||
      break unless (k += 1) <= size
 | 
			
		||||
    end
 | 
			
		||||
    det
 | 
			
		||||
  end
 | 
			
		||||
  alias det determinant
 | 
			
		||||
| 
						 | 
				
			
			@ -739,12 +722,13 @@ class Matrix
 | 
			
		|||
    
 | 
			
		||||
    det = 1
 | 
			
		||||
    k = 0
 | 
			
		||||
    begin 
 | 
			
		||||
    loop do
 | 
			
		||||
      if a[k][k].zero?
 | 
			
		||||
        i = k
 | 
			
		||||
        begin
 | 
			
		||||
        loop do
 | 
			
		||||
          return 0 if (i += 1) > size
 | 
			
		||||
        end while a[i][k].zero?
 | 
			
		||||
          break unless a[i][k].zero?
 | 
			
		||||
        end
 | 
			
		||||
        a[i], a[k] = a[k], a[i]
 | 
			
		||||
        det *= -1
 | 
			
		||||
      end
 | 
			
		||||
| 
						 | 
				
			
			@ -761,7 +745,8 @@ class Matrix
 | 
			
		|||
        end
 | 
			
		||||
      end
 | 
			
		||||
      det *= a[k][k]
 | 
			
		||||
    end while (k += 1) <= size
 | 
			
		||||
      break unless (k += 1) <= size
 | 
			
		||||
    end
 | 
			
		||||
    det
 | 
			
		||||
  end
 | 
			
		||||
  alias det_e determinant_e
 | 
			
		||||
| 
						 | 
				
			
			@ -786,31 +771,32 @@ class Matrix
 | 
			
		|||
    end
 | 
			
		||||
    rank = 0
 | 
			
		||||
    k = 0
 | 
			
		||||
    begin
 | 
			
		||||
    loop do
 | 
			
		||||
      if (akk = a[k][k]) == 0
 | 
			
		||||
        i = k
 | 
			
		||||
        exists = true
 | 
			
		||||
        begin
 | 
			
		||||
        loop do
 | 
			
		||||
          if (i += 1) > a_column_size - 1
 | 
			
		||||
            exists = false
 | 
			
		||||
            break
 | 
			
		||||
          end
 | 
			
		||||
        end while a[i][k] == 0
 | 
			
		||||
          break unless a[i][k] == 0
 | 
			
		||||
        end
 | 
			
		||||
        if exists
 | 
			
		||||
          a[i], a[k] = a[k], a[i]
 | 
			
		||||
          akk = a[k][k]
 | 
			
		||||
        else
 | 
			
		||||
          i = k
 | 
			
		||||
          exists = true
 | 
			
		||||
          begin
 | 
			
		||||
          loop do
 | 
			
		||||
            if (i += 1) > a_row_size - 1
 | 
			
		||||
              exists = false
 | 
			
		||||
              break
 | 
			
		||||
            end
 | 
			
		||||
          end while a[k][i] == 0
 | 
			
		||||
            break unless a[k][i] == 0
 | 
			
		||||
          end
 | 
			
		||||
          if exists
 | 
			
		||||
            k.upto(a_column_size - 1) do
 | 
			
		||||
              |j|
 | 
			
		||||
            k.upto(a_column_size - 1) do |j|
 | 
			
		||||
              a[j][k], a[j][i] = a[j][i], a[j][k]
 | 
			
		||||
            end
 | 
			
		||||
            akk = a[k][k]
 | 
			
		||||
| 
						 | 
				
			
			@ -827,7 +813,8 @@ class Matrix
 | 
			
		|||
        end
 | 
			
		||||
      end
 | 
			
		||||
      rank += 1
 | 
			
		||||
    end while (k += 1) <= a_column_size - 1
 | 
			
		||||
      break unless (k += 1) <= a_column_size - 1
 | 
			
		||||
    end
 | 
			
		||||
    return rank
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -873,8 +860,7 @@ class Matrix
 | 
			
		|||
  #
 | 
			
		||||
  def trace
 | 
			
		||||
    tr = 0
 | 
			
		||||
    0.upto(column_size - 1) do
 | 
			
		||||
      |i|
 | 
			
		||||
    0.upto(column_size - 1) do |i|
 | 
			
		||||
      tr += @rows[i][i]
 | 
			
		||||
    end
 | 
			
		||||
    tr
 | 
			
		||||
| 
						 | 
				
			
			@ -916,8 +902,7 @@ class Matrix
 | 
			
		|||
  # Returns an array of the row vectors of the matrix.  See Vector.
 | 
			
		||||
  #
 | 
			
		||||
  def row_vectors
 | 
			
		||||
    rows = (0 .. row_size - 1).collect {
 | 
			
		||||
      |i|
 | 
			
		||||
    rows = (0 .. row_size - 1).collect {|i|
 | 
			
		||||
      row(i)
 | 
			
		||||
    }
 | 
			
		||||
    rows
 | 
			
		||||
| 
						 | 
				
			
			@ -927,8 +912,7 @@ class Matrix
 | 
			
		|||
  # Returns an array of the column vectors of the matrix.  See Vector.
 | 
			
		||||
  #
 | 
			
		||||
  def column_vectors
 | 
			
		||||
    columns = (0 .. column_size - 1).collect {
 | 
			
		||||
      |i|
 | 
			
		||||
    columns = (0 .. column_size - 1).collect {|i|
 | 
			
		||||
      column(i)
 | 
			
		||||
    }
 | 
			
		||||
    columns
 | 
			
		||||
| 
						 | 
				
			
			@ -961,8 +945,7 @@ class Matrix
 | 
			
		|||
  # Overrides Object#to_s
 | 
			
		||||
  #
 | 
			
		||||
  def to_s
 | 
			
		||||
    "Matrix[" + @rows.collect{
 | 
			
		||||
      |row|
 | 
			
		||||
    "Matrix[" + @rows.collect{|row|
 | 
			
		||||
      "[" + row.collect{|e| e.to_s}.join(", ") + "]"
 | 
			
		||||
    }.join(", ")+"]"
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			@ -1169,8 +1152,7 @@ class Vector
 | 
			
		|||
  #
 | 
			
		||||
  def each2(v) # :yield: e1, e2
 | 
			
		||||
    Vector.Raise ErrDimensionMismatch if size != v.size
 | 
			
		||||
    0.upto(size - 1) do
 | 
			
		||||
      |i|
 | 
			
		||||
    0.upto(size - 1) do |i|
 | 
			
		||||
      yield @elements[i], v[i]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			@ -1181,8 +1163,7 @@ class Vector
 | 
			
		|||
  #
 | 
			
		||||
  def collect2(v) # :yield: e1, e2
 | 
			
		||||
    Vector.Raise ErrDimensionMismatch if size != v.size
 | 
			
		||||
    (0 .. size - 1).collect do
 | 
			
		||||
      |i|
 | 
			
		||||
    (0 .. size - 1).collect do |i|
 | 
			
		||||
      yield @elements[i], v[i]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			@ -1253,8 +1234,7 @@ class Vector
 | 
			
		|||
    case v
 | 
			
		||||
    when Vector
 | 
			
		||||
      Vector.Raise ErrDimensionMismatch if size != v.size
 | 
			
		||||
      els = collect2(v) {
 | 
			
		||||
        |v1, v2|
 | 
			
		||||
      els = collect2(v) {|v1, v2|
 | 
			
		||||
        v1 + v2
 | 
			
		||||
      }
 | 
			
		||||
      Vector.elements(els, false)
 | 
			
		||||
| 
						 | 
				
			
			@ -1273,8 +1253,7 @@ class Vector
 | 
			
		|||
    case v
 | 
			
		||||
    when Vector
 | 
			
		||||
      Vector.Raise ErrDimensionMismatch if size != v.size
 | 
			
		||||
      els = collect2(v) {
 | 
			
		||||
        |v1, v2|
 | 
			
		||||
      els = collect2(v) {|v1, v2|
 | 
			
		||||
        v1 - v2
 | 
			
		||||
      }
 | 
			
		||||
      Vector.elements(els, false)
 | 
			
		||||
| 
						 | 
				
			
			@ -1298,8 +1277,7 @@ class Vector
 | 
			
		|||
    Vector.Raise ErrDimensionMismatch if size != v.size
 | 
			
		||||
    
 | 
			
		||||
    p = 0
 | 
			
		||||
    each2(v) {
 | 
			
		||||
      |v1, v2|
 | 
			
		||||
    each2(v) {|v1, v2|
 | 
			
		||||
      p += v1 * v2
 | 
			
		||||
    }
 | 
			
		||||
    p
 | 
			
		||||
| 
						 | 
				
			
			@ -1309,8 +1287,7 @@ class Vector
 | 
			
		|||
  # Like Array#collect.
 | 
			
		||||
  #
 | 
			
		||||
  def collect # :yield: e
 | 
			
		||||
    els = @elements.collect {
 | 
			
		||||
      |v|
 | 
			
		||||
    els = @elements.collect {|v|
 | 
			
		||||
      yield v
 | 
			
		||||
    }
 | 
			
		||||
    Vector.elements(els, false)
 | 
			
		||||
| 
						 | 
				
			
			@ -1321,8 +1298,7 @@ class Vector
 | 
			
		|||
  # Like Vector#collect2, but returns a Vector instead of an Array.
 | 
			
		||||
  #
 | 
			
		||||
  def map2(v) # :yield: e1, e2
 | 
			
		||||
    els = collect2(v) {
 | 
			
		||||
      |v1, v2|
 | 
			
		||||
    els = collect2(v) {|v1, v2|
 | 
			
		||||
      yield v1, v2
 | 
			
		||||
    }
 | 
			
		||||
    Vector.elements(els, false)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3216,7 +3216,7 @@ module Net
 | 
			
		|||
	    ].join(':')
 | 
			
		||||
	  )
 | 
			
		||||
 | 
			
		||||
	  return response.keys.map { |k| qdval(k.to_s, response[k]) }.join(',')
 | 
			
		||||
	  return response.keys.map {|key| qdval(key.to_s, response[key]) }.join(',')
 | 
			
		||||
	when STAGE_TWO
 | 
			
		||||
	  @stage = nil
 | 
			
		||||
	  # if at the second stage, return an empty string
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
# OptionParser internal utility
 | 
			
		||||
 | 
			
		||||
class << OptionParser
 | 
			
		||||
  def show_version(*pkg)
 | 
			
		||||
  def show_version(*pkgs)
 | 
			
		||||
    progname = ARGV.options.program_name
 | 
			
		||||
    result = false
 | 
			
		||||
    show = proc do |klass, cname, version|
 | 
			
		||||
| 
						 | 
				
			
			@ -19,14 +19,14 @@ class << OptionParser
 | 
			
		|||
      puts str
 | 
			
		||||
      result = true
 | 
			
		||||
    end
 | 
			
		||||
    if pkg.size == 1 and pkg[0] == "all"
 | 
			
		||||
    if pkgs.size == 1 and pkgs[0] == "all"
 | 
			
		||||
      self.search_const(::Object, /\AV(?:ERSION|ersion)\z/) do |klass, cname, version|
 | 
			
		||||
        unless cname[1] == ?e and klass.const_defined?(:Version)
 | 
			
		||||
          show.call(klass, cname.intern, version)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    else
 | 
			
		||||
      pkg.each do |pkg|
 | 
			
		||||
      pkgs.each do |pkg|
 | 
			
		||||
        begin
 | 
			
		||||
          pkg = pkg.split(/::|\//).inject(::Object) {|m, c| m.const_get(c)}
 | 
			
		||||
          v = case
 | 
			
		||||
| 
						 | 
				
			
			@ -46,8 +46,8 @@ class << OptionParser
 | 
			
		|||
    result
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def each_const(path, klass = ::Object)
 | 
			
		||||
    path.split(/::|\//).inject(klass) do |klass, name|
 | 
			
		||||
  def each_const(path, base = ::Object)
 | 
			
		||||
    path.split(/::|\//).inject(base) do |klass, name|
 | 
			
		||||
      raise NameError, path unless Module === klass
 | 
			
		||||
      klass.constants.grep(/#{name}/i) do |c|
 | 
			
		||||
        klass.const_defined?(c) or next
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -411,8 +411,8 @@ class Prime
 | 
			
		|||
      loop do
 | 
			
		||||
	extend_table until @table.length > i
 | 
			
		||||
	if !@table[i].zero?
 | 
			
		||||
	  (j...32).step(2) do |j|
 | 
			
		||||
	    return 32*i+j if !@table[i][j.div(2)].zero?
 | 
			
		||||
	  (j...32).step(2) do |k|
 | 
			
		||||
	    return 32*i+k if !@table[i][k.div(2)].zero?
 | 
			
		||||
	  end
 | 
			
		||||
	end
 | 
			
		||||
	i += 1; j = 1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -159,7 +159,6 @@ module Racc
 | 
			
		|||
      reduce_n,     use_result,   * = arg
 | 
			
		||||
 | 
			
		||||
      _racc_init_sysvars
 | 
			
		||||
      tok = nil
 | 
			
		||||
      act = nil
 | 
			
		||||
      i = nil
 | 
			
		||||
      nerr = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -189,7 +188,7 @@ module Racc
 | 
			
		|||
            ;
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          while not (i = action_pointer[@racc_state[-1]]) or
 | 
			
		||||
          while not(i = action_pointer[@racc_state[-1]]) or
 | 
			
		||||
                not @racc_read_next or
 | 
			
		||||
                @racc_t == 0   # $
 | 
			
		||||
            unless i and i += @racc_t and
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -436,7 +436,7 @@ module REXML
 | 
			
		|||
 | 
			
		||||
            arry[-1][-1].event_arg = evt[1]
 | 
			
		||||
            @value = false
 | 
			
		||||
          end
 | 
			
		||||
         end
 | 
			
		||||
        else
 | 
			
		||||
          arry << [] if evt[0] == :start_element
 | 
			
		||||
          arry[-1] << generate_event( evt )
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -256,15 +256,15 @@ if __FILE__ == $0
 | 
			
		|||
    $stdin.gets
 | 
			
		||||
  when 'w'
 | 
			
		||||
    finger = Rinda::RingFinger.new(nil)
 | 
			
		||||
    finger.lookup_ring do |ts|
 | 
			
		||||
      p ts
 | 
			
		||||
      ts.write([:hello, :world])
 | 
			
		||||
    finger.lookup_ring do |ts2|
 | 
			
		||||
      p ts2
 | 
			
		||||
      ts2.write([:hello, :world])
 | 
			
		||||
    end
 | 
			
		||||
  when 'r'
 | 
			
		||||
    finger = Rinda::RingFinger.new(nil)
 | 
			
		||||
    finger.lookup_ring do |ts|
 | 
			
		||||
      p ts
 | 
			
		||||
      p ts.take([nil, nil])
 | 
			
		||||
    finger.lookup_ring do |ts2|
 | 
			
		||||
      p ts2
 | 
			
		||||
      p ts2.take([nil, nil])
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,7 +26,7 @@ class Shell
 | 
			
		|||
    #
 | 
			
		||||
    m = [:initialize, :expand_path]
 | 
			
		||||
    if Object.methods.first.kind_of?(String)
 | 
			
		||||
      NoDelegateMethods = m.collect{|m| m.id2name}
 | 
			
		||||
      NoDelegateMethods = m.collect{|x| x.id2name}
 | 
			
		||||
    else
 | 
			
		||||
      NoDelegateMethods = m
 | 
			
		||||
    end
 | 
			
		||||
| 
						 | 
				
			
			@ -124,7 +124,7 @@ class Shell
 | 
			
		|||
	  f = File.open(path, mode, perm)
 | 
			
		||||
	  File.chmod(perm & ~@shell.umask, path)
 | 
			
		||||
	  if block_given?
 | 
			
		||||
	    f.each &b
 | 
			
		||||
	    f.each(&b)
 | 
			
		||||
	  end
 | 
			
		||||
	  f
 | 
			
		||||
	else
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,7 +62,7 @@ class Shell
 | 
			
		|||
      end
 | 
			
		||||
 | 
			
		||||
      def block_output_synchronize(&b)
 | 
			
		||||
	@BlockOutputMonitor.synchronize &b
 | 
			
		||||
	@BlockOutputMonitor.synchronize(&b)
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      def wait_to_finish_all_process_controllers
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,241 +7,236 @@ require 'yaml/encoding'
 | 
			
		|||
require 'yaml/error'
 | 
			
		||||
 | 
			
		||||
module YAML
 | 
			
		||||
  module BaseEmitter
 | 
			
		||||
    def options( opt = nil )
 | 
			
		||||
      if opt
 | 
			
		||||
        @options[opt] || YAML::DEFAULTS[opt]
 | 
			
		||||
      else
 | 
			
		||||
        @options
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    module BaseEmitter
 | 
			
		||||
 | 
			
		||||
        def options( opt = nil )
 | 
			
		||||
            if opt
 | 
			
		||||
                @options[opt] || YAML::DEFAULTS[opt]
 | 
			
		||||
            else
 | 
			
		||||
                @options
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def options=( opt )
 | 
			
		||||
            @options = opt
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        #
 | 
			
		||||
        # Emit binary data
 | 
			
		||||
        #
 | 
			
		||||
        def binary_base64( value )
 | 
			
		||||
            self << "!binary "
 | 
			
		||||
            self.node_text( [value].pack("m"), '|' )
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Emit plain, normal flowing text
 | 
			
		||||
		#
 | 
			
		||||
		def node_text( value, block = nil )
 | 
			
		||||
            @seq_map = false
 | 
			
		||||
			valx = value.dup
 | 
			
		||||
            unless block
 | 
			
		||||
            block =
 | 
			
		||||
                if options(:UseBlock)
 | 
			
		||||
                    '|'
 | 
			
		||||
                elsif not options(:UseFold) and valx =~ /\n[ \t]/ and not valx =~ /#{YAML::ESCAPE_CHAR}/
 | 
			
		||||
                    '|'
 | 
			
		||||
                else
 | 
			
		||||
                    '>'
 | 
			
		||||
                end 
 | 
			
		||||
 | 
			
		||||
                indt = $&.to_i if block =~ /\d+/
 | 
			
		||||
                if valx =~ /(\A\n*[ \t#]|^---\s+)/
 | 
			
		||||
                    indt = options(:Indent) unless indt.to_i > 0
 | 
			
		||||
                    block += indt.to_s
 | 
			
		||||
                end
 | 
			
		||||
 | 
			
		||||
            block +=
 | 
			
		||||
                if valx =~ /\n\Z\n/
 | 
			
		||||
                    "+"
 | 
			
		||||
                elsif valx =~ /\Z\n/
 | 
			
		||||
                    ""
 | 
			
		||||
                else
 | 
			
		||||
                    "-"
 | 
			
		||||
                end
 | 
			
		||||
            end
 | 
			
		||||
            block += "\n"
 | 
			
		||||
            if block[0] == ?"
 | 
			
		||||
                esc_skip = ( "\t\n" unless valx =~ /^[ \t]/ ) || ""
 | 
			
		||||
                valx = fold( YAML::escape( valx, esc_skip ) + "\"" ).chomp
 | 
			
		||||
                self << '"' + indent_text( valx, indt, false )
 | 
			
		||||
            else
 | 
			
		||||
                if block[0] == ?> 
 | 
			
		||||
                    valx = fold( valx ) 
 | 
			
		||||
                end
 | 
			
		||||
                #p [block, indt]
 | 
			
		||||
                self << block + indent_text( valx, indt )
 | 
			
		||||
            end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Emit a simple, unqouted string
 | 
			
		||||
		#
 | 
			
		||||
		def simple( value )
 | 
			
		||||
            @seq_map = false
 | 
			
		||||
            self << value.to_s
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Emit double-quoted string
 | 
			
		||||
		#
 | 
			
		||||
		def double( value )
 | 
			
		||||
			"\"#{YAML.escape( value )}\"" 
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Emit single-quoted string
 | 
			
		||||
		#
 | 
			
		||||
		def single( value )
 | 
			
		||||
			"'#{value}'"
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Write a text block with the current indent
 | 
			
		||||
		#
 | 
			
		||||
		def indent_text( text, mod, first_line = true )
 | 
			
		||||
			return "" if text.to_s.empty?
 | 
			
		||||
            spacing = indent( mod )
 | 
			
		||||
            text = text.gsub( /\A([^\n])/, "#{ spacing }\\1" ) if first_line
 | 
			
		||||
			return text.gsub( /\n^([^\n])/, "\n#{spacing}\\1" )
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Write a current indent
 | 
			
		||||
		#
 | 
			
		||||
        def indent( mod = nil )
 | 
			
		||||
            #p [ self.id, level, mod, :INDENT ]
 | 
			
		||||
            if level <= 0
 | 
			
		||||
                mod ||= 0
 | 
			
		||||
            else
 | 
			
		||||
                mod ||= options(:Indent)
 | 
			
		||||
                mod += ( level - 1 ) * options(:Indent)
 | 
			
		||||
            end
 | 
			
		||||
            return " " * mod
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Add indent to the buffer
 | 
			
		||||
		#
 | 
			
		||||
		def indent!
 | 
			
		||||
			self << indent
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		#
 | 
			
		||||
		# Folding paragraphs within a column
 | 
			
		||||
		#
 | 
			
		||||
		def fold( value )
 | 
			
		||||
            value.gsub( /(^[ \t]+.*$)|(\S.{0,#{options(:BestWidth) - 1}})(?:[ \t]+|(\n+(?=[ \t]|\Z))|$)/ ) do
 | 
			
		||||
                $1 || $2 + ( $3 || "\n" )
 | 
			
		||||
            end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
        #
 | 
			
		||||
        # Quick mapping
 | 
			
		||||
        #
 | 
			
		||||
        def map( type, &e )
 | 
			
		||||
            val = Mapping.new
 | 
			
		||||
            e.call( val )
 | 
			
		||||
			self << "#{type} " if type.length.nonzero?
 | 
			
		||||
 | 
			
		||||
			#
 | 
			
		||||
			# Empty hashes
 | 
			
		||||
			#
 | 
			
		||||
			if val.length.zero?
 | 
			
		||||
				self << "{}"
 | 
			
		||||
                @seq_map = false
 | 
			
		||||
			else
 | 
			
		||||
                # FIXME
 | 
			
		||||
                # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
 | 
			
		||||
			    #     @headless = 1 
 | 
			
		||||
                # end
 | 
			
		||||
 | 
			
		||||
                defkey = @options.delete( :DefaultKey )
 | 
			
		||||
                if defkey
 | 
			
		||||
                    seq_map_shortcut
 | 
			
		||||
                    self << "= : "
 | 
			
		||||
                    defkey.to_yaml( :Emitter => self )
 | 
			
		||||
                end
 | 
			
		||||
 | 
			
		||||
				#
 | 
			
		||||
				# Emit the key and value
 | 
			
		||||
				#
 | 
			
		||||
                val.each { |v|
 | 
			
		||||
                    seq_map_shortcut
 | 
			
		||||
                    if v[0].is_complex_yaml?
 | 
			
		||||
                        self << "? "
 | 
			
		||||
                    end
 | 
			
		||||
                    v[0].to_yaml( :Emitter => self )
 | 
			
		||||
                    if v[0].is_complex_yaml?
 | 
			
		||||
                        self << "\n"
 | 
			
		||||
                        indent!
 | 
			
		||||
                    end
 | 
			
		||||
                    self << ": " 
 | 
			
		||||
                    v[1].to_yaml( :Emitter => self )
 | 
			
		||||
                }
 | 
			
		||||
			end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def seq_map_shortcut
 | 
			
		||||
            # FIXME: seq_map needs to work with the new anchoring system
 | 
			
		||||
            # if @seq_map
 | 
			
		||||
            #     @anchor_extras[@buffer.length - 1] = "\n" + indent
 | 
			
		||||
            #     @seq_map = false
 | 
			
		||||
            # else
 | 
			
		||||
                self << "\n"
 | 
			
		||||
                indent! 
 | 
			
		||||
            # end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        #
 | 
			
		||||
        # Quick sequence
 | 
			
		||||
        #
 | 
			
		||||
        def seq( type, &e )
 | 
			
		||||
            @seq_map = false
 | 
			
		||||
            val = Sequence.new
 | 
			
		||||
            e.call( val )
 | 
			
		||||
			self << "#{type} " if type.length.nonzero?
 | 
			
		||||
 | 
			
		||||
			#
 | 
			
		||||
			# Empty arrays
 | 
			
		||||
			#
 | 
			
		||||
			if val.length.zero?
 | 
			
		||||
				self << "[]"
 | 
			
		||||
			else
 | 
			
		||||
                # FIXME
 | 
			
		||||
                # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
 | 
			
		||||
			    #     @headless = 1 
 | 
			
		||||
                # end
 | 
			
		||||
 | 
			
		||||
				#
 | 
			
		||||
				# Emit the key and value
 | 
			
		||||
				#
 | 
			
		||||
                val.each { |v|
 | 
			
		||||
                    self << "\n"
 | 
			
		||||
                    indent!
 | 
			
		||||
                    self << "- "
 | 
			
		||||
                    @seq_map = true if v.class == Hash
 | 
			
		||||
                    v.to_yaml( :Emitter => self )
 | 
			
		||||
                }
 | 
			
		||||
			end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
    def options=( opt )
 | 
			
		||||
      @options = opt
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Emitter helper classes
 | 
			
		||||
    # Emit binary data
 | 
			
		||||
    #
 | 
			
		||||
    class Mapping < Array
 | 
			
		||||
        def add( k, v )
 | 
			
		||||
            push [k, v]
 | 
			
		||||
        end
 | 
			
		||||
    def binary_base64( value )
 | 
			
		||||
      self << "!binary "
 | 
			
		||||
      self.node_text( [value].pack("m"), '|' )
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    class Sequence < Array
 | 
			
		||||
        def add( v )
 | 
			
		||||
            push v
 | 
			
		||||
    #
 | 
			
		||||
    # Emit plain, normal flowing text
 | 
			
		||||
    #
 | 
			
		||||
    def node_text( value, block = nil )
 | 
			
		||||
      @seq_map = false
 | 
			
		||||
      valx = value.dup
 | 
			
		||||
      unless block
 | 
			
		||||
        block =
 | 
			
		||||
          if options(:UseBlock)
 | 
			
		||||
            '|'
 | 
			
		||||
          elsif not options(:UseFold) and valx =~ /\n[ \t]/ and not valx =~ /#{YAML::ESCAPE_CHAR}/
 | 
			
		||||
            '|'
 | 
			
		||||
          else
 | 
			
		||||
            '>'
 | 
			
		||||
          end 
 | 
			
		||||
        indt = $&.to_i if block =~ /\d+/
 | 
			
		||||
        if valx =~ /(\A\n*[ \t#]|^---\s+)/
 | 
			
		||||
          indt = options(:Indent) unless indt.to_i > 0
 | 
			
		||||
          block += indt.to_s
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        block +=
 | 
			
		||||
          if valx =~ /\n\Z\n/
 | 
			
		||||
            "+"
 | 
			
		||||
          elsif valx =~ /\Z\n/
 | 
			
		||||
            ""
 | 
			
		||||
          else
 | 
			
		||||
            "-"
 | 
			
		||||
          end
 | 
			
		||||
      end
 | 
			
		||||
      block += "\n"
 | 
			
		||||
      if block[0] == ?"
 | 
			
		||||
        esc_skip = ( "\t\n" unless valx =~ /^[ \t]/ ) || ""
 | 
			
		||||
        valx = fold( YAML::escape( valx, esc_skip ) + "\"" ).chomp
 | 
			
		||||
        self << '"' + indent_text( valx, indt, false )
 | 
			
		||||
      else
 | 
			
		||||
        if block[0] == ?> 
 | 
			
		||||
          valx = fold( valx ) 
 | 
			
		||||
        end
 | 
			
		||||
        #p [block, indt]
 | 
			
		||||
        self << block + indent_text( valx, indt )
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Emit a simple, unqouted string
 | 
			
		||||
    #
 | 
			
		||||
    def simple( value )
 | 
			
		||||
      @seq_map = false
 | 
			
		||||
      self << value.to_s
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Emit double-quoted string
 | 
			
		||||
    #
 | 
			
		||||
    def double( value )
 | 
			
		||||
      "\"#{YAML.escape( value )}\"" 
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Emit single-quoted string
 | 
			
		||||
    #
 | 
			
		||||
    def single( value )
 | 
			
		||||
      "'#{value}'"
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Write a text block with the current indent
 | 
			
		||||
    #
 | 
			
		||||
    def indent_text( text, mod, first_line = true )
 | 
			
		||||
      return "" if text.to_s.empty?
 | 
			
		||||
      spacing = indent( mod )
 | 
			
		||||
      text = text.gsub( /\A([^\n])/, "#{ spacing }\\1" ) if first_line
 | 
			
		||||
      return text.gsub( /\n^([^\n])/, "\n#{spacing}\\1" )
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Write a current indent
 | 
			
		||||
    #
 | 
			
		||||
    def indent( mod = nil )
 | 
			
		||||
      #p [ self.id, level, mod, :INDENT ]
 | 
			
		||||
      if level <= 0
 | 
			
		||||
        mod ||= 0
 | 
			
		||||
      else
 | 
			
		||||
        mod ||= options(:Indent)
 | 
			
		||||
        mod += ( level - 1 ) * options(:Indent)
 | 
			
		||||
      end
 | 
			
		||||
      return " " * mod
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Add indent to the buffer
 | 
			
		||||
    #
 | 
			
		||||
    def indent!
 | 
			
		||||
      self << indent
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Folding paragraphs within a column
 | 
			
		||||
    #
 | 
			
		||||
    def fold( value )
 | 
			
		||||
      value.gsub( /(^[ \t]+.*$)|(\S.{0,#{options(:BestWidth) - 1}})(?:[ \t]+|(\n+(?=[ \t]|\Z))|$)/ ) do
 | 
			
		||||
        $1 || $2 + ( $3 || "\n" )
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Quick mapping
 | 
			
		||||
    #
 | 
			
		||||
    def map( type, &e )
 | 
			
		||||
      val = Mapping.new
 | 
			
		||||
      e.call( val )
 | 
			
		||||
      self << "#{type} " if type.length.nonzero?
 | 
			
		||||
 | 
			
		||||
      #
 | 
			
		||||
      # Empty hashes
 | 
			
		||||
      #
 | 
			
		||||
      if val.length.zero?
 | 
			
		||||
        self << "{}"
 | 
			
		||||
        @seq_map = false
 | 
			
		||||
      else
 | 
			
		||||
        # FIXME
 | 
			
		||||
        # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
 | 
			
		||||
        #     @headless = 1 
 | 
			
		||||
        # end
 | 
			
		||||
 | 
			
		||||
        defkey = @options.delete( :DefaultKey )
 | 
			
		||||
        if defkey
 | 
			
		||||
          seq_map_shortcut
 | 
			
		||||
          self << "= : "
 | 
			
		||||
          defkey.to_yaml( :Emitter => self )
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        #
 | 
			
		||||
        # Emit the key and value
 | 
			
		||||
        #
 | 
			
		||||
        val.each { |v|
 | 
			
		||||
          seq_map_shortcut
 | 
			
		||||
          if v[0].is_complex_yaml?
 | 
			
		||||
            self << "? "
 | 
			
		||||
          end
 | 
			
		||||
          v[0].to_yaml( :Emitter => self )
 | 
			
		||||
          if v[0].is_complex_yaml?
 | 
			
		||||
            self << "\n"
 | 
			
		||||
            indent!
 | 
			
		||||
          end
 | 
			
		||||
          self << ": " 
 | 
			
		||||
          v[1].to_yaml( :Emitter => self )
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def seq_map_shortcut
 | 
			
		||||
      # FIXME: seq_map needs to work with the new anchoring system
 | 
			
		||||
      # if @seq_map
 | 
			
		||||
      #     @anchor_extras[@buffer.length - 1] = "\n" + indent
 | 
			
		||||
      #     @seq_map = false
 | 
			
		||||
      # else
 | 
			
		||||
      self << "\n"
 | 
			
		||||
      indent! 
 | 
			
		||||
      # end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    #
 | 
			
		||||
    # Quick sequence
 | 
			
		||||
    #
 | 
			
		||||
    def seq( type, &e )
 | 
			
		||||
      @seq_map = false
 | 
			
		||||
      val = Sequence.new
 | 
			
		||||
      e.call( val )
 | 
			
		||||
      self << "#{type} " if type.length.nonzero?
 | 
			
		||||
 | 
			
		||||
      #
 | 
			
		||||
      # Empty arrays
 | 
			
		||||
      #
 | 
			
		||||
      if val.length.zero?
 | 
			
		||||
        self << "[]"
 | 
			
		||||
      else
 | 
			
		||||
        # FIXME
 | 
			
		||||
        # if @buffer.length == 1 and options(:UseHeader) == false and type.length.zero? 
 | 
			
		||||
        #     @headless = 1 
 | 
			
		||||
        # end
 | 
			
		||||
 | 
			
		||||
        #
 | 
			
		||||
        # Emit the key and value
 | 
			
		||||
        #
 | 
			
		||||
        val.each { |v|
 | 
			
		||||
          self << "\n"
 | 
			
		||||
          indent!
 | 
			
		||||
          self << "- "
 | 
			
		||||
          @seq_map = true if v.class == Hash
 | 
			
		||||
          v.to_yaml( :Emitter => self )
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  #
 | 
			
		||||
  # Emitter helper classes
 | 
			
		||||
  #
 | 
			
		||||
  class Mapping < Array
 | 
			
		||||
    def add( k, v )
 | 
			
		||||
      push [k, v]
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class Sequence < Array
 | 
			
		||||
    def add( v )
 | 
			
		||||
      push v
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,13 +11,13 @@ module YAML
 | 
			
		|||
    class YamlNode
 | 
			
		||||
        include BaseNode
 | 
			
		||||
        attr_accessor :kind, :type_id, :value, :anchor
 | 
			
		||||
        def initialize( t, v )
 | 
			
		||||
        def initialize(t, v)
 | 
			
		||||
            @type_id = t
 | 
			
		||||
            if Hash === v
 | 
			
		||||
                @kind = 'map'
 | 
			
		||||
                @value = {}
 | 
			
		||||
                v.each { |k,v|
 | 
			
		||||
                    @value[ k.transform ] = [ k, v ]
 | 
			
		||||
                v.each {|key,val|
 | 
			
		||||
                    @value[key.transform] = [key, val]
 | 
			
		||||
                }
 | 
			
		||||
            elsif Array === v
 | 
			
		||||
                @kind = 'seq'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue