mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1084 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			838 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			838 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
#!/usr/bin/env ruby
 | 
						|
 | 
						|
if ARGV[0] == "-c"
 | 
						|
  out_stdout = 1
 | 
						|
  ARGV.shift
 | 
						|
end
 | 
						|
 | 
						|
$sawbegin = 0
 | 
						|
$sawend = 0
 | 
						|
 | 
						|
while line = gets()
 | 
						|
  if /^begin\s*(\d*)\s*(\S*)/ =~ line
 | 
						|
    $mode, $file = $1, $2
 | 
						|
    $sawbegin+=1
 | 
						|
    if out_stdout
 | 
						|
      out = STDOUT
 | 
						|
    else
 | 
						|
      out = open($file, "w") if $file != ""
 | 
						|
    end
 | 
						|
    out.binmode
 | 
						|
    break
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
raise "missing begin" unless $sawbegin
 | 
						|
 | 
						|
out.binmode
 | 
						|
while line = gets()
 | 
						|
  if /^end/ =~ line
 | 
						|
    $sawend+=1
 | 
						|
    out.close unless out_stdout
 | 
						|
    File.chmod $mode.oct, $file unless out_stdout
 | 
						|
    next
 | 
						|
  end
 | 
						|
  line.sub!(/[a-z]+$/, "")	# handle stupid trailing lowercase letters
 | 
						|
  next if /[a-z]/ =~ line
 | 
						|
  next if !(((($_[0] - 32) & 077) + 2) / 3 == $_.length / 4)
 | 
						|
  out << $_.unpack("u") if $sawbegin > $sawend
 | 
						|
end
 | 
						|
 | 
						|
raise "missing end" if $sawbegin > $sawend
 | 
						|
raise "missing begin" if ! $sawbegin
 | 
						|
exit 0
 | 
						|
 |