| 
									
										
										
										
											2023-03-30 15:04:25 -07:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-30 15:04:25 -07:00
										 |  |  |     begin | 
					
						
							|  |  |  |       loop do | 
					
						
							|  |  |  |         break if buffer == sep | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-30 15:04:25 -07:00
										 |  |  |         read_nonblock(1, buffer) | 
					
						
							|  |  |  |         line.concat(buffer) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2017-04-20 04:47:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-30 15:04:25 -07:00
										 |  |  |       line.freeze | 
					
						
							|  |  |  |     rescue IO::WaitReadable, EOFError | 
					
						
							|  |  |  |       raise if line.empty? | 
					
						
							| 
									
										
										
										
											2018-09-17 02:45:00 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-30 15:04:25 -07:00
										 |  |  |       line.freeze | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2016-08-18 22:11:42 +03:00
										 |  |  |   end | 
					
						
							|  |  |  | end |