Current Path : /usr/local/share/ri/1.8/system/IO/ |
FreeBSD hs32.drive.ne.jp 9.1-RELEASE FreeBSD 9.1-RELEASE #1: Wed Jan 14 12:18:08 JST 2015 root@hs32.drive.ne.jp:/sys/amd64/compile/hs32 amd64 |
Current File : //usr/local/share/ri/1.8/system/IO/scanf-i.yaml |
--- !ruby/object:RI::MethodDescription aliases: [] block_params: comment: - !ruby/struct:SM::Flow::P body: The trick here is doing a match where you grab one <b>line</b> of input at a time. The linebreak may or may not occur at the boundary where the string matches a format specifier. And if it does, some rule about whitespace may or may not be in effect... - !ruby/struct:SM::Flow::P body: That's why this is much more elaborate than the string version. - !ruby/struct:SM::Flow::P body: "For each line: Match succeeds (non-emptily) and the last attempted spec/string sub-match succeeded:" - !ruby/struct:SM::Flow::VERB body: " could the last spec keep matching?\n yes: save interim results and continue (next line)\n" - !ruby/struct:SM::Flow::P body: "The last attempted spec/string did not match:" - !ruby/struct:SM::Flow::P body: are we on the next-to-last spec in the string? - !ruby/struct:SM::Flow::VERB body: " yes:\n is fmt_string.string_left all spaces?\n yes: does current spec care about input space?\n yes: fatal failure\n no: save interim results and continue\n no: continue [this state could be analyzed further]\n" full_name: IO#scanf is_singleton: false name: scanf params: (str,&b) visibility: public