| 
									
										
										
										
											2019-04-19 15:38:03 +09:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  | class IO | 
					
						
							|  |  |  |   def readline_nonblock(sep = $INPUT_RECORD_SEPARATOR) | 
					
						
							| 
									
										
										
										
											2019-04-18 17:33:02 +09:00
										 |  |  |     line = +"" | 
					
						
							|  |  |  |     buffer = +"" | 
					
						
							| 
									
										
										
										
											2017-04-20 04:47:03 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     loop do | 
					
						
							|  |  |  |       break if buffer == sep | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-20 04:47:03 +02:00
										 |  |  |       read_nonblock(1, buffer) | 
					
						
							|  |  |  |       line.concat(buffer) | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 17:33:02 +09:00
										 |  |  |     line.freeze | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   rescue IO::WaitReadable, EOFError => e | 
					
						
							| 
									
										
										
										
											2017-04-20 04:47:03 +02:00
										 |  |  |     raise e if line.empty? | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-18 17:33:02 +09:00
										 |  |  |     line.freeze | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |