| ofs | hex dump | ascii |
|---|
| 0000 | 0d 0a 62 65 67 69 6e 0d 0a 20 20 61 2e 65 61 63 68 7b 20 7c 65 6c 7c 20 61 6e 7a 5b 65 6c 5d 20 | ..begin....a.each{.|el|.anz[el]. |
| 0020 | 3d 20 61 6e 7a 5b 65 6c 5d 20 3f 61 20 6e 7a 5b 65 6c 5d 20 2b 31 20 3a 31 7d 0d 0a 20 20 77 68 | =.anz[el].?a.nz[el].+1.:1}....wh |
| 0040 | 69 6c 65 20 78 20 3c 31 20 30 30 30 30 0d 0a 20 20 20 20 23 61 20 62 69 73 20 66 20 64 69 65 6e | ile.x.<1.0000......#a.bis.f.dien |
| 0060 | 65 6e 20 64 61 7a 75 20 64 69 65 20 4e 61 63 68 62 61 72 73 63 68 61 66 74 20 66 65 73 74 7a 75 | en.dazu.die.Nachbarschaft.festzu |
| 0080 | 6c 65 67 65 6e 2e 20 4d 61 6e 20 73 74 65 6c 6c 65 20 73 69 63 68 20 64 69 65 20 23 5a 61 68 6c | legen..Man.stelle.sich.die.#Zahl |
| 00a0 | 20 76 6f 6e 20 31 20 62 69 73 20 36 34 20 69 6d 20 42 69 6e e4 72 63 6f 64 65 20 76 6f 72 20 31 | .von.1.bis.64.im.Bin.rcode.vor.1 |
| 00c0 | 20 62 65 64 65 75 74 65 74 20 61 6e 20 30 20 61 75 73 0d 0a 20 20 20 20 62 20 3d 20 28 70 5b 20 | .bedeutet.an.0.aus......b.=.(p[. |
| 00e0 | 78 5d 20 25 33 20 32 29 20 2f 20 31 36 20 3c 31 20 3f 20 30 20 3a 20 31 0d 0a 0d 0a 20 20 20 20 | x].%3.2)./.16.<1.?.0.:.1........ |
| 0100 | 28 78 20 2d 20 31 30 32 20 3e 3d 20 30 20 3f 20 6e 5b 78 20 2d 20 31 30 32 5d 2e 74 6f 5f 69 20 | (x.-.102.>=.0.?.n[x.-.102].to_i. |
| 0120 | 3a 20 30 29 20 2a 20 61 20 2b 20 28 78 20 2d 20 31 30 31 20 3e 3d 20 30 20 3f 6e 5b 78 20 2d 20 | :.0).*.a.+.(x.-.101.>=.0.?n[x.-. |
| 0140 | 31 30 31 5d 2e 74 6f 5f 69 20 3a 20 30 29 20 2a 20 65 20 2b 20 6e 5b 78 20 2d 20 31 30 30 5d 2e | 101].to_i.:.0).*.e.+.n[x.-.100]. |
| 0160 | 74 6f 5f 69 2b 28 78 20 2d 20 39 39 20 3e 3d 20 30 20 3f 20 6e 5b 78 20 2d 20 39 39 5d 2e 74 6f | to_i+(x.-.99.>=.0.?.n[x.-.99].to |
| 0180 | 5f 69 20 3a 20 30 29 20 2a 20 66 20 2b 20 28 78 20 2d 20 39 38 20 3e 3d 20 30 20 3f 20 6e 5b 78 | _i.:.0).*.f.+.(x.-.98.>=.0.?.n[x |
| 01a0 | 20 2d 20 39 38 5d 2e 74 6f 5f 69 20 3a 20 30 29 20 2a 20 61 20 2b 0d 0a 20 20 20 20 6e 5b 78 20 | .-.98].to_i.:.0).*.a.+......n[x. |
| 01c0 | 2b 20 31 39 39 5d 2e 74 6f 5f 69 2a 20 62 20 2b 20 6e 5b 78 20 2b 20 32 30 30 5d 2e 74 6f 5f 69 | +.199].to_i*.b.+.n[x.+.200].to_i |
| 01e0 | 2a 20 64 20 2b 20 6e 5b 78 20 2b 20 32 30 31 5d 2e 74 6f 5f 69 2a 20 62 0d 0a 20 20 20 20 23 20 | *.d.+.n[x.+.201].to_i*.b......#. |
| 0200 | 4c 00 00 74 20 65 69 6e 20 54 65 73 74 70 72 6f 67 72 61 6d 6d 20 61 62 6c 61 75 66 65 6e 2e 20 | L..t.ein.Testprogramm.ablaufen.. |
| 0220 | 46 49 58 4d 45 20 69 6e 76 61 6c 69 64 20 58 48 54 4d 4c 0d 0a 0d 0a 20 20 20 20 23 75 6e 64 20 | FIXME.invalid.XHTML........#und. |
| 0240 | 64 69 65 20 41 75 73 67 61 62 65 20 66 6f 6c 67 74 0d 0a 20 20 20 20 67 20 3d 20 25 77 7b 7d 0d | die.Ausgabe.folgt......g.=.%w{}. |
| 0260 | 0a 78 3d 30 0d 0a 77 68 69 6c 65 20 78 3c 31 30 30 0d 0a 20 70 75 74 73 22 23 7b 67 5b 78 5d 7d | .x=0..while.x<100...puts"#{g[x]} |
| 0280 | 20 22 0d 0a 20 78 2b 3d 31 0d 0a 65 6e 64 0d 0a 70 75 74 73 22 22 0d 0a 20 20 20 20 20 20 73 6c | ."...x+=1..end..puts""........sl |
| 02a0 | 65 65 70 28 31 30 29 0d 0a 0d 0a 20 20 20 20 20 20 31 45 31 45 31 0d 0a 20 20 20 20 20 20 70 75 | eep(10)..........1E1E1........pu |
| 02c0 | 74 73 20 33 20 30 2e 73 65 6e 64 28 3a 2f 2c 20 35 29 20 23 20 70 72 69 6e 74 73 20 36 0d 0a 0d | ts.3.0.send(:/,.5).#.prints.6... |
| 02e0 | 0a 20 20 20 20 20 20 22 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 | ......."instance.variables.can.b |
| 0300 | 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 | e.#@included,.#@@class_variables |
| 0320 | 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 22 0d 0a 20 20 20 20 | \n.and.#$globals.as.well."...... |
| 0340 | 20 20 60 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 | ..`instance.variables.can.be.#@i |
| 0360 | 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e | ncluded,.#@@class_variables\n.an |
| 0380 | 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 60 0d 0a 20 20 20 20 20 20 27 69 6e | d.#$globals.as.well.`........'in |
| 03a0 | 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 | stance.variables.can.be.#@includ |
| 03c0 | 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 | ed,.#@@class_variables\n.and.#$g |
| 03e0 | 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 27 0d 0a 20 20 20 20 20 20 2f 69 6e 73 74 61 6e 63 | lobals.as.well.'......../instanc |
| 0400 | 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 | e.variables.can.be.#@included,.# |
| 0420 | 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c | @@class_variables\n.and.#$global |
| 0440 | 73 20 61 73 20 77 65 6c 6c 2e 2f 6d 20 6f 75 73 65 6e 69 78 0d 0a 20 20 20 20 20 20 3a 22 20 69 | s.as.well./m.ousenix........:".i |
| 0460 | 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 | nstance.variables.can.be.#@inclu |
| 0480 | 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 | ded,.#@@class_variables\n.and.#$ |
| 04a0 | 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 22 0d 0a 20 20 20 20 20 20 3a 27 20 69 6e 73 74 | globals.as.well."........:'.inst |
| 04c0 | 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 | ance.variables.can.be.#@included |
| 04e0 | 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f | ,.#@@class_variables\n.and.#$glo |
| 0500 | 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 27 0d 0a 20 20 20 20 20 20 25 27 20 69 6e 73 74 61 6e 63 | bals.as.well.'........%'.instanc |
| 0520 | 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 | e.variables.can.be.#@included,.# |
| 0540 | 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c | @@class_variables\n.and.#$global |
| 0560 | 73 20 61 73 20 77 65 6c 6c 2e 27 0d 0a 20 20 20 20 20 20 25 71 27 69 6e 73 74 61 6e 63 65 20 76 | s.as.well.'........%q'instance.v |
| 0580 | 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 | ariables.can.be.#@included,.#@@c |
| 05a0 | 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 | lass_variables\n.and.#$globals.a |
| 05c0 | 73 20 77 65 6c 6c 2e 27 0d 0a 20 20 20 20 20 20 25 51 27 69 6e 73 74 61 6e 63 65 20 76 61 72 69 | s.well.'........%Q'instance.vari |
| 05e0 | 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 | ables.can.be.#@included,.#@@clas |
| 0600 | 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 | s_variables\n.and.#$globals.as.w |
| 0620 | 65 6c 6c 2e 27 0d 0a 20 20 20 20 20 20 25 77 27 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c | ell.'........%w'instance.variabl |
| 0640 | 65 73 20 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 | es.can.be.#@included,.#@@class_v |
| 0660 | 61 72 69 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c | ariables\n.and.#$globals.as.well |
| 0680 | 2e 27 0d 0a 20 20 20 20 20 20 25 57 27 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 | .'........%W'instance.variables. |
| 06a0 | 63 61 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 | can.be.#@included,.#@@class_vari |
| 06c0 | 61 62 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 27 0d | ables\n.and.#$globals.as.well.'. |
| 06e0 | 0a 20 20 20 20 20 20 25 73 20 27 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 | .......%s.'instance.variables.ca |
| 0700 | 6e 20 62 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 | n.be.#@included,.#@@class_variab |
| 0720 | 6c 65 73 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 27 0d 0a 20 | les\n.and.#$globals.as.well.'... |
| 0740 | 20 20 20 20 20 25 72 27 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 | .....%r'instance.variables.can.b |
| 0760 | 65 20 23 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 | e.#@included,.#@@class_variables |
| 0780 | 5c 6e 20 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 27 0d 0a 20 20 20 20 | \n.and.#$globals.as.well.'...... |
| 07a0 | 20 20 25 78 27 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 20 63 61 6e 20 62 65 20 23 | ..%x'instance.variables.can.be.# |
| 07c0 | 40 69 6e 63 6c 75 64 65 64 2c 20 23 40 40 63 6c 61 73 73 5f 76 61 72 69 61 62 6c 65 73 5c 6e 20 | @included,.#@@class_variables\n. |
| 07e0 | 61 6e 64 20 23 24 67 6c 6f 62 61 6c 73 20 61 73 20 77 65 6c 6c 2e 27 0d 0a 0d 0a 20 20 20 20 20 | and.#$globals.as.well.'......... |
| 0800 | 20 23 25 57 5b 20 62 75 74 20 23 40 30 69 6c 6c 65 67 61 6c 5f 76 61 6c 75 65 73 20 6c 6f 6f 6b | .#%W[.but.#@0illegal_values.look |
| 0820 | 20 73 74 72 61 6e 67 65 2e 5d 0d 0a 0d 0a 20 20 20 20 20 20 25 73 20 23 72 75 62 79 20 61 6c 6c | .strange.]..........%s.#ruby.all |
| 0840 | 6f 77 73 20 73 74 72 61 6e 67 65 23 7b 63 6f 6e 73 74 72 75 63 74 73 7d 0d 0a 20 20 20 20 20 20 | ows.strange#{constructs}........ |
| 0860 | 25 73 20 23 72 75 62 79 20 61 6c 6c 6f 77 73 20 73 74 72 61 6e 67 65 23 24 63 6f 6e 73 74 72 75 | %s.#ruby.allows.strange#$constru |
| 0880 | 63 74 73 0d 0a 20 20 20 20 20 20 25 73 20 23 72 75 62 79 20 61 6c 6c 6f 77 73 20 73 74 72 61 6e | cts........%s.#ruby.allows.stran |
| 08a0 | 67 65 23 40 40 63 6f 6e 73 74 72 75 63 74 73 0d 0a 0d 0a 20 20 20 20 20 20 25 72 5c 56 45 52 59 | ge#@@constructs..........%r\VERY |
| 08c0 | 20 53 54 52 41 4e 47 45 21 5c 78 20 30 30 0d 0a 20 20 20 20 20 20 25 78 5c 56 45 52 59 20 53 54 | .STRANGE!\x.00........%x\VERY.ST |
| 08e0 | 52 41 4e 47 45 21 5c 20 78 30 30 0d 0a 0d 0a 20 20 20 20 20 20 7e 20 25 72 23 3c 58 4d 50 3e 23 | RANGE!\.x00..........~.%r#<XMP># |
| 0900 | 69 20 2e 2e 20 7e 25 72 23 3c 2f 58 4d 50 3e 23 69 3b 0d 0a 0d 0a 20 20 20 20 20 20 61 20 3d 20 | i....~%r#</XMP>#i;..........a.=. |
| 0920 | 3c 3c 22 45 4f 46 22 0d 0a 54 68 69 73 20 69 73 20 61 20 6d 75 6c 74 69 6c 69 6e 65 20 23 24 68 | <<"EOF"..This.is.a.multiline.#$h |
| 0940 | 65 72 65 20 64 6f 63 75 6d 65 6e 74 0d 0a 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 45 4f 46 20 | ere.document..terminated.by.EOF. |
| 0960 | 6f 6e 20 61 20 6c 69 6e 65 20 62 79 20 69 74 73 65 6c 66 0d 0a 45 4f 46 0d 0a 0d 0a 61 20 3d 20 | on.a.line.by.itself..EOF....a.=. |
| 0980 | 3c 3c 27 45 4f 46 27 0d 0a 54 68 69 73 20 69 73 20 61 20 6d 75 6c 74 69 6c 69 6e 65 20 23 24 68 | <<'EOF'..This.is.a.multiline.#$h |
| 09a0 | 65 72 65 20 64 6f 63 75 6d 65 6e 74 0d 0a 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 45 4f 46 20 | ere.document..terminated.by.EOF. |
| 09c0 | 6f 6e 20 61 20 6c 69 6e 65 20 62 79 20 69 74 73 65 6c 66 0d 0a 45 4f 46 0d 0a 0d 0a 62 3d 28 70 | on.a.line.by.itself..EOF....b=(p |
| 09e0 | 5b 78 5d 20 25 33 32 29 2f 31 36 3c 31 20 3f 20 30 20 3a 20 31 0d 0a 0d 0a 3c 3c 22 22 0d 0a 23 | [x].%32)/16<1.?.0.:.1....<<""..# |
| 0a00 | 7b 74 65 73 74 7d 0d 0a 23 40 62 6c 61 0d 0a 23 64 69 65 20 73 75 70 70 65 21 21 21 0d 0a 5c 78 | {test}..#@bla..#die.suppe!!!..\x |
| 0a20 | 66 66 66 66 66 0d 0a 0d 0a 0d 0a 73 75 70 65 72 20 3c 3c 2d 45 4f 45 20 25 20 5b 0d 0a 09 09 09 | fffff......super.<<-EOE.%.[..... |
| 0a40 | 45 4f 45 0d 0a 0d 0a 3c 3c 58 0d 0a 58 0d 0a 58 0d 0a 25 73 28 75 6e 69 6e 74 65 72 5c 29 70 72 | EOE....<<X..X..X..%s(uninter\)pr |
| 0a60 | 65 5c 74 65 64 29 0d 0a 25 71 28 75 6e 69 6e 74 65 72 5c 29 70 72 65 5c 74 65 64 29 0d 0a 25 51 | e\ted)..%q(uninter\)pre\ted)..%Q |
| 0a80 | 28 69 6e 74 65 72 5c 29 70 72 65 5c 74 65 64 29 0d 0a 3a 22 69 6e 74 65 72 5c 29 70 72 65 5c 74 | (inter\)pre\ted)..:"inter\)pre\t |
| 0aa0 | 65 64 22 0d 0a 3a 27 75 6e 69 6e 74 65 72 5c 27 70 72 65 5c 74 65 64 27 0d 0a 0d 0a 25 71 5b 68 | ed"..:'uninter\'pre\ted'....%q[h |
| 0ac0 | 61 68 61 21 20 5b 6e 65 73 74 69 6e 67 20 5b 72 6f 63 6b 73 5d 20 5d 20 21 20 5d 0d 0a 0d 0a 25 | aha!.[nesting.[rocks].].!.]....% |
| 0ae0 | 51 5b 68 65 68 65 21 20 23 7b 20 25 51 5d 6e 65 73 74 69 6e 67 20 23 7b 22 72 65 61 6c 6c 79 22 | Q[hehe!.#{.%Q]nesting.#{"really" |
| 0b00 | 7d 20 72 6f 63 6b 73 5d 20 7d 20 21 20 5d 0d 0a 0d 0a 22 62 75 74 20 69 74 20 23 7b 3c 3c 6d 61 | }.rocks].}.!.]...."but.it.#{<<ma |
| 0b20 | 79 7d 20 62 72 65 61 6b 22 0d 0a 74 68 65 20 63 6f 64 65 2e 0d 0a 6d 61 79 0d 0a 0d 0a 23 20 74 | y}.break"..the.code...may....#.t |
| 0b40 | 68 69 73 20 69 73 20 61 20 6b 6e 6f 77 6e 20 62 75 67 2e 0d 0a 70 20 3c 3c 74 68 69 73 0d 0a 62 | his.is.a.known.bug...p.<<this..b |
| 0b60 | 75 74 20 69 74 20 6d 61 79 20 62 72 65 61 6b 20 23 7b 3c 3c 74 68 61 74 7d 0d 0a 63 6f 64 65 2e | ut.it.may.break.#{<<that}..code. |
| 0b80 | 0d 0a 74 68 61 74 0d 0a 74 68 69 73 0d 0a 74 68 61 74 0d 0a 0d 0a 23 23 23 23 23 23 23 23 23 23 | ..that..this..that....########## |
| 0ba0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
| 0bc0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 63 6c 61 73 73 20 | ########################..class. |
| 0be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 0c00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4e 50 0d 0a 64 65 66 20 20 69 6e 69 74 69 61 | .................NP..def..initia |
| 0c20 | 6c 69 7a 65 20 61 3d 40 70 3d 5b 5d 2c 20 62 3d 40 62 3d 5b 5d 3b 20 20 20 20 20 20 20 20 20 20 | lize.a=@p=[],.b=@b=[];.......... |
| 0c40 | 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 64 65 66 20 2b 40 3b 40 62 3c 3c 31 3b 62 32 | ............end..def.+@;@b<<1;b2 |
| 0c60 | 63 20 65 6e 64 3b 64 65 66 2d 40 3b 40 62 3c 3c 30 3b 62 32 63 20 20 20 20 20 20 20 20 20 20 20 | c.end;def-@;@b<<0;b2c........... |
| 0c80 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 64 65 66 20 20 62 32 63 3b 69 66 20 40 62 2e 73 69 7a 65 | ........end..def..b2c;if.@b.size |
| 0ca0 | 3d 3d 38 3b 63 3d 30 3b 40 62 2e 65 61 63 68 7b 7c 62 7c 63 3c 3c 3d 31 3b 63 7c 3d 62 7d 3b 73 | ==8;c=0;@b.each{|b|c<<=1;c|=b};s |
| 0cc0 | 65 6e 64 28 0d 0a 20 20 20 20 20 27 6c 61 76 65 27 2e 72 65 76 65 72 73 65 2c 28 40 70 2e 6a 6f | end(.......'lave'.reverse,(@p.jo |
| 0ce0 | 69 6e 29 29 69 66 20 63 3d 3d 30 3b 40 70 3c 3c 63 2e 63 68 72 3b 40 62 3d 5b 5d 20 65 6e 64 0d | in))if.c==0;@p<<c.chr;@b=[].end. |
| 0d00 | 0a 20 20 20 20 20 73 65 6c 66 20 65 6e 64 20 65 6e 64 20 3b 20 62 65 67 69 6e 20 5f 20 3d 20 4e | ......self.end.end.;.begin._.=.N |
| 0d20 | 50 2e 6e 65 77 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 63 0d 0a | P.new...................end..c.. |
| 0d40 | 23 20 5e 20 54 68 69 73 20 69 73 20 61 20 62 75 67 20 3a 28 0d 0a 0d 0a 23 20 54 68 65 20 50 72 | #.^.This.is.a.bug.:(....#.The.Pr |
| 0d60 | 6f 67 72 61 6d 6d 69 6e 67 20 4c 61 6e 67 75 61 67 65 20 60 4e 65 67 61 50 6f 73 69 27 0d 0a 2b | ogramming.Language.`NegaPosi'..+ |
| 0d80 | 2d 2b 2d 2d 2b 2b 2d 2d 2d 2d 2b 2d 2d 2b 2d 2b 2b 2b 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2b | -+--++----+--+-+++--+-------+--+ |
| 0da0 | 2b 2d 2d 2b 2b 2b 2d 2d 2d 2b 2d 2b 2b 2b 2d 2b 2d 2b 2d 2b 2b 2b 2d 2d 2d 2d 2d 2b 2b 2b 2d 5f | +--+++---+-+++-+-+-+++-----+++-_ |
| 0dc0 | 0d 0a 2b 2d 2d 2b 2b 2b 2b 2d 2d 2b 2d 2d 2d 2b 2b 2d 2b 2d 2b 2d 2b 2b 2b 2d 2d 2b 2d 2d 2b 2d | ..+--++++--+---++-+-+-+++--+--+- |
| 0de0 | 2b 2d 2d 2d 2d 2d 2d 2b 2d 2d 2b 2b 2b 2b 2d 2b 2b 2d 2d 2d 2b 2b 2d 2b 2b 2d 2d 2d 2b 2b 2d 2b | +------+--++++-++---++-++---++-+ |
| 0e00 | 2b 2d 5f 0d 0a 2b 2b 2b 2d 2d 2b 2b 2d 2b 2d 2b 2d 2d 2b 2b 2d 2d 2b 2b 2b 2d 2d 2b 2d 2d 2d 2d | +-_..+++--++-+-+--++--+++--+---- |
| 0e20 | 2d 2d 2b 2d 2d 2d 2d 2b 2d 2d 2b 2b 2d 2d 2b 2b 2b 2d 2b 2b 2d 2b 2d 2d 2d 2d 2b 2b 2d 2d 2d 2d | --+----+--++--+++-++-+----++---- |
| 0e40 | 2d 2d 2b 2d 2d 5f 0d 0a 2d 2b 2d 2b 2d 2d 2d 2d 2b 2b 2b 2d 2d 2b 2d 2d 2b 2d 2d 2d 2d 2b 2d 2d | --+--_..-+-+----+++--+--+----+-- |
| 0e60 | 2b 2d 2d 2b 2d 2b 2b 2d 2b 2b 2d 2d 2b 2b 2b 2d 2b 2b 2b 2b 2d 2b 2b 2d 2d 2d 2d 2d 2b 2d 2b 2d | +--+-++-++--+++-++++-++-----+-+- |
| 0e80 | 2b 2d 2d 2d 2d 2b 2b 2d 5f 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2b 2d 2d 2d 2d 20 20 20 20 20 | +----++-_..---------+-+----..... |
| 0ea0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 0ec0 | 20 20 20 20 20 20 20 20 20 20 20 5f 0d 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ..........._..################## |
| 0ee0 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 | ################################ |
| 0f00 | 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0d 0a 0d 0a 0d 0a 23 20 64 61 74 65 3a 20 30 33 | ################......#.date:.03 |
| 0f20 | 2f 31 38 2f 32 30 30 34 0d 0a 23 20 74 69 74 6c 65 3a 20 70 72 69 6d 65 73 20 6c 65 73 73 20 74 | /18/2004..#.title:.primes.less.t |
| 0f40 | 68 61 6e 20 31 30 30 30 20 28 20 32 30 30 35 20 4f 62 66 75 73 63 61 74 65 64 20 52 75 62 79 20 | han.1000.(.2005.Obfuscated.Ruby. |
| 0f60 | 43 6f 6e 74 65 73 74 20 29 0d 0a 23 20 61 75 74 68 6f 72 3a 20 4a 69 6d 20 4c 61 77 6c 65 73 73 | Contest.)..#.author:.Jim.Lawless |
| 0f80 | 0d 0a 23 20 65 6d 61 69 6c 3a 20 6a 69 6d 62 6f 20 61 74 20 72 61 64 69 6b 73 20 64 6f 74 73 6b | ..#.email:.jimbo.at.radiks.dotsk |
| 0fa0 | 69 20 6e 65 74 0d 0a 23 20 63 6f 6d 6d 65 6e 74 73 3a 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 | i.net..#.comments:.This.program. |
| 0fc0 | 77 69 6c 6c 20 64 69 73 70 6c 61 79 20 61 6c 6c 20 70 6f 73 69 74 69 76 65 20 70 72 69 6d 65 20 | will.display.all.positive.prime. |
| 0fe0 | 69 6e 74 65 67 65 72 73 0d 0a 23 20 20 20 20 20 20 20 20 20 20 20 6c 65 73 73 20 74 68 61 6e 20 | integers..#...........less.than. |
| 1000 | 31 30 30 30 2e 20 20 50 72 6f 67 72 61 6d 20 6c 69 63 65 6e 73 20 69 73 20 74 68 65 20 73 61 6d | 1000...Program.licens.is.the.sam |
| 1020 | 65 20 61 73 20 74 68 65 20 52 75 62 79 0d 0a 23 20 20 20 20 20 20 20 20 20 20 20 6c 69 63 65 6e | e.as.the.Ruby..#...........licen |
| 1040 | 73 65 20 28 20 68 74 74 70 3a 2f 2f 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f 65 6e | se.(.http://www.ruby-lang.org/en |
| 1060 | 2f 4c 49 43 45 4e 53 45 2e 74 78 74 20 29 0d 0a 0d 0a 20 20 20 24 65 3d 22 22 0d 0a 0d 0a 64 65 | /LICENSE.txt.).......$e=""....de |
| 1080 | 66 20 61 28 29 0d 0a 20 20 20 24 61 3d 24 61 2b 31 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 62 28 | f.a().....$a=$a+1..end....def.b( |
| 10a0 | 29 0d 0a 20 20 20 24 61 3d 24 61 2b 35 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 63 28 29 0d 0a 20 | ).....$a=$a+5..end....def.c()... |
| 10c0 | 20 20 24 65 3d 24 65 2b 24 61 2e 63 68 72 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 64 28 29 0d 0a | ..$e=$e+$a.chr..end....def.d().. |
| 10e0 | 20 20 20 24 61 3d 31 30 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 65 28 29 0d 0a 20 20 20 24 61 3d | ...$a=10..end....def.e().....$a= |
| 1100 | 24 61 2b 31 36 0d 0a 65 6e 64 0d 0a 0d 0a 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b | $a+16..end....d;e;b;a;a;a;a;a;c; |
| 1120 | 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b | d;e;e;e;e;e;e;b;a;a;a;a;c;d;e;e; |
| 1140 | 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b 62 3b 0d 0a 61 3b 63 3b 64 3b 63 3b 64 3b | e;a;a;a;c;d;e;e;b;b;..a;c;d;c;d; |
| 1160 | 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b | e;e;e;e;e;e;b;b;a;a;a;c;d;e;e;e; |
| 1180 | 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 0d 0a 65 3b | e;e;b;b;a;a;a;a;c;d;e;e;e;e;..e; |
| 11a0 | 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b | b;b;a;a;a;a;a;c;d;e;e;e;e;e;e;a; |
| 11c0 | 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b | a;c;d;e;e;e;e;e;b;b;a;c;d;e;b;a; |
| 11e0 | 63 3b 0d 0a 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b | c;..d;e;b;a;a;a;a;a;c;d;e;e;e;e; |
| 1200 | 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 63 3b 64 3b | e;e;b;a;a;a;a;c;d;e;e;e;a;a;c;d; |
| 1220 | 65 3b 65 3b 62 3b 61 3b 61 3b 0d 0a 63 3b 64 3b 65 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b | e;e;b;a;a;..c;d;e;e;b;a;c;d;e;e; |
| 1240 | 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b | b;a;c;d;e;e;b;a;c;d;c;d;e;b;a;a; |
| 1260 | 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 0d 0a 62 3b 61 3b 61 3b 61 3b | a;a;a;c;d;e;e;e;e;e;b;..b;a;a;a; |
| 1280 | 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b 61 3b | a;a;c;d;e;e;e;a;a;a;c;d;e;e;b;a; |
| 12a0 | 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b | a;a;c;d;c;d;e;b;a;a;a;a;a;c;d;e; |
| 12c0 | 0d 0a 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | ..e;e;e;e;b;b;a;a;c;d;e;e;e;e;e; |
| 12e0 | 65 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b | e;a;a;a;a;a;c;d;e;e;e;e;e;e;b;b; |
| 1300 | 61 3b 63 3b 0d 0a 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b | a;c;..d;e;e;e;e;e;e;a;a;a;a;c;d; |
| 1320 | 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b | e;e;e;e;e;b;a;a;a;a;a;c;d;e;e;e; |
| 1340 | 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 0d 0a 65 3b 62 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b | a;a;a;c;d;e;..e;b;a;c;d;c;d;e;e; |
| 1360 | 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;e;e;b;b;a;a;a;c;d;e;e;e;e;e; |
| 1380 | 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 0d 0a 65 3b 65 3b 65 3b 62 3b 62 3b | b;b;a;a;a;a;c;d;e;e;..e;e;e;b;b; |
| 13a0 | 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 63 3b | a;a;a;a;a;c;d;e;e;e;e;e;e;a;a;c; |
| 13c0 | 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 0d 0a 61 3b 63 3b | d;e;e;e;e;e;b;b;a;c;d;e;b;..a;c; |
| 13e0 | 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b | d;e;b;a;a;a;a;a;c;d;e;e;e;e;e;b; |
| 1400 | 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 63 3b 64 3b 65 3b | b;a;a;a;a;a;c;d;e;e;e;a;a;c;d;e; |
| 1420 | 62 3b 0d 0a 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b | b;..a;a;a;a;a;c;d;e;e;e;e;e;e;b; |
| 1440 | 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b 65 3b | a;a;a;a;c;d;e;b;a;c;d;c;d;e;e;e; |
| 1460 | 65 3b 65 3b 62 3b 62 3b 61 3b 0d 0a 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b | e;e;b;b;a;..a;a;a;a;c;d;e;e;e;e; |
| 1480 | 65 3b 62 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b | e;b;b;a;a;c;d;e;b;b;a;a;a;a;c;d; |
| 14a0 | 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 0d 0a 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b | e;b;a;c;d;e;b;b;a;..a;a;a;c;d;e; |
| 14c0 | 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b | b;a;a;a;a;a;c;d;e;e;e;e;e;e;b;a; |
| 14e0 | 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 0d 0a 64 3b 65 3b 65 3b | a;a;a;c;d;e;e;a;a;a;a;c;..d;e;e; |
| 1500 | 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b | e;e;e;e;a;a;a;c;d;e;e;e;e;e;e;a; |
| 1520 | 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 0d 0a | a;a;a;a;c;d;e;e;e;e;e;b;a;a;a;.. |
| 1540 | 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b | a;a;c;d;e;e;e;e;e;e;b;b;a;c;d;e; |
| 1560 | 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b | e;e;e;e;e;a;a;c;d;e;e;e;e;e;e;a; |
| 1580 | 61 3b 61 3b 0d 0a 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b | a;a;..a;a;c;d;e;b;b;a;a;a;a;c;d; |
| 15a0 | 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b | e;b;a;a;a;a;a;c;d;e;e;e;e;e;b;b; |
| 15c0 | 61 3b 61 3b 61 3b 61 3b 61 3b 0d 0a 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b | a;a;a;a;a;..c;d;e;b;b;a;a;a;a;a; |
| 15e0 | 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b | c;d;e;b;b;a;a;a;a;a;c;d;e;e;e;a; |
| 1600 | 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 0d 0a 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b | a;a;c;d;e;e;e;a;a;..a;c;d;e;e;b; |
| 1620 | 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b | a;c;d;e;b;b;a;a;a;a;a;c;d;e;b;a; |
| 1640 | 63 3b 64 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 0d 0a | c;d;c;d;e;b;a;a;a;a;a;c;d;e;e;.. |
| 1660 | 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b | e;e;e;b;b;a;a;c;d;e;e;e;e;e;e;a; |
| 1680 | 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b | a;a;a;a;c;d;e;e;e;e;e;e;b;b;a;c; |
| 16a0 | 64 3b 65 3b 0d 0a 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b | d;e;..e;e;e;e;e;a;a;a;a;c;d;e;e; |
| 16c0 | 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b | e;e;e;b;a;a;a;a;a;c;d;e;e;e;a;a; |
| 16e0 | 61 3b 63 3b 64 3b 65 3b 65 3b 0d 0a 62 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b 65 3b | a;c;d;e;e;..b;a;a;c;d;c;d;e;e;e; |
| 1700 | 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b | e;e;b;a;a;a;c;d;e;e;e;e;e;e;b;a; |
| 1720 | 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 0d 0a 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b | a;a;c;d;e;e;e;e;e;..b;b;a;c;d;e; |
| 1740 | 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b | e;e;e;e;b;a;a;c;d;e;e;e;e;e;e;a; |
| 1760 | 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 0d 0a 64 3b 65 3b | c;d;c;d;e;e;e;e;e;b;b;a;c;..d;e; |
| 1780 | 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;e;e;e;a;a;a;a;c;d;e;e;e;e;e; |
| 17a0 | 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b | b;a;a;a;a;a;c;d;c;d;e;b;a;a;a;a; |
| 17c0 | 61 3b 0d 0a 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b | a;..c;d;e;e;e;e;e;b;b;a;a;a;a;a; |
| 17e0 | 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b | c;d;e;e;e;a;a;a;c;d;e;b;a;a;a;a; |
| 1800 | 61 3b 63 3b 64 3b 65 3b 65 3b 0d 0a 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b | a;c;d;e;e;..e;e;e;b;b;a;a;a;a;a; |
| 1820 | 63 3b 64 3b 65 3b 65 3b 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b | c;d;e;e;a;c;d;e;e;b;a;a;c;d;c;d; |
| 1840 | 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 0d 0a 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b | e;e;e;e;e;b;b;a;a;..a;a;a;c;d;e; |
| 1860 | 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b | e;e;e;e;b;b;a;a;c;d;e;b;a;c;d;e; |
| 1880 | 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 0d 0a 61 3b 61 3b | b;b;a;a;a;a;c;d;e;b;b;a;a;..a;a; |
| 18a0 | 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | c;d;e;b;a;a;a;a;a;c;d;e;e;e;e;e; |
| 18c0 | 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 62 3b 61 3b 63 3b 64 3b | b;b;a;a;a;a;a;c;d;e;b;b;b;a;c;d; |
| 18e0 | 65 3b 0d 0a 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b | e;..b;a;a;a;a;a;c;d;e;e;e;e;e;b; |
| 1900 | 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b | b;a;a;a;a;a;c;d;e;b;b;a;a;a;a;a; |
| 1920 | 63 3b 64 3b 65 3b 65 3b 0d 0a 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b | c;d;e;e;..e;a;a;a;a;c;d;e;b;a;a; |
| 1940 | 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b | a;a;a;c;d;e;e;e;e;e;e;b;a;a;a;a; |
| 1960 | 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 0d 0a 61 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b | c;d;e;b;b;a;a;..a;a;a;c;d;c;d;e; |
| 1980 | 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;e;e;b;a;a;a;c;d;e;e;e;e;e;e; |
| 19a0 | 62 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 0d 0a 62 3b 62 3b 61 3b 63 3b | b;a;a;a;c;d;e;e;e;e;e;..b;b;a;c; |
| 19c0 | 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | d;e;e;e;e;e;b;a;a;c;d;e;e;e;e;e; |
| 19e0 | 65 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 0d 0a | e;a;c;d;c;d;e;e;e;e;e;b;b;a;c;.. |
| 1a00 | 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b | d;e;e;e;e;e;e;a;a;a;a;c;d;e;e;e; |
| 1a20 | 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b | e;e;b;a;a;a;a;a;c;d;c;d;e;e;e;e; |
| 1a40 | 65 3b 62 3b 62 3b 0d 0a 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b | e;b;b;..a;c;d;e;e;e;e;e;e;a;a;a; |
| 1a60 | 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b | a;c;d;e;e;e;e;e;b;a;a;a;a;a;c;d; |
| 1a80 | 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 0d 0a 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b | c;d;e;e;e;e;e;..b;b;a;a;a;a;a;c; |
| 1aa0 | 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b | d;e;e;e;e;e;b;b;a;a;c;d;e;b;b;a; |
| 1ac0 | 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 0d 0a 61 3b 61 3b 63 3b 64 3b 65 3b | a;a;a;c;d;e;b;a;a;a;..a;a;c;d;e; |
| 1ae0 | 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;e;e;b;b;a;a;c;d;e;e;e;e;e;e; |
| 1b00 | 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 0d 0a 62 3b 62 3b | a;a;a;a;a;c;d;e;e;e;e;e;e;..b;b; |
| 1b20 | 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b | a;c;d;e;e;e;e;e;e;a;a;a;a;c;d;e; |
| 1b40 | 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b | e;e;e;e;b;a;a;a;a;a;c;d;e;e;e;a; |
| 1b60 | 0d 0a 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b | ..a;a;c;d;e;e;e;a;a;a;c;d;e;e;b; |
| 1b80 | 61 3b 63 3b 64 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b | a;c;d;e;b;b;a;a;a;a;a;c;d;e;b;a; |
| 1ba0 | 63 3b 64 3b 63 3b 64 3b 65 3b 65 3b 0d 0a 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b | c;d;c;d;e;e;..e;e;e;e;b;a;c;d;e; |
| 1bc0 | 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;e;e;e;b;b;a;c;d;e;e;e;e;e;e; |
| 1be0 | 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 0d 0a 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b | b;a;a;a;a;a;c;d;e;..e;e;e;e;e;b; |
| 1c00 | 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b | a;a;a;a;c;d;e;b;a;c;d;e;b;a;a;a; |
| 1c20 | 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 0d 0a 65 3b 65 3b | c;d;e;b;a;a;a;a;c;d;e;e;e;..e;e; |
| 1c40 | 65 3b 65 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b | e;e;a;c;d;e;b;a;a;a;a;a;c;d;e;e; |
| 1c60 | 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;e;e;b;a;a;a;a;c;d;e;e;e;e;e; |
| 1c80 | 0d 0a 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b | ..e;e;a;a;a;c;d;e;b;a;c;d;e;e;e; |
| 1ca0 | 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b | e;e;b;b;a;a;a;a;a;c;d;e;e;e;e;e; |
| 1cc0 | 65 3b 62 3b 61 3b 0d 0a 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b | e;b;a;..a;a;a;c;d;e;b;a;c;d;e;e; |
| 1ce0 | 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b | e;e;e;e;b;a;c;d;e;e;e;e;e;e;b;a; |
| 1d00 | 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 0d 0a 65 3b 65 3b 62 3b 62 3b 61 3b 61 3b 61 3b 61 3b | a;a;c;d;e;e;e;..e;e;b;b;a;a;a;a; |
| 1d20 | 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b | a;c;d;e;e;e;e;e;e;a;a;a;c;d;e;e; |
| 1d40 | 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 0d 0a 61 3b 61 3b 61 3b 63 3b 64 3b | e;e;e;b;b;a;c;d;e;b;..a;a;a;c;d; |
| 1d60 | 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b | c;d;e;e;e;e;e;b;b;a;c;d;e;e;e;e; |
| 1d80 | 65 3b 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 0d 0a 61 3b | e;e;a;a;a;a;c;d;e;e;e;e;e;b;..a; |
| 1da0 | 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b | a;a;a;a;c;d;c;d;e;b;a;a;a;a;a;c; |
| 1dc0 | 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b | d;e;e;e;e;e;e;b;a;a;a;a;c;d;e;b; |
| 1de0 | 61 3b 63 3b 0d 0a 64 3b 65 3b 65 3b 65 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b | a;c;..d;e;e;e;a;a;a;c;d;e;b;a;c; |
| 1e00 | 64 3b 65 3b 62 3b 61 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 65 3b | d;e;b;a;a;a;a;a;c;d;e;e;e;e;e;e; |
| 1e20 | 62 3b 61 3b 61 3b 61 3b 61 3b 63 3b 0d 0a 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 61 3b | b;a;a;a;a;c;..d;e;b;a;c;d;e;e;a; |
| 1e40 | 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 62 3b 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b | c;d;e;b;a;c;d;e;e;b;a;a;c;d;c;d; |
| 1e60 | 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 62 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 0d 0a 65 3b 65 3b | e;e;e;e;e;b;b;a;c;d;e;e;e;..e;e; |
| 1e80 | 65 3b 61 3b 61 3b 61 3b 61 3b 63 3b 64 3b 65 3b 65 3b 65 3b 65 3b 65 3b 62 3b 61 3b 61 3b 61 3b | e;a;a;a;a;c;d;e;e;e;e;e;b;a;a;a; |
| 1ea0 | 61 3b 61 3b 63 3b 64 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b | a;a;c;d;c;d;e;b;a;c;d;e;b;a;c;d; |
| 1ec0 | 65 3b 62 3b 0d 0a 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 64 3b | e;b;..a;c;d;e;b;a;c;d;e;b;a;c;d; |
| 1ee0 | 65 3b 62 3b 61 3b 63 3b 64 3b 65 3b 62 3b 61 3b 63 3b 65 76 61 6c 20 24 65 0d 0a 0d 0a 24 5f 3d | e;b;a;c;d;e;b;a;c;eval.$e....$_= |
| 1f00 | 25 7b 71 2c 6c 3d 20 25 77 7b 52 75 62 79 5c 5c 20 51 75 69 7a 20 4c 6f 61 64 65 72 7d 0d 0a 6e | %{q,l=.%w{Ruby\\.Quiz.Loader}..n |
| 1f20 | 2c 70 2c 61 3d 20 22 5c 23 7b 71 2e 64 6f 23 7b 25 77 7b 77 20 61 20 6e 20 63 7d 2e 73 6f 72 74 | ,p,a=."\#{q.do#{%w{w.a.n.c}.sort |
| 1f40 | 7b 7c 6f 2c 74 7c 74 3c 3d 3e 6f 7d 7d 73 65 2e 64 5c 78 36 35 6c 5c 78 36 35 74 5c 78 36 35 28 | {|o,t|t<=>o}}se.d\x65l\x65t\x65( |
| 1f60 | 27 20 27 29 7d 2e 63 6f 6d 2f 22 2c 0d 0a 7b 22 62 6d 4a 7a 63 41 3d 3d 5c 6e 22 2e 5c 78 37 35 | '.')}.com/",..{"bmJzcA==\n".\x75 |
| 1f80 | 6e 70 5c 78 36 31 63 6b 28 22 6d 22 29 5b 30 5d 3d 3e 22 20 22 2c 22 62 48 51 3d 5c 6e 22 2e 5c | np\x61ck("m")[0]=>".","bHQ=\n".\ |
| 1fa0 | 78 37 35 6e 70 5c 78 36 31 63 6b 28 28 3f 6e 2d 31 29 2e 63 68 72 29 5b 30 5d 3d 3e 0d 0a 3a 3c | x75np\x61ck((?n-1).chr)[0]=>..:< |
| 1fc0 | 2c 22 5a 33 51 3d 5c 6e 22 2e 5c 78 37 35 6e 70 5c 78 36 31 63 6b 28 22 6d 22 29 5b 30 5d 3d 3e | ,"Z3Q=\n".\x75np\x61ck("m")[0]=> |
| 1fe0 | 3a 3e 2c 22 59 57 31 77 5c 6e 22 2e 5c 78 37 35 6e 70 5c 78 36 31 63 6b 28 28 3f 6c 2b 31 29 2e | :>,"YW1w\n".\x75np\x61ck((?l+1). |
| 2000 | 63 68 72 29 5b 30 5d 3d 3e 3a 26 7d 2c 0d 0a 5b 5b 2f 5e 5c 5c 73 2b 3c 5c 5c 2f 64 69 76 3e 2e | chr)[0]=>:&},..[[/^\\s+<\\/div>. |
| 2020 | 2b 2f 6d 2c 22 22 5d 2c 5b 2f 5e 5c 5c 73 2b 2f 2c 22 22 5d 2c 5b 2f 5c 6e 2f 2c 22 5c 6e 5c 6e | +/m,""],[/^\\s+/,""],[/\n/,"\n\n |
| 2040 | 22 5d 2c 5b 2f 3c 62 72 20 5c 5c 2f 3e 2f 2c 22 5c 6e 22 5d 2c 0d 0a 5b 2f 3c 68 72 20 5c 5c 2f | "],[/<br.\\/>/,"\n"],..[/<hr.\\/ |
| 2060 | 3e 2f 2c 22 2d 3d 22 2a 34 30 5d 2c 5b 2f 3c 5b 5e 3e 5d 2b 3e 2f 2c 22 22 5d 2c 5b 2f 5e 72 75 | >/,"-="*40],[/<[^>]+>/,""],[/^ru |
| 2080 | 62 79 2f 2c 22 22 5d 2c 5b 2f 5c 6e 7b 33 2c 7d 2f 2c 22 5c 6e 5c 6e 22 5d 5d 3b 70 5c 31 36 35 | by/,""],[/\n{3,}/,"\n\n"]];p\165 |
| 20a0 | 74 73 22 0d 0a 5c 23 7b 6c 5b 30 2e 2e 2d 33 5d 7d 69 6e 67 2e 2e 2e 5c 6e 5c 6e 22 3b 73 65 6e | ts"..\#{l[0..-3]}ing...\n\n";sen |
| 20c0 | 64 28 4b 65 72 6e 65 6c 2e 6d 65 74 68 6f 64 73 2e 66 69 6e 64 5f 61 6c 6c 7b 7c 78 7c 78 5b 30 | d(Kernel.methods.find_all{|x|x[0 |
| 20e0 | 5d 3d 3d 3f 65 7d 5b 2d 31 5d 2c 0d 0a 22 72 65 5c 23 7b 71 5b 35 2e 2e 2e 38 5d 2e 64 6f 77 6e | ]==?e}[-1],.."re\#{q[5...8].down |
| 2100 | 63 61 73 65 7d 72 65 20 27 31 31 31 31 31 32 31 30 31 31 31 30 2d 31 31 37 31 31 34 31 30 35 27 | case}re.'111112101110-117114105' |
| 2120 | 2e 73 63 61 6e 28 2f 2d 7c 5c 5c 5c 5c 64 7b 33 7d 2f 29 2e 0d 0a 69 6e 6a 65 63 74 28 27 27 29 | .scan(/-|\\\\d{3}/)...inject('') |
| 2140 | 7b 7c 6d 2c 76 7c 76 2e 6c 65 6e 67 74 68 3e 31 3f 6d 2b 76 2e 74 6f 5f 69 2e 63 68 72 3a 20 6d | {|m,v|v.length>1?m+v.to_i.chr:.m |
| 2160 | 2b 76 7d 22 29 3b 6f 23 7b 25 77 7b 65 20 50 7d 2e 73 6f 72 74 2e 6a 6f 69 6e 2e 64 6f 77 6e 63 | +v}");o#{%w{e.P}.sort.join.downc |
| 2180 | 61 73 65 0d 0a 7d 6e 28 22 68 74 74 70 3a 2f 2f 77 77 77 2e 5c 23 7b 6e 7d 22 29 7b 7c 77 7c 24 | ase..}n("http://www.\#{n}"){|w|$ |
| 21a0 | 46 3d 77 2e 72 65 61 64 2e 73 63 5c 78 36 31 6e 28 2f 6c 69 3e 2e 2b 3f 22 28 5b 5e 22 5d 2b 29 | F=w.read.sc\x61n(/li>.+?"([^"]+) |
| 21c0 | 2e 2e 28 5b 5e 3c 5d 2b 29 2f 29 7d 3b 5c 31 36 30 75 74 73 5c 0d 0a 22 5c 23 7b 71 7d 5c 6e 5c | ..([^<]+)/)};\160uts\.."\#{q}\n\ |
| 21e0 | 6e 22 3b 24 46 2e 5c 31 34 35 5c 31 34 31 63 68 7b 7c 65 7c 69 3d 65 5b 30 5d 5b 2f 5c 5c 64 2b | n";$F.\145\141ch{|e|i=e[0][/\\d+ |
| 2200 | 2f 5d 3b 73 3d 22 25 32 73 2e 20 20 25 73 22 25 5b 69 2c 65 5b 31 5d 5d 3b 69 2e 74 6f 5f 69 25 | /];s="%2s...%s"%[i,e[1]];i.to_i% |
| 2220 | 32 3d 3d 30 20 3f 0d 0a 5c 31 36 30 75 74 5c 78 37 33 28 73 29 20 3a 20 23 7b 25 77 7b 73 20 70 | 2==0.?..\160ut\x73(s).:.#{%w{s.p |
| 2240 | 7d 5b 2d 31 5d 7d 72 69 6e 74 28 22 25 2d 33 38 73 20 20 22 25 73 29 7d 3b 70 5c 78 37 32 5c 78 | }[-1]}rint("%-38s.."%s)};p\x72\x |
| 2260 | 36 39 5c 78 36 65 74 22 5c 6e 3f 20 20 22 3b 65 5c 78 37 36 61 6c 28 0d 0a 5b 27 70 75 74 73 22 | 69\x6et"\n?..";e\x76al(..['puts" |
| 2280 | 5c 6e 5c 23 7b 6c 5b 30 2e 2e 33 5d 7d 69 6e 67 2e 2e 2e 5c 6e 5c 6e 22 27 2c 27 24 63 3d 67 65 | \n\#{l[0..3]}ing...\n\n"','$c=ge |
| 22a0 | 74 73 2e 63 68 6f 6d 70 2e 74 6f 5f 69 27 5d 2e 73 6f 72 74 2e 6a 6f 69 6e 28 22 3b 22 29 29 3b | ts.chomp.to_i'].sort.join(";")); |
| 22c0 | 23 7b 31 31 31 2e 63 68 72 0d 0a 7d 70 65 6e 28 22 68 74 74 70 3a 2f 2f 77 77 77 2e 5c 23 7b 6e | #{111.chr..}pen("http://www.\#{n |
| 22e0 | 7d 22 2b 24 46 5b 24 63 2d 31 5d 5b 30 5d 29 7b 7c 6e 7c 24 5f 3d 6e 2e 72 65 61 64 5b 2f 5e 5c | }"+$F[$c-1][0]){|n|$_=n.read[/^\ |
| 2300 | 5c 73 2b 3c 73 70 61 6e 2e 2b 2f 6d 5d 3b 23 7b 28 27 61 27 2e 2e 22 7a 22 29 2e 0d 0a 74 6f 5f | \s+<span.+/m];#{('a'.."z")...to_ |
| 2320 | 61 5b 31 30 2d 35 2a 32 5d 7d 2e 65 5c 31 34 31 63 68 7b 7c 28 7a 2c 66 29 7c 5c 78 36 37 73 75 | a[10-5*2]}.e\141ch{|(z,f)|\x67su |
| 2340 | 62 21 28 7a 2c 66 29 7d 3b 5c 31 34 37 73 75 62 21 28 2f 26 28 5c 5c 77 2b 29 3b 2f 29 7b 7c 79 | b!(z,f)};\147sub!(/&(\\w+);/){|y |
| 2360 | 7c 70 2e 0d 0a 6b 65 5c 31 37 31 5c 30 37 37 28 24 31 29 3f 70 5b 24 31 5d 3a 79 7d 3b 77 68 69 | |p...ke\171\077($1)?p[$1]:y};whi |
| 2380 | 6c 65 24 5f 3d 7e 2f 28 5b 5e 5c 6e 5d 7b 38 31 2c 7d 29 2f 3a 7a 3d 24 31 2e 64 75 70 3b 66 3d | le$_=~/([^\n]{81,})/:z=$1.dup;f= |
| 23a0 | 24 31 2e 64 75 70 3b 66 5b 66 2e 72 69 6e 64 65 78 28 0d 0a 22 20 22 2c 38 30 29 2c 31 5d 3d 22 | $1.dup;f[f.rindex(..".",80),1]=" |
| 23c0 | 5c 6e 22 3b 66 2e 73 5c 31 36 35 62 21 28 2f 5c 6e 5b 20 5c 74 5d 2b 2f 2c 22 5c 6e 22 29 3b 73 | \n";f.s\165b!(/\n[.\t]+/,"\n");s |
| 23e0 | 5c 31 36 35 62 21 28 2f 5c 23 7b 52 5c 78 36 35 67 5c 78 36 35 78 70 2e 0d 0a 5c 78 36 35 73 63 | \165b!(/\#{R\x65g\x65xp...\x65sc |
| 2400 | 61 70 5c 78 36 35 28 7a 29 7d 2f 2c 66 29 65 6e 64 7d 3b 77 68 69 6c 65 5c 30 34 30 5c 31 36 33 | ap\x65(z)}/,f)end};while\040\163 |
| 2420 | 75 62 21 28 2f 5e 28 3f 3a 5b 5e 5c 6e 5d 2a 5c 6e 29 7b 32 30 7d 2f 2c 20 22 22 29 3a 70 75 74 | ub!(/^(?:[^\n]*\n){20}/,.""):put |
| 2440 | 73 22 5c 23 24 26 0d 0a 2d 2d 5c 78 34 64 4f 5c 78 35 32 45 2d 2d 22 3b 67 3d 24 5f 3b 67 23 7b | s"\#$&..--\x4dO\x52E--";g=$_;g#{ |
| 2460 | 22 5c 31 34 35 22 7d 74 73 3b 3b 23 7b 22 65 78 63 69 74 65 64 22 5b 30 2e 2e 34 5d 2e 64 65 6c | "\145"}ts;;#{"excited"[0..4].del |
| 2480 | 65 74 65 28 22 63 22 29 7d 5c 30 34 30 69 66 24 5f 5b 30 5d 3d 3d 3f 71 0d 0a 24 5f 3d 67 3b 65 | ete("c")}\040if$_[0]==?q..$_=g;e |
| 24a0 | 6e 64 3b 24 5f 2e 64 23 7b 22 49 6e 74 65 72 6e 65 74 20 53 65 72 76 69 63 65 20 50 72 6f 76 69 | nd;$_.d#{"Internet.Service.Provi |
| 24c0 | 64 65 72 22 2e 73 63 61 6e 28 2f 5b 41 2d 5a 5d 2f 29 2e 6a 6f 69 6e 2e 64 6f 77 6e 63 61 73 65 | der".scan(/[A-Z]/).join.downcase |
| 24e0 | 0d 0a 7d 6c 61 79 7d 3b 65 76 61 6c 24 5f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 3d 5b 33 30 36 | ..}lay};eval$_............d=[306 |
| 2500 | 34 34 32 35 30 37 38 30 2c 39 30 30 33 31 30 36 38 37 38 2c 0d 0a 20 20 20 20 33 30 36 33 36 32 | 44250780,9003106878,......306362 |
| 2520 | 37 38 38 34 36 2c 36 36 36 34 31 32 31 37 36 39 32 2c 34 35 30 31 37 39 30 39 38 30 2c 0d 0a 20 | 78846,66641217692,4501790980,... |
| 2540 | 36 37 31 5f 32 34 5f 36 30 33 30 33 36 2c 31 33 31 5f 36 31 39 37 33 39 31 36 2c 36 36 5f 36 30 | 671_24_603036,131_61973916,66_60 |
| 2560 | 36 36 32 39 5f 39 32 30 2c 0d 0a 20 20 20 33 30 36 34 32 36 37 37 39 31 36 2c 33 30 36 34 33 30 | 6629_920,.....30642677916,306430 |
| 2580 | 36 39 30 35 38 5d 3b 61 2c 73 3d 5b 5d 2c 24 2a 5b 30 5d 0d 0a 20 20 20 20 20 20 73 2e 65 61 63 | 69058];a,s=[],$*[0]........s.eac |
| 25a0 | 68 5f 62 79 74 65 7b 7c 62 7c 61 3c 3c 28 22 25 30 33 36 62 22 25 64 5b 62 2e 0d 0a 20 20 20 20 | h_byte{|b|a<<("%036b"%d[b....... |
| 25c0 | 20 20 20 20 20 63 68 72 2e 74 6f 5f 69 5d 29 2e 73 63 61 6e 28 2f 5c 64 7b 36 7d 2f 29 7d 0d 0a | .....chr.to_i]).scan(/\d{6}/)}.. |
| 25e0 | 20 20 20 20 20 20 20 20 20 20 61 2e 74 72 61 6e 73 70 6f 73 65 2e 65 61 63 68 7b 20 7c 61 7c 0d | ..........a.transpose.each{.|a|. |
| 2600 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 2e 6a 6f 69 6e 2e 65 61 63 68 5f 62 79 74 65 7b 5c 0d | .............a.join.each_byte{\. |
| 2620 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 69 7c 70 72 69 6e 74 20 69 3d 3d 34 39 3f 5c 0d 0a | ..............|i|print.i==49?\.. |
| 2640 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 24 2a 5b 31 5d 7c 7c 22 23 22 29 5c 0d 0a 20 20 | ...............($*[1]||"#")\.... |
| 2660 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 33 32 2e 63 68 72 7d 0d 0a 20 20 20 20 20 20 20 | ...............:32.chr}......... |
| 2680 | 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............puts................ |
| 26a0 | 20 20 20 20 20 20 7d 0d 0a 0d 0a 23 21 20 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 72 75 62 79 0d | ......}....#!./usr/bin/env.ruby. |
| 26c0 | 0a 23 20 4c 69 63 65 6e 73 65 3a 20 49 66 20 52 75 62 79 20 69 73 20 6c 69 63 65 6e 73 65 64 20 | .#.License:.If.Ruby.is.licensed. |
| 26e0 | 74 6f 20 74 68 65 20 67 65 6e 65 72 61 6c 20 70 75 62 6c 69 63 20 69 6e 20 61 20 63 65 72 74 61 | to.the.general.public.in.a.certa |
| 2700 | 69 6e 20 77 61 79 2c 20 74 68 69 73 20 69 73 20 61 6c 73 6f 20 6c 69 63 65 6e 73 65 64 20 69 6e | in.way,.this.is.also.licensed.in |
| 2720 | 20 74 68 61 74 20 77 61 79 2e 0d 0a 72 65 71 75 69 72 65 27 7a 6c 69 62 27 3b 65 76 61 6c 28 5a | .that.way...require'zlib';eval(Z |
| 2740 | 6c 69 62 3a 3a 49 6e 66 6c 61 74 65 2e 69 6e 66 6c 61 74 65 28 22 78 5c 33 33 32 5c 33 35 35 57 | lib::Inflate.inflate("x\332\355W |
| 2760 | 4b 6f 5c 33 33 33 46 5c 30 32 30 5c 32 37 36 5c 33 36 37 57 5c 32 35 30 5c 32 36 32 5c 30 30 31 | Ko\333F\020\276\367W\250\262\001 |
| 2780 | 5c 32 32 32 5c 74 4d 5c 33 35 37 5c 32 34 36 4d 5c 30 31 37 5c 32 34 32 5c 32 31 31 5c 32 34 32 | \222\tM\357\246M\017\242\211\242 |
| 27a0 | 68 5c 32 30 30 5c 30 33 36 5c 32 31 32 60 5c 32 30 31 5c 30 32 36 5c 33 35 30 5c 32 30 35 60 5c | h\200\036\212`\201\026\350\205`\ |
| 27c0 | 66 3d 68 5c 32 33 33 5c 33 30 31 5a 74 25 5c 32 37 33 41 2d 32 5c 32 37 37 5c 32 37 35 5c 33 36 | f=h\233\301Zt%\273A-2\277\275\36 |
| 27e0 | 33 5c 33 31 35 5c 32 32 32 5c 33 33 34 5c 32 34 31 2c 23 76 5c 32 31 34 5c 33 36 36 54 5c 33 33 | 3\315\222\334\241,#v\214\366T\33 |
| 2800 | 31 5c 32 36 32 5c 33 32 36 5c 33 30 33 79 5c 33 31 37 37 5c 32 36 33 5c 32 34 33 4d 5c 33 37 31 | 1\262\326\303y\3177\263\243M\371 |
| 2820 | 5c 33 34 37 5d 5c 32 36 35 29 5c 32 30 33 55 75 59 6e 6f 4f 5c 32 35 37 57 6f 5c 32 30 33 5c 33 | \347]\265)\203UuYnoO\257Wo\203\3 |
| 2840 | 36 34 3e 5b 54 5c 33 35 33 55 5c 32 36 35 5c 32 37 36 4c 5c 32 35 37 5c 33 35 33 5c 33 32 35 5c | 64>[T\353U\265\276L\257\353\325\ |
| 2860 | 32 33 35 2d 27 5c 32 37 37 5c 32 32 36 5c 32 33 33 75 69 5c 33 32 33 55 79 31 5c 32 35 31 5c 30 | 235-'\277\226\233ui\323Uy1\251\0 |
| 2880 | 32 37 5c 30 32 37 5c 33 34 31 5c 32 35 33 5c 33 37 31 5c 33 34 36 72 5c 65 5c 32 34 35 75 5c 33 | 27\027\341\253\371\346r\e\245u\3 |
| 28a0 | 36 36 5c 32 31 36 5c 32 30 35 66 5c 32 36 33 5c 33 36 37 5c 33 35 37 5c 33 33 36 26 5c 33 35 33 | 66\216\205f\263\367\357\336&\353 |
| 28c0 | 5c 33 36 32 53 5c 30 31 30 7a 72 3d 5c 32 37 37 5c 33 33 31 35 77 5c 33 31 35 5d 72 5b 5c 32 33 | \362S\010zr=\277\3315w\315]r[\23 |
| 28e0 | 37 6f 5c 33 33 33 5c 33 34 34 63 5d 5c 32 35 35 23 3e 5c 33 34 33 4f 5c 30 32 35 5c 33 35 32 5c | 7o\333\344c]\255#>\343O\025\352\ |
| 2900 | 30 33 37 5c 33 33 34 5c 31 37 37 5c 33 34 31 5c 33 36 37 5c 33 36 34 5c 32 37 31 5c 74 5c 30 30 | 037\334\177\341\367\364\271\t\00 |
| 2920 | 33 5c 32 34 35 5c 33 33 37 7c 5c 30 32 37 5c 33 30 34 5c 33 36 34 61 4d 40 3a 5c 33 36 33 5c 32 | 3\245\337|\027\304\364aM@:\363\2 |
| 2940 | 36 30 5c 33 31 36 3e 5c 32 33 37 5c 32 33 32 5c 33 32 33 28 5c 33 32 36 5c 32 35 32 28 5c 33 32 | 60\316>\237\232\323(\326\252(\32 |
| 2960 | 37 5c 32 35 33 5c 74 5c 32 37 35 5c 33 32 33 5c 33 33 32 68 5c 32 35 33 5c 32 32 34 56 5c 33 30 | 7\253\t\275\323\332h\253\224V\30 |
| 2980 | 36 64 5c 32 34 37 5c 30 33 37 5c 33 36 32 5c 33 37 31 5c 33 31 31 7d 5c 33 32 31 5c 33 31 34 66 | 6d\247\037\362\371\311}\321\314f |
| 29a0 | 5c 33 35 36 5c 33 36 33 43 5c 30 31 36 5c 33 31 31 5c 33 34 32 5c 33 36 35 5c 33 36 31 69 6a 5c | \356\363C\016\311\342\365\361ij\ |
| 29c0 | 30 32 36 5c 30 33 37 5c 33 31 33 5c 33 34 35 5c 33 35 35 5c 33 35 37 37 5c 33 36 33 65 5c 32 33 | 026\037\313\345\355\3577\363e\23 |
| 29e0 | 31 5c 32 32 34 5c 33 36 33 5c 33 34 35 5c 33 32 35 79 5c 33 31 35 5c 32 30 34 5d 5c 32 36 33 6c | 1\224\363\345\325y\315\204]\263l |
| 2a00 | 5c 33 36 32 30 5c 31 37 37 5c 33 31 37 5c 32 34 31 5c 30 32 34 4d 5c 33 37 36 5c 32 36 33 5c 32 | \3620\177\317\241\024M\376\263\2 |
| 2a20 | 33 35 6f 5c 32 36 37 45 74 5c 32 32 32 2f 5c 32 32 33 25 5c 30 33 37 5c 32 31 33 5c 33 37 34 44 | 35o\267Et\222/\223%\037\213\374D |
| 2a40 | 5c 33 32 33 5c 33 37 33 4d 5c 33 32 31 34 4b 76 2d 5c 33 37 33 3c 5c 33 36 31 5c 30 32 36 5c 32 | \323\373M\3214Kv-\373<\361\026\2 |
| 2a60 | 33 33 26 5c 5c 5c 33 30 34 5c 32 35 33 2c 5c 33 35 34 5c 32 37 30 5c 32 36 33 5c 33 31 34 29 5c | 33&\\\304\253,\354\270\263\314)\ |
| 2a80 | 32 33 32 5c 33 37 34 38 5c 33 31 31 5c 32 34 37 5d 7a 5c 32 31 36 76 5c 33 31 33 36 5c 32 33 35 | 232\3748\311\247]z\216v\3136\235 |
| 2aa0 | 5c 33 30 36 5c 33 32 33 5c 32 34 33 5c 30 33 35 5c 32 36 32 5c 32 36 33 5c 32 31 34 5c 33 33 32 | \306\323\243\035\262\263\214\332 |
| 2ac0 | 5c 66 5c 30 32 34 5c 33 34 32 5c 32 35 37 5c 33 32 37 5c 33 34 35 5c 32 36 34 5c 32 33 30 5c 32 | \f\024\342\257\327\345\264\230\2 |
| 2ae0 | 30 35 5c 33 31 33 6f 33 36 5c 33 31 32 32 5c 32 35 34 65 32 5c 32 36 30 5c 32 33 36 5c 32 36 31 | 05\313o36\3122\254e2\260\236\261 |
| 2b00 | 30 5c 32 30 32 5c 33 35 34 5c 30 33 37 5c 32 36 30 5c 32 35 36 20 28 66 3d 2f 5c 33 31 33 3a 5a | 0\202\354\037\260\256.(f=/\313:Z |
| 2b20 | 5c 30 32 34 5c 32 34 35 5c 33 31 33 5c 32 34 34 5a 6f 6f 5c 33 34 37 5c 33 35 33 65 79 7e 5d 5c | \024\245\313\244Zoo\347\353ey~]\ |
| 2b40 | 33 33 36 5e 5c 33 32 35 5c 32 35 33 2d 5c 61 5c 32 37 33 6b 5c 32 35 32 66 71 76 36 5c 32 33 35 | 336^\325\253-\a\273k\252fqv6\235 |
| 2b60 | 5c 33 33 33 6a 5c 32 37 36 5c 33 35 35 5c 32 33 36 74 56 5c 32 35 32 5c 32 33 30 5c 33 37 37 46 | \333j\276\355\236tV\252\230\377F |
| 2b80 | 5c 32 37 36 5c 6e 5c 33 33 33 5c 32 37 37 5c 32 35 37 5c 32 34 31 5c 33 34 35 5c 32 30 36 5c 32 | \276\n\333\277\257\241\345\206\2 |
| 2ba0 | 36 32 5c 33 32 33 5c 33 30 36 47 5c 32 37 33 5c 33 35 32 5c 33 34 30 5c 32 30 33 74 5c 33 33 32 | 62\323\306G\273\352\340\203t\332 |
| 2bc0 | 5c 32 34 36 5c 32 34 34 31 60 27 5c 33 31 36 5c 33 31 36 5c 32 36 36 5c 32 34 35 5c 32 37 35 48 | \246\2441`'\316\316\266\245\275H |
| 2be0 | 5c 30 30 33 32 5c 33 37 37 6c 5c 32 35 33 5c 30 31 37 2c 3d 34 32 45 5c 30 30 32 5c 33 36 30 5c | \0032\377l\253\017,=42E\002\360\ |
| 2c00 | 32 33 36 5c 32 34 36 5c 33 34 35 5f 73 3b 59 5c 32 37 34 5e 5c 33 30 35 5c 33 36 37 51 5c 32 33 | 236\246\345_s;Y\274^\305\367Q\23 |
| 2c20 | 33 5c 30 33 36 5c 32 33 33 5c 32 37 36 5c 30 31 36 5c 33 31 32 5c 32 34 35 30 3d 5c 32 35 36 3d | 3\036\233\276\016\312\2450=\256= |
| 2c40 | 5c 33 30 35 55 5c 32 30 32 5c 32 33 30 5c 32 35 34 5c 22 5c 32 32 32 5c 32 36 35 5c 30 30 34 5c | \305U\202\230\254\"\222\265\004\ |
| 2c60 | 32 31 37 5c 32 33 37 7e 5c 33 37 33 5c 33 34 35 5c 30 31 37 5c 22 68 5c 32 34 33 5c 32 31 30 5c | 217\237~\373\345\017\"h\243\210\ |
| 2c80 | 33 30 37 6a 5c 32 33 35 5c 32 35 31 5c 32 30 35 56 38 5c 33 35 33 5c 33 30 34 58 5c 33 37 32 21 | 307j\235\251\205V8\353\304X\372! |
| 2ca0 | 31 43 47 63 2d 5c 32 35 31 5c 32 34 30 5c 33 33 37 5c 30 32 30 5c 33 31 37 5c 33 36 31 23 5c 30 | 1CGc-\251\240\337\020\317\361#\0 |
| 2cc0 | 33 36 5c 30 32 33 5c 6e 5c 32 35 35 36 5c 32 35 34 43 67 33 5c 30 30 32 7d 5c 32 36 35 5c 33 35 | 36\023\n\2556\254Cg3\002}\265\35 |
| 2ce0 | 36 73 5c 32 33 35 5c 32 30 32 4b 5b 4b 5c 30 32 32 5c 30 32 30 20 5c 32 34 33 5c 32 30 36 5c 32 | 6s\235\202K[K\022\020.\243\206\2 |
| 2d00 | 31 36 5c 32 34 31 70 33 5c 33 33 32 35 35 5c 33 35 30 5c 32 33 32 5c 30 33 36 5c 30 33 30 71 24 | 16\241p3\33255\350\232\036\030q$ |
| 2d20 | 5c 32 33 33 5c 33 34 34 21 5c 33 36 33 5c 32 30 34 5e 7d 2c 24 5c 30 32 33 58 67 5c 32 33 35 3a | \233\344!\363\204^},$\023Xg\235: |
| 2d40 | 5c 33 36 34 72 31 5c 22 31 5c 33 34 34 5c 32 37 37 5c 32 36 31 5c 32 30 37 5c 30 33 31 28 5c 33 | \364r1\"1\344\277\261\207\031(\3 |
| 2d60 | 30 31 44 45 5c 32 36 30 5c 33 34 34 5c 30 32 36 59 5c 31 37 37 5c 33 34 35 5c 30 33 36 5c 32 32 | 01DE\260\344\026Y\177\345\036\22 |
| 2d80 | 31 5c 32 30 34 6d 50 5c 32 36 33 5c 32 36 36 4d 6b 5c 33 30 35 5c 33 36 36 5c 32 31 30 25 33 5c | 1\204mP\263\266Mk\305\366\210%3\ |
| 2da0 | 32 32 30 5c 33 30 32 53 5c 33 32 32 5c 33 30 36 49 52 5c 33 31 36 5c 33 37 37 21 5c 32 30 33 20 | 220\302S\322\306IR\316\377!\203. |
| 2dc0 | 53 5c 33 33 36 5c 33 31 30 5c 32 31 36 5c 32 31 35 5c 32 30 33 5c 33 31 35 5c 30 30 32 2d 5c 32 | S\336\310\216\215\203\315\002-\2 |
| 2de0 | 31 31 20 35 44 32 5c 32 35 37 5c 32 31 30 5c 33 30 32 5c 33 32 31 70 5c 32 33 34 5c 33 36 34 5c | 11.5D2\257\210\302\321p\234\364\ |
| 2e00 | 32 30 35 5c 32 32 32 4a 6a 5c 32 32 30 5c 30 32 32 45 5c 33 32 31 68 5c 33 34 37 5c 32 32 33 52 | 205\222Jj\220\022E\321h\347\223R |
| 2e20 | 51 2a 39 34 4b 5c 30 32 32 5c 32 34 33 5c 33 31 34 48 60 34 7b 4c 56 5c 30 30 33 5c 30 32 31 4e | Q*94K\022\243\314H`4{LV\003\021N |
| 2e40 | 5c 66 5c 33 33 33 5c 33 36 34 49 5c 33 34 37 6c 5c 33 32 37 55 52 5c 33 30 35 74 5c 33 34 30 5c | \f\333\364I\347l\327UR\305t\340\ |
| 2e60 | 33 33 32 69 3e 5c 32 34 31 78 3d 4d 75 34 52 5c 32 34 35 5c 33 37 33 5c 32 32 33 5c 32 34 34 5c | 332i>\241x=Mu4R\245\373\223\244\ |
| 2e80 | 32 35 31 4e 42 5c 32 31 31 5c 32 34 37 5c 32 33 36 5c 33 34 36 35 5c 32 35 33 5e 62 78 5c 33 33 | 251NB\211\247\236\3465\253^bx\33 |
| 2ea0 | 32 59 63 5c 32 36 33 5c 32 35 32 4d 5c 32 32 30 62 5c 32 35 33 5c 32 32 30 5c 33 31 30 5c 30 30 | 2Yc\263\252M\220b\253\220\310\00 |
| 2ec0 | 34 5c 33 33 31 5c 32 34 32 5c 30 32 30 2c 60 5c 30 30 35 54 5c 30 32 31 59 5c 32 35 31 50 40 5c | 4\331\242\020,`\005T\021Y\251P@\ |
| 2ee0 | 30 32 30 5c 33 36 35 41 78 5c 33 31 30 7a 5c 33 36 34 5c 32 36 34 5c 32 34 30 5c 32 36 35 76 6a | 020\365Ax\310z\364\264\240\265vj |
| 2f00 | 32 5c 30 33 37 3f 30 5c 76 5c 22 65 6e 5c 32 34 34 5c 33 37 34 5c 32 35 31 5c 30 33 32 5c 32 32 | 2\037?0\v\"en\244\374\251\032\22 |
| 2f20 | 35 5c 32 35 33 76 5c 33 34 36 5c 32 35 33 5c 33 37 31 32 5c 32 31 35 5c 30 33 32 5c 33 32 32 28 | 5\253v\346\253\3712\215\032\322( |
| 2f40 | 6f 5c 32 30 36 7e 41 5c 30 30 36 5c 30 31 30 5c 66 5c 33 32 34 5c 32 32 33 35 37 5c 30 32 36 5c | o\206~A\006\010\f\324\22357\026\ |
| 2f60 | 22 5c 33 31 36 5c 30 32 34 5c 33 36 35 5c 30 32 31 5c 33 36 30 40 5c 32 37 37 3a 5c 33 36 33 2e | "\316\024\365\021\360@\277:\363. |
| 2f80 | 24 5c 66 5c 33 34 32 5c 30 31 36 24 5c 32 30 30 5c 76 5c 33 34 31 5c 33 30 32 5c 32 33 30 5c 30 | $\f\342\016$\200\v\341\302\230\0 |
| 2fa0 | 32 30 5c 33 34 30 5c 33 34 31 5c 32 30 31 4b 5c 30 31 37 5c 32 37 30 2b 69 5c 33 32 36 2d 5c 33 | 20\340\341\201K\017\270+i\326-\3 |
| 2fc0 | 31 32 5c 33 31 33 6a 5c 32 33 35 5c 6e 5b 5c 33 37 36 28 7b 5c 33 33 30 75 5c 32 35 34 5c 32 36 | 12\313j\235\n[\376({\330u\254\26 |
| 2fe0 | 36 5c 33 33 34 5c 30 33 34 5c 30 33 31 5c 33 36 37 25 3a 43 4b 5c 32 31 30 7b 5c 33 31 31 68 5c | 6\334\034\031\367%:CK\210{\311h\ |
| 3000 | 61 51 48 5c 33 33 33 51 5c 30 32 33 5c 32 35 30 5c 32 31 30 3b 65 5c 33 36 30 5c 33 32 32 5c 33 | aQH\333Q\023\250\210;e\360\322\3 |
| 3020 | 36 32 5c 32 31 33 5c 32 30 32 5c 32 34 37 5c 32 31 36 5c 32 36 36 5c 33 34 30 43 26 28 70 5c 32 | 62\213\202\247\216\266\340C&(p\2 |
| 3040 | 37 34 48 54 37 5c 33 33 36 26 42 5c 33 35 32 5c 33 30 30 5c 30 33 36 7a 5c 32 30 36 5c 32 30 34 | 74HT7\336&B\352\300\036z\206\204 |
| 3060 | 5c 33 37 35 20 5c 30 33 32 7a 5c 33 30 34 5c 32 33 33 5c 32 31 37 5c 30 33 34 5c 32 36 37 41 4b | \375.\032z\304\233\217\034\267AK |
| 3080 | 5c 32 30 37 52 5c 33 36 33 5c 32 31 33 5c 33 32 34 75 5c 33 33 34 5c 32 30 33 5c 32 37 32 68 5c | \207R\363\213\324u\334\203\272h\ |
| 30a0 | 32 33 34 20 5c 33 30 34 26 5c 33 36 34 53 5c 33 30 32 5d 7c 5c 30 32 34 5c 32 33 33 62 5c 30 30 | 234.\304&\364S\302]|\024\233b\00 |
| 30c0 | 30 5c 30 32 33 45 5c 30 33 34 5c 30 30 35 5c 33 30 30 21 5c 33 33 30 5c 32 32 37 34 5c 30 32 36 | 0\023E\034\005\300!\330\2274\026 |
| 30e0 | 5c 32 30 35 5c 33 31 36 5c 33 36 33 5c 32 30 33 5c 33 36 34 5c 22 5c 33 31 36 5c 32 34 35 21 5c | \205\316\363\203\364\"\316\245!\ |
| 3100 | 32 34 32 5c 33 36 30 59 3f 34 5c 32 30 34 62 5c 30 32 33 2e 5c 32 30 30 39 5c 30 33 36 58 5c 33 | 242\360Y?4\204b\023.\2009\036X\3 |
| 3120 | 30 30 5c 32 31 33 70 5c 32 30 30 5d 5c 33 30 34 5c 33 32 34 5c 32 30 30 24 5e 5c 32 30 34 5c 30 | 00\213p\200]\304\324\200$^\204\0 |
| 3140 | 32 35 5c 32 32 32 44 5c 33 32 35 58 20 5c 33 36 33 5c 33 32 34 5c 30 30 34 5c 32 32 33 5c 32 30 | 25\222D\325X.\363\324\004\223\20 |
| 3160 | 35 5c 32 30 37 5c 32 34 31 4d 5c 32 34 35 5c 33 35 32 5c 33 34 31 28 73 5c 33 34 31 35 5c 32 36 | 5\207\241M\245\352\341(s\3415\26 |
| 3180 | 30 77 5c 32 32 36 5c 33 31 33 3d 5c 32 34 32 32 20 5c 32 30 30 5c 31 37 37 5c 33 34 34 5c 33 35 | 0w\226\313=\2422.\200\177\344\35 |
| 31a0 | 35 5c 32 31 31 5c 33 33 35 30 5c 30 30 34 5c 33 34 31 5c 32 31 37 5c 32 30 37 5c 32 31 35 72 25 | 5\211\3350\004\341\217\207\215r% |
| 31c0 | 78 5c 30 33 30 5c 33 30 32 5c 33 30 34 5c 32 33 30 5c 33 33 35 7b 23 5c 32 35 30 23 6f 5c 32 30 | x\030\302\304\230\335{#\250#o\20 |
| 31e0 | 34 68 5c 33 32 37 3b 5c 32 32 30 5c 32 34 32 5c 32 37 35 42 25 6a 26 5c 33 34 33 65 5c 30 30 35 | 4h\327;\220\242\275B%j&\343e\005 |
| 3200 | 5c 32 32 36 2f 5c 72 5c 32 30 30 5c 30 33 35 5c 30 33 35 5c 32 30 36 4b 5c 32 34 33 5c 30 32 37 | \226/\r\200\035\035\206K\243\027 |
| 3220 | 5c 32 31 36 5a 5c 32 33 30 5c 33 32 33 2e 5c 33 33 35 5c 33 35 36 5e 21 5c 76 46 5c 30 30 32 4b | \216Z\230\323.\335\356^!\vF\002K |
| 3240 | 5c 33 36 36 5c 32 34 36 6b 47 5c 33 32 31 5c 33 36 34 45 5c 33 30 31 5c 33 36 32 5c 32 35 30 5c | \366\246kG\321\364E\301\362\250\ |
| 3260 | 32 37 35 61 5c 66 5c 30 33 31 5c 32 30 37 69 25 5c 32 31 36 5c 33 34 32 26 69 65 5c 32 30 35 5c | 275a\f\031\207i%\216\342&ie\205\ |
| 3280 | 32 36 30 5c 33 32 34 7d 5c 32 37 32 5c 32 35 32 68 6f 5c 32 32 32 5c 33 30 36 5c 33 37 30 5c 33 | 260\324}\272\252ho\222\306\370\3 |
| 32a0 | 36 32 21 7d 36 5c 33 36 34 43 5c 30 30 33 5c 32 37 31 37 5c 32 30 36 27 21 2e 5c 33 31 35 5c 30 | 62!}6\364C\003\2717\206'!.\315\0 |
| 32c0 | 33 36 6d 68 4d 6d 5c 33 37 30 5c 32 35 32 5c 32 34 31 5c 33 36 35 5c 32 32 31 67 5c 32 37 35 5c | 36mhMm\370\252\241\365\221g\275\ |
| 32e0 | 33 32 36 41 5c 33 30 32 5c 32 35 34 5c 32 37 30 58 2c 5c 33 37 31 5c 33 35 33 5c 32 33 32 3a 5c | 326A\302\254\270X,\371\353\232:\ |
| 3300 | 32 32 32 5c 33 32 31 5c 32 35 33 5c 30 32 35 5c 32 31 37 76 25 5c 32 32 32 5c 30 32 33 21 5c 32 | 222\321\253\025\217v%\222\023!\2 |
| 3320 | 34 33 72 5c 32 37 32 5c 33 36 34 28 5c 33 37 36 5c 31 37 37 5c 32 33 36 5c 33 37 34 5c 32 33 33 | 43r\272\364(\376\177\236\374\233 |
| 3340 | 5c 33 36 33 5c 33 30 34 38 5c 33 33 30 62 5c 32 34 31 78 64 54 70 5c 33 32 35 5c 33 32 31 5c 33 | \363\3048\330b\241xdTp\325\321\3 |
| 3360 | 37 37 5c 33 34 32 38 46 5c 32 33 34 5c 32 31 34 5c 32 36 33 5c 33 35 37 5c 32 35 35 66 5c 33 32 | 77\3428F\234\214\263\357\255f\32 |
| 3380 | 34 5c 33 30 36 5c 32 32 36 5c 32 35 37 5c 30 32 32 5c 22 5c 30 30 30 5c 33 35 34 5c 30 30 33 5c | 4\306\226\257\022\"\000\354\003\ |
| 33a0 | 30 32 34 43 5c 32 30 37 5c 6e 61 5c 33 35 33 5c 32 34 30 26 4f 5c 33 30 35 5c 33 37 36 5c 30 30 | 024C\207\na\353\240&O\305\376\00 |
| 33c0 | 34 6e 63 79 5c 33 35 30 5c 66 5c 32 37 36 5c 33 35 37 2b 51 7c 5c 32 30 31 62 42 69 5c 32 30 36 | 4ncy\350\f\276\357+Q|\201bBi\206 |
| 33e0 | 5c 32 37 37 5c 33 34 35 75 5c 32 35 31 5c 32 37 33 5c 33 31 30 5c 33 36 37 5c 32 34 32 5c 33 30 | \277\345u\251\273\310\367\242\30 |
| 3400 | 33 2a 5c 32 30 34 64 5c 6e 5c 32 37 31 7d 5c 30 31 36 5c 32 33 34 35 72 38 5c 30 33 34 5c 32 30 | 3*\204d\n\271}\016\2345r8\034\20 |
| 3420 | 31 5b 5c 33 34 33 3a 3e 5c 33 36 34 2a 5c 32 34 32 5c 32 36 36 5c 30 32 35 2b 48 5a 5c 32 36 33 | 1[\343:>\364*\242\266\025+HZ\263 |
| 3440 | 65 5c 32 31 32 5c 30 32 34 37 71 5c 33 35 37 5c 33 31 30 58 5c 32 36 37 5b 5c 33 33 33 28 39 5f | e\212\0247q\357\310X\267[\333(9_ |
| 3460 | 6f 7d 50 5c 32 30 31 5c 33 32 34 3e 5c 32 36 36 5c 33 36 34 5c 30 30 30 5c 32 31 37 68 68 5c 33 | o}P\201\324>\266\364\000\217hh\3 |
| 3480 | 35 32 5c 32 32 35 61 5c 32 31 33 71 5c 32 36 30 5c 30 33 31 5c 33 33 34 5c 30 32 32 73 67 5c 33 | 52\225a\213q\260\031\334\022sg\3 |
| 34a0 | 36 30 5c 65 5c 32 30 36 5c 32 33 34 42 3d 5c 32 34 36 5c 32 34 32 31 5c 33 34 31 65 5c 33 36 34 | 60\e\206\234B=\246\2421\341e\364 |
| 34c0 | 5c 32 37 30 5c 33 32 31 5c 32 32 34 5c 33 34 37 5c 30 30 35 36 4c 5c 32 36 37 5c 32 32 37 29 5c | \270\321\224\347\0056L\267\227)\ |
| 34e0 | 32 34 34 5c 32 31 30 5c 33 30 37 5c 30 32 37 5c 32 35 37 3c 5c 33 34 33 5c 32 35 37 5c 30 30 30 | 244\210\307\027\257<\343\257\000 |
| 3500 | 5c 33 30 33 5c 32 36 34 75 7b 5c 32 33 35 5c 33 32 36 5c 33 35 32 69 5c 33 30 33 5e 5c 33 33 32 | \303\264u{\235\326\352i\303^\332 |
| 3520 | 5c 32 30 30 5c 6e 5c 32 33 36 5c 32 34 33 61 5c 32 37 37 5c 30 33 34 4a 23 7e 53 5c 33 33 35 27 | \200\n\236\243a\277\034J#~S\335' |
| 3540 | 32 5c 33 37 31 5c 30 30 31 71 5c 33 37 34 35 24 5c 33 35 36 5c 30 32 37 5e 5c 33 37 31 5c 33 32 | 2\371\001q\3745$\356\027^\371\32 |
| 3560 | 35 5c 33 34 34 5c 33 33 31 5c 30 33 36 5c 33 36 32 5c 30 30 34 5c 32 36 37 5c 33 33 30 5c 32 35 | 5\344\331\036\362\004\267\330\25 |
| 3580 | 31 3c 5c 32 31 32 5c 32 33 37 5c 32 35 37 5c 33 34 35 6b 72 5c 33 37 31 5c 33 30 32 64 5c 33 36 | 1<\212\237\257\345kr\371\302d\36 |
| 35a0 | 32 72 5c 33 37 36 5c 33 34 34 64 5c 32 35 32 43 5c 33 31 31 5c 33 37 34 52 36 5c 30 31 37 65 5c | 2r\376\344d\252C\311\374R6\017e\ |
| 35c0 | 33 37 35 5c 30 30 35 5c 32 37 31 79 41 56 5c 33 36 33 2f 5c 32 35 37 5c 33 34 35 5c 32 36 31 28 | 375\005\271yAV\363/\257\345\261( |
| 35e0 | 5c 33 34 30 68 57 5c 30 32 30 5c 32 32 32 5c 61 5c 30 32 37 6b 29 36 30 5c 33 35 34 5c 32 31 37 | \340hW\020\222\a\027k)60\354\217 |
| 3600 | 5c 33 36 33 5c 33 35 30 31 5c 32 36 33 72 74 5c 30 33 36 34 5c 30 32 35 5c 30 32 35 7c 5c 32 36 | \363\3501\263rt\0364\025\025|\26 |
| 3620 | 35 5c 30 33 31 5c 33 35 35 5c 32 37 36 64 5c 33 35 37 5c 33 31 35 39 5c 33 36 37 5c 32 32 35 5c | 5\031\355\276d\357\3159\367\225\ |
| 3640 | 30 32 35 5c 32 32 33 55 5c 32 37 33 6e 5c 30 32 37 5c 33 32 34 5c 33 32 31 48 5c 30 33 31 5c 30 | 025\223U\273n\027\324\321H\031\0 |
| 3660 | 33 30 5c 30 33 36 5c 33 35 37 5c 33 35 36 5c 33 37 37 5c 30 31 30 5c 32 36 36 5c 33 33 37 5c 33 | 30\036\357\356\377\010\266\337\3 |
| 3680 | 37 34 5c 30 30 33 5c 33 33 37 35 51 5c 33 33 35 22 29 29 0d 0a 23 69 6e 63 6c 75 64 65 20 22 72 | 74\003\3375Q\335"))..#include."r |
| 36a0 | 75 62 79 2e 68 22 20 20 20 2f 2a 0d 0a 20 20 20 20 20 20 20 2f 73 4c 61 53 68 20 20 20 20 20 20 | uby.h".../*........./sLaSh...... |
| 36c0 | 20 20 2a 0d 0a 20 20 6f 42 66 55 73 43 61 54 65 44 20 20 52 75 42 79 20 20 20 2a 0d 0a 20 20 20 | ..*....oBfUsCaTeD..RuBy...*..... |
| 36e0 | 63 4f 70 59 72 49 67 48 74 20 32 30 30 35 20 20 20 20 2a 0d 0a 62 59 20 53 69 4d 6f 4e 20 53 74 | cOpYrIgHt.2005....*..bY.SiMoN.St |
| 3700 | 52 61 4e 64 47 61 41 72 44 20 2a 0d 0a 20 23 7b 58 3d 33 32 30 3b 59 3d 32 30 30 3b 5a 3d 32 30 | RaNdGaArD.*...#{X=320;Y=200;Z=20 |
| 3720 | 7d 20 20 2a 2f 0d 0a 0d 0a 23 64 65 66 69 6e 65 20 47 55 4e 31 20 34 32 3a 0d 0a 23 64 65 66 69 | }..*/....#define.GUN1.42:..#defi |
| 3740 | 6e 65 20 47 55 4e 32 20 34 33 3a 0d 0a 23 64 65 66 69 6e 65 20 62 6f 20 64 6f 0d 0a 23 64 65 66 | ne.GUN2.43:..#define.bo.do..#def |
| 3760 | 69 6e 65 20 77 68 65 6e 28 67 75 6e 29 20 2f 2a 2a 2f 0d 0a 23 64 65 66 69 6e 65 20 44 41 54 41 | ine.when(gun)./**/..#define.DATA |
| 3780 | 20 22 70 20 27 48 65 6c 6c 6f 20 65 6d 62 65 64 64 65 64 20 77 6f 72 6c 64 27 22 0d 0a 23 64 65 | ."p.'Hello.embedded.world'"..#de |
| 37a0 | 66 69 6e 65 20 44 49 52 54 59 28 61 72 67 63 2c 61 72 67 76 29 5c 0d 0a 61 72 67 63 2c 61 72 67 | fine.DIRTY(argc,argv)\..argc,arg |
| 37c0 | 76 2c 63 68 61 72 3d 65 76 61 6c 28 5c 0d 0a 22 23 7b 44 41 54 41 2e 72 65 61 64 7d 5c 6e 5b 33 | v,char=eval(\.."#{DATA.read}\n[3 |
| 37e0 | 2c 32 2c 31 5d 22 5c 0d 0a 29 3b 73 75 6e 3d 4f 2e 6e 65 77 5c 0d 0a 69 66 28 30 29 0d 0a 0d 0a | ,2,1]"\..);sun=O.new\..if(0).... |
| 3800 | 69 6e 74 0d 0a 73 75 6e 5b 5d 3d 7b 31 32 2c 39 2c 31 36 2c 39 2c 32 2c 31 2c 37 2c 31 2c 33 2c | int..sun[]={12,9,16,9,2,1,7,1,3, |
| 3820 | 39 2c 32 37 2c 34 2c 20 31 33 2c 32 2c 31 31 2c 35 2c 34 2c 31 2c 32 35 2c 0d 0a 35 2c 30 2c 31 | 9,27,4,.13,2,11,5,4,1,25,..5,0,1 |
| 3840 | 2c 31 34 2c 39 2c 31 35 2c 34 2c 32 36 2c 39 2c 32 33 2c 32 2c 31 37 2c 36 2c 33 31 2c 20 36 2c | ,14,9,15,4,26,9,23,2,17,6,31,.6, |
| 3860 | 31 30 2c 38 2c 32 32 2c 39 2c 32 31 2c 31 2c 0d 0a 32 34 2c 38 2c 32 30 2c 38 2c 31 38 2c 39 2c | 10,8,22,9,21,1,..24,8,20,8,18,9, |
| 3880 | 32 39 2c 35 2c 39 2c 35 2c 31 2c 31 2c 32 38 2c 38 2c 38 2c 31 2c 33 30 2c 20 39 2c 36 2c 38 2c | 29,5,9,5,1,1,28,8,8,1,30,.9,6,8, |
| 38a0 | 20 35 2c 31 2c 0d 0a 31 39 2c 39 2c 33 36 2c 31 39 2c 34 33 2c 20 39 2c 33 34 2c 31 31 2c 35 30 | .5,1,..19,9,36,19,43,.9,34,11,50 |
| 38c0 | 2c 31 39 2c 34 38 2c 31 38 2c 34 39 2c 39 2c 20 33 35 2c 38 2c 34 32 2c 31 38 2c 0d 0a 35 31 2c | ,19,48,18,49,9,.35,8,42,18,..51, |
| 38e0 | 38 2c 34 34 2c 31 31 2c 33 32 2c 20 31 31 2c 34 37 2c 39 2c 33 37 2c 31 2c 33 39 2c 39 2c 33 38 | 8,44,11,32,.11,47,9,37,1,39,9,38 |
| 3900 | 2c 31 39 2c 20 20 34 35 2c 38 2c 34 30 2c 31 32 2c 0d 0a 34 31 2c 39 2c 34 36 2c 31 32 2c 33 33 | ,19,..45,8,40,12,..41,9,46,12,33 |
| 3920 | 2c 31 2c 35 37 2c 31 2c 38 35 2c 35 2c 38 38 2c 32 38 2c 38 33 2c 34 2c 38 37 2c 20 36 2c 36 32 | ,1,57,1,85,5,88,28,83,4,87,.6,62 |
| 3940 | 2c 32 38 2c 38 39 2c 0d 0a 39 2c 38 30 2c 32 38 2c 36 30 2c 32 31 2c 35 32 2c 32 31 2c 37 32 2c | ,28,89,..9,80,28,60,21,52,21,72, |
| 3960 | 32 39 2c 35 34 2c 32 31 2c 37 35 2c 38 2c 37 30 2c 32 39 2c 35 38 2c 32 38 2c 36 35 2c 0d 0a 39 | 29,54,21,75,8,70,29,58,28,65,..9 |
| 3980 | 2c 39 31 2c 38 2c 37 34 2c 32 39 2c 37 39 2c 32 2c 37 37 2c 31 2c 35 33 2c 31 2c 38 31 2c 35 2c | ,91,8,74,29,79,2,77,1,53,1,81,5, |
| 39a0 | 20 36 39 2c 32 2c 36 34 2c 32 31 2c 20 38 36 2c 32 39 2c 0d 0a 36 37 2c 39 2c 35 39 2c 31 2c 36 | .69,2,64,21,.86,29,..67,9,59,1,6 |
| 39c0 | 31 2c 35 2c 37 33 2c 36 2c 37 36 2c 32 38 2c 35 36 2c 32 31 2c 36 38 2c 32 39 2c 37 38 2c 32 39 | 1,5,73,6,76,28,56,21,68,29,78,29 |
| 39e0 | 2c 36 33 2c 35 2c 36 36 2c 0d 0a 32 38 2c 39 30 2c 32 39 2c 20 37 31 2c 34 2c 35 35 2c 39 2c 38 | ,63,5,66,..28,90,29,.71,4,55,9,8 |
| 3a00 | 34 2c 32 38 2c 38 32 2c 32 39 2c 31 30 31 2c 35 2c 20 31 30 33 2c 39 2c 20 39 38 2c 33 35 2c 0d | 4,28,82,29,101,5,.103,9,.98,35,. |
| 3a20 | 0a 39 37 2c 31 2c 39 34 2c 33 35 2c 39 33 2c 31 2c 31 30 30 2c 33 35 2c 39 32 2c 33 31 2c 39 39 | .97,1,94,35,93,1,100,35,92,31,99 |
| 3a40 | 2c 35 2c 39 36 2c 33 39 2c 39 35 2c 35 2c 31 30 32 2c 33 35 7d 3b 0d 0a 0d 0a 76 6f 69 64 20 72 | ,5,96,39,95,5,102,35};....void.r |
| 3a60 | 75 6e 28 69 6e 74 20 67 75 6e 3d 30 29 20 7b 20 20 20 20 20 20 20 20 2f 2f 20 5b 67 75 6e 5d 3d | un(int.gun=0).{........//.[gun]= |
| 3a80 | 5b 3a 47 55 4e 31 2c 3a 47 55 4e 32 5d 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28 22 72 | [:GUN1,:GUN2]..........printf("r |
| 3aa0 | 75 6e 28 29 20 25 69 5c 6e 22 2c 20 67 75 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 | un().%i\n",.gun);..........switc |
| 3ac0 | 68 28 67 75 6e 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 47 55 4e 31 20 77 68 65 6e | h(gun).{..........case.GUN1.when |
| 3ae0 | 28 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28 22 77 68 65 | (2)..................printf("whe |
| 3b00 | 6e 32 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 20 | n2\n");..................break;. |
| 3b20 | 2f 2f 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 47 55 4e 32 20 77 68 65 6e 28 33 | //.end..........case.GUN2.when(3 |
| 3b40 | 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 66 28 22 77 68 65 6e 33 | )..................printf("when3 |
| 3b60 | 5c 6e 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 20 2f 2f | \n");..................break;.// |
| 3b80 | 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 69 6e 74 20 6d 61 69 6e 28 69 | .end..........}..}....int.main(i |
| 3ba0 | 6e 74 20 61 72 67 63 2c 20 63 68 61 72 2a 2a 20 61 72 67 76 29 20 7b 0d 0a 20 20 20 20 20 20 20 | nt.argc,.char**.argv).{......... |
| 3bc0 | 20 70 72 69 6e 74 66 28 22 68 65 6c 6c 6f 20 77 6f 72 6c 64 2e 20 20 20 6e 75 6d 62 65 72 20 6f | .printf("hello.world....number.o |
| 3be0 | 66 20 61 72 67 75 6d 65 6e 74 73 3d 25 69 5c 6e 22 2c 20 61 72 67 63 29 3b 0d 0a 20 20 20 20 20 | f.arguments=%i\n",.argc);....... |
| 3c00 | 20 20 20 69 6e 74 20 66 75 6e 3d 35 3b 0d 0a 20 20 20 20 20 20 20 20 62 6f 20 7b 0d 0a 20 20 20 | ...int.fun=5;..........bo.{..... |
| 3c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6e 20 2d 3d 20 31 3b 20 2f 2f 2e 69 64 20 2d 20 67 | .............fun.-=.1;.//.id.-.g |
| 3c40 | 75 6e 20 3d 20 66 75 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 28 66 75 | un.=.fun..................run(fu |
| 3c60 | 6e 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20 77 68 69 6c 65 28 66 75 6e 3e 30 29 3b 0d 0a 20 20 | n);..........}.while(fun>0);.... |
| 3c80 | 20 20 20 20 20 20 72 75 62 79 5f 69 6e 69 74 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 62 5f 65 | ......ruby_init();..........rb_e |
| 3ca0 | 76 61 6c 5f 73 74 72 69 6e 67 28 44 41 54 41 29 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 | val_string(DATA);..........retur |
| 3cc0 | 6e 20 30 3b 0d 0a 7d 0d 0a 0d 0a 23 69 66 20 30 20 20 2f 2f 20 6e 6f 62 6f 64 79 20 72 65 61 64 | n.0;..}....#if.0..//.nobody.read |
| 3ce0 | 73 20 75 6e 2d 64 65 66 69 6e 65 64 20 63 6f 64 65 0d 0a 64 65 66 20 67 6f 74 6f 2a 73 3b 24 73 | s.un-defined.code..def.goto*s;$s |
| 3d00 | 3d 5b 5d 3b 59 2e 74 69 6d 65 73 7b 73 3d 5b 5d 3b 58 2e 74 69 6d 65 73 7b 73 3c 3c 5b 30 5d 2a | =[];Y.times{s=[];X.times{s<<[0]* |
| 3d20 | 33 7d 3b 24 73 3c 3c 20 73 7d 65 6e 64 3b 41 3d 30 2e 35 0d 0a 69 6e 63 6c 75 64 65 20 4d 61 74 | 3};$s<<.s}end;A=0.5..include.Mat |
| 3d40 | 68 3b 64 65 66 20 75 20 67 2c 68 2c 69 2c 6a 2c 6b 2c 6c 3b 66 2c 2a 6d 3d 28 28 6a 2d 68 29 2e | h;def.u.g,h,i,j,k,l;f,*m=((j-h). |
| 3d60 | 61 62 73 3e 28 6b 2d 69 29 2e 61 62 73 29 3f 5b 70 72 6f 63 7b 0d 0a 7c 6e 2c 6f 7c 20 20 20 20 | abs>(k-i).abs)?[proc{..|n,o|.... |
| 3d80 | 20 20 67 5b 6f 5d 20 20 5b 6e 20 20 20 5d 3d 6c 20 20 20 20 20 20 7d 2c 5b 68 20 20 2c 69 20 20 | ..g[o]..[n...]=l......},[h..,i.. |
| 3da0 | 20 5d 2c 5b 6a 2c 6b 5d 5d 3a 5b 70 72 6f 63 7b 0d 0a 7c 70 2c 71 7c 20 20 67 5b 20 20 20 70 5d | .],[j,k]]:[proc{..|p,q|..g[...p] |
| 3dc0 | 5b 20 20 71 5d 20 20 20 3d 6c 7d 20 20 2c 5b 20 20 20 69 2c 68 20 20 5d 2c 20 20 20 5b 6b 2c 6a | [..q]...=l}..,[...i,h..],...[k,j |
| 3de0 | 5d 5d 3b 62 2c 61 3d 6d 2e 73 6f 72 74 0d 0a 63 2c 64 3d 61 20 20 5b 31 20 20 20 5d 2d 62 20 20 | ]];b,a=m.sort..c,d=a..[1...]-b.. |
| 3e00 | 5b 31 20 20 20 5d 2c 61 20 20 5b 30 20 20 20 5d 2d 62 20 20 5b 30 20 20 20 5d 3b 64 2e 74 69 6d | [1...],a..[0...]-b..[0...];d.tim |
| 3e20 | 65 73 7b 7c 65 7c 66 2e 0d 0a 63 61 6c 6c 28 20 20 20 20 20 20 65 2b 62 5b 20 20 30 5d 20 20 20 | es{|e|f...call(......e+b[..0]... |
| 3e40 | 2c 63 2a 20 20 20 20 20 20 65 2f 64 2b 62 20 20 20 20 20 5b 31 5d 29 7d 3b 65 6e 64 3b 56 3d 30 | ,c*......e/d+b.....[1])};end;V=0 |
| 3e60 | 3b 64 65 66 20 62 6f 26 75 0d 0a 24 75 7c 7c 3d 20 20 56 3b 20 20 20 3b 24 75 20 20 2b 3d 20 20 | ;def.bo&u..$u||=..V;...;$u..+=.. |
| 3e80 | 20 31 2b 56 20 20 3b 3b 20 20 20 72 65 74 75 72 6e 20 75 2e 63 61 6c 6c 20 69 66 24 75 3e 31 3b | .1+V..;;...return.u.call.if$u>1; |
| 3ea0 | 71 3d 31 32 38 2e 30 0d 0a 3b 78 3d 28 56 20 20 2e 2e 20 20 20 32 35 35 20 20 29 2e 20 20 20 6d | q=128.0..;x=(V.......255..)....m |
| 3ec0 | 61 70 20 20 7b 7c 20 20 20 79 7c 66 31 2c 7a 20 3d 73 69 6e 28 79 2e 74 6f 5f 66 2a 50 49 2f 71 | ap..{|...y|f1,z.=sin(y.to_f*PI/q |
| 3ee0 | 29 2c 0d 0a 73 69 6e 28 28 20 20 79 2e 20 20 20 74 6f 5f 66 20 20 20 20 2b 20 32 30 30 20 20 20 | ),..sin((..y....to_f....+.200... |
| 3f00 | 20 20 20 29 2a 50 49 2f 28 20 20 20 71 29 29 3b 5b 28 66 31 2a 33 30 2e 30 2b 31 31 30 2e 30 29 | ...)*PI/(...q));[(f1*30.0+110.0) |
| 3f20 | 2e 0d 0a 74 6f 5f 69 2c 28 28 66 31 2b 7a 29 2a 31 30 2e 30 2b 34 30 2e 30 29 2e 74 6f 5f 69 2c | ...to_i,((f1+z)*10.0+40.0).to_i, |
| 3f40 | 28 7a 2a 32 30 2e 30 2b 31 32 30 2e 30 29 2e 74 6f 5f 69 5d 7d 3b 59 2e 74 69 6d 65 73 7b 7c 69 | (z*20.0+120.0).to_i]};Y.times{|i |
| 3f60 | 7c 58 2e 0d 0a 74 69 6d 65 73 7b 7c 6a 7c 69 31 3d 28 28 69 2a 30 2e 33 2b 31 35 30 29 2a 28 6a | |X...times{|j|i1=((i*0.3+150)*(j |
| 3f80 | 2a 31 2e 31 2b 35 30 29 2f 35 30 2e 30 29 2e 74 6f 5f 69 3b 69 32 3d 28 28 69 2a 30 2e 38 2b 35 | *1.1+50)/50.0).to_i;i2=((i*0.8+5 |
| 3fa0 | 31 30 29 2a 28 0d 0a 6a 2a 30 2e 39 2b 31 30 36 30 29 2f 35 31 2e 30 29 2e 74 6f 5f 69 3b 24 73 | 10)*(..j*0.9+1060)/51.0).to_i;$s |
| 3fc0 | 5b 69 5d 5b 6a 5d 3d 78 5b 28 69 31 2a 69 32 29 25 32 35 35 5d 2e 63 6c 6f 6e 65 7d 7d 3b 24 61 | [i][j]=x[(i1*i2)%255].clone}};$a |
| 3fe0 | 3d 28 30 2e 2e 32 35 29 2e 0d 0a 69 6e 6a 65 63 74 28 5b 5d 29 7b 7c 61 2c 69 7c 61 3c 3c 28 56 | =(0..25)...inject([]){|a,i|a<<(V |
| 4000 | 2e 2e 33 29 2e 69 6e 6a 65 63 74 28 5b 5d 29 7b 7c 72 2c 6a 7c 72 3c 3c 24 63 5b 69 2a 34 2b 6a | ..3).inject([]){|r,j|r<<$c[i*4+j |
| 4020 | 5d 7d 7d 3b 75 2e 63 61 6c 6c 3b 65 6e 64 0d 0a 49 3d 4c 6f 63 61 6c 4a 75 6d 70 45 72 72 6f 72 | ]}};u.call;end..I=LocalJumpError |
| 4040 | 3b 64 65 66 20 72 75 6e 2a 61 2c 26 62 3b 72 65 74 75 72 6e 20 69 66 20 61 2e 73 69 7a 65 3d 3d | ;def.run*a,&b;return.if.a.size== |
| 4060 | 56 3b 69 66 20 61 5b 56 5d 3d 3d 36 36 36 3b 24 62 3d 62 0d 0a 65 6c 73 69 66 24 62 3b 24 62 2e | V;if.a[V]==666;$b=b..elsif$b;$b. |
| 4080 | 63 61 6c 6c 3b 65 6e 64 3b 65 6e 64 3b 64 65 66 20 6d 61 69 6e 20 73 2c 26 75 3b 24 6d 3d 56 3b | call;end;end;def.main.s,&u;$m=V; |
| 40a0 | 75 2e 63 61 6c 6c 20 72 65 73 63 75 65 20 49 3b 65 6e 64 0d 0a 64 65 66 20 72 62 5f 65 76 61 6c | u.call.rescue.I;end..def.rb_eval |
| 40c0 | 5f 73 74 72 69 6e 67 28 2a 61 29 3b 65 6e 64 20 20 20 20 20 23 20 79 6f 75 20 70 72 6f 6d 69 73 | _string(*a);end.....#.you.promis |
| 40e0 | 65 64 20 6e 6f 74 20 74 6f 20 6c 6f 6f 6b 20 68 65 72 65 0d 0a 64 65 66 20 72 75 62 79 5f 69 6e | ed.not.to.look.here..def.ruby_in |
| 4100 | 69 74 3b 71 3d 32 2e 30 3b 6c 3d 28 28 58 2a 2a 71 29 2a 41 2b 28 59 2a 2a 71 29 2a 41 29 2a 2a | it;q=2.0;l=((X**q)*A+(Y**q)*A)** |
| 4120 | 41 3b 56 2e 75 70 74 6f 28 59 2d 34 29 7b 7c 73 7c 56 2e 0d 0a 75 70 74 6f 28 58 2d 34 29 7b 7c | A;V.upto(Y-4){|s|V...upto(X-4){| |
| 4140 | 71 7c 64 3d 28 28 71 2d 58 2f 41 29 2a 2a 71 2b 28 73 2d 59 2f 41 29 2a 2a 71 29 2a 2a 41 3b 65 | q|d=((q-X/A)**q+(s-Y/A)**q)**A;e |
| 4160 | 3d 28 63 6f 73 28 64 2a 50 49 2f 28 6c 2f 71 29 29 2f 71 0d 0a 2b 41 29 2a 33 2e 30 2b 31 2e 30 | =(cos(d*PI/(l/q))/q..+A)*3.0+1.0 |
| 4180 | 3b 76 3d 32 3b 66 3d 76 2f 65 3b 61 2c 70 2c 62 3d 24 73 5b 73 5d 2c 24 73 5b 73 2b 31 5d 2c 24 | ;v=2;f=v/e;a,p,b=$s[s],$s[s+1],$ |
| 41a0 | 73 5b 73 2b 76 5d 3b 72 3d 61 5b 71 5d 5b 56 5d 2a 65 2b 0d 0a 70 5b 71 5d 5b 56 5d 2b 61 5b 71 | s[s+v];r=a[q][V]*e+..p[q][V]+a[q |
| 41c0 | 2b 31 5d 5b 56 5d 2b 62 5b 71 5d 5b 56 5d 2b 61 5b 71 2b 76 5d 5b 56 5d 2b 62 5b 71 2b 76 2f 76 | +1][V]+b[q][V]+a[q+v][V]+b[q+v/v |
| 41e0 | 5d 5b 56 5d 2b 70 5b 71 2b 76 5d 5b 56 5d 2b 62 5b 71 2b 0d 0a 76 5d 5b 56 5d 2a 66 3b 67 3d 5b | ][V]+p[q+v][V]+b[q+..v][V]*f;g=[ |
| 4200 | 61 5b 71 5d 5b 56 5d 2c 62 5b 71 5d 5b 56 5d 2c 61 5b 71 2b 76 5d 5b 56 5d 2c 62 5b 71 2b 76 5d | a[q][V],b[q][V],a[q+v][V],b[q+v] |
| 4220 | 5b 56 5d 5d 3b 68 3d 28 67 2e 6d 61 78 2d 67 2e 6d 69 6e 0d 0a 29 2a 66 3b 24 73 5b 73 5d 5b 71 | [V]];h=(g.max-g.min..)*f;$s[s][q |
| 4240 | 5d 5b 56 5d 3d 5b 5b 28 72 2f 28 65 2b 66 2b 36 2e 30 29 2b 41 2b 28 68 2a 30 2e 34 29 29 2e 74 | ][V]=[[(r/(e+f+6.0)+A+(h*0.4)).t |
| 4260 | 6f 5f 69 2c 32 35 35 5d 2e 6d 69 6e 2c 56 5d 2e 6d 61 78 0d 0a 7d 7d 3b 46 69 6c 65 2e 6f 70 65 | o_i,255].min,V].max..}};File.ope |
| 4280 | 6e 28 22 72 65 73 2e 70 70 6d 22 2c 22 77 2b 22 29 7b 7c 66 7c 66 2e 77 72 69 74 65 28 23 20 73 | n("res.ppm","w+"){|f|f.write(#.s |
| 42a0 | 65 63 72 65 74 2e 67 72 65 65 74 69 6e 67 73 20 3a 2d 29 0d 0a 22 50 33 5c 6e 23 20 72 65 73 2e | ecret.greetings.:-).."P3\n#.res. |
| 42c0 | 70 70 6d 5c 6e 23 7b 58 7d 20 23 7b 59 7d 5c 6e 32 35 35 5c 6e 22 2b 24 73 2e 6d 61 70 7b 7c 61 | ppm\n#{X}.#{Y}\n255\n"+$s.map{|a |
| 42e0 | 7c 61 2e 6d 61 70 7b 7c 62 7c 62 2e 6a 6f 69 6e 27 20 27 0d 0a 7d 2e 6a 6f 69 6e 28 27 20 27 29 | |a.map{|b|b.join'.'..}.join('.') |
| 4300 | 2b 22 5c 6e 22 7d 2e 6a 6f 69 6e 29 7d 3b 65 6e 64 3b 64 65 66 20 73 77 69 74 63 68 20 69 2c 26 | +"\n"}.join)};end;def.switch.i,& |
| 4320 | 62 3b 62 2e 63 61 6c 6c 3b 72 65 74 75 72 6e 20 75 6e 6c 65 73 73 0d 0a 64 65 66 69 6e 65 64 3f | b;b.call;return.unless..defined? |
| 4340 | 28 24 6d 29 3b 62 3d 28 58 2a 30 2e 30 31 29 2e 74 6f 5f 69 3b 64 3d 31 2e 30 2f 34 30 2e 30 3b | ($m);b=(X*0.01).to_i;d=1.0/40.0; |
| 4360 | 65 3d 30 2e 30 39 3b 63 3d 28 59 2a 30 2e 30 31 29 2e 74 6f 5f 69 0d 0a 61 3d 24 61 2e 6d 61 70 | e=0.09;c=(Y*0.01).to_i..a=$a.map |
| 4380 | 7b 7c 28 66 2c 67 2c 68 2c 6a 29 7c 5b 66 2a 64 2c 67 2a 65 2c 68 2a 64 2c 6a 2a 65 5d 7d 3b 61 | {|(f,g,h,j)|[f*d,g*e,h*d,j*e]};a |
| 43a0 | 2e 65 61 63 68 7b 7c 28 6b 2c 6c 2c 6d 2c 6e 29 7c 75 28 24 73 2c 28 6b 2a 58 0d 0a 29 2e 74 6f | .each{|(k,l,m,n)|u($s,(k*X..).to |
| 43c0 | 5f 69 2b 62 2b 69 2c 28 6c 2a 59 29 2e 74 6f 5f 69 2b 63 2b 69 2c 28 6d 2a 58 29 2e 74 6f 5f 69 | _i+b+i,(l*Y).to_i+c+i,(m*X).to_i |
| 43e0 | 2b 62 2b 69 2c 28 6e 2a 59 29 2e 74 6f 5f 69 2b 63 2b 69 2c 5b 5a 5d 2a 33 29 7d 0d 0a 61 2e 65 | +b+i,(n*Y).to_i+c+i,[Z]*3)}..a.e |
| 4400 | 61 63 68 7b 7c 28 6f 2c 71 2c 72 2c 73 29 7c 75 28 24 73 2c 28 6f 2a 28 58 2d 5a 29 29 2e 74 6f | ach{|(o,q,r,s)|u($s,(o*(X-Z)).to |
| 4420 | 5f 69 2b 69 2c 28 71 2a 28 59 2d 5a 29 29 2e 74 6f 5f 69 2b 69 2c 28 72 2a 28 58 2d 0d 0a 5a 29 | _i+i,(q*(Y-Z)).to_i+i,(r*(X-..Z) |
| 4440 | 29 2e 74 6f 5f 69 2b 69 2c 28 73 2a 28 59 2d 5a 29 29 2e 74 6f 5f 69 2b 69 2c 5b 28 31 3c 3c 38 | ).to_i+i,(s*(Y-Z)).to_i+i,[(1<<8 |
| 4460 | 29 2d 31 5d 2a 33 29 7d 3b 65 6e 64 3b 51 3d 4f 62 6a 65 63 74 3b 63 6c 61 73 73 0d 0a 52 65 67 | )-1]*3)};end;Q=Object;class..Reg |
| 4480 | 65 78 70 3b 64 65 66 20 5b 5d 3d 28 76 2c 69 73 29 3b 69 73 2e 65 61 63 68 7b 7c 73 7c 51 2e 73 | exp;def.[]=(v,is);is.each{|s|Q.s |
| 44a0 | 65 6e 64 28 3a 72 65 6d 6f 76 65 5f 63 6f 6e 73 74 2c 73 29 69 66 20 51 2e 0d 0a 63 6f 6e 73 74 | end(:remove_const,s)if.Q...const |
| 44c0 | 5f 64 65 66 69 6e 65 64 3f 20 73 3b 51 2e 63 6f 6e 73 74 5f 73 65 74 28 73 2c 76 29 7d 3b 65 6e | _defined?.s;Q.const_set(s,v)};en |
| 44e0 | 64 3b 65 6e 64 3b 64 65 66 20 69 6e 74 2a 70 74 72 3b 36 36 36 0d 0a 65 6e 64 3b 63 6c 61 73 73 | d;end;def.int*ptr;666..end;class |
| 4500 | 20 4f 3b 64 65 66 20 5b 5d 3d 28 61 2c 62 3d 6e 69 6c 29 3b 24 63 3d 61 3b 65 6e 64 3b 65 6e 64 | .O;def.[]=(a,b=nil);$c=a;end;end |
| 4520 | 3b 61 6c 69 61 73 3a 76 6f 69 64 3a 67 6f 74 6f 0d 0a 23 65 6e 64 69 66 20 2f 2f 20 70 72 65 74 | ;alias:void:goto..#endif.//.pret |
| 4540 | 65 6e 64 20 61 73 20 69 66 20 79 6f 75 20 68 61 76 6e 27 74 20 73 65 65 6e 20 61 6e 79 74 68 69 | end.as.if.you.havn't.seen.anythi |
| 4560 | 6e 67 0d 0a 3d 65 6e 64 0d 0a 6d 6f 64 75 6c 65 20 43 6f 64 65 52 61 79 0d 0a 09 6d 6f 64 75 6c | ng..=end..module.CodeRay...modul |
| 4580 | 65 20 53 63 61 6e 6e 65 72 73 0d 0a 0d 0a 63 6c 61 73 73 20 52 75 62 79 20 3c 20 53 63 61 6e 6e | e.Scanners....class.Ruby.<.Scann |
| 45a0 | 65 72 0d 0a 0d 0a 09 52 45 53 45 52 56 45 44 5f 57 4f 52 44 53 20 3d 20 5b 0d 0a 09 09 27 61 6e | er.....RESERVED_WORDS.=.[....'an |
| 45c0 | 64 27 2c 20 27 64 65 66 27 2c 20 27 65 6e 64 27 2c 20 27 69 6e 27 2c 20 27 6f 72 27 2c 20 27 75 | d',.'def',.'end',.'in',.'or',.'u |
| 45e0 | 6e 6c 65 73 73 27 2c 20 27 62 65 67 69 6e 27 2c 0d 0a 09 09 27 64 65 66 69 6e 65 64 3f 27 2c 20 | nless',.'begin',....'defined?',. |
| 4600 | 27 65 6e 73 75 72 65 27 2c 20 27 6d 6f 64 75 6c 65 27 2c 20 27 72 65 64 6f 27 2c 20 27 73 75 70 | 'ensure',.'module',.'redo',.'sup |
| 4620 | 65 72 27 2c 20 27 75 6e 74 69 6c 27 2c 0d 0a 09 09 27 42 45 47 49 4e 27 2c 20 27 62 72 65 61 6b | er',.'until',....'BEGIN',.'break |
| 4640 | 27 2c 20 27 64 6f 27 2c 20 27 6e 65 78 74 27 2c 20 27 72 65 73 63 75 65 27 2c 20 27 74 68 65 6e | ',.'do',.'next',.'rescue',.'then |
| 4660 | 27 2c 0d 0a 09 09 27 77 68 65 6e 27 2c 20 27 45 4e 44 27 2c 20 27 63 61 73 65 27 2c 20 27 65 6c | ',....'when',.'END',.'case',.'el |
| 4680 | 73 65 27 2c 20 27 66 6f 72 27 2c 20 27 72 65 74 72 79 27 2c 0d 0a 09 09 27 77 68 69 6c 65 27 2c | se',.'for',.'retry',....'while', |
| 46a0 | 20 27 61 6c 69 61 73 27 2c 20 27 63 6c 61 73 73 27 2c 20 27 65 6c 73 69 66 27 2c 20 27 69 66 27 | .'alias',.'class',.'elsif',.'if' |
| 46c0 | 2c 20 27 6e 6f 74 27 2c 20 27 72 65 74 75 72 6e 27 2c 0d 0a 09 09 27 75 6e 64 65 66 27 2c 20 27 | ,.'not',.'return',....'undef',.' |
| 46e0 | 79 69 65 6c 64 27 2c 0d 0a 09 5d 0d 0a 0d 0a 09 44 45 46 5f 4b 45 59 57 4f 52 44 53 20 3d 20 5b | yield',...].....DEF_KEYWORDS.=.[ |
| 4700 | 27 64 65 66 27 5d 0d 0a 09 4d 4f 44 55 4c 45 5f 4b 45 59 57 4f 52 44 53 20 3d 20 5b 27 63 6c 61 | 'def']...MODULE_KEYWORDS.=.['cla |
| 4720 | 73 73 27 2c 20 27 6d 6f 64 75 6c 65 27 5d 0d 0a 09 44 45 46 5f 4e 45 57 5f 53 54 41 54 45 20 3d | ss',.'module']...DEF_NEW_STATE.= |
| 4740 | 20 57 6f 72 64 4c 69 73 74 2e 6e 65 77 28 3a 69 6e 69 74 69 61 6c 29 2e 0d 0a 09 09 61 64 64 28 | .WordList.new(:initial).....add( |
| 4760 | 44 45 46 5f 4b 45 59 57 4f 52 44 53 2c 20 3a 64 65 66 5f 65 78 70 65 63 74 65 64 29 2e 0d 0a 09 | DEF_KEYWORDS,.:def_expected).... |
| 4780 | 09 61 64 64 28 4d 4f 44 55 4c 45 5f 4b 45 59 57 4f 52 44 53 2c 20 3a 6d 6f 64 75 6c 65 5f 65 78 | .add(MODULE_KEYWORDS,.:module_ex |
| 47a0 | 70 65 63 74 65 64 29 0d 0a 0d 0a 09 57 4f 52 44 53 5f 41 4c 4c 4f 57 49 4e 47 5f 52 45 47 45 58 | pected).....WORDS_ALLOWING_REGEX |
| 47c0 | 50 20 3d 20 5b 0d 0a 09 09 27 61 6e 64 27 2c 20 27 6f 72 27 2c 20 27 6e 6f 74 27 2c 20 27 77 68 | P.=.[....'and',.'or',.'not',.'wh |
| 47e0 | 69 6c 65 27 2c 20 27 75 6e 74 69 6c 27 2c 20 27 75 6e 6c 65 73 73 27 2c 20 27 69 66 27 2c 20 27 | ile',.'until',.'unless',.'if',.' |
| 4800 | 65 6c 73 69 66 27 2c 20 27 77 68 65 6e 27 0d 0a 09 5d 0d 0a 09 52 45 47 45 58 50 5f 41 4c 4c 4f | elsif',.'when'...]...REGEXP_ALLO |
| 4820 | 57 45 44 20 3d 20 57 6f 72 64 4c 69 73 74 2e 6e 65 77 28 66 61 6c 73 65 29 2e 0d 0a 09 09 61 64 | WED.=.WordList.new(false).....ad |
| 4840 | 64 28 57 4f 52 44 53 5f 41 4c 4c 4f 57 49 4e 47 5f 52 45 47 45 58 50 2c 20 3a 73 65 74 29 0d 0a | d(WORDS_ALLOWING_REGEXP,.:set).. |
| 4860 | 0d 0a 09 50 52 45 44 45 46 49 4e 45 44 5f 43 4f 4e 53 54 41 4e 54 53 20 3d 20 5b 0d 0a 09 09 27 | ...PREDEFINED_CONSTANTS.=.[....' |
| 4880 | 6e 69 6c 27 2c 20 27 74 72 75 65 27 2c 20 27 66 61 6c 73 65 27 2c 20 27 73 65 6c 66 27 2c 0d 0a | nil',.'true',.'false',.'self',.. |
| 48a0 | 09 09 27 44 41 54 41 27 2c 20 27 41 52 47 56 27 2c 20 27 41 52 47 46 27 2c 20 27 5f 5f 46 49 4c | ..'DATA',.'ARGV',.'ARGF',.'__FIL |
| 48c0 | 45 5f 5f 27 2c 20 27 5f 5f 4c 49 4e 45 5f 5f 27 2c 0d 0a 09 5d 0d 0a 0d 0a 09 49 44 45 4e 54 5f | E__',.'__LINE__',...].....IDENT_ |
| 48e0 | 4b 49 4e 44 20 3d 20 57 6f 72 64 4c 69 73 74 2e 6e 65 77 28 3a 69 64 65 6e 74 29 2e 0d 0a 09 09 | KIND.=.WordList.new(:ident)..... |
| 4900 | 61 64 64 28 52 45 53 45 52 56 45 44 5f 57 4f 52 44 53 2c 20 3a 72 65 73 65 72 76 65 64 29 2e 0d | add(RESERVED_WORDS,.:reserved).. |
| 4920 | 0a 09 09 61 64 64 28 50 52 45 44 45 46 49 4e 45 44 5f 43 4f 4e 53 54 41 4e 54 53 2c 20 3a 70 72 | ...add(PREDEFINED_CONSTANTS,.:pr |
| 4940 | 65 5f 63 6f 6e 73 74 61 6e 74 29 0d 0a 0d 0a 09 4d 45 54 48 4f 44 5f 4e 41 4d 45 20 3d 20 2f 20 | e_constant).....METHOD_NAME.=./. |
| 4960 | 23 7b 49 44 45 4e 54 7d 20 5b 3f 21 5d 3f 20 2f 78 6f 0d 0a 09 4d 45 54 48 4f 44 5f 4e 41 4d 45 | #{IDENT}.[?!]?./xo...METHOD_NAME |
| 4980 | 5f 45 58 20 3d 20 2f 0d 0a 09 20 23 7b 4d 45 54 48 4f 44 5f 4e 41 4d 45 7d 20 20 23 20 63 6f 6d | _EX.=./....#{METHOD_NAME}..#.com |
| 49a0 | 6d 6f 6e 20 6d 65 74 68 6f 64 73 3a 20 73 70 6c 69 74 2c 20 66 6f 6f 3d 2c 20 65 6d 70 74 79 3f | mon.methods:.split,.foo=,.empty? |
| 49c0 | 2c 20 67 73 75 62 21 0d 0a 09 20 7c 20 5c 2a 5c 2a 3f 20 20 20 20 20 20 20 20 20 23 20 6d 75 6c | ,.gsub!....|.\*\*?.........#.mul |
| 49e0 | 74 69 70 6c 69 63 61 74 69 6f 6e 20 61 6e 64 20 70 6f 77 65 72 0d 0a 09 20 7c 20 5b 2d 2b 7e 5d | tiplication.and.power....|.[-+~] |
| 4a00 | 40 3f 20 20 20 20 20 20 20 23 20 70 6c 75 73 2c 20 6d 69 6e 75 73 0d 0a 09 20 7c 20 5b 5c 2f 25 | @?.......#.plus,.minus....|.[\/% |
| 4a20 | 26 7c 5e 60 5d 20 20 20 20 20 23 20 64 69 76 69 73 69 6f 6e 2c 20 6d 6f 64 75 6c 6f 20 6f 72 20 | &|^`].....#.division,.modulo.or. |
| 4a40 | 66 6f 72 6d 61 74 20 73 74 72 69 6e 67 73 2c 20 26 61 6e 64 2c 20 7c 6f 72 2c 20 5e 78 6f 72 2c | format.strings,.&and,.|or,.^xor, |
| 4a60 | 20 60 73 79 73 74 65 6d 60 0d 0a 09 20 7c 20 5c 5b 5c 5d 3d 3f 20 20 20 20 20 20 20 20 23 20 61 | .`system`....|.\[\]=?........#.a |
| 4a80 | 72 72 61 79 20 67 65 74 74 65 72 20 61 6e 64 20 73 65 74 74 65 72 0d 0a 09 20 7c 20 3c 3d 3f 3e | rray.getter.and.setter....|.<=?> |
| 4aa0 | 3f 20 7c 20 3e 3d 3f 20 20 20 23 20 63 6f 6d 70 61 72 69 73 6f 6e 2c 20 72 6f 63 6b 65 74 20 6f | ?.|.>=?...#.comparison,.rocket.o |
| 4ac0 | 70 65 72 61 74 6f 72 0d 0a 09 20 7c 20 3c 3c 20 7c 20 3e 3e 20 20 20 20 20 20 20 23 20 61 70 70 | perator....|.<<.|.>>.......#.app |
| 4ae0 | 65 6e 64 20 6f 72 20 73 68 69 66 74 20 6c 65 66 74 2c 20 73 68 69 66 74 20 72 69 67 68 74 0d 0a | end.or.shift.left,.shift.right.. |
| 4b00 | 09 20 7c 20 3d 3d 3d 3f 20 20 20 20 20 20 20 20 20 20 23 20 73 69 6d 70 6c 65 20 65 71 75 61 6c | ..|.===?..........#.simple.equal |
| 4b20 | 69 74 79 20 61 6e 64 20 63 61 73 65 20 65 71 75 61 6c 69 74 79 0d 0a 09 2f 6f 78 0d 0a 09 47 4c | ity.and.case.equality.../ox...GL |
| 4b40 | 4f 42 41 4c 5f 56 41 52 49 41 42 4c 45 20 3d 20 2f 20 5c 24 20 28 3f 3a 20 23 7b 49 44 45 4e 54 | OBAL_VARIABLE.=./.\$.(?:.#{IDENT |
| 4b60 | 7d 20 7c 20 5c 64 2b 20 7c 20 5b 7e 26 2b 60 27 3d 5c 2f 2c 3b 5f 2e 3c 3e 21 40 30 24 3f 2a 22 | }.|.\d+.|.[~&+`'=\/,;_.<>!@0$?*" |
| 4b80 | 3a 46 5c 5c 5d 20 7c 20 2d 5b 61 2d 7a 41 2d 5a 5f 30 2d 39 5d 20 29 20 2f 6f 78 0d 0a 0d 0a 09 | :F\\].|.-[a-zA-Z_0-9].)./ox..... |
| 4ba0 | 44 4f 55 42 4c 45 51 20 3d 20 2f 20 22 20 20 5b 5e 22 5c 23 5c 5c 5d 2a 20 20 28 3f 3a 20 28 3f | DOUBLEQ.=./."..[^"\#\\]*..(?:.(? |
| 4bc0 | 3a 20 5c 23 5c 7b 2e 2a 3f 5c 7d 20 7c 20 5c 23 28 3f 3a 24 22 29 3f 20 20 7c 20 5c 5c 2e 20 29 | :.\#\{.*?\}.|.\#(?:$")?..|.\\..) |
| 4be0 | 20 5b 5e 22 5c 23 5c 5c 5d 2a 20 20 29 2a 20 22 3f 20 20 2f 6f 78 0d 0a 09 53 49 4e 47 4c 45 51 | .[^"\#\\]*..)*."?../ox...SINGLEQ |
| 4c00 | 20 3d 20 2f 20 27 20 20 5b 5e 27 5c 5c 5d 2a 20 20 20 20 28 3f 3a 20 20 20 20 20 20 20 20 20 20 | .=./.'..[^'\\]*....(?:.......... |
| 4c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 5c 2e 20 20 20 5b 5e 27 5c 5c 5d | ....................\\....[^'\\] |
| 4c40 | 2a 20 20 20 20 29 2a 20 27 3f 20 20 2f 6f 78 0d 0a 09 53 54 52 49 4e 47 20 20 3d 20 2f 20 23 7b | *....)*.'?../ox...STRING..=./.#{ |
| 4c60 | 53 49 4e 47 4c 45 51 7d 20 7c 20 23 7b 44 4f 55 42 4c 45 51 7d 20 2f 6f 78 0d 0a 09 53 48 45 4c | SINGLEQ}.|.#{DOUBLEQ}./ox...SHEL |
| 4c80 | 4c 20 20 20 3d 20 2f 20 60 20 20 5b 5e 60 5c 23 5c 5c 5d 2a 20 20 28 3f 3a 20 28 3f 3a 20 5c 23 | L...=./.`..[^`\#\\]*..(?:.(?:.\# |
| 4ca0 | 5c 7b 2e 2a 3f 5c 7d 20 7c 20 5c 23 28 3f 3a 24 60 29 3f 20 20 7c 20 5c 5c 2e 20 29 20 5b 5e 60 | \{.*?\}.|.\#(?:$`)?..|.\\..).[^` |
| 4cc0 | 5c 23 5c 5c 5d 2a 20 20 29 2a 20 60 3f 20 20 2f 6f 78 0d 0a 09 52 45 47 45 58 50 20 20 3d 20 2f | \#\\]*..)*.`?../ox...REGEXP..=./ |
| 4ce0 | 20 5c 2f 20 5b 5e 5c 2f 5c 23 5c 5c 5d 2a 20 28 3f 3a 20 28 3f 3a 20 5c 23 5c 7b 2e 2a 3f 5c 7d | .\/.[^\/\#\\]*.(?:.(?:.\#\{.*?\} |
| 4d00 | 20 7c 20 5c 23 28 3f 3a 24 5c 2f 29 3f 20 7c 20 5c 5c 2e 20 29 20 5b 5e 5c 2f 5c 23 5c 5c 5d 2a | .|.\#(?:$\/)?.|.\\..).[^\/\#\\]* |
| 4d20 | 20 29 2a 20 5c 2f 3f 20 2f 6f 78 0d 0a 0d 0a 09 44 45 43 49 4d 41 4c 20 3d 20 2f 5c 64 2b 28 3f | .)*.\/?./ox.....DECIMAL.=./\d+(? |
| 4d40 | 3a 5f 5c 64 2b 29 2a 2f 20 20 23 20 64 6f 65 73 6e 27 74 20 72 65 63 6f 67 6e 69 7a 65 20 30 39 | :_\d+)*/..#.doesn't.recognize.09 |
| 4d60 | 20 61 73 20 6f 63 74 61 6c 20 65 72 72 6f 72 0d 0a 09 4f 43 54 41 4c 20 3d 20 2f 30 5f 3f 5b 30 | .as.octal.error...OCTAL.=./0_?[0 |
| 4d80 | 2d 37 5d 2b 28 3f 3a 5f 5b 30 2d 37 5d 2b 29 2a 2f 0d 0a 09 48 45 58 41 44 45 43 49 4d 41 4c 20 | -7]+(?:_[0-7]+)*/...HEXADECIMAL. |
| 4da0 | 3d 20 2f 30 78 5b 30 2d 39 41 2d 46 61 2d 66 5d 2b 28 3f 3a 5f 5b 30 2d 39 41 2d 46 61 2d 66 5d | =./0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f] |
| 4dc0 | 2b 29 2a 2f 0d 0a 09 42 49 4e 41 52 59 20 3d 20 2f 30 62 5b 30 31 5d 2b 28 3f 3a 5f 5b 30 31 5d | +)*/...BINARY.=./0b[01]+(?:_[01] |
| 4de0 | 2b 29 2a 2f 0d 0a 0d 0a 09 45 58 50 4f 4e 45 4e 54 20 3d 20 2f 20 5b 65 45 5d 20 5b 2b 2d 5d 3f | +)*/.....EXPONENT.=./.[eE].[+-]? |
| 4e00 | 20 23 7b 44 45 43 49 4d 41 4c 7d 20 2f 6f 78 0d 0a 09 46 4c 4f 41 54 20 3d 20 2f 20 23 7b 44 45 | .#{DECIMAL}./ox...FLOAT.=./.#{DE |
| 4e20 | 43 49 4d 41 4c 7d 20 28 3f 3a 20 23 7b 45 58 50 4f 4e 45 4e 54 7d 20 7c 20 5c 2e 20 23 7b 44 45 | CIMAL}.(?:.#{EXPONENT}.|.\..#{DE |
| 4e40 | 43 49 4d 41 4c 7d 20 23 7b 45 58 50 4f 4e 45 4e 54 7d 3f 20 29 20 2f 0d 0a 09 49 4e 54 45 47 45 | CIMAL}.#{EXPONENT}?.)./...INTEGE |
| 4e60 | 52 20 3d 20 2f 23 7b 4f 43 54 41 4c 7d 7c 23 7b 48 45 58 41 44 45 43 49 4d 41 4c 7d 7c 23 7b 42 | R.=./#{OCTAL}|#{HEXADECIMAL}|#{B |
| 4e80 | 49 4e 41 52 59 7d 7c 23 7b 44 45 43 49 4d 41 4c 7d 2f 0d 0a 0d 0a 09 64 65 66 20 72 65 73 65 74 | INARY}|#{DECIMAL}/.....def.reset |
| 4ea0 | 0d 0a 09 09 73 75 70 65 72 0d 0a 09 09 40 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 3d 20 66 | ....super....@regexp_allowed.=.f |
| 4ec0 | 61 6c 73 65 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 6e 65 78 74 5f 74 6f 6b 65 6e 0d 0a 09 | alse...end.....def.next_token... |
| 4ee0 | 09 72 65 74 75 72 6e 20 69 66 20 40 73 63 61 6e 6e 65 72 2e 65 6f 73 3f 0d 0a 0d 0a 09 09 6b 69 | .return.if.@scanner.eos?......ki |
| 4f00 | 6e 64 20 3d 20 3a 65 72 72 6f 72 0d 0a 09 09 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 | nd.=.:error....if.@scanner.scan( |
| 4f20 | 2f 5c 73 2b 2f 29 20 20 23 20 69 6e 20 65 76 65 72 79 20 73 74 61 74 65 0d 0a 09 09 09 6b 69 6e | /\s+/)..#.in.every.state.....kin |
| 4f40 | 64 20 3d 20 3a 73 70 61 63 65 0d 0a 09 09 09 40 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 3d | d.=.:space.....@regexp_allowed.= |
| 4f60 | 20 3a 73 65 74 20 69 66 20 40 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 6f 72 20 40 73 63 61 | .:set.if.@regexp_allowed.or.@sca |
| 4f80 | 6e 6e 65 72 2e 6d 61 74 63 68 65 64 2e 69 6e 64 65 78 28 3f 5c 6e 29 20 20 23 20 64 65 6c 61 79 | nner.matched.index(?\n)..#.delay |
| 4fa0 | 65 64 20 66 6c 61 67 20 73 65 74 74 69 6e 67 0d 0a 0d 0a 09 09 65 6c 73 69 66 20 40 73 74 61 74 | ed.flag.setting......elsif.@stat |
| 4fc0 | 65 20 3d 3d 20 3a 64 65 66 5f 65 78 70 65 63 74 65 64 0d 0a 09 09 09 69 66 20 40 73 63 61 6e 6e | e.==.:def_expected.....if.@scann |
| 4fe0 | 65 72 2e 73 63 61 6e 28 2f 20 28 3f 3a 20 28 3f 3a 23 7b 49 44 45 4e 54 7d 28 3f 3a 5c 2e 7c 3a | er.scan(/.(?:.(?:#{IDENT}(?:\.|: |
| 5000 | 3a 29 29 2a 20 7c 20 28 3f 3a 40 40 3f 7c 24 29 3f 20 23 7b 49 44 45 4e 54 7d 28 3f 3a 5c 2e 7c | :))*.|.(?:@@?|$)?.#{IDENT}(?:\.| |
| 5020 | 3a 3a 29 20 29 20 23 7b 4d 45 54 48 4f 44 5f 4e 41 4d 45 5f 45 58 7d 20 2f 6f 78 29 0d 0a 09 09 | ::).).#{METHOD_NAME_EX}./ox).... |
| 5040 | 09 09 6b 69 6e 64 20 3d 20 3a 6d 65 74 68 6f 64 0d 0a 09 09 09 09 40 73 74 61 74 65 20 3d 20 3a | ..kind.=.:method......@state.=.: |
| 5060 | 69 6e 69 74 69 61 6c 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 40 73 63 61 6e 6e 65 72 2e 67 | initial.....else......@scanner.g |
| 5080 | 65 74 63 68 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 40 73 74 61 74 65 20 3d 20 3a 69 6e 69 74 69 | etch.....end.....@state.=.:initi |
| 50a0 | 61 6c 0d 0a 0d 0a 09 09 65 6c 73 69 66 20 40 73 74 61 74 65 20 3d 3d 20 3a 6d 6f 64 75 6c 65 5f | al......elsif.@state.==.:module_ |
| 50c0 | 65 78 70 65 63 74 65 64 0d 0a 09 09 09 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 3c | expected.....if.@scanner.scan(/< |
| 50e0 | 3c 2f 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 6f 70 65 72 61 74 6f 72 0d 0a 09 09 09 65 6c | </)......kind.=.:operator.....el |
| 5100 | 73 65 0d 0a 09 09 09 09 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 20 28 3f 3a 20 23 | se......if.@scanner.scan(/.(?:.# |
| 5120 | 7b 49 44 45 4e 54 7d 20 28 3f 3a 5c 2e 7c 3a 3a 29 29 2a 20 23 7b 49 44 45 4e 54 7d 20 2f 6f 78 | {IDENT}.(?:\.|::))*.#{IDENT}./ox |
| 5140 | 29 0d 0a 09 09 09 09 09 6b 69 6e 64 20 3d 20 3a 6d 65 74 68 6f 64 0d 0a 09 09 09 09 65 6c 73 65 | ).......kind.=.:method......else |
| 5160 | 0d 0a 09 09 09 09 09 40 73 63 61 6e 6e 65 72 2e 67 65 74 63 68 0d 0a 09 09 09 09 65 6e 64 0d 0a | .......@scanner.getch......end.. |
| 5180 | 09 09 09 09 40 73 74 61 74 65 20 3d 20 3a 69 6e 69 74 69 61 6c 0d 0a 09 09 09 65 6e 64 0d 0a 0d | ....@state.=.:initial.....end... |
| 51a0 | 0a 09 09 65 6c 73 69 66 20 23 20 73 74 61 74 65 20 3d 3d 20 3a 69 6e 69 74 69 61 6c 0d 0a 09 09 | ...elsif.#.state.==.:initial.... |
| 51c0 | 09 23 20 49 44 45 4e 54 49 46 49 45 52 53 2c 20 4b 45 59 57 4f 52 44 53 0d 0a 09 09 09 69 66 20 | .#.IDENTIFIERS,.KEYWORDS.....if. |
| 51e0 | 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 47 4c 4f 42 41 4c 5f 56 41 52 49 41 42 4c 45 29 0d 0a | @scanner.scan(GLOBAL_VARIABLE).. |
| 5200 | 09 09 09 09 6b 69 6e 64 20 3d 20 3a 67 6c 6f 62 61 6c 5f 76 61 72 69 61 62 6c 65 0d 0a 09 09 09 | ....kind.=.:global_variable..... |
| 5220 | 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 20 40 40 20 23 7b 49 44 45 4e 54 | elsif.@scanner.scan(/.@@.#{IDENT |
| 5240 | 7d 20 2f 6f 78 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 63 6c 61 73 73 5f 76 61 72 69 61 62 | }./ox)......kind.=.:class_variab |
| 5260 | 6c 65 0d 0a 09 09 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 20 40 20 23 | le.....elsif.@scanner.scan(/.@.# |
| 5280 | 7b 49 44 45 4e 54 7d 20 2f 6f 78 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 69 6e 73 74 61 6e | {IDENT}./ox)......kind.=.:instan |
| 52a0 | 63 65 5f 76 61 72 69 61 62 6c 65 0d 0a 09 09 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 | ce_variable.....elsif.@scanner.s |
| 52c0 | 63 61 6e 28 2f 20 5f 5f 45 4e 44 5f 5f 5c 6e 20 28 20 28 3f 21 5c 23 43 4f 44 45 5c 23 29 20 2e | can(/.__END__\n.(.(?!\#CODE\#).. |
| 52e0 | 2a 20 29 3f 20 7c 20 5c 23 5b 5e 5c 6e 5d 2a 20 7c 20 3d 62 65 67 69 6e 28 3f 3d 5c 73 29 2e 2a | *.)?.|.\#[^\n]*.|.=begin(?=\s).* |
| 5300 | 3f 20 5c 6e 3d 65 6e 64 28 3f 3d 5c 73 7c 5c 7a 29 28 3f 3a 5b 5e 5c 6e 5d 2a 29 3f 20 2f 6d 78 | ?.\n=end(?=\s|\z)(?:[^\n]*)?./mx |
| 5320 | 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 63 6f 6d 6d 65 6e 74 0d 0a 09 09 09 65 6c 73 69 66 | )......kind.=.:comment.....elsif |
| 5340 | 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 4d 45 54 48 4f 44 5f 4e 41 4d 45 29 0d 0a 09 09 09 | .@scanner.scan(METHOD_NAME)..... |
| 5360 | 09 69 66 20 40 6c 61 73 74 5f 74 6f 6b 65 6e 5f 64 6f 74 0d 0a 09 09 09 09 09 6b 69 6e 64 20 3d | .if.@last_token_dot.......kind.= |
| 5380 | 20 3a 69 64 65 6e 74 0d 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 6d 61 74 63 68 65 64 20 | .:ident......else.......matched. |
| 53a0 | 3d 20 40 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 0d 0a 09 09 09 09 09 6b 69 6e 64 20 3d 20 | =.@scanner.matched.......kind.=. |
| 53c0 | 49 44 45 4e 54 5f 4b 49 4e 44 5b 6d 61 74 63 68 65 64 5d 0d 0a 09 09 09 09 09 69 66 20 6b 69 6e | IDENT_KIND[matched].......if.kin |
| 53e0 | 64 20 3d 3d 20 3a 69 64 65 6e 74 20 61 6e 64 20 6d 61 74 63 68 65 64 20 3d 7e 20 2f 5e 5b 41 2d | d.==.:ident.and.matched.=~./^[A- |
| 5400 | 5a 5d 2f 0d 0a 09 09 09 09 09 09 6b 69 6e 64 20 3d 20 3a 63 6f 6e 73 74 61 6e 74 0d 0a 09 09 09 | Z]/........kind.=.:constant..... |
| 5420 | 09 09 65 6c 73 69 66 20 6b 69 6e 64 20 3d 3d 20 3a 72 65 73 65 72 76 65 64 0d 0a 09 09 09 09 09 | ..elsif.kind.==.:reserved....... |
| 5440 | 09 40 73 74 61 74 65 20 3d 20 44 45 46 5f 4e 45 57 5f 53 54 41 54 45 5b 6d 61 74 63 68 65 64 5d | .@state.=.DEF_NEW_STATE[matched] |
| 5460 | 0d 0a 09 09 09 09 09 09 40 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 3d 20 52 45 47 45 58 50 | ........@regexp_allowed.=.REGEXP |
| 5480 | 5f 41 4c 4c 4f 57 45 44 5b 6d 61 74 63 68 65 64 5d 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 | _ALLOWED[matched].......end..... |
| 54a0 | 09 65 6e 64 0d 0a 0d 0a 09 09 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 53 | .end.......elsif.@scanner.scan(S |
| 54c0 | 54 52 49 4e 47 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 73 74 72 69 6e 67 0d 0a 09 09 09 65 | TRING)......kind.=.:string.....e |
| 54e0 | 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 53 48 45 4c 4c 29 0d 0a 09 09 09 09 6b | lsif.@scanner.scan(SHELL)......k |
| 5500 | 69 6e 64 20 3d 20 3a 73 68 65 6c 6c 0d 0a 09 09 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e | ind.=.:shell.....elsif.@scanner. |
| 5520 | 73 63 61 6e 28 2f 3c 3c 0d 0a 09 09 09 09 28 3f 3a 0d 0a 09 09 09 09 09 28 5b 61 2d 7a 41 2d 5a | scan(/<<......(?:.......([a-zA-Z |
| 5540 | 5f 30 2d 39 5d 2b 29 0d 0a 09 09 09 09 09 09 28 3f 3a 20 2e 2a 3f 20 5e 5c 31 24 20 7c 20 2e 2a | _0-9]+)........(?:..*?.^\1$.|..* |
| 5560 | 20 29 0d 0a 09 09 09 09 7c 0d 0a 09 09 09 09 09 2d 28 5b 61 2d 7a 41 2d 5a 5f 30 2d 39 5d 2b 29 | .)......|.......-([a-zA-Z_0-9]+) |
| 5580 | 0d 0a 09 09 09 09 09 09 28 3f 3a 20 2e 2a 3f 20 5e 5c 73 2a 5c 32 24 20 7c 20 2e 2a 20 29 0d 0a | ........(?:..*?.^\s*\2$.|..*.).. |
| 55a0 | 09 09 09 09 7c 0d 0a 09 09 09 09 09 28 5b 22 5c 27 60 5d 29 20 28 2e 2b 3f 29 20 5c 33 0d 0a 09 | ....|.......(["\'`]).(.+?).\3... |
| 55c0 | 09 09 09 09 09 28 3f 3a 20 2e 2a 3f 20 5e 5c 34 24 20 7c 20 2e 2a 20 29 0d 0a 09 09 09 09 7c 0d | .....(?:..*?.^\4$.|..*.)......|. |
| 55e0 | 0a 09 09 09 09 09 2d 20 28 5b 22 5c 27 60 5d 29 20 28 2e 2b 3f 29 20 5c 35 0d 0a 09 09 09 09 09 | ......-.(["\'`]).(.+?).\5....... |
| 5600 | 09 28 3f 3a 20 2e 2a 3f 20 5e 5c 73 2a 5c 36 24 20 7c 20 2e 2a 20 29 0d 0a 09 09 09 09 29 0d 0a | .(?:..*?.^\s*\6$.|..*.)......).. |
| 5620 | 09 09 09 2f 6d 78 6f 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 73 74 72 69 6e 67 0d 0a 09 09 | .../mxo)......kind.=.:string.... |
| 5640 | 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 5c 2f 2f 29 20 61 6e 64 20 40 | .elsif.@scanner.scan(/\//).and.@ |
| 5660 | 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 0d 0a 09 09 09 09 40 73 63 61 6e 6e 65 72 2e 75 6e 73 | regexp_allowed......@scanner.uns |
| 5680 | 63 61 6e 0d 0a 09 09 09 09 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 52 45 47 45 58 50 29 0d 0a | can......@scanner.scan(REGEXP).. |
| 56a0 | 09 09 09 09 6b 69 6e 64 20 3d 20 3a 72 65 67 65 78 70 0d 0a 2f 25 28 3f 3a 5b 51 71 78 72 77 5d | ....kind.=.:regexp../%(?:[Qqxrw] |
| 56c0 | 28 3f 3a 5c 28 5b 5e 29 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 7c | (?:\([^)#\\\\]*(?:(?:#\{.*?\}|#| |
| 56e0 | 5c 5c 5c 5c 2e 29 5b 5e 29 23 5c 5c 5c 5c 5d 2a 29 2a 5c 29 3f 7c 5c 5b 5b 5e 5c 5d 23 5c 5c 5c | \\\\.)[^)#\\\\]*)*\)?|\[[^\]#\\\ |
| 5700 | 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 7c 5c 5c 5c 5c 2e 29 5b 5e 5c 5d 23 5c | \]*(?:(?:#\{.*?\}|#|\\\\.)[^\]#\ |
| 5720 | 5c 5c 5c 5d 2a 29 2a 5c 5d 3f 7c 5c 7b 5b 5e 7d 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b | \\\]*)*\]?|\{[^}#\\\\]*(?:(?:#\{ |
| 5740 | 2e 2a 3f 5c 7d 7c 23 7c 5c 5c 5c 5c 2e 29 5b 5e 7d 23 5c 5c 5c 5c 5d 2a 29 2a 5c 7d 3f 7c 3c 5b | .*?\}|#|\\\\.)[^}#\\\\]*)*\}?|<[ |
| 5760 | 5e 3e 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 7c 5c 5c 5c 5c 2e 29 | ^>#\\\\]*(?:(?:#\{.*?\}|#|\\\\.) |
| 5780 | 5b 5e 3e 23 5c 5c 5c 5c 5d 2a 29 2a 3e 3f 7c 28 5b 5e 61 2d 7a 41 2d 5a 5c 5c 5c 5c 5d 29 28 3f | [^>#\\\\]*)*>?|([^a-zA-Z\\\\])(? |
| 57a0 | 3a 28 3f 21 5c 31 29 5b 5e 23 5c 5c 5c 5c 5d 29 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c | :(?!\1)[^#\\\\])*(?:(?:#\{.*?\}| |
| 57c0 | 23 7c 5c 5c 5c 5c 2e 29 28 3f 3a 28 3f 21 5c 31 29 5b 5e 23 5c 5c 5c 5c 5d 29 2a 29 2a 5c 31 3f | #|\\\\.)(?:(?!\1)[^#\\\\])*)*\1? |
| 57e0 | 29 7c 5c 28 5b 5e 29 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 7c 5c | )|\([^)#\\\\]*(?:(?:#\{.*?\}|#|\ |
| 5800 | 5c 5c 5c 2e 29 5b 5e 29 23 5c 5c 5c 5c 5d 2a 29 2a 5c 29 3f 7c 5c 5b 5b 5e 5c 5d 23 5c 5c 5c 5c | \\\.)[^)#\\\\]*)*\)?|\[[^\]#\\\\ |
| 5820 | 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 7c 5c 5c 5c 5c 2e 29 5b 5e 5c 5d 23 5c 5c | ]*(?:(?:#\{.*?\}|#|\\\\.)[^\]#\\ |
| 5840 | 5c 5c 5d 2a 29 2a 5c 5d 3f 7c 5c 7b 5b 5e 7d 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e | \\]*)*\]?|\{[^}#\\\\]*(?:(?:#\{. |
| 5860 | 2a 3f 5c 7d 7c 23 7c 5c 5c 5c 5c 2e 29 5b 5e 7d 23 5c 5c 5c 5c 5d 2a 29 2a 5c 7d 3f 7c 3c 5b 5e | *?\}|#|\\\\.)[^}#\\\\]*)*\}?|<[^ |
| 5880 | 3e 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 7c 5c 5c 5c 5c 2e 29 5b | >#\\\\]*(?:(?:#\{.*?\}|#|\\\\.)[ |
| 58a0 | 5e 3e 23 5c 5c 5c 5c 5d 2a 29 2a 3e 3f 7c 28 5b 5e 61 2d 7a 41 2d 5a 5c 73 5c 5c 5c 5c 5d 29 28 | ^>#\\\\]*)*>?|([^a-zA-Z\s\\\\])( |
| 58c0 | 3f 3a 28 3f 21 5c 32 29 5b 5e 23 5c 5c 5c 5c 5d 29 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d | ?:(?!\2)[^#\\\\])*(?:(?:#\{.*?\} |
| 58e0 | 7c 23 7c 5c 5c 5c 5c 2e 29 28 3f 3a 28 3f 21 5c 32 29 5b 5e 23 5c 5c 5c 5c 5d 29 2a 29 2a 5c 32 | |#|\\\\.)(?:(?!\2)[^#\\\\])*)*\2 |
| 5900 | 3f 7c 5c 5c 5c 5c 5b 5e 23 5c 5c 5c 5c 5d 2a 28 3f 3a 28 3f 3a 23 5c 7b 2e 2a 3f 5c 7d 7c 23 29 | ?|\\\\[^#\\\\]*(?:(?:#\{.*?\}|#) |
| 5920 | 5b 5e 23 5c 5c 5c 5c 5d 2a 29 2a 5c 5c 5c 5c 3f 29 2f 0d 0a 09 09 09 65 6c 73 69 66 20 40 73 63 | [^#\\\\]*)*\\\\?)/.....elsif.@sc |
| 5940 | 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 3a 28 3f 3a 23 7b 47 4c 4f 42 41 4c 5f 56 41 52 49 41 42 4c | anner.scan(/:(?:#{GLOBAL_VARIABL |
| 5960 | 45 7d 7c 23 7b 4d 45 54 48 4f 44 5f 4e 41 4d 45 5f 45 58 7d 7c 23 7b 53 54 52 49 4e 47 7d 29 2f | E}|#{METHOD_NAME_EX}|#{STRING})/ |
| 5980 | 6f 78 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 73 79 6d 62 6f 6c 0d 0a 09 09 09 65 6c 73 69 | ox)......kind.=.:symbol.....elsi |
| 59a0 | 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 0d 0a 09 09 09 09 5c 3f 20 28 3f 3a 0d 0a 09 | f.@scanner.scan(/......\?.(?:... |
| 59c0 | 09 09 09 09 5b 5e 5c 73 5c 5c 5d 0d 0a 09 09 09 09 7c 0d 0a 09 09 09 09 09 5c 5c 20 28 3f 3a 4d | ....[^\s\\]......|.......\\.(?:M |
| 59e0 | 2d 5c 5c 43 2d 7c 43 2d 5c 5c 4d 2d 7c 4d 2d 5c 5c 63 7c 63 5c 5c 4d 2d 7c 63 7c 43 2d 7c 4d 2d | -\\C-|C-\\M-|M-\\c|c\\M-|c|C-|M- |
| 5a00 | 29 29 3f 20 28 3f 3a 20 5c 5c 20 28 3f 3a 20 2e 20 7c 20 5b 30 2d 37 5d 7b 33 7d 20 7c 20 78 5b | ))?.(?:.\\.(?:...|.[0-7]{3}.|.x[ |
| 5a20 | 30 2d 39 41 2d 46 61 2d 66 5d 5b 30 2d 39 41 2d 46 61 2d 66 5d 20 29 0d 0a 09 09 09 09 29 0d 0a | 0-9A-Fa-f][0-9A-Fa-f].)......).. |
| 5a40 | 09 09 09 2f 6d 6f 78 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 69 6e 74 65 67 65 72 0d 0a 0d | .../mox)......kind.=.:integer... |
| 5a60 | 0a 09 09 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 20 5b 2d 2b 2a 5c 2f | ....elsif.@scanner.scan(/.[-+*\/ |
| 5a80 | 25 3d 3c 3e 3b 2c 7c 26 21 28 29 5c 5b 5c 5d 7b 7d 7e 3f 5d 20 7c 20 5c 2e 5c 2e 3f 5c 2e 3f 20 | %=<>;,|&!()\[\]{}~?].|.\.\.?\.?. |
| 5aa0 | 7c 20 3a 3a 3f 20 2f 78 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 6f 70 65 72 61 74 6f 72 0d | |.::?./x)......kind.=.:operator. |
| 5ac0 | 0a 09 09 09 09 40 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 3d 20 3a 73 65 74 20 69 66 20 40 | .....@regexp_allowed.=.:set.if.@ |
| 5ae0 | 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 5b 2d 31 2c 31 5d 20 3d 7e 20 2f 5b 7e 3d 21 3c 3e | scanner.matched[-1,1].=~./[~=!<> |
| 5b00 | 7c 26 5e 2c 5c 28 5c 5b 2b 5c 2d 5c 2f 5c 2a 25 5d 5c 7a 2f 0d 0a 09 09 09 65 6c 73 69 66 20 40 | |&^,\(\[+\-\/\*%]\z/.....elsif.@ |
| 5b20 | 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 46 4c 4f 41 54 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 | scanner.scan(FLOAT)......kind.=. |
| 5b40 | 3a 66 6c 6f 61 74 0d 0a 09 09 09 65 6c 73 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 49 | :float.....elsif.@scanner.scan(I |
| 5b60 | 4e 54 45 47 45 52 29 0d 0a 09 09 09 09 6b 69 6e 64 20 3d 20 3a 69 6e 74 65 67 65 72 0d 0a 09 09 | NTEGER)......kind.=.:integer.... |
| 5b80 | 09 65 6c 73 65 0d 0a 09 09 09 09 40 73 63 61 6e 6e 65 72 2e 67 65 74 63 68 0d 0a 09 09 09 65 6e | .else......@scanner.getch.....en |
| 5ba0 | 64 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 74 6f 6b 65 6e 20 3d 20 54 6f 6b 65 6e 2e 6e 65 77 20 | d....end......token.=.Token.new. |
| 5bc0 | 40 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 2c 20 6b 69 6e 64 0d 0a 0d 0a 09 09 69 66 20 6b | @scanner.matched,.kind......if.k |
| 5be0 | 69 6e 64 20 3d 3d 20 3a 72 65 67 65 78 70 0d 0a 09 09 09 74 6f 6b 65 6e 2e 74 65 78 74 20 3c 3c | ind.==.:regexp.....token.text.<< |
| 5c00 | 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 5b 65 69 6d 6e 6f 73 75 78 5d 2a 2f 29 0d 0a 09 | .@scanner.scan(/[eimnosux]*/)... |
| 5c20 | 09 65 6e 64 0d 0a 0d 0a 09 09 40 72 65 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 3d 20 28 40 72 65 | .end......@regexp_allowed.=.(@re |
| 5c40 | 67 65 78 70 5f 61 6c 6c 6f 77 65 64 20 3d 3d 20 3a 73 65 74 29 20 20 23 20 64 65 6c 61 79 65 64 | gexp_allowed.==.:set)..#.delayed |
| 5c60 | 20 66 6c 61 67 20 73 65 74 74 69 6e 67 0d 0a 0d 0a 09 09 74 6f 6b 65 6e 0d 0a 09 65 6e 64 0d 0a | .flag.setting......token...end.. |
| 5c80 | 65 6e 64 0d 0a 0d 0a 72 65 67 69 73 74 65 72 20 52 75 62 79 2c 20 27 72 75 62 79 27 2c 20 27 72 | end....register.Ruby,.'ruby',.'r |
| 5ca0 | 62 27 0d 0a 0d 0a 09 65 6e 64 0d 0a 65 6e 64 0d 0a 63 6c 61 73 73 20 53 65 74 0d 0a 20 20 69 6e | b'.....end..end..class.Set....in |
| 5cc0 | 63 6c 75 64 65 20 45 6e 75 6d 65 72 61 62 6c 65 0d 0a 0d 0a 20 20 23 20 43 72 65 61 74 65 73 20 | clude.Enumerable......#.Creates. |
| 5ce0 | 61 20 6e 65 77 20 73 65 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 67 69 76 65 6e 20 6f | a.new.set.containing.the.given.o |
| 5d00 | 62 6a 65 63 74 73 2e 0d 0a 20 20 64 65 66 20 73 65 6c 66 2e 5b 5d 28 2a 61 72 79 29 0d 0a 20 20 | bjects.....def.self.[](*ary).... |
| 5d20 | 20 20 6e 65 77 28 61 72 79 29 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 43 72 65 61 74 65 73 | ..new(ary)....end......#.Creates |
| 5d40 | 20 61 20 6e 65 77 20 73 65 74 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 65 6c 65 6d 65 6e | .a.new.set.containing.the.elemen |
| 5d60 | 74 73 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 65 6e 75 6d 65 72 61 62 6c 65 0d 0a 20 20 23 20 | ts.of.the.given.enumerable....#. |
| 5d80 | 6f 62 6a 65 63 74 2e 0d 0a 20 20 23 0d 0a 20 20 23 20 49 66 20 61 20 62 6c 6f 63 6b 20 69 73 20 | object.....#....#.If.a.block.is. |
| 5da0 | 67 69 76 65 6e 2c 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 65 6e 75 6d 20 61 72 65 20 | given,.the.elements.of.enum.are. |
| 5dc0 | 70 72 65 70 72 6f 63 65 73 73 65 64 20 62 79 20 74 68 65 0d 0a 20 20 23 20 67 69 76 65 6e 20 62 | preprocessed.by.the....#.given.b |
| 5de0 | 6c 6f 63 6b 2e 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 65 6e 75 6d 20 3d 20 6e | lock.....def.initialize(enum.=.n |
| 5e00 | 69 6c 2c 20 26 62 6c 6f 63 6b 29 20 23 20 3a 79 69 65 6c 64 73 3a 20 6f 0d 0a 20 20 20 20 40 68 | il,.&block).#.:yields:.o......@h |
| 5e20 | 61 73 68 20 7c 7c 3d 20 48 61 73 68 2e 6e 65 77 0d 0a 0d 0a 20 20 20 20 65 6e 75 6d 2e 6e 69 6c | ash.||=.Hash.new........enum.nil |
| 5e40 | 3f 20 61 6e 64 20 72 65 74 75 72 6e 0d 0a 0d 0a 20 20 20 20 69 66 20 62 6c 6f 63 6b 0d 0a 20 20 | ?.and.return........if.block.... |
| 5e60 | 20 20 20 20 65 6e 75 6d 2e 65 61 63 68 20 7b 20 7c 6f 7c 20 61 64 64 28 62 6c 6f 63 6b 5b 6f 5d | ....enum.each.{.|o|.add(block[o] |
| 5e80 | 29 20 7d 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 6d 65 72 67 65 28 65 6e 75 6d 29 | ).}......else........merge(enum) |
| 5ea0 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 43 6f 70 79 20 69 6e 74 | ......end....end......#.Copy.int |
| 5ec0 | 65 72 6e 61 6c 20 68 61 73 68 2e 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 5f 63 6f | ernal.hash.....def.initialize_co |
| 5ee0 | 70 79 28 6f 72 69 67 29 0d 0a 20 20 20 20 40 68 61 73 68 20 3d 20 6f 72 69 67 2e 69 6e 73 74 61 | py(orig)......@hash.=.orig.insta |
| 5f00 | 6e 63 65 5f 65 76 61 6c 7b 40 68 61 73 68 7d 2e 64 75 70 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 | nce_eval{@hash}.dup....end...... |
| 5f20 | 23 20 52 65 74 75 72 6e 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 65 6c 65 6d 65 6e 74 73 | #.Returns.the.number.of.elements |
| 5f40 | 2e 0d 0a 20 20 64 65 66 20 73 69 7a 65 0d 0a 20 20 20 20 40 68 61 73 68 2e 73 69 7a 65 0d 0a 20 | .....def.size......@hash.size... |
| 5f60 | 20 65 6e 64 0d 0a 20 20 61 6c 69 61 73 20 6c 65 6e 67 74 68 20 73 69 7a 65 0d 0a 0d 0a 20 20 23 | .end....alias.length.size......# |
| 5f80 | 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74 68 65 20 73 65 74 20 63 6f 6e 74 61 69 6e | .Returns.true.if.the.set.contain |
| 5fa0 | 73 20 6e 6f 20 65 6c 65 6d 65 6e 74 73 2e 0d 0a 20 20 64 65 66 20 65 6d 70 74 79 3f 0d 0a 20 20 | s.no.elements.....def.empty?.... |
| 5fc0 | 20 20 40 68 61 73 68 2e 65 6d 70 74 79 3f 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 65 6d | ..@hash.empty?....end......#.Rem |
| 5fe0 | 6f 76 65 73 20 61 6c 6c 20 65 6c 65 6d 65 6e 74 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20 73 65 | oves.all.elements.and.returns.se |
| 6000 | 6c 66 2e 0d 0a 20 20 64 65 66 20 63 6c 65 61 72 0d 0a 20 20 20 20 40 68 61 73 68 2e 63 6c 65 61 | lf.....def.clear......@hash.clea |
| 6020 | 72 0d 0a 20 20 20 20 73 65 6c 66 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 65 70 6c 61 63 | r......self....end......#.Replac |
| 6040 | 65 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 73 65 74 20 77 69 74 68 20 | es.the.contents.of.the.set.with. |
| 6060 | 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 67 69 76 65 6e 0d 0a 20 20 23 20 65 | the.contents.of.the.given....#.e |
| 6080 | 6e 75 6d 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 20 61 6e 64 20 72 65 74 75 72 6e 73 20 73 65 6c | numerable.object.and.returns.sel |
| 60a0 | 66 2e 0d 0a 20 20 64 65 66 20 72 65 70 6c 61 63 65 28 65 6e 75 6d 29 0d 0a 20 20 20 20 69 66 20 | f.....def.replace(enum)......if. |
| 60c0 | 65 6e 75 6d 2e 63 6c 61 73 73 20 3d 3d 20 73 65 6c 66 2e 63 6c 61 73 73 0d 0a 20 20 20 20 20 20 | enum.class.==.self.class........ |
| 60e0 | 40 68 61 73 68 2e 72 65 70 6c 61 63 65 28 65 6e 75 6d 2e 69 6e 73 74 61 6e 63 65 5f 65 76 61 6c | @hash.replace(enum.instance_eval |
| 6100 | 20 7b 20 40 68 61 73 68 20 7d 29 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 65 6e 75 | .{.@hash.})......else........enu |
| 6120 | 6d 2e 69 73 5f 61 3f 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 | m.is_a?(Enumerable).or.raise.Arg |
| 6140 | 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 | umentError,."value.must.be.enume |
| 6160 | 72 61 62 6c 65 22 0d 0a 20 20 20 20 20 20 63 6c 65 61 72 0d 0a 20 20 20 20 20 20 65 6e 75 6d 2e | rable"........clear........enum. |
| 6180 | 65 61 63 68 20 7b 20 7c 6f 7c 20 61 64 64 28 6f 29 20 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a | each.{.|o|.add(o).}......end.... |
| 61a0 | 20 20 20 20 73 65 6c 66 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 43 6f 6e 76 65 72 74 73 20 | ....self....end......#.Converts. |
| 61c0 | 74 68 65 20 73 65 74 20 74 6f 20 61 6e 20 61 72 72 61 79 2e 20 20 54 68 65 20 6f 72 64 65 72 20 | the.set.to.an.array...The.order. |
| 61e0 | 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 73 20 75 6e 63 65 72 74 61 69 6e 2e 0d 0a 20 20 64 65 66 | of.elements.is.uncertain.....def |
| 6200 | 20 74 6f 5f 61 0d 0a 20 20 20 20 40 68 61 73 68 2e 6b 65 79 73 0d 0a 20 20 65 6e 64 0d 0a 0d 0a | .to_a......@hash.keys....end.... |
| 6220 | 20 20 64 65 66 20 66 6c 61 74 74 65 6e 5f 6d 65 72 67 65 28 73 65 74 2c 20 73 65 65 6e 20 3d 20 | ..def.flatten_merge(set,.seen.=. |
| 6240 | 53 65 74 2e 6e 65 77 29 0d 0a 20 20 20 20 73 65 74 2e 65 61 63 68 20 7b 20 7c 65 7c 0d 0a 20 20 | Set.new)......set.each.{.|e|.... |
| 6260 | 20 20 20 20 69 66 20 65 2e 69 73 5f 61 3f 28 53 65 74 29 0d 0a 09 69 66 20 73 65 65 6e 2e 69 6e | ....if.e.is_a?(Set)...if.seen.in |
| 6280 | 63 6c 75 64 65 3f 28 65 5f 69 64 20 3d 20 65 2e 6f 62 6a 65 63 74 5f 69 64 29 0d 0a 09 20 20 72 | clude?(e_id.=.e.object_id).....r |
| 62a0 | 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 74 72 69 65 64 20 74 6f 20 66 6c | aise.ArgumentError,."tried.to.fl |
| 62c0 | 61 74 74 65 6e 20 72 65 63 75 72 73 69 76 65 20 53 65 74 22 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 73 | atten.recursive.Set"...end.....s |
| 62e0 | 65 65 6e 2e 61 64 64 28 65 5f 69 64 29 0d 0a 09 66 6c 61 74 74 65 6e 5f 6d 65 72 67 65 28 65 2c | een.add(e_id)...flatten_merge(e, |
| 6300 | 20 73 65 65 6e 29 0d 0a 09 73 65 65 6e 2e 64 65 6c 65 74 65 28 65 5f 69 64 29 0d 0a 20 20 20 20 | .seen)...seen.delete(e_id)...... |
| 6320 | 20 20 65 6c 73 65 0d 0a 09 61 64 64 28 65 29 0d 0a 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | ..else...add(e)........end...... |
| 6340 | 7d 0d 0a 0d 0a 20 20 20 20 73 65 6c 66 0d 0a 20 20 65 6e 64 0d 0a 20 20 70 72 6f 74 65 63 74 65 | }........self....end....protecte |
| 6360 | 64 20 3a 66 6c 61 74 74 65 6e 5f 6d 65 72 67 65 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 | d.:flatten_merge......#.Returns. |
| 6380 | 61 20 6e 65 77 20 73 65 74 20 74 68 61 74 20 69 73 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 | a.new.set.that.is.a.copy.of.the. |
| 63a0 | 73 65 74 2c 20 66 6c 61 74 74 65 6e 69 6e 67 20 65 61 63 68 0d 0a 20 20 23 20 63 6f 6e 74 61 69 | set,.flattening.each....#.contai |
| 63c0 | 6e 69 6e 67 20 73 65 74 20 72 65 63 75 72 73 69 76 65 6c 79 2e 0d 0a 20 20 64 65 66 20 66 6c 61 | ning.set.recursively.....def.fla |
| 63e0 | 74 74 65 6e 0d 0a 20 20 20 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6e 65 77 2e 66 6c 61 74 74 65 6e | tten......self.class.new.flatten |
| 6400 | 5f 6d 65 72 67 65 28 73 65 6c 66 29 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 45 71 75 69 76 | _merge(self)....end......#.Equiv |
| 6420 | 61 6c 65 6e 74 20 74 6f 20 53 65 74 23 66 6c 61 74 74 65 6e 2c 20 62 75 74 20 72 65 70 6c 61 63 | alent.to.Set#flatten,.but.replac |
| 6440 | 65 73 20 74 68 65 20 72 65 63 65 69 76 65 72 20 77 69 74 68 20 74 68 65 0d 0a 20 20 23 20 72 65 | es.the.receiver.with.the....#.re |
| 6460 | 73 75 6c 74 20 69 6e 20 70 6c 61 63 65 2e 20 20 52 65 74 75 72 6e 73 20 6e 69 6c 20 69 66 20 6e | sult.in.place...Returns.nil.if.n |
| 6480 | 6f 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73 20 77 65 72 65 20 6d 61 64 65 2e 0d 0a 20 20 64 65 | o.modifications.were.made.....de |
| 64a0 | 66 20 66 6c 61 74 74 65 6e 21 0d 0a 20 20 20 20 69 66 20 64 65 74 65 63 74 20 7b 20 7c 65 7c 20 | f.flatten!......if.detect.{.|e|. |
| 64c0 | 65 2e 69 73 5f 61 3f 28 53 65 74 29 20 7d 0d 0a 20 20 20 20 20 20 72 65 70 6c 61 63 65 28 66 6c | e.is_a?(Set).}........replace(fl |
| 64e0 | 61 74 74 65 6e 28 29 29 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 6e 69 6c 0d 0a 20 | atten())......else........nil... |
| 6500 | 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 74 72 75 | ...end....end......#.Returns.tru |
| 6520 | 65 20 69 66 20 74 68 65 20 73 65 74 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 67 69 76 65 6e 20 | e.if.the.set.contains.the.given. |
| 6540 | 6f 62 6a 65 63 74 2e 0d 0a 20 20 64 65 66 20 69 6e 63 6c 75 64 65 3f 28 6f 29 0d 0a 20 20 20 20 | object.....def.include?(o)...... |
| 6560 | 40 68 61 73 68 2e 69 6e 63 6c 75 64 65 3f 28 6f 29 0d 0a 20 20 65 6e 64 0d 0a 20 20 61 6c 69 61 | @hash.include?(o)....end....alia |
| 6580 | 73 20 6d 65 6d 62 65 72 3f 20 69 6e 63 6c 75 64 65 3f 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e | s.member?.include?......#.Return |
| 65a0 | 73 20 74 72 75 65 20 69 66 20 74 68 65 20 73 65 74 20 69 73 20 61 20 73 75 70 65 72 73 65 74 20 | s.true.if.the.set.is.a.superset. |
| 65c0 | 6f 66 20 74 68 65 20 67 69 76 65 6e 20 73 65 74 2e 0d 0a 20 20 64 65 66 20 73 75 70 65 72 73 65 | of.the.given.set.....def.superse |
| 65e0 | 74 3f 28 73 65 74 29 0d 0a 20 20 20 20 73 65 74 2e 69 73 5f 61 3f 28 53 65 74 29 20 6f 72 20 72 | t?(set)......set.is_a?(Set).or.r |
| 6600 | 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 | aise.ArgumentError,."value.must. |
| 6620 | 62 65 20 61 20 73 65 74 22 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20 69 66 20 73 | be.a.set"......return.false.if.s |
| 6640 | 69 7a 65 20 3c 20 73 65 74 2e 73 69 7a 65 0d 0a 20 20 20 20 73 65 74 2e 61 6c 6c 3f 20 7b 20 7c | ize.<.set.size......set.all?.{.| |
| 6660 | 6f 7c 20 69 6e 63 6c 75 64 65 3f 28 6f 29 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 | o|.include?(o).}....end......#.R |
| 6680 | 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74 68 65 20 73 65 74 20 69 73 20 61 20 70 72 6f 70 | eturns.true.if.the.set.is.a.prop |
| 66a0 | 65 72 20 73 75 70 65 72 73 65 74 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 73 65 74 2e 0d 0a 20 | er.superset.of.the.given.set.... |
| 66c0 | 20 64 65 66 20 70 72 6f 70 65 72 5f 73 75 70 65 72 73 65 74 3f 28 73 65 74 29 0d 0a 20 20 20 20 | .def.proper_superset?(set)...... |
| 66e0 | 73 65 74 2e 69 73 5f 61 3f 28 53 65 74 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 | set.is_a?(Set).or.raise.Argument |
| 6700 | 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 73 65 74 22 0d 0a 20 20 | Error,."value.must.be.a.set".... |
| 6720 | 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20 69 66 20 73 69 7a 65 20 3c 3d 20 73 65 74 2e 73 69 | ..return.false.if.size.<=.set.si |
| 6740 | 7a 65 0d 0a 20 20 20 20 73 65 74 2e 61 6c 6c 3f 20 7b 20 7c 6f 7c 20 69 6e 63 6c 75 64 65 3f 28 | ze......set.all?.{.|o|.include?( |
| 6760 | 6f 29 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 | o).}....end......#.Returns.true. |
| 6780 | 69 66 20 74 68 65 20 73 65 74 20 69 73 20 61 20 73 75 62 73 65 74 20 6f 66 20 74 68 65 20 67 69 | if.the.set.is.a.subset.of.the.gi |
| 67a0 | 76 65 6e 20 73 65 74 2e 0d 0a 20 20 64 65 66 20 73 75 62 73 65 74 3f 28 73 65 74 29 0d 0a 20 20 | ven.set.....def.subset?(set).... |
| 67c0 | 20 20 73 65 74 2e 69 73 5f 61 3f 28 53 65 74 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 | ..set.is_a?(Set).or.raise.Argume |
| 67e0 | 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 61 20 73 65 74 22 0d 0a | ntError,."value.must.be.a.set".. |
| 6800 | 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20 69 66 20 73 65 74 2e 73 69 7a 65 20 3c 20 73 | ....return.false.if.set.size.<.s |
| 6820 | 69 7a 65 0d 0a 20 20 20 20 61 6c 6c 3f 20 7b 20 7c 6f 7c 20 73 65 74 2e 69 6e 63 6c 75 64 65 3f | ize......all?.{.|o|.set.include? |
| 6840 | 28 6f 29 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 74 72 75 65 | (o).}....end......#.Returns.true |
| 6860 | 20 69 66 20 74 68 65 20 73 65 74 20 69 73 20 61 20 70 72 6f 70 65 72 20 73 75 62 73 65 74 20 6f | .if.the.set.is.a.proper.subset.o |
| 6880 | 66 20 74 68 65 20 67 69 76 65 6e 20 73 65 74 2e 0d 0a 20 20 64 65 66 20 70 72 6f 70 65 72 5f 73 | f.the.given.set.....def.proper_s |
| 68a0 | 75 62 73 65 74 3f 28 73 65 74 29 0d 0a 20 20 20 20 73 65 74 2e 69 73 5f 61 3f 28 53 65 74 29 20 | ubset?(set)......set.is_a?(Set). |
| 68c0 | 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d | or.raise.ArgumentError,."value.m |
| 68e0 | 75 73 74 20 62 65 20 61 20 73 65 74 22 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20 | ust.be.a.set"......return.false. |
| 6900 | 69 66 20 73 65 74 2e 73 69 7a 65 20 3c 3d 20 73 69 7a 65 0d 0a 20 20 20 20 61 6c 6c 3f 20 7b 20 | if.set.size.<=.size......all?.{. |
| 6920 | 7c 6f 7c 20 73 65 74 2e 69 6e 63 6c 75 64 65 3f 28 6f 29 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a | |o|.set.include?(o).}....end.... |
| 6940 | 20 20 23 20 43 61 6c 6c 73 20 74 68 65 20 67 69 76 65 6e 20 62 6c 6f 63 6b 20 6f 6e 63 65 20 66 | ..#.Calls.the.given.block.once.f |
| 6960 | 6f 72 20 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 73 65 74 2c 20 70 61 73 73 | or.each.element.in.the.set,.pass |
| 6980 | 69 6e 67 0d 0a 20 20 23 20 74 68 65 20 65 6c 65 6d 65 6e 74 20 61 73 20 70 61 72 61 6d 65 74 65 | ing....#.the.element.as.paramete |
| 69a0 | 72 2e 0d 0a 20 20 64 65 66 20 65 61 63 68 0d 0a 20 20 20 20 40 68 61 73 68 2e 65 61 63 68 5f 6b | r.....def.each......@hash.each_k |
| 69c0 | 65 79 20 7b 20 7c 6f 7c 20 79 69 65 6c 64 28 6f 29 20 7d 0d 0a 20 20 20 20 73 65 6c 66 0d 0a 20 | ey.{.|o|.yield(o).}......self... |
| 69e0 | 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 41 64 64 73 20 74 68 65 20 67 69 76 65 6e 20 6f 62 6a 65 63 | .end......#.Adds.the.given.objec |
| 6a00 | 74 20 74 6f 20 74 68 65 20 73 65 74 20 61 6e 64 20 72 65 74 75 72 6e 73 20 73 65 6c 66 2e 20 20 | t.to.the.set.and.returns.self... |
| 6a20 | 55 73 65 20 2b 6d 65 72 67 65 2b 20 74 6f 0d 0a 20 20 23 20 61 64 64 20 73 65 76 65 72 61 6c 20 | Use.+merge+.to....#.add.several. |
| 6a40 | 65 6c 65 6d 65 6e 74 73 20 61 74 20 6f 6e 63 65 2e 0d 0a 20 20 64 65 66 20 61 64 64 28 6f 29 0d | elements.at.once.....def.add(o). |
| 6a60 | 0a 20 20 20 20 40 68 61 73 68 5b 6f 5d 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 73 65 6c 66 0d 0a | .....@hash[o].=.true......self.. |
| 6a80 | 20 20 65 6e 64 0d 0a 20 20 61 6c 69 61 73 20 3c 3c 20 61 64 64 0d 0a 0d 0a 20 20 23 20 41 64 64 | ..end....alias.<<.add......#.Add |
| 6aa0 | 73 20 74 68 65 20 67 69 76 65 6e 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65 20 73 65 74 20 61 6e | s.the.given.object.to.the.set.an |
| 6ac0 | 64 20 72 65 74 75 72 6e 73 20 73 65 6c 66 2e 20 20 49 66 20 74 68 65 0d 0a 20 20 23 20 6f 62 6a | d.returns.self...If.the....#.obj |
| 6ae0 | 65 63 74 20 69 73 20 61 6c 72 65 61 64 79 20 69 6e 20 74 68 65 20 73 65 74 2c 20 72 65 74 75 72 | ect.is.already.in.the.set,.retur |
| 6b00 | 6e 73 20 6e 69 6c 2e 0d 0a 20 20 64 65 66 20 61 64 64 3f 28 6f 29 0d 0a 20 20 20 20 69 66 20 69 | ns.nil.....def.add?(o)......if.i |
| 6b20 | 6e 63 6c 75 64 65 3f 28 6f 29 0d 0a 20 20 20 20 20 20 6e 69 6c 0d 0a 20 20 20 20 65 6c 73 65 0d | nclude?(o)........nil......else. |
| 6b40 | 0a 20 20 20 20 20 20 61 64 64 28 6f 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d | .......add(o)......end....end... |
| 6b60 | 0a 20 20 23 20 44 65 6c 65 74 65 73 20 74 68 65 20 67 69 76 65 6e 20 6f 62 6a 65 63 74 20 66 72 | ...#.Deletes.the.given.object.fr |
| 6b80 | 6f 6d 20 74 68 65 20 73 65 74 20 61 6e 64 20 72 65 74 75 72 6e 73 20 73 65 6c 66 2e 20 20 55 73 | om.the.set.and.returns.self...Us |
| 6ba0 | 65 20 2b 73 75 62 74 72 61 63 74 2b 20 74 6f 0d 0a 20 20 23 20 64 65 6c 65 74 65 20 73 65 76 65 | e.+subtract+.to....#.delete.seve |
| 6bc0 | 72 61 6c 20 69 74 65 6d 73 20 61 74 20 6f 6e 63 65 2e 0d 0a 20 20 64 65 66 20 64 65 6c 65 74 65 | ral.items.at.once.....def.delete |
| 6be0 | 28 6f 29 0d 0a 20 20 20 20 40 68 61 73 68 2e 64 65 6c 65 74 65 28 6f 29 0d 0a 20 20 20 20 73 65 | (o)......@hash.delete(o)......se |
| 6c00 | 6c 66 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 44 65 6c 65 74 65 73 20 74 68 65 20 67 69 76 | lf....end......#.Deletes.the.giv |
| 6c20 | 65 6e 20 6f 62 6a 65 63 74 20 66 72 6f 6d 20 74 68 65 20 73 65 74 20 61 6e 64 20 72 65 74 75 72 | en.object.from.the.set.and.retur |
| 6c40 | 6e 73 20 73 65 6c 66 2e 20 20 49 66 20 74 68 65 0d 0a 20 20 23 20 6f 62 6a 65 63 74 20 69 73 20 | ns.self...If.the....#.object.is. |
| 6c60 | 6e 6f 74 20 69 6e 20 74 68 65 20 73 65 74 2c 20 72 65 74 75 72 6e 73 20 6e 69 6c 2e 0d 0a 20 20 | not.in.the.set,.returns.nil..... |
| 6c80 | 64 65 66 20 64 65 6c 65 74 65 3f 28 6f 29 0d 0a 20 20 20 20 69 66 20 69 6e 63 6c 75 64 65 3f 28 | def.delete?(o)......if.include?( |
| 6ca0 | 6f 29 0d 0a 20 20 20 20 20 20 64 65 6c 65 74 65 28 6f 29 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 | o)........delete(o)......else... |
| 6cc0 | 20 20 20 20 20 6e 69 6c 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 | .....nil......end....end......#. |
| 6ce0 | 44 65 6c 65 74 65 73 20 65 76 65 72 79 20 65 6c 65 6d 65 6e 74 20 6f 66 20 74 68 65 20 73 65 74 | Deletes.every.element.of.the.set |
| 6d00 | 20 66 6f 72 20 77 68 69 63 68 20 62 6c 6f 63 6b 20 65 76 61 6c 75 61 74 65 73 20 74 6f 0d 0a 20 | .for.which.block.evaluates.to... |
| 6d20 | 20 23 20 74 72 75 65 2c 20 61 6e 64 20 72 65 74 75 72 6e 73 20 73 65 6c 66 2e 0d 0a 20 20 64 65 | .#.true,.and.returns.self.....de |
| 6d40 | 66 20 64 65 6c 65 74 65 5f 69 66 0d 0a 20 20 20 20 40 68 61 73 68 2e 64 65 6c 65 74 65 5f 69 66 | f.delete_if......@hash.delete_if |
| 6d60 | 20 7b 20 7c 6f 2c 7c 20 79 69 65 6c 64 28 6f 29 20 7d 0d 0a 20 20 20 20 73 65 6c 66 0d 0a 20 20 | .{.|o,|.yield(o).}......self.... |
| 6d80 | 65 6e 64 0d 0a 0d 0a 20 20 23 20 44 6f 20 63 6f 6c 6c 65 63 74 28 29 20 64 65 73 74 72 75 63 74 | end......#.Do.collect().destruct |
| 6da0 | 69 76 65 6c 79 2e 0d 0a 20 20 64 65 66 20 63 6f 6c 6c 65 63 74 21 0d 0a 20 20 20 20 73 65 74 20 | ively.....def.collect!......set. |
| 6dc0 | 3d 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6e 65 77 0d 0a 20 20 20 20 65 61 63 68 20 7b 20 7c 6f 7c | =.self.class.new......each.{.|o| |
| 6de0 | 20 73 65 74 20 3c 3c 20 79 69 65 6c 64 28 6f 29 20 7d 0d 0a 20 20 20 20 72 65 70 6c 61 63 65 28 | .set.<<.yield(o).}......replace( |
| 6e00 | 73 65 74 29 0d 0a 20 20 65 6e 64 0d 0a 20 20 61 6c 69 61 73 20 6d 61 70 21 20 63 6f 6c 6c 65 63 | set)....end....alias.map!.collec |
| 6e20 | 74 21 0d 0a 0d 0a 20 20 23 20 45 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 53 65 74 23 64 65 6c 65 | t!......#.Equivalent.to.Set#dele |
| 6e40 | 74 65 5f 69 66 2c 20 62 75 74 20 72 65 74 75 72 6e 73 20 6e 69 6c 20 69 66 20 6e 6f 20 63 68 61 | te_if,.but.returns.nil.if.no.cha |
| 6e60 | 6e 67 65 73 20 77 65 72 65 0d 0a 20 20 23 20 6d 61 64 65 2e 0d 0a 20 20 64 65 66 20 72 65 6a 65 | nges.were....#.made.....def.reje |
| 6e80 | 63 74 21 0d 0a 20 20 20 20 6e 20 3d 20 73 69 7a 65 0d 0a 20 20 20 20 64 65 6c 65 74 65 5f 69 66 | ct!......n.=.size......delete_if |
| 6ea0 | 20 7b 20 7c 6f 7c 20 79 69 65 6c 64 28 6f 29 20 7d 0d 0a 20 20 20 20 73 69 7a 65 20 3d 3d 20 6e | .{.|o|.yield(o).}......size.==.n |
| 6ec0 | 20 3f 20 6e 69 6c 20 3a 20 73 65 6c 66 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 4d 65 72 67 | .?.nil.:.self....end......#.Merg |
| 6ee0 | 65 73 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 67 69 76 65 6e 20 65 6e 75 | es.the.elements.of.the.given.enu |
| 6f00 | 6d 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 20 74 6f 20 74 68 65 20 73 65 74 20 61 6e 64 0d 0a 20 | merable.object.to.the.set.and... |
| 6f20 | 20 23 20 72 65 74 75 72 6e 73 20 73 65 6c 66 2e 0d 0a 20 20 64 65 66 20 6d 65 72 67 65 28 65 6e | .#.returns.self.....def.merge(en |
| 6f40 | 75 6d 29 0d 0a 20 20 20 20 69 66 20 65 6e 75 6d 2e 69 73 5f 61 3f 28 53 65 74 29 0d 0a 20 20 20 | um)......if.enum.is_a?(Set)..... |
| 6f60 | 20 20 20 40 68 61 73 68 2e 75 70 64 61 74 65 28 65 6e 75 6d 2e 69 6e 73 74 61 6e 63 65 5f 65 76 | ...@hash.update(enum.instance_ev |
| 6f80 | 61 6c 20 7b 20 40 68 61 73 68 20 7d 29 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 65 | al.{.@hash.})......else........e |
| 6fa0 | 6e 75 6d 2e 69 73 5f 61 3f 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 | num.is_a?(Enumerable).or.raise.A |
| 6fc0 | 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 | rgumentError,."value.must.be.enu |
| 6fe0 | 6d 65 72 61 62 6c 65 22 0d 0a 20 20 20 20 20 20 65 6e 75 6d 2e 65 61 63 68 20 7b 20 7c 6f 7c 20 | merable"........enum.each.{.|o|. |
| 7000 | 61 64 64 28 6f 29 20 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 73 65 6c 66 0d 0a 20 | add(o).}......end........self... |
| 7020 | 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 44 65 6c 65 74 65 73 20 65 76 65 72 79 20 65 6c 65 6d 65 6e | .end......#.Deletes.every.elemen |
| 7040 | 74 20 74 68 61 74 20 61 70 70 65 61 72 73 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 65 6e 75 6d | t.that.appears.in.the.given.enum |
| 7060 | 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 0d 0a 20 20 23 20 61 6e 64 20 72 65 74 75 72 6e 73 20 73 | erable.object....#.and.returns.s |
| 7080 | 65 6c 66 2e 0d 0a 20 20 64 65 66 20 73 75 62 74 72 61 63 74 28 65 6e 75 6d 29 0d 0a 20 20 20 20 | elf.....def.subtract(enum)...... |
| 70a0 | 65 6e 75 6d 2e 69 73 5f 61 3f 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 | enum.is_a?(Enumerable).or.raise. |
| 70c0 | 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e | ArgumentError,."value.must.be.en |
| 70e0 | 75 6d 65 72 61 62 6c 65 22 0d 0a 20 20 20 20 65 6e 75 6d 2e 65 61 63 68 20 7b 20 7c 6f 7c 20 64 | umerable"......enum.each.{.|o|.d |
| 7100 | 65 6c 65 74 65 28 6f 29 20 7d 0d 0a 20 20 20 20 73 65 6c 66 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 | elete(o).}......self....end..... |
| 7120 | 20 23 20 52 65 74 75 72 6e 73 20 61 20 6e 65 77 20 73 65 74 20 62 75 69 6c 74 20 62 79 20 6d 65 | .#.Returns.a.new.set.built.by.me |
| 7140 | 72 67 69 6e 67 20 74 68 65 20 73 65 74 20 61 6e 64 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f | rging.the.set.and.the.elements.o |
| 7160 | 66 20 74 68 65 0d 0a 20 20 23 20 67 69 76 65 6e 20 65 6e 75 6d 65 72 61 62 6c 65 20 6f 62 6a 65 | f.the....#.given.enumerable.obje |
| 7180 | 63 74 2e 0d 0a 20 20 64 65 66 20 7c 28 65 6e 75 6d 29 0d 0a 20 20 20 20 65 6e 75 6d 2e 69 73 5f | ct.....def.|(enum)......enum.is_ |
| 71a0 | 61 3f 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 | a?(Enumerable).or.raise.Argument |
| 71c0 | 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 72 61 62 6c 65 | Error,."value.must.be.enumerable |
| 71e0 | 22 0d 0a 20 20 20 20 64 75 70 2e 6d 65 72 67 65 28 65 6e 75 6d 29 0d 0a 20 20 65 6e 64 0d 0a 20 | "......dup.merge(enum)....end... |
| 7200 | 20 61 6c 69 61 73 20 2b 20 7c 09 09 23 23 0d 0a 20 20 61 6c 69 61 73 20 75 6e 69 6f 6e 20 7c 09 | .alias.+.|..##....alias.union.|. |
| 7220 | 09 23 23 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 61 20 6e 65 77 20 73 65 74 20 62 75 69 | .##......#.Returns.a.new.set.bui |
| 7240 | 6c 74 20 62 79 20 64 75 70 6c 69 63 61 74 69 6e 67 20 74 68 65 20 73 65 74 2c 20 72 65 6d 6f 76 | lt.by.duplicating.the.set,.remov |
| 7260 | 69 6e 67 20 65 76 65 72 79 0d 0a 20 20 23 20 65 6c 65 6d 65 6e 74 20 74 68 61 74 20 61 70 70 65 | ing.every....#.element.that.appe |
| 7280 | 61 72 73 20 69 6e 20 74 68 65 20 67 69 76 65 6e 20 65 6e 75 6d 65 72 61 62 6c 65 20 6f 62 6a 65 | ars.in.the.given.enumerable.obje |
| 72a0 | 63 74 2e 0d 0a 20 20 64 65 66 20 2d 28 65 6e 75 6d 29 0d 0a 20 20 20 20 65 6e 75 6d 2e 69 73 5f | ct.....def.-(enum)......enum.is_ |
| 72c0 | 61 3f 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 | a?(Enumerable).or.raise.Argument |
| 72e0 | 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 72 61 62 6c 65 | Error,."value.must.be.enumerable |
| 7300 | 22 0d 0a 20 20 20 20 64 75 70 2e 73 75 62 74 72 61 63 74 28 65 6e 75 6d 29 0d 0a 20 20 65 6e 64 | "......dup.subtract(enum)....end |
| 7320 | 0d 0a 20 20 61 6c 69 61 73 20 64 69 66 66 65 72 65 6e 63 65 20 2d 09 23 23 0d 0a 0d 0a 20 20 23 | ....alias.difference.-.##......# |
| 7340 | 20 52 65 74 75 72 6e 73 20 61 20 6e 65 77 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 | .Returns.a.new.array.containing. |
| 7360 | 65 6c 65 6d 65 6e 74 73 20 63 6f 6d 6d 6f 6e 20 74 6f 20 74 68 65 20 73 65 74 20 61 6e 64 20 74 | elements.common.to.the.set.and.t |
| 7380 | 68 65 0d 0a 20 20 23 20 67 69 76 65 6e 20 65 6e 75 6d 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 2e | he....#.given.enumerable.object. |
| 73a0 | 0d 0a 20 20 64 65 66 20 26 28 65 6e 75 6d 29 0d 0a 20 20 20 20 65 6e 75 6d 2e 69 73 5f 61 3f 28 | ....def.&(enum)......enum.is_a?( |
| 73c0 | 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 | Enumerable).or.raise.ArgumentErr |
| 73e0 | 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 72 61 62 6c 65 22 0d 0a | or,."value.must.be.enumerable".. |
| 7400 | 20 20 20 20 6e 20 3d 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6e 65 77 0d 0a 20 20 20 20 65 6e 75 6d | ....n.=.self.class.new......enum |
| 7420 | 2e 65 61 63 68 20 7b 20 7c 6f 7c 20 6e 2e 61 64 64 28 6f 29 20 69 66 20 69 6e 63 6c 75 64 65 3f | .each.{.|o|.n.add(o).if.include? |
| 7440 | 28 6f 29 20 7d 0d 0a 20 20 20 20 6e 0d 0a 20 20 65 6e 64 0d 0a 20 20 61 6c 69 61 73 20 69 6e 74 | (o).}......n....end....alias.int |
| 7460 | 65 72 73 65 63 74 69 6f 6e 20 26 09 23 23 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 61 20 | ersection.&.##......#.Returns.a. |
| 7480 | 6e 65 77 20 61 72 72 61 79 20 63 6f 6e 74 61 69 6e 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 65 78 | new.array.containing.elements.ex |
| 74a0 | 63 6c 75 73 69 76 65 20 62 65 74 77 65 65 6e 20 74 68 65 20 73 65 74 0d 0a 20 20 23 20 61 6e 64 | clusive.between.the.set....#.and |
| 74c0 | 20 74 68 65 20 67 69 76 65 6e 20 65 6e 75 6d 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 2e 20 20 28 | .the.given.enumerable.object...( |
| 74e0 | 73 65 74 20 5e 20 65 6e 75 6d 29 20 69 73 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 0d 0a 20 20 | set.^.enum).is.equivalent.to.... |
| 7500 | 23 20 28 28 73 65 74 20 7c 20 65 6e 75 6d 29 20 2d 20 28 73 65 74 20 26 20 65 6e 75 6d 29 29 2e | #.((set.|.enum).-.(set.&.enum)). |
| 7520 | 0d 0a 20 20 64 65 66 20 5e 28 65 6e 75 6d 29 0d 0a 20 20 20 20 65 6e 75 6d 2e 69 73 5f 61 3f 28 | ....def.^(enum)......enum.is_a?( |
| 7540 | 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 | Enumerable).or.raise.ArgumentErr |
| 7560 | 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 72 61 62 6c 65 22 0d 0a | or,."value.must.be.enumerable".. |
| 7580 | 20 20 20 20 6e 20 3d 20 64 75 70 0d 0a 20 20 20 20 65 6e 75 6d 2e 65 61 63 68 20 7b 20 7c 6f 7c | ....n.=.dup......enum.each.{.|o| |
| 75a0 | 20 69 66 20 6e 2e 69 6e 63 6c 75 64 65 3f 28 6f 29 20 74 68 65 6e 20 6e 2e 64 65 6c 65 74 65 28 | .if.n.include?(o).then.n.delete( |
| 75c0 | 6f 29 20 65 6c 73 65 20 6e 2e 61 64 64 28 6f 29 20 65 6e 64 20 7d 0d 0a 20 20 20 20 6e 0d 0a 20 | o).else.n.add(o).end.}......n... |
| 75e0 | 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74 77 6f 20 | .end......#.Returns.true.if.two. |
| 7600 | 73 65 74 73 20 61 72 65 20 65 71 75 61 6c 2e 20 20 54 68 65 20 65 71 75 61 6c 69 74 79 20 6f 66 | sets.are.equal...The.equality.of |
| 7620 | 20 65 61 63 68 20 63 6f 75 70 6c 65 0d 0a 20 20 23 20 6f 66 20 65 6c 65 6d 65 6e 74 73 20 69 73 | .each.couple....#.of.elements.is |
| 7640 | 20 64 65 66 69 6e 65 64 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 4f 62 6a 65 63 74 23 65 71 6c | .defined.according.to.Object#eql |
| 7660 | 3f 2e 0d 0a 20 20 64 65 66 20 3d 3d 28 73 65 74 29 0d 0a 20 20 20 20 65 71 75 61 6c 3f 28 73 65 | ?.....def.==(set)......equal?(se |
| 7680 | 74 29 20 61 6e 64 20 72 65 74 75 72 6e 20 74 72 75 65 0d 0a 0d 0a 20 20 20 20 73 65 74 2e 69 73 | t).and.return.true........set.is |
| 76a0 | 5f 61 3f 28 53 65 74 29 20 26 26 20 73 69 7a 65 20 3d 3d 20 73 65 74 2e 73 69 7a 65 20 6f 72 20 | _a?(Set).&&.size.==.set.size.or. |
| 76c0 | 72 65 74 75 72 6e 20 66 61 6c 73 65 0d 0a 0d 0a 20 20 20 20 68 61 73 68 20 3d 20 40 68 61 73 68 | return.false........hash.=.@hash |
| 76e0 | 2e 64 75 70 0d 0a 20 20 20 20 73 65 74 2e 61 6c 6c 3f 20 7b 20 7c 6f 7c 20 68 61 73 68 2e 69 6e | .dup......set.all?.{.|o|.hash.in |
| 7700 | 63 6c 75 64 65 3f 28 6f 29 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 68 61 73 68 | clude?(o).}....end......def.hash |
| 7720 | 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 20 20 40 68 61 73 68 2e 68 61 73 68 0d 0a 20 20 65 6e | .#.:nodoc:......@hash.hash....en |
| 7740 | 64 0d 0a 0d 0a 20 20 64 65 66 20 65 71 6c 3f 28 6f 29 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 | d......def.eql?(o).#.:nodoc:.... |
| 7760 | 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20 75 6e 6c 65 73 73 20 6f 2e 69 73 5f 61 3f 28 53 65 | ..return.false.unless.o.is_a?(Se |
| 7780 | 74 29 0d 0a 20 20 20 20 40 68 61 73 68 2e 65 71 6c 3f 28 6f 2e 69 6e 73 74 61 6e 63 65 5f 65 76 | t)......@hash.eql?(o.instance_ev |
| 77a0 | 61 6c 7b 40 68 61 73 68 7d 29 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 43 6c 61 73 73 69 66 | al{@hash})....end......#.Classif |
| 77c0 | 69 65 73 20 74 68 65 20 73 65 74 20 62 79 20 74 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 | ies.the.set.by.the.return.value. |
| 77e0 | 6f 66 20 74 68 65 20 67 69 76 65 6e 20 62 6c 6f 63 6b 20 61 6e 64 0d 0a 20 20 23 20 72 65 74 75 | of.the.given.block.and....#.retu |
| 7800 | 72 6e 73 20 61 20 68 61 73 68 20 6f 66 20 7b 76 61 6c 75 65 20 3d 3e 20 73 65 74 20 6f 66 20 65 | rns.a.hash.of.{value.=>.set.of.e |
| 7820 | 6c 65 6d 65 6e 74 73 7d 20 70 61 69 72 73 2e 20 20 54 68 65 20 62 6c 6f 63 6b 20 69 73 0d 0a 20 | lements}.pairs...The.block.is... |
| 7840 | 20 23 20 63 61 6c 6c 65 64 20 6f 6e 63 65 20 66 6f 72 20 65 61 63 68 20 65 6c 65 6d 65 6e 74 20 | .#.called.once.for.each.element. |
| 7860 | 6f 66 20 74 68 65 20 73 65 74 2c 20 70 61 73 73 69 6e 67 20 74 68 65 20 65 6c 65 6d 65 6e 74 20 | of.the.set,.passing.the.element. |
| 7880 | 61 73 0d 0a 20 20 23 20 70 61 72 61 6d 65 74 65 72 2e 0d 0a 20 20 23 0d 0a 20 20 23 20 65 2e 67 | as....#.parameter.....#....#.e.g |
| 78a0 | 2e 3a 0d 0a 20 20 23 0d 0a 20 20 23 20 20 20 72 65 71 75 69 72 65 20 27 73 65 74 27 0d 0a 20 20 | .:....#....#...require.'set'.... |
| 78c0 | 23 20 20 20 66 69 6c 65 73 20 3d 20 53 65 74 2e 6e 65 77 28 44 69 72 2e 67 6c 6f 62 28 22 2a 2e | #...files.=.Set.new(Dir.glob("*. |
| 78e0 | 72 62 22 29 29 0d 0a 20 20 23 20 20 20 68 61 73 68 20 3d 20 66 69 6c 65 73 2e 63 6c 61 73 73 69 | rb"))....#...hash.=.files.classi |
| 7900 | 66 79 20 7b 20 7c 66 7c 20 46 69 6c 65 2e 6d 74 69 6d 65 28 66 29 2e 79 65 61 72 20 7d 0d 0a 20 | fy.{.|f|.File.mtime(f).year.}... |
| 7920 | 20 23 20 20 20 70 20 68 61 73 68 20 20 20 20 23 20 3d 3e 20 7b 32 30 30 30 3d 3e 23 3c 53 65 74 | .#...p.hash....#.=>.{2000=>#<Set |
| 7940 | 3a 20 7b 22 61 2e 72 62 22 2c 20 22 62 2e 72 62 22 7d 3e 2c 0d 0a 20 20 23 20 20 20 20 20 20 20 | :.{"a.rb",."b.rb"}>,....#....... |
| 7960 | 20 20 20 20 20 20 23 20 20 20 20 20 32 30 30 31 3d 3e 23 3c 53 65 74 3a 20 7b 22 63 2e 72 62 22 | ......#.....2001=>#<Set:.{"c.rb" |
| 7980 | 2c 20 22 64 2e 72 62 22 2c 20 22 65 2e 72 62 22 7d 3e 2c 0d 0a 20 20 23 20 20 20 20 20 20 20 20 | ,."d.rb",."e.rb"}>,....#........ |
| 79a0 | 20 20 20 20 20 23 20 20 20 20 20 32 30 30 32 3d 3e 23 3c 53 65 74 3a 20 7b 22 66 2e 72 62 22 7d | .....#.....2002=>#<Set:.{"f.rb"} |
| 79c0 | 3e 7d 0d 0a 20 20 64 65 66 20 63 6c 61 73 73 69 66 79 20 23 20 3a 79 69 65 6c 64 73 3a 20 6f 0d | >}....def.classify.#.:yields:.o. |
| 79e0 | 0a 20 20 20 20 68 20 3d 20 7b 7d 0d 0a 0d 0a 20 20 20 20 65 61 63 68 20 7b 20 7c 69 7c 0d 0a 20 | .....h.=.{}........each.{.|i|... |
| 7a00 | 20 20 20 20 20 78 20 3d 20 79 69 65 6c 64 28 69 29 0d 0a 20 20 20 20 20 20 28 68 5b 78 5d 20 7c | .....x.=.yield(i)........(h[x].| |
| 7a20 | 7c 3d 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6e 65 77 29 2e 61 64 64 28 69 29 0d 0a 20 20 20 20 7d | |=.self.class.new).add(i)......} |
| 7a40 | 0d 0a 0d 0a 20 20 20 20 68 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 44 69 76 69 64 65 73 20 | ........h....end......#.Divides. |
| 7a60 | 74 68 65 20 73 65 74 20 69 6e 74 6f 20 61 20 73 65 74 20 6f 66 20 73 75 62 73 65 74 73 20 61 63 | the.set.into.a.set.of.subsets.ac |
| 7a80 | 63 6f 72 64 69 6e 67 20 74 6f 20 74 68 65 20 63 6f 6d 6d 6f 6e 61 6c 69 74 79 0d 0a 20 20 23 20 | cording.to.the.commonality....#. |
| 7aa0 | 64 65 66 69 6e 65 64 20 62 79 20 74 68 65 20 67 69 76 65 6e 20 62 6c 6f 63 6b 2e 0d 0a 20 20 23 | defined.by.the.given.block.....# |
| 7ac0 | 0d 0a 20 20 23 20 49 66 20 74 68 65 20 61 72 69 74 79 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 20 | ....#.If.the.arity.of.the.block. |
| 7ae0 | 69 73 20 32 2c 20 65 6c 65 6d 65 6e 74 73 20 6f 31 20 61 6e 64 20 6f 32 20 61 72 65 20 69 6e 20 | is.2,.elements.o1.and.o2.are.in. |
| 7b00 | 63 6f 6d 6d 6f 6e 0d 0a 20 20 23 20 69 66 20 62 6c 6f 63 6b 2e 63 61 6c 6c 28 6f 31 2c 20 6f 32 | common....#.if.block.call(o1,.o2 |
| 7b20 | 29 20 69 73 20 74 72 75 65 2e 20 20 4f 74 68 65 72 77 69 73 65 2c 20 65 6c 65 6d 65 6e 74 73 20 | ).is.true...Otherwise,.elements. |
| 7b40 | 6f 31 20 61 6e 64 20 6f 32 20 61 72 65 0d 0a 20 20 23 20 69 6e 20 63 6f 6d 6d 6f 6e 20 69 66 20 | o1.and.o2.are....#.in.common.if. |
| 7b60 | 62 6c 6f 63 6b 2e 63 61 6c 6c 28 6f 31 29 20 3d 3d 20 62 6c 6f 63 6b 2e 63 61 6c 6c 28 6f 32 29 | block.call(o1).==.block.call(o2) |
| 7b80 | 2e 0d 0a 20 20 23 0d 0a 20 20 23 20 65 2e 67 2e 3a 0d 0a 20 20 23 0d 0a 20 20 23 20 20 20 72 65 | .....#....#.e.g.:....#....#...re |
| 7ba0 | 71 75 69 72 65 20 27 73 65 74 27 0d 0a 20 20 23 20 20 20 6e 75 6d 62 65 72 73 20 3d 20 53 65 74 | quire.'set'....#...numbers.=.Set |
| 7bc0 | 5b 31 2c 20 33 2c 20 34 2c 20 36 2c 20 39 2c 20 31 30 2c 20 31 31 5d 0d 0a 20 20 23 20 20 20 73 | [1,.3,.4,.6,.9,.10,.11]....#...s |
| 7be0 | 65 74 20 3d 20 6e 75 6d 62 65 72 73 2e 64 69 76 69 64 65 20 7b 20 7c 69 2c 6a 7c 20 28 69 20 2d | et.=.numbers.divide.{.|i,j|.(i.- |
| 7c00 | 20 6a 29 2e 61 62 73 20 3d 3d 20 31 20 7d 0d 0a 20 20 23 20 20 20 70 20 73 65 74 20 20 20 20 20 | .j).abs.==.1.}....#...p.set..... |
| 7c20 | 23 20 3d 3e 20 23 3c 53 65 74 3a 20 7b 23 3c 53 65 74 3a 20 7b 31 7d 3e 2c 0d 0a 20 20 23 20 20 | #.=>.#<Set:.{#<Set:.{1}>,....#.. |
| 7c40 | 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 23 3c 53 65 74 3a 20 7b | ...........#............#<Set:.{ |
| 7c60 | 31 31 2c 20 39 2c 20 31 30 7d 3e 2c 0d 0a 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | 11,.9,.10}>,....#.............#. |
| 7c80 | 20 20 20 20 20 20 20 20 20 20 20 23 3c 53 65 74 3a 20 7b 33 2c 20 34 7d 3e 2c 0d 0a 20 20 23 20 | ...........#<Set:.{3,.4}>,....#. |
| 7ca0 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 20 20 20 20 20 20 20 20 20 20 23 3c 53 65 74 3a 20 | ............#............#<Set:. |
| 7cc0 | 7b 36 7d 3e 7d 3e 0d 0a 20 20 64 65 66 20 64 69 76 69 64 65 28 26 66 75 6e 63 29 0d 0a 20 20 20 | {6}>}>....def.divide(&func)..... |
| 7ce0 | 20 69 66 20 66 75 6e 63 2e 61 72 69 74 79 20 3d 3d 20 32 0d 0a 20 20 20 20 20 20 72 65 71 75 69 | .if.func.arity.==.2........requi |
| 7d00 | 72 65 20 27 74 73 6f 72 74 27 0d 0a 0d 0a 20 20 20 20 20 20 63 6c 61 73 73 20 3c 3c 20 64 69 67 | re.'tsort'..........class.<<.dig |
| 7d20 | 20 3d 20 7b 7d 09 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 09 69 6e 63 6c 75 64 65 20 54 53 6f 72 74 | .=.{}..#.:nodoc:...include.TSort |
| 7d40 | 0d 0a 0d 0a 09 61 6c 69 61 73 20 74 73 6f 72 74 5f 65 61 63 68 5f 6e 6f 64 65 20 65 61 63 68 5f | .....alias.tsort_each_node.each_ |
| 7d60 | 6b 65 79 0d 0a 09 64 65 66 20 74 73 6f 72 74 5f 65 61 63 68 5f 63 68 69 6c 64 28 6e 6f 64 65 2c | key...def.tsort_each_child(node, |
| 7d80 | 20 26 62 6c 6f 63 6b 29 0d 0a 09 20 20 66 65 74 63 68 28 6e 6f 64 65 29 2e 65 61 63 68 28 26 62 | .&block).....fetch(node).each(&b |
| 7da0 | 6c 6f 63 6b 29 0d 0a 09 65 6e 64 0d 0a 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 | lock)...end........end.......... |
| 7dc0 | 65 61 63 68 20 7b 20 7c 75 7c 0d 0a 09 64 69 67 5b 75 5d 20 3d 20 61 20 3d 20 5b 5d 0d 0a 09 65 | each.{.|u|...dig[u].=.a.=.[]...e |
| 7de0 | 61 63 68 7b 20 7c 76 7c 20 66 75 6e 63 2e 63 61 6c 6c 28 75 2c 20 76 29 20 61 6e 64 20 61 20 3c | ach{.|v|.func.call(u,.v).and.a.< |
| 7e00 | 3c 20 76 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 73 65 74 20 3d 20 53 65 | <.v.}........}..........set.=.Se |
| 7e20 | 74 2e 6e 65 77 28 29 0d 0a 20 20 20 20 20 20 64 69 67 2e 65 61 63 68 5f 73 74 72 6f 6e 67 6c 79 | t.new()........dig.each_strongly |
| 7e40 | 5f 63 6f 6e 6e 65 63 74 65 64 5f 63 6f 6d 70 6f 6e 65 6e 74 20 7b 20 7c 63 73 73 7c 0d 0a 09 73 | _connected_component.{.|css|...s |
| 7e60 | 65 74 2e 61 64 64 28 73 65 6c 66 2e 63 6c 61 73 73 2e 6e 65 77 28 63 73 73 29 29 0d 0a 20 20 20 | et.add(self.class.new(css))..... |
| 7e80 | 20 20 20 7d 0d 0a 20 20 20 20 20 20 73 65 74 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 | ...}........set......else....... |
| 7ea0 | 20 53 65 74 2e 6e 65 77 28 63 6c 61 73 73 69 66 79 28 26 66 75 6e 63 29 2e 76 61 6c 75 65 73 29 | .Set.new(classify(&func).values) |
| 7ec0 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 49 6e 73 70 65 63 74 4b 65 79 | ......end....end......InspectKey |
| 7ee0 | 20 3d 20 3a 5f 5f 69 6e 73 70 65 63 74 5f 6b 65 79 5f 5f 20 20 20 20 20 20 20 20 20 23 20 3a 6e | .=.:__inspect_key__.........#.:n |
| 7f00 | 6f 64 6f 63 3a 0d 0a 0d 0a 20 20 23 20 52 65 74 75 72 6e 73 20 61 20 73 74 72 69 6e 67 20 63 6f | odoc:......#.Returns.a.string.co |
| 7f20 | 6e 74 61 69 6e 69 6e 67 20 61 20 68 75 6d 61 6e 2d 72 65 61 64 61 62 6c 65 20 72 65 70 72 65 73 | ntaining.a.human-readable.repres |
| 7f40 | 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 0d 0a 20 20 23 20 73 65 74 2e 20 28 22 23 3c 53 65 | entation.of.the....#.set..("#<Se |
| 7f60 | 74 3a 20 7b 65 6c 65 6d 65 6e 74 31 2c 20 65 6c 65 6d 65 6e 74 32 2c 20 2e 2e 2e 7d 3e 22 29 0d | t:.{element1,.element2,....}>"). |
| 7f80 | 0a 20 20 64 65 66 20 69 6e 73 70 65 63 74 0d 0a 20 20 20 20 69 64 73 20 3d 20 28 54 68 72 65 61 | ...def.inspect......ids.=.(Threa |
| 7fa0 | 64 2e 63 75 72 72 65 6e 74 5b 49 6e 73 70 65 63 74 4b 65 79 5d 20 7c 7c 3d 20 5b 5d 29 0d 0a 0d | d.current[InspectKey].||=.[])... |
| 7fc0 | 0a 20 20 20 20 69 66 20 69 64 73 2e 69 6e 63 6c 75 64 65 3f 28 6f 62 6a 65 63 74 5f 69 64 29 0d | .....if.ids.include?(object_id). |
| 7fe0 | 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 70 72 69 6e 74 66 28 27 23 3c 25 73 3a 20 7b 2e 2e | .......return.sprintf('#<%s:.{.. |
| 8000 | 2e 7d 3e 27 2c 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6e 61 6d 65 29 0d 0a 20 20 20 20 65 6e 64 0d | .}>',.self.class.name)......end. |
| 8020 | 0a 0d 0a 20 20 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 69 64 73 20 3c 3c 20 6f 62 6a 65 63 | .......begin........ids.<<.objec |
| 8040 | 74 5f 69 64 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 70 72 69 6e 74 66 28 27 23 3c 25 73 | t_id........return.sprintf('#<%s |
| 8060 | 3a 20 7b 25 73 7d 3e 27 2c 20 73 65 6c 66 2e 63 6c 61 73 73 2c 20 74 6f 5f 61 2e 69 6e 73 70 65 | :.{%s}>',.self.class,.to_a.inspe |
| 8080 | 63 74 5b 31 2e 2e 2d 32 5d 29 0d 0a 20 20 20 20 65 6e 73 75 72 65 0d 0a 20 20 20 20 20 20 69 64 | ct[1..-2])......ensure........id |
| 80a0 | 73 2e 70 6f 70 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 70 | s.pop......end....end......def.p |
| 80c0 | 72 65 74 74 79 5f 70 72 69 6e 74 28 70 70 29 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 20 20 70 | retty_print(pp).#.:nodoc:......p |
| 80e0 | 70 2e 74 65 78 74 20 73 70 72 69 6e 74 66 28 27 23 3c 25 73 3a 20 7b 27 2c 20 73 65 6c 66 2e 63 | p.text.sprintf('#<%s:.{',.self.c |
| 8100 | 6c 61 73 73 2e 6e 61 6d 65 29 0d 0a 20 20 20 20 70 70 2e 6e 65 73 74 28 31 29 20 7b 0d 0a 20 20 | lass.name)......pp.nest(1).{.... |
| 8120 | 20 20 20 20 70 70 2e 73 65 70 6c 69 73 74 28 73 65 6c 66 29 20 7b 20 7c 6f 7c 0d 0a 09 70 70 2e | ....pp.seplist(self).{.|o|...pp. |
| 8140 | 70 70 20 6f 0d 0a 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 70 70 2e 74 65 78 | pp.o........}......}......pp.tex |
| 8160 | 74 20 22 7d 3e 22 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 70 72 65 74 74 79 5f 70 72 | t."}>"....end......def.pretty_pr |
| 8180 | 69 6e 74 5f 63 79 63 6c 65 28 70 70 29 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 20 20 70 70 2e | int_cycle(pp).#.:nodoc:......pp. |
| 81a0 | 74 65 78 74 20 73 70 72 69 6e 74 66 28 27 23 3c 25 73 3a 20 7b 25 73 7d 3e 27 2c 20 73 65 6c 66 | text.sprintf('#<%s:.{%s}>',.self |
| 81c0 | 2e 63 6c 61 73 73 2e 6e 61 6d 65 2c 20 65 6d 70 74 79 3f 20 3f 20 27 27 20 3a 20 27 2e 2e 2e 27 | .class.name,.empty?.?.''.:.'...' |
| 81e0 | 29 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 53 6f 72 74 65 64 53 65 74 20 69 6d 70 | )....end..end....#.SortedSet.imp |
| 8200 | 6c 65 6d 65 6e 74 73 20 61 20 73 65 74 20 77 68 69 63 68 20 65 6c 65 6d 65 6e 74 73 20 61 72 65 | lements.a.set.which.elements.are |
| 8220 | 20 73 6f 72 74 65 64 20 69 6e 20 6f 72 64 65 72 2e 20 20 53 65 65 20 53 65 74 2e 0d 0a 63 6c 61 | .sorted.in.order...See.Set...cla |
| 8240 | 73 73 20 53 6f 72 74 65 64 53 65 74 20 3c 20 53 65 74 0d 0a 20 20 40 40 73 65 74 75 70 20 3d 20 | ss.SortedSet.<.Set....@@setup.=. |
| 8260 | 66 61 6c 73 65 0d 0a 0d 0a 20 20 63 6c 61 73 73 20 3c 3c 20 73 65 6c 66 0d 0a 20 20 20 20 64 65 | false......class.<<.self......de |
| 8280 | 66 20 5b 5d 28 2a 61 72 79 29 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 20 20 20 20 6e 65 77 28 | f.[](*ary).#.:nodoc:........new( |
| 82a0 | 61 72 79 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 73 65 74 75 70 09 23 | ary)......end........def.setup.# |
| 82c0 | 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 20 20 20 20 40 40 73 65 74 75 70 20 61 6e 64 20 72 65 74 75 | .:nodoc:........@@setup.and.retu |
| 82e0 | 72 6e 0d 0a 0d 0a 20 20 20 20 20 20 62 65 67 69 6e 0d 0a 09 72 65 71 75 69 72 65 20 27 72 62 74 | rn..........begin...require.'rbt |
| 8300 | 72 65 65 27 0d 0a 0d 0a 09 6d 6f 64 75 6c 65 5f 65 76 61 6c 20 25 7b 0d 0a 09 20 20 64 65 66 20 | ree'.....module_eval.%{.....def. |
| 8320 | 69 6e 69 74 69 61 6c 69 7a 65 28 2a 61 72 67 73 2c 20 26 62 6c 6f 63 6b 29 0d 0a 09 20 20 20 20 | initialize(*args,.&block)....... |
| 8340 | 40 68 61 73 68 20 3d 20 52 42 54 72 65 65 2e 6e 65 77 0d 0a 09 20 20 20 20 73 75 70 65 72 0d 0a | @hash.=.RBTree.new.......super.. |
| 8360 | 09 20 20 65 6e 64 0d 0a 09 7d 0d 0a 20 20 20 20 20 20 72 65 73 63 75 65 20 4c 6f 61 64 45 72 72 | ...end...}........rescue.LoadErr |
| 8380 | 6f 72 0d 0a 09 6d 6f 64 75 6c 65 5f 65 76 61 6c 20 25 7b 0d 0a 09 20 20 64 65 66 20 69 6e 69 74 | or...module_eval.%{.....def.init |
| 83a0 | 69 61 6c 69 7a 65 28 2a 61 72 67 73 2c 20 26 62 6c 6f 63 6b 29 0d 0a 09 20 20 20 20 40 6b 65 79 | ialize(*args,.&block).......@key |
| 83c0 | 73 20 3d 20 6e 69 6c 0d 0a 09 20 20 20 20 73 75 70 65 72 0d 0a 09 20 20 65 6e 64 0d 0a 0d 0a 09 | s.=.nil.......super.....end..... |
| 83e0 | 20 20 64 65 66 20 63 6c 65 61 72 0d 0a 09 20 20 20 20 40 6b 65 79 73 20 3d 20 6e 69 6c 0d 0a 09 | ..def.clear.......@keys.=.nil... |
| 8400 | 20 20 20 20 73 75 70 65 72 0d 0a 09 20 20 65 6e 64 0d 0a 0d 0a 09 20 20 64 65 66 20 72 65 70 6c | ....super.....end.......def.repl |
| 8420 | 61 63 65 28 65 6e 75 6d 29 0d 0a 09 20 20 20 20 40 6b 65 79 73 20 3d 20 6e 69 6c 0d 0a 09 20 20 | ace(enum).......@keys.=.nil..... |
| 8440 | 20 20 73 75 70 65 72 0d 0a 09 20 20 65 6e 64 0d 0a 0d 0a 09 20 20 64 65 66 20 61 64 64 28 6f 29 | ..super.....end.......def.add(o) |
| 8460 | 0d 0a 09 20 20 20 20 40 6b 65 79 73 20 3d 20 6e 69 6c 0d 0a 09 20 20 20 20 40 68 61 73 68 5b 6f | .......@keys.=.nil.......@hash[o |
| 8480 | 5d 20 3d 20 74 72 75 65 0d 0a 09 20 20 20 20 73 65 6c 66 0d 0a 09 20 20 65 6e 64 0d 0a 09 20 20 | ].=.true.......self.....end..... |
| 84a0 | 61 6c 69 61 73 20 3c 3c 20 61 64 64 0d 0a 0d 0a 09 20 20 64 65 66 20 64 65 6c 65 74 65 28 6f 29 | alias.<<.add.......def.delete(o) |
| 84c0 | 0d 0a 09 20 20 20 20 40 6b 65 79 73 20 3d 20 6e 69 6c 0d 0a 09 20 20 20 20 40 68 61 73 68 2e 64 | .......@keys.=.nil.......@hash.d |
| 84e0 | 65 6c 65 74 65 28 6f 29 0d 0a 09 20 20 20 20 73 65 6c 66 0d 0a 09 20 20 65 6e 64 0d 0a 0d 0a 09 | elete(o).......self.....end..... |
| 8500 | 20 20 64 65 66 20 64 65 6c 65 74 65 5f 69 66 0d 0a 09 20 20 20 20 6e 20 3d 20 40 68 61 73 68 2e | ..def.delete_if.......n.=.@hash. |
| 8520 | 73 69 7a 65 0d 0a 09 20 20 20 20 40 68 61 73 68 2e 64 65 6c 65 74 65 5f 69 66 20 7b 20 7c 6f 2c | size.......@hash.delete_if.{.|o, |
| 8540 | 7c 20 79 69 65 6c 64 28 6f 29 20 7d 0d 0a 09 20 20 20 20 40 6b 65 79 73 20 3d 20 6e 69 6c 20 69 | |.yield(o).}.......@keys.=.nil.i |
| 8560 | 66 20 40 68 61 73 68 2e 73 69 7a 65 20 21 3d 20 6e 0d 0a 09 20 20 20 20 73 65 6c 66 0d 0a 09 20 | f.@hash.size.!=.n.......self.... |
| 8580 | 20 65 6e 64 0d 0a 0d 0a 09 20 20 64 65 66 20 6d 65 72 67 65 28 65 6e 75 6d 29 0d 0a 09 20 20 20 | .end.......def.merge(enum)...... |
| 85a0 | 20 40 6b 65 79 73 20 3d 20 6e 69 6c 0d 0a 09 20 20 20 20 73 75 70 65 72 0d 0a 09 20 20 65 6e 64 | .@keys.=.nil.......super.....end |
| 85c0 | 0d 0a 0d 0a 09 20 20 64 65 66 20 65 61 63 68 0d 0a 09 20 20 20 20 74 6f 5f 61 2e 65 61 63 68 20 | .......def.each.......to_a.each. |
| 85e0 | 7b 20 7c 6f 7c 20 79 69 65 6c 64 28 6f 29 20 7d 0d 0a 09 20 20 65 6e 64 0d 0a 0d 0a 09 20 20 64 | {.|o|.yield(o).}.....end.......d |
| 8600 | 65 66 20 74 6f 5f 61 0d 0a 09 20 20 20 20 28 40 6b 65 79 73 20 3d 20 40 68 61 73 68 2e 6b 65 79 | ef.to_a.......(@keys.=.@hash.key |
| 8620 | 73 29 2e 73 6f 72 74 21 20 75 6e 6c 65 73 73 20 40 6b 65 79 73 0d 0a 09 20 20 20 20 40 6b 65 79 | s).sort!.unless.@keys.......@key |
| 8640 | 73 0d 0a 09 20 20 65 6e 64 0d 0a 09 7d 0d 0a 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 | s.....end...}........end........ |
| 8660 | 20 20 40 40 73 65 74 75 70 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 | ..@@setup.=.true......end....end |
| 8680 | 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 2a 61 72 67 73 2c 20 26 62 6c 6f | ......def.initialize(*args,.&blo |
| 86a0 | 63 6b 29 09 23 20 3a 6e 6f 64 6f 63 3a 0d 0a 20 20 20 20 53 6f 72 74 65 64 53 65 74 2e 73 65 74 | ck).#.:nodoc:......SortedSet.set |
| 86c0 | 75 70 0d 0a 20 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 28 2a 61 72 67 73 2c 20 26 62 6c 6f 63 6b | up......initialize(*args,.&block |
| 86e0 | 29 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 6d 6f 64 75 6c 65 20 45 6e 75 6d 65 72 61 62 | )....end..end....module.Enumerab |
| 8700 | 6c 65 0d 0a 20 20 23 20 4d 61 6b 65 73 20 61 20 73 65 74 20 66 72 6f 6d 20 74 68 65 20 65 6e 75 | le....#.Makes.a.set.from.the.enu |
| 8720 | 6d 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 20 77 69 74 68 20 67 69 76 65 6e 20 61 72 67 75 6d 65 | merable.object.with.given.argume |
| 8740 | 6e 74 73 2e 0d 0a 20 20 64 65 66 20 74 6f 5f 73 65 74 28 6b 6c 61 73 73 20 3d 20 53 65 74 2c 20 | nts.....def.to_set(klass.=.Set,. |
| 8760 | 2a 61 72 67 73 2c 20 26 62 6c 6f 63 6b 29 0d 0a 20 20 20 20 6b 6c 61 73 73 2e 6e 65 77 28 73 65 | *args,.&block)......klass.new(se |
| 8780 | 6c 66 2c 20 2a 61 72 67 73 2c 20 26 62 6c 6f 63 6b 29 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a | lf,.*args,.&block)....end..end.. |
| 87a0 | 0d 0a 23 20 3d 62 65 67 69 6e 0d 0a 23 20 3d 3d 20 52 65 73 74 72 69 63 65 64 53 65 74 20 63 6c | ..#.=begin..#.==.RestricedSet.cl |
| 87c0 | 61 73 73 0d 0a 23 20 52 65 73 74 72 69 63 65 64 53 65 74 20 69 6d 70 6c 65 6d 65 6e 74 73 20 61 | ass..#.RestricedSet.implements.a |
| 87e0 | 20 73 65 74 20 77 69 74 68 20 72 65 73 74 72 69 63 74 69 6f 6e 73 20 64 65 66 69 6e 65 64 20 62 | .set.with.restrictions.defined.b |
| 8800 | 79 20 61 20 67 69 76 65 6e 0d 0a 23 20 62 6c 6f 63 6b 2e 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 53 75 | y.a.given..#.block...#..#.===.Su |
| 8820 | 70 65 72 20 63 6c 61 73 73 0d 0a 23 20 20 20 20 20 53 65 74 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 43 | per.class..#.....Set..#..#.===.C |
| 8840 | 6c 61 73 73 20 4d 65 74 68 6f 64 73 0d 0a 23 20 2d 2d 2d 20 52 65 73 74 72 69 63 65 64 53 65 74 | lass.Methods..#.---.RestricedSet |
| 8860 | 3a 3a 6e 65 77 28 65 6e 75 6d 20 3d 20 6e 69 6c 29 20 7b 20 7c 6f 7c 20 2e 2e 2e 20 7d 0d 0a 23 | ::new(enum.=.nil).{.|o|.....}..# |
| 8880 | 20 2d 2d 2d 20 52 65 73 74 72 69 63 65 64 53 65 74 3a 3a 6e 65 77 28 65 6e 75 6d 20 3d 20 6e 69 | .---.RestricedSet::new(enum.=.ni |
| 88a0 | 6c 29 20 7b 20 7c 72 73 65 74 2c 20 6f 7c 20 2e 2e 2e 20 7d 0d 0a 23 20 20 20 20 20 43 72 65 61 | l).{.|rset,.o|.....}..#.....Crea |
| 88c0 | 74 65 73 20 61 20 6e 65 77 20 72 65 73 74 72 69 63 74 65 64 20 73 65 74 20 63 6f 6e 74 61 69 6e | tes.a.new.restricted.set.contain |
| 88e0 | 69 6e 67 20 74 68 65 20 65 6c 65 6d 65 6e 74 73 20 6f 66 20 74 68 65 20 67 69 76 65 6e 0d 0a 23 | ing.the.elements.of.the.given..# |
| 8900 | 20 20 20 20 20 65 6e 75 6d 65 72 61 62 6c 65 20 6f 62 6a 65 63 74 2e 20 20 52 65 73 74 72 69 63 | .....enumerable.object...Restric |
| 8920 | 74 69 6f 6e 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 62 79 20 74 68 65 20 67 69 76 65 6e 20 62 | tions.are.defined.by.the.given.b |
| 8940 | 6c 6f 63 6b 2e 0d 0a 23 0d 0a 23 20 20 20 20 20 49 66 20 74 68 65 20 62 6c 6f 63 6b 27 73 20 61 | lock...#..#.....If.the.block's.a |
| 8960 | 72 69 74 79 20 69 73 20 32 2c 20 69 74 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 | rity.is.2,.it.is.called.with.the |
| 8980 | 20 52 65 73 74 72 69 63 74 65 64 53 65 74 0d 0a 23 20 20 20 20 20 69 74 73 65 6c 66 20 61 6e 64 | .RestrictedSet..#.....itself.and |
| 89a0 | 20 61 6e 20 6f 62 6a 65 63 74 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 6f 62 6a 65 63 74 20 | .an.object.to.see.if.the.object. |
| 89c0 | 69 73 20 61 6c 6c 6f 77 65 64 20 74 6f 20 62 65 20 70 75 74 20 69 6e 0d 0a 23 20 20 20 20 20 74 | is.allowed.to.be.put.in..#.....t |
| 89e0 | 68 65 20 73 65 74 2e 0d 0a 23 0d 0a 23 20 20 20 20 20 4f 74 68 65 72 77 69 73 65 2c 20 74 68 65 | he.set...#..#.....Otherwise,.the |
| 8a00 | 20 62 6c 6f 63 6b 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 6e 20 6f 62 6a 65 63 74 20 | .block.is.called.with.an.object. |
| 8a20 | 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 6f 62 6a 65 63 74 0d 0a 23 20 20 20 20 20 69 73 20 61 | to.see.if.the.object..#.....is.a |
| 8a40 | 6c 6c 6f 77 65 64 20 74 6f 20 62 65 20 70 75 74 20 69 6e 20 74 68 65 20 73 65 74 2e 0d 0a 23 0d | llowed.to.be.put.in.the.set...#. |
| 8a60 | 0a 23 20 3d 3d 3d 20 49 6e 73 74 61 6e 63 65 20 4d 65 74 68 6f 64 73 0d 0a 23 20 2d 2d 2d 20 72 | .#.===.Instance.Methods..#.---.r |
| 8a80 | 65 73 74 72 69 63 74 69 6f 6e 5f 70 72 6f 63 0d 0a 23 20 20 20 20 20 52 65 74 75 72 6e 73 20 74 | estriction_proc..#.....Returns.t |
| 8aa0 | 68 65 20 72 65 73 74 72 69 63 74 69 6f 6e 20 70 72 6f 63 65 64 75 72 65 20 6f 66 20 74 68 65 20 | he.restriction.procedure.of.the. |
| 8ac0 | 73 65 74 2e 0d 0a 23 0d 0a 23 20 3d 65 6e 64 0d 0a 23 0d 0a 23 20 63 6c 61 73 73 20 52 65 73 74 | set...#..#.=end..#..#.class.Rest |
| 8ae0 | 72 69 63 65 64 53 65 74 20 3c 20 53 65 74 0d 0a 23 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 | ricedSet.<.Set..#...def.initiali |
| 8b00 | 7a 65 28 2a 61 72 67 73 2c 20 26 62 6c 6f 63 6b 29 0d 0a 23 20 20 20 20 20 40 70 72 6f 63 20 3d | ze(*args,.&block)..#.....@proc.= |
| 8b20 | 20 62 6c 6f 63 6b 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 | .block.or.raise.ArgumentError,." |
| 8b40 | 6d 69 73 73 69 6e 67 20 61 20 62 6c 6f 63 6b 22 0d 0a 23 0d 0a 23 20 20 20 20 20 69 66 20 40 70 | missing.a.block"..#..#.....if.@p |
| 8b60 | 72 6f 63 2e 61 72 69 74 79 20 3d 3d 20 32 0d 0a 23 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 | roc.arity.==.2..#.......instance |
| 8b80 | 5f 65 76 61 6c 20 25 7b 0d 0a 23 20 09 64 65 66 20 61 64 64 28 6f 29 0d 0a 23 20 09 20 20 40 68 | _eval.%{..#..def.add(o)..#....@h |
| 8ba0 | 61 73 68 5b 6f 5d 20 3d 20 74 72 75 65 20 69 66 20 40 70 72 6f 63 2e 63 61 6c 6c 28 73 65 6c 66 | ash[o].=.true.if.@proc.call(self |
| 8bc0 | 2c 20 6f 29 0d 0a 23 20 09 20 20 73 65 6c 66 0d 0a 23 20 09 65 6e 64 0d 0a 23 20 09 61 6c 69 61 | ,.o)..#....self..#..end..#..alia |
| 8be0 | 73 20 3c 3c 20 61 64 64 0d 0a 23 0d 0a 23 20 09 64 65 66 20 61 64 64 3f 28 6f 29 0d 0a 23 20 09 | s.<<.add..#..#..def.add?(o)..#.. |
| 8c00 | 20 20 69 66 20 69 6e 63 6c 75 64 65 3f 28 6f 29 20 7c 7c 20 21 40 70 72 6f 63 2e 63 61 6c 6c 28 | ..if.include?(o).||.!@proc.call( |
| 8c20 | 73 65 6c 66 2c 20 6f 29 0d 0a 23 20 09 20 20 20 20 6e 69 6c 0d 0a 23 20 09 20 20 65 6c 73 65 0d | self,.o)..#......nil..#....else. |
| 8c40 | 0a 23 20 09 20 20 20 20 40 68 61 73 68 5b 6f 5d 20 3d 20 74 72 75 65 0d 0a 23 20 09 20 20 20 20 | .#......@hash[o].=.true..#...... |
| 8c60 | 73 65 6c 66 0d 0a 23 20 09 20 20 65 6e 64 0d 0a 23 20 09 65 6e 64 0d 0a 23 0d 0a 23 20 09 64 65 | self..#....end..#..end..#..#..de |
| 8c80 | 66 20 72 65 70 6c 61 63 65 28 65 6e 75 6d 29 0d 0a 23 20 09 20 20 65 6e 75 6d 2e 69 73 5f 61 3f | f.replace(enum)..#....enum.is_a? |
| 8ca0 | 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 | (Enumerable).or.raise.ArgumentEr |
| 8cc0 | 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d 65 72 61 62 6c 65 22 0d | ror,."value.must.be.enumerable". |
| 8ce0 | 0a 23 20 09 20 20 63 6c 65 61 72 0d 0a 23 20 09 20 20 65 6e 75 6d 2e 65 61 63 68 20 7b 20 7c 6f | .#....clear..#....enum.each.{.|o |
| 8d00 | 7c 20 61 64 64 28 6f 29 20 7d 0d 0a 23 0d 0a 23 20 09 20 20 73 65 6c 66 0d 0a 23 20 09 65 6e 64 | |.add(o).}..#..#....self..#..end |
| 8d20 | 0d 0a 23 0d 0a 23 20 09 64 65 66 20 6d 65 72 67 65 28 65 6e 75 6d 29 0d 0a 23 20 09 20 20 65 6e | ..#..#..def.merge(enum)..#....en |
| 8d40 | 75 6d 2e 69 73 5f 61 3f 28 45 6e 75 6d 65 72 61 62 6c 65 29 20 6f 72 20 72 61 69 73 65 20 41 72 | um.is_a?(Enumerable).or.raise.Ar |
| 8d60 | 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 76 61 6c 75 65 20 6d 75 73 74 20 62 65 20 65 6e 75 6d | gumentError,."value.must.be.enum |
| 8d80 | 65 72 61 62 6c 65 22 0d 0a 23 20 09 20 20 65 6e 75 6d 2e 65 61 63 68 20 7b 20 7c 6f 7c 20 61 64 | erable"..#....enum.each.{.|o|.ad |
| 8da0 | 64 28 6f 29 20 7d 0d 0a 23 0d 0a 23 20 09 20 20 73 65 6c 66 0d 0a 23 20 09 65 6e 64 0d 0a 23 20 | d(o).}..#..#....self..#..end..#. |
| 8dc0 | 20 20 20 20 20 20 7d 0d 0a 23 20 20 20 20 20 65 6c 73 65 0d 0a 23 20 20 20 20 20 20 20 69 6e 73 | ......}..#.....else..#.......ins |
| 8de0 | 74 61 6e 63 65 5f 65 76 61 6c 20 25 7b 0d 0a 23 20 09 64 65 66 20 61 64 64 28 6f 29 0d 0a 23 20 | tance_eval.%{..#..def.add(o)..#. |
| 8e00 | 20 20 20 20 20 20 20 20 69 66 20 40 70 72 6f 63 2e 63 61 6c 6c 28 6f 29 0d 0a 23 20 09 20 20 20 | ........if.@proc.call(o)..#..... |
| 8e20 | 20 40 68 61 73 68 5b 6f 5d 20 3d 20 74 72 75 65 0d 0a 23 20 20 20 20 20 20 20 20 20 65 6e 64 0d | .@hash[o].=.true..#.........end. |
| 8e40 | 0a 23 20 09 20 20 73 65 6c 66 0d 0a 23 20 09 65 6e 64 0d 0a 23 20 09 61 6c 69 61 73 20 3c 3c 20 | .#....self..#..end..#..alias.<<. |
| 8e60 | 61 64 64 0d 0a 23 0d 0a 23 20 09 64 65 66 20 61 64 64 3f 28 6f 29 0d 0a 23 20 09 20 20 69 66 20 | add..#..#..def.add?(o)..#....if. |
| 8e80 | 69 6e 63 6c 75 64 65 3f 28 6f 29 20 7c 7c 20 21 40 70 72 6f 63 2e 63 61 6c 6c 28 6f 29 0d 0a 23 | include?(o).||.!@proc.call(o)..# |
| 8ea0 | 20 09 20 20 20 20 6e 69 6c 0d 0a 23 20 09 20 20 65 6c 73 65 0d 0a 23 20 09 20 20 20 20 40 68 61 | ......nil..#....else..#......@ha |
| 8ec0 | 73 68 5b 6f 5d 20 3d 20 74 72 75 65 0d 0a 23 20 09 20 20 20 20 73 65 6c 66 0d 0a 23 20 09 20 20 | sh[o].=.true..#......self..#.... |
| 8ee0 | 65 6e 64 0d 0a 23 20 09 65 6e 64 0d 0a 23 20 20 20 20 20 20 20 7d 0d 0a 23 20 20 20 20 20 65 6e | end..#..end..#.......}..#.....en |
| 8f00 | 64 0d 0a 23 0d 0a 23 20 20 20 20 20 73 75 70 65 72 28 2a 61 72 67 73 29 0d 0a 23 20 20 20 65 6e | d..#..#.....super(*args)..#...en |
| 8f20 | 64 0d 0a 23 0d 0a 23 20 20 20 64 65 66 20 72 65 73 74 72 69 63 74 69 6f 6e 5f 70 72 6f 63 0d 0a | d..#..#...def.restriction_proc.. |
| 8f40 | 23 20 20 20 20 20 40 70 72 6f 63 0d 0a 23 20 20 20 65 6e 64 0d 0a 23 20 65 6e 64 0d 0a 0d 0a 69 | #.....@proc..#...end..#.end....i |
| 8f60 | 66 20 24 30 20 3d 3d 20 5f 5f 46 49 4c 45 5f 5f 0d 0a 20 20 65 76 61 6c 20 44 41 54 41 2e 72 65 | f.$0.==.__FILE__....eval.DATA.re |
| 8f80 | 61 64 2c 20 6e 69 6c 2c 20 24 30 2c 20 5f 5f 4c 49 4e 45 5f 5f 2b 34 0d 0a 65 6e 64 0d 0a 0d 0a | ad,.nil,.$0,.__LINE__+4..end.... |
| 8fa0 | 23 20 3d 20 72 77 65 62 20 2d 20 43 47 49 20 53 75 70 70 6f 72 74 20 4c 69 62 72 61 72 79 0d 0a | #.=.rweb.-.CGI.Support.Library.. |
| 8fc0 | 23 0d 0a 23 20 41 75 74 68 6f 72 3a 3a 20 4a 6f 68 61 6e 6e 65 73 20 42 61 72 72 65 20 28 6d 61 | #..#.Author::.Johannes.Barre.(ma |
| 8fe0 | 69 6c 74 6f 3a 72 77 65 62 40 69 67 65 6c 73 2e 6e 65 74 29 0d 0a 23 20 43 6f 70 79 72 69 67 68 | ilto:rweb@igels.net)..#.Copyrigh |
| 9000 | 74 3a 3a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 33 2c 20 30 34 20 62 79 20 4a 6f | t::.Copyright.(c).2003,.04.by.Jo |
| 9020 | 68 61 6e 6e 65 73 20 42 61 72 72 65 0d 0a 23 20 4c 69 63 65 6e 73 65 3a 3a 20 47 4e 55 20 4c 65 | hannes.Barre..#.License::.GNU.Le |
| 9040 | 73 73 65 72 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 28 43 4f 50 | sser.General.Public.License.(COP |
| 9060 | 59 49 4e 47 2c 20 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 63 6f 70 79 6c 65 66 | YING,.http://www.gnu.org/copylef |
| 9080 | 74 2f 6c 65 73 73 65 72 2e 68 74 6d 6c 29 0d 0a 23 20 56 65 72 73 69 6f 6e 3a 3a 20 30 2e 31 2e | t/lesser.html)..#.Version::.0.1. |
| 90a0 | 30 0d 0a 23 20 43 56 53 2d 49 44 3a 3a 20 24 49 64 3a 20 72 77 65 62 2e 72 62 20 36 20 32 30 30 | 0..#.CVS-ID::.$Id:.rweb.rb.6.200 |
| 90c0 | 34 2d 30 36 2d 31 36 20 31 35 3a 35 36 3a 32 36 5a 20 69 67 65 6c 20 24 0d 0a 23 0d 0a 23 20 3d | 4-06-16.15:56:26Z.igel.$..#..#.= |
| 90e0 | 3d 20 57 68 61 74 20 69 73 20 52 77 65 62 3f 0d 0a 23 20 52 77 65 62 20 69 73 20 61 20 72 65 70 | =.What.is.Rweb?..#.Rweb.is.a.rep |
| 9100 | 6c 61 63 65 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 63 67 69 20 63 6c 61 73 73 20 69 6e 63 6c 75 | lacement.for.the.cgi.class.inclu |
| 9120 | 64 65 64 20 69 6e 20 74 68 65 20 72 75 62 79 20 64 69 73 74 72 69 62 75 74 69 6f 6e 2e 0d 0a 23 | ded.in.the.ruby.distribution...# |
| 9140 | 0d 0a 23 20 3d 3d 20 48 6f 77 20 74 6f 20 75 73 65 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 42 61 73 69 | ..#.==.How.to.use..#..#.===.Basi |
| 9160 | 63 73 0d 0a 23 0d 0a 23 20 54 68 69 73 20 63 6c 61 73 73 20 69 73 20 6d 61 64 65 20 74 6f 20 62 | cs..#..#.This.class.is.made.to.b |
| 9180 | 65 20 61 73 20 65 61 73 79 20 61 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 75 73 65 2e 20 41 6e | e.as.easy.as.possible.to.use..An |
| 91a0 | 20 65 78 61 6d 70 6c 65 3a 0d 0a 23 0d 0a 23 20 09 72 65 71 75 69 72 65 20 22 72 77 65 62 22 0d | .example:..#..#..require."rweb". |
| 91c0 | 0a 23 0d 0a 23 20 09 77 65 62 20 3d 20 52 77 65 62 2e 6e 65 77 0d 0a 23 20 09 77 65 62 2e 6f 75 | .#..#..web.=.Rweb.new..#..web.ou |
| 91e0 | 74 20 64 6f 0d 0a 23 20 09 09 77 65 62 2e 70 75 74 73 20 22 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 | t.do..#...web.puts."Hello.world! |
| 9200 | 22 0d 0a 23 20 09 65 6e 64 0d 0a 23 0d 0a 23 20 54 68 65 20 76 69 73 69 74 6f 72 20 77 69 6c 6c | "..#..end..#..#.The.visitor.will |
| 9220 | 20 67 65 74 20 61 20 73 69 6d 70 6c 65 20 22 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 22 20 69 6e 20 | .get.a.simple."Hello.World!".in. |
| 9240 | 68 69 73 20 62 72 6f 77 73 65 72 2e 20 50 6c 65 61 73 65 20 6e 6f 74 69 63 65 2c 0d 0a 23 20 74 | his.browser..Please.notice,..#.t |
| 9260 | 68 61 74 20 77 6f 6e 27 74 20 73 65 74 20 68 74 6d 6c 2d 74 61 67 73 20 66 6f 72 20 79 6f 75 2c | hat.won't.set.html-tags.for.you, |
| 9280 | 20 73 6f 20 79 6f 75 20 73 68 6f 75 6c 64 20 62 65 74 74 65 72 20 64 6f 20 73 6f 6d 65 74 68 69 | .so.you.should.better.do.somethi |
| 92a0 | 6e 67 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 23 0d 0a 23 20 09 72 65 71 75 69 72 65 20 22 72 77 | ng.like.this:..#..#..require."rw |
| 92c0 | 65 62 22 0d 0a 23 0d 0a 23 20 09 77 65 62 20 3d 20 52 77 65 62 2e 6e 65 77 0d 0a 23 20 09 77 65 | eb"..#..#..web.=.Rweb.new..#..we |
| 92e0 | 62 2e 6f 75 74 20 64 6f 0d 0a 23 20 09 09 77 65 62 2e 70 75 74 73 20 22 3c 68 74 6d 6c 3e 3c 62 | b.out.do..#...web.puts."<html><b |
| 9300 | 6f 64 79 3e 48 65 6c 6c 6f 20 77 6f 72 6c 64 21 3c 2f 62 6f 64 79 3e 3c 2f 68 74 6d 6c 3e 22 0d | ody>Hello.world!</body></html>". |
| 9320 | 0a 23 20 09 65 6e 64 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 53 65 74 20 68 65 61 64 65 72 73 0d 0a 23 | .#..end..#..#.===.Set.headers..# |
| 9340 | 20 4f 66 20 63 6f 75 72 73 65 2c 20 69 74 27 73 20 61 6c 73 6f 20 70 6f 73 73 69 62 6c 65 20 74 | .Of.course,.it's.also.possible.t |
| 9360 | 6f 20 74 65 6c 6c 20 74 68 65 20 62 72 6f 77 73 65 72 2c 20 74 68 61 74 20 74 68 65 20 63 6f 6e | o.tell.the.browser,.that.the.con |
| 9380 | 74 65 6e 74 20 6f 66 20 74 68 69 73 0d 0a 23 20 70 61 67 65 20 69 73 20 70 6c 61 69 6e 20 74 65 | tent.of.this..#.page.is.plain.te |
| 93a0 | 78 74 20 69 6e 73 74 65 61 64 20 6f 66 20 68 74 6d 6c 20 63 6f 64 65 3a 0d 0a 23 0d 0a 23 20 09 | xt.instead.of.html.code:..#..#.. |
| 93c0 | 72 65 71 75 69 72 65 20 22 72 77 65 62 22 0d 0a 23 0d 0a 23 20 09 77 65 62 20 3d 20 52 77 65 62 | require."rweb"..#..#..web.=.Rweb |
| 93e0 | 2e 6e 65 77 0d 0a 23 20 09 77 65 62 2e 6f 75 74 20 64 6f 0d 0a 23 20 09 09 77 65 62 2e 68 65 61 | .new..#..web.out.do..#...web.hea |
| 9400 | 64 65 72 28 22 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 22 29 0d | der("content-type:.text/plain"). |
| 9420 | 0a 23 20 09 09 77 65 62 2e 70 75 74 73 20 22 48 65 6c 6c 6f 20 70 6c 61 69 6e 20 77 6f 72 6c 64 | .#...web.puts."Hello.plain.world |
| 9440 | 21 22 0d 0a 23 20 09 65 6e 64 0d 0a 23 0d 0a 23 20 50 6c 65 61 73 65 20 72 65 6d 65 6d 62 65 72 | !"..#..end..#..#.Please.remember |
| 9460 | 2c 20 68 65 61 64 65 72 73 20 63 61 6e 27 74 20 62 65 20 73 65 74 20 61 66 74 65 72 20 74 68 65 | ,.headers.can't.be.set.after.the |
| 9480 | 20 70 61 67 65 20 63 6f 6e 74 65 6e 74 20 68 61 73 20 62 65 65 6e 20 73 65 6e 64 2e 0d 0a 23 20 | .page.content.has.been.send...#. |
| 94a0 | 59 6f 75 20 68 61 76 65 20 74 6f 20 73 65 74 20 61 6c 6c 20 6e 65 73 73 65 73 73 61 72 79 20 68 | You.have.to.set.all.nessessary.h |
| 94c0 | 65 61 64 65 72 73 20 62 65 66 6f 72 65 20 74 68 65 20 66 69 72 73 74 20 70 75 74 73 20 6f 64 65 | eaders.before.the.first.puts.ode |
| 94e0 | 72 20 70 72 69 6e 74 2e 20 49 74 27 73 0d 0a 23 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 63 61 63 | r.print..It's..#.possible.to.cac |
| 9500 | 68 65 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 75 6e 74 69 6c 20 65 76 65 72 79 74 68 69 6e 67 20 | he.the.content.until.everything. |
| 9520 | 69 73 20 63 6f 6d 70 6c 65 74 65 2e 20 44 6f 69 6e 67 20 69 74 20 74 68 69 73 0d 0a 23 20 77 61 | is.complete..Doing.it.this..#.wa |
| 9540 | 79 2c 20 79 6f 75 20 63 61 6e 20 73 65 74 20 68 65 61 64 65 72 73 20 65 76 65 72 79 77 68 65 72 | y,.you.can.set.headers.everywher |
| 9560 | 65 2e 0d 0a 23 0d 0a 23 20 49 66 20 79 6f 75 20 73 65 74 20 61 20 68 65 61 64 65 72 20 74 77 69 | e...#..#.If.you.set.a.header.twi |
| 9580 | 63 65 2c 20 74 68 65 20 73 65 63 6f 6e 64 20 68 65 61 64 65 72 20 77 69 6c 6c 20 72 65 70 6c 61 | ce,.the.second.header.will.repla |
| 95a0 | 63 65 20 74 68 65 20 66 69 72 73 74 20 6f 6e 65 2e 20 54 68 65 0d 0a 23 20 68 65 61 64 65 72 20 | ce.the.first.one..The..#.header. |
| 95c0 | 6e 61 6d 65 20 69 73 20 6e 6f 74 20 63 61 73 65 73 65 6e 73 69 74 69 76 65 2c 20 69 74 20 77 69 | name.is.not.casesensitive,.it.wi |
| 95e0 | 6c 6c 20 61 6c 6c 77 61 79 73 20 63 6f 6e 76 65 72 74 65 64 20 69 6e 20 74 6f 20 74 68 65 0d 0a | ll.allways.converted.in.to.the.. |
| 9600 | 23 20 63 61 70 69 74 61 6c 69 73 65 64 20 66 6f 72 6d 20 73 75 67 67 65 73 74 65 64 20 62 79 20 | #.capitalised.form.suggested.by. |
| 9620 | 74 68 65 20 77 33 63 20 28 68 74 74 70 3a 2f 2f 77 33 2e 6f 72 67 29 0d 0a 23 0d 0a 23 20 3d 3d | the.w3c.(http://w3.org)..#..#.== |
| 9640 | 3d 20 53 65 74 20 63 6f 6f 6b 69 65 73 0d 0a 23 20 53 65 74 74 69 6e 67 20 63 6f 6f 6b 69 65 73 | =.Set.cookies..#.Setting.cookies |
| 9660 | 20 69 73 20 71 75 69 74 65 20 65 61 73 79 3a 0d 0a 23 20 09 69 6e 63 6c 75 64 65 20 27 72 77 65 | .is.quite.easy:..#..include.'rwe |
| 9680 | 62 27 0d 0a 23 0d 0a 23 20 09 77 65 62 20 3d 20 52 77 65 62 2e 6e 65 77 0d 0a 23 20 09 43 6f 6f | b'..#..#..web.=.Rweb.new..#..Coo |
| 96a0 | 6b 69 65 2e 6e 65 77 28 22 56 69 73 69 74 73 22 2c 20 77 65 62 2e 63 6f 6f 6b 69 65 73 5b 27 76 | kie.new("Visits",.web.cookies['v |
| 96c0 | 69 73 69 74 73 27 5d 2e 74 6f 5f 69 20 2b 31 29 0d 0a 23 20 09 77 65 62 2e 6f 75 74 20 64 6f 0d | isits'].to_i.+1)..#..web.out.do. |
| 96e0 | 0a 23 20 09 09 77 65 62 2e 70 75 74 73 20 22 57 65 6c 63 6f 6d 65 20 62 61 63 6b 21 20 59 6f 75 | .#...web.puts."Welcome.back!.You |
| 9700 | 20 76 69 73 69 74 65 64 20 74 68 69 73 20 70 61 67 65 20 23 7b 77 65 62 2e 63 6f 6f 6b 69 65 73 | .visited.this.page.#{web.cookies |
| 9720 | 5b 27 76 69 73 69 74 73 27 5d 2e 74 6f 5f 69 20 2b 31 7d 20 74 69 6d 65 73 22 0d 0a 23 20 09 65 | ['visits'].to_i.+1}.times"..#..e |
| 9740 | 6e 64 0d 0a 23 0d 0a 23 20 53 65 65 20 74 68 65 20 63 6c 61 73 73 20 43 6f 6f 6b 69 65 20 66 6f | nd..#..#.See.the.class.Cookie.fo |
| 9760 | 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 47 65 74 20 66 6f | r.more.details...#..#.===.Get.fo |
| 9780 | 72 6d 20 61 6e 64 20 63 6f 6f 6b 69 65 20 76 61 6c 75 65 73 0d 0a 23 20 54 68 65 72 65 20 61 72 | rm.and.cookie.values..#.There.ar |
| 97a0 | 65 20 66 6f 75 72 20 77 61 79 73 20 74 6f 20 73 75 62 6d 69 74 20 64 61 74 61 20 66 72 6f 6d 20 | e.four.ways.to.submit.data.from. |
| 97c0 | 74 68 65 20 62 72 6f 77 73 65 72 20 74 6f 20 74 68 65 20 73 65 72 76 65 72 20 61 6e 64 20 79 6f | the.browser.to.the.server.and.yo |
| 97e0 | 75 72 0d 0a 23 20 72 75 62 79 20 73 63 72 69 70 74 3a 20 76 69 61 20 47 45 54 2c 20 50 4f 53 54 | ur..#.ruby.script:.via.GET,.POST |
| 9800 | 2c 20 63 6f 6f 6b 69 65 73 20 61 6e 64 20 66 69 6c 65 20 75 70 6c 6f 61 64 2e 20 52 77 65 62 20 | ,.cookies.and.file.upload..Rweb. |
| 9820 | 64 6f 65 73 6e 27 74 20 73 75 70 70 6f 72 74 0d 0a 23 20 66 69 6c 65 20 75 70 6c 6f 61 64 20 62 | doesn't.support..#.file.upload.b |
| 9840 | 79 20 6e 6f 77 2e 0d 0a 23 0d 0a 23 20 09 69 6e 63 6c 75 64 65 20 27 72 77 65 62 27 0d 0a 23 0d | y.now...#..#..include.'rweb'..#. |
| 9860 | 0a 23 20 09 77 65 62 20 3d 20 52 77 65 62 2e 6e 65 77 0d 0a 23 20 09 77 65 62 2e 6f 75 74 20 64 | .#..web.=.Rweb.new..#..web.out.d |
| 9880 | 6f 0d 0a 23 20 09 09 77 65 62 2e 70 72 69 6e 74 20 22 61 63 74 69 6f 6e 3a 20 23 7b 77 65 62 2e | o..#...web.print."action:.#{web. |
| 98a0 | 67 65 74 5b 27 61 63 74 69 6f 6e 27 5d 7d 20 22 0d 0a 23 20 09 09 77 65 62 2e 70 75 74 73 20 22 | get['action']}."..#...web.puts." |
| 98c0 | 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 63 6f 6f 6b 69 65 20 27 76 69 73 69 74 73 27 | The.value.of.the.cookie.'visits' |
| 98e0 | 20 69 73 20 23 7b 77 65 62 2e 63 6f 6f 6b 69 65 73 5b 27 76 69 73 69 74 73 27 5d 7d 22 0d 0a 23 | .is.#{web.cookies['visits']}"..# |
| 9900 | 20 09 09 77 65 62 2e 70 75 74 73 20 22 54 68 65 20 70 6f 73 74 20 70 61 72 61 6d 65 74 65 72 20 | ...web.puts."The.post.parameter. |
| 9920 | 27 74 65 73 74 5b 27 78 27 5d 27 20 69 73 20 23 7b 77 65 62 2e 70 6f 73 74 5b 27 74 65 73 74 27 | 'test['x']'.is.#{web.post['test' |
| 9940 | 5d 5b 27 78 27 5d 7d 22 0d 0a 23 20 09 65 6e 64 0d 0a 0d 0a 52 57 45 42 5f 56 45 52 53 49 4f 4e | ]['x']}"..#..end....RWEB_VERSION |
| 9960 | 20 3d 20 22 30 2e 31 2e 30 22 0d 0a 52 57 45 42 20 3d 20 22 72 77 65 62 2f 23 7b 52 57 45 42 5f | .=."0.1.0"..RWEB.=."rweb/#{RWEB_ |
| 9980 | 56 45 52 53 49 4f 4e 7d 22 0d 0a 0d 0a 23 72 65 71 75 69 72 65 20 27 72 77 65 62 63 6f 6f 6b 69 | VERSION}"....#require.'rwebcooki |
| 99a0 | 65 27 20 2d 3e 20 65 64 69 74 20 62 79 20 62 75 6e 6e 79 20 3a 2d 29 0d 0a 0d 0a 63 6c 61 73 73 | e'.->.edit.by.bunny.:-)....class |
| 99c0 | 20 52 77 65 62 0d 0a 20 20 20 20 23 20 41 6c 6c 20 70 61 72 61 6d 65 74 65 72 20 73 75 62 6d 69 | .Rweb......#.All.parameter.submi |
| 99e0 | 74 74 65 64 20 76 69 61 20 74 68 65 20 47 45 54 20 6d 65 74 68 6f 64 20 61 72 65 20 61 76 61 69 | tted.via.the.GET.method.are.avai |
| 9a00 | 6c 61 62 6c 65 20 69 6e 20 61 74 74 72 69 62 75 74 65 0d 0a 09 09 23 20 67 65 74 2e 20 54 68 69 | lable.in.attribute....#.get..Thi |
| 9a20 | 73 20 69 73 20 48 61 73 68 2c 20 77 68 65 72 65 20 65 76 65 72 79 20 70 61 72 61 6d 65 74 65 72 | s.is.Hash,.where.every.parameter |
| 9a40 | 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 61 73 20 61 20 6b 65 79 2d 76 61 6c 75 65 0d 0a 09 09 | .is.available.as.a.key-value.... |
| 9a60 | 23 20 70 61 69 72 2e 0d 0a 09 09 23 0d 0a 09 09 23 20 49 66 20 79 6f 75 72 20 69 6e 70 75 74 20 | #.pair.....#....#.If.your.input. |
| 9a80 | 74 61 67 20 68 61 73 20 61 20 6e 61 6d 65 20 6c 69 6b 65 20 74 68 69 73 20 6f 6e 65 2c 20 69 74 | tag.has.a.name.like.this.one,.it |
| 9aa0 | 27 73 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 61 76 61 69 6c 61 62 6c 65 0d 0a 09 09 23 20 | 's.value.will.be.available....#. |
| 9ac0 | 61 73 20 77 65 62 2e 67 65 74 5b 22 66 69 65 6c 64 6e 61 6d 65 22 5d 0d 0a 09 09 23 20 20 3c 69 | as.web.get["fieldname"]....#..<i |
| 9ae0 | 6e 70 75 74 20 6e 61 6d 65 3d 22 66 69 65 6c 64 6e 61 6d 65 22 3e 0d 0a 09 09 23 20 59 6f 75 20 | nput.name="fieldname">....#.You. |
| 9b00 | 63 61 6e 20 73 75 62 6d 69 74 20 76 61 6c 75 65 73 20 61 73 20 61 20 48 61 73 68 0d 0a 09 09 23 | can.submit.values.as.a.Hash....# |
| 9b20 | 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 74 65 78 74 5b 27 69 6e 64 65 78 27 5d 22 3e 0d 0a | ..<input.name="text['index']">.. |
| 9b40 | 09 09 23 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 74 65 78 74 5b 27 69 6e 64 65 78 32 27 5d | ..#..<input.name="text['index2'] |
| 9b60 | 22 3e 0d 0a 09 09 23 20 77 69 6c 6c 20 62 65 20 61 76 61 69 6c 61 62 6c 65 20 61 73 0d 0a 09 09 | ">....#.will.be.available.as.... |
| 9b80 | 23 20 20 77 65 62 2e 67 65 74 5b 22 74 65 78 74 22 5d 5b 22 69 6e 64 65 78 22 5d 0d 0a 09 09 23 | #..web.get["text"]["index"]....# |
| 9ba0 | 20 20 77 65 62 2e 67 65 74 5b 22 74 65 78 74 22 5d 5b 22 69 6e 64 65 78 32 22 5d 0d 0a 09 09 23 | ..web.get["text"]["index2"]....# |
| 9bc0 | 20 49 6e 74 65 67 65 72 73 20 61 72 65 20 61 6c 73 6f 20 70 6f 73 73 69 62 6c 65 0d 0a 09 09 23 | .Integers.are.also.possible....# |
| 9be0 | 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 69 6e 74 5b 32 5d 22 3e 0d 0a 09 09 23 20 20 3c 69 | ..<input.name="int[2]">....#..<i |
| 9c00 | 6e 70 75 74 20 6e 61 6d 65 3d 22 69 6e 74 5b 33 5d 5b 27 68 69 27 5d 3e 0d 0a 09 09 23 20 77 69 | nput.name="int[3]['hi']>....#.wi |
| 9c20 | 6c 6c 20 62 65 20 61 76 61 69 6c 61 62 6c 65 20 61 73 0d 0a 09 09 23 20 20 77 65 62 2e 67 65 74 | ll.be.available.as....#..web.get |
| 9c40 | 5b 22 69 6e 74 22 5d 5b 32 5d 0d 0a 09 09 23 20 20 77 65 62 2e 67 65 74 5b 22 69 6e 74 22 5d 5b | ["int"][2]....#..web.get["int"][ |
| 9c60 | 33 5d 5b 22 68 69 22 5d 0d 0a 09 09 23 20 49 66 20 79 6f 75 20 73 70 65 63 69 66 79 20 6e 6f 20 | 3]["hi"]....#.If.you.specify.no. |
| 9c80 | 69 6e 64 65 78 2c 20 74 68 65 20 6c 6f 77 65 73 74 20 75 6e 75 73 65 64 20 69 6e 64 65 78 20 77 | index,.the.lowest.unused.index.w |
| 9ca0 | 69 6c 6c 20 62 65 20 75 73 65 64 3a 0d 0a 09 09 23 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 | ill.be.used:....#..<input.name=" |
| 9cc0 | 69 6e 74 5b 5d 22 3e 3c 21 2d 2d 20 46 69 72 73 74 20 46 69 65 6c 64 20 2d 2d 3e 0d 0a 09 09 23 | int[]"><!--.First.Field.-->....# |
| 9ce0 | 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 69 6e 74 5b 5d 22 3e 3c 21 2d 2d 20 53 65 63 6f 6e | ..<input.name="int[]"><!--.Secon |
| 9d00 | 64 20 6f 6e 65 20 2d 2d 3e 0d 0a 09 09 23 20 77 69 6c 6c 20 62 65 20 61 76 61 69 6c 61 62 6c 65 | d.one.-->....#.will.be.available |
| 9d20 | 20 61 73 0d 0a 09 09 23 20 20 77 65 62 2e 67 65 74 5b 22 69 6e 74 22 5d 5b 30 5d 20 23 20 46 69 | .as....#..web.get["int"][0].#.Fi |
| 9d40 | 72 73 74 20 46 69 65 6c 64 0d 0a 09 09 23 20 20 77 65 62 2e 67 65 74 5b 22 69 6e 74 22 5d 5b 31 | rst.Field....#..web.get["int"][1 |
| 9d60 | 5d 20 23 20 53 65 63 6f 6e 64 20 6f 6e 65 0d 0a 09 09 23 20 50 6c 65 61 73 65 20 6e 6f 74 69 63 | ].#.Second.one....#.Please.notic |
| 9d80 | 65 2c 20 74 68 69 73 20 64 6f 65 73 6e 27 64 20 77 6f 72 6b 20 6c 69 6b 65 20 79 6f 75 20 6d 69 | e,.this.doesn'd.work.like.you.mi |
| 9da0 | 67 68 74 20 65 78 70 65 63 74 3a 0d 0a 09 09 23 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 74 | ght.expect:....#..<input.name="t |
| 9dc0 | 65 78 74 5b 69 6e 64 65 78 5d 22 3e 0d 0a 09 09 23 20 49 74 20 77 69 6c 6c 20 6e 6f 74 20 62 65 | ext[index]">....#.It.will.not.be |
| 9de0 | 20 61 76 61 69 6c 61 62 6c 65 20 61 73 20 77 65 62 2e 67 65 74 5b 22 74 65 78 74 22 5d 5b 22 69 | .available.as.web.get["text"]["i |
| 9e00 | 6e 64 65 78 22 5d 20 62 75 74 0d 0a 09 09 23 20 20 77 65 62 2e 67 65 74 5b 22 74 65 78 74 5b 69 | ndex"].but....#..web.get["text[i |
| 9e20 | 6e 64 65 78 5d 22 5d 0d 0a 20 20 20 20 61 74 74 72 5f 72 65 61 64 65 72 20 3a 67 65 74 0d 0a 0d | ndex]"]......attr_reader.:get... |
| 9e40 | 0a 20 20 20 20 23 20 41 6c 6c 20 70 61 72 61 6d 65 74 65 72 73 20 73 75 62 6d 69 74 74 65 64 20 | .....#.All.parameters.submitted. |
| 9e60 | 76 69 61 20 50 4f 53 54 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 65 20 61 74 | via.POST.are.available.in.the.at |
| 9e80 | 74 72 69 62 75 74 65 20 70 6f 73 74 2e 20 49 74 0d 0a 09 09 23 20 77 6f 72 6b 73 20 6c 69 6b 65 | tribute.post..It....#.works.like |
| 9ea0 | 20 74 68 65 20 67 65 74 20 61 74 74 72 69 62 75 74 65 2e 0d 0a 09 09 23 20 20 3c 69 6e 70 75 74 | .the.get.attribute.....#..<input |
| 9ec0 | 20 6e 61 6d 65 3d 22 74 65 78 74 5b 30 5d 22 3e 0d 0a 09 09 23 20 77 69 6c 6c 20 62 65 20 61 76 | .name="text[0]">....#.will.be.av |
| 9ee0 | 61 69 6c 61 62 6c 65 20 61 73 0d 0a 09 09 23 20 20 77 65 62 2e 70 6f 73 74 5b 22 74 65 78 74 22 | ailable.as....#..web.post["text" |
| 9f00 | 5d 5b 30 5d 0d 0a 09 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 70 6f 73 74 0d 0a 0d 0a 20 20 20 | ][0]....attr_reader.:post....... |
| 9f20 | 20 23 20 41 6c 6c 20 63 6f 6f 6b 69 65 73 20 73 75 62 6d 69 74 74 65 64 20 62 79 20 74 68 65 20 | .#.All.cookies.submitted.by.the. |
| 9f40 | 62 72 6f 77 73 65 72 20 61 72 65 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 63 6f 6f 6b 69 65 73 | browser.are.available.in.cookies |
| 9f60 | 2e 20 54 68 69 73 20 69 73 20 61 0d 0a 09 09 23 20 48 61 73 68 2c 20 77 68 65 72 65 20 65 76 65 | ..This.is.a....#.Hash,.where.eve |
| 9f80 | 72 79 20 63 6f 6f 6b 69 65 20 69 73 20 61 20 6b 65 79 2d 76 61 6c 75 65 20 70 61 69 72 2e 0d 0a | ry.cookie.is.a.key-value.pair... |
| 9fa0 | 09 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 63 6f 6f 6b 69 65 73 0d 0a 0d 0a 20 20 20 20 23 20 | ..attr_reader.:cookies........#. |
| 9fc0 | 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 62 72 6f 77 73 65 72 20 69 64 65 6e 74 69 66 69 | The.name.of.the.browser.identifi |
| 9fe0 | 63 61 74 69 6f 6e 20 69 73 20 73 75 62 6d 69 74 74 65 64 20 61 73 20 55 53 45 52 5f 41 47 45 4e | cation.is.submitted.as.USER_AGEN |
| a000 | 54 20 61 6e 64 0d 0a 09 09 23 20 61 76 61 69 6c 61 62 6c 65 20 69 6e 20 74 68 69 73 20 61 74 74 | T.and....#.available.in.this.att |
| a020 | 72 69 62 75 74 65 2e 0d 0a 09 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 75 73 65 72 5f 61 67 65 | ribute.....attr_reader.:user_age |
| a040 | 6e 74 0d 0a 0d 0a 20 20 20 20 23 20 54 68 65 20 49 50 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 | nt........#.The.IP.address.of.th |
| a060 | 65 20 63 6c 69 65 6e 74 2e 0d 0a 09 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 72 65 6d 6f 74 65 | e.client.....attr_reader.:remote |
| a080 | 5f 61 64 64 72 0d 0a 0d 0a 20 20 20 20 23 20 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 52 77 65 | _addr........#.Creates.a.new.Rwe |
| a0a0 | 62 20 6f 62 6a 65 63 74 2e 20 54 68 69 73 20 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 64 6f 6e 65 20 | b.object..This.should.only.done. |
| a0c0 | 6f 6e 63 65 2e 20 59 6f 75 20 63 61 6e 20 73 65 74 20 76 61 72 69 6f 75 73 0d 0a 20 20 20 20 23 | once..You.can.set.various......# |
| a0e0 | 20 6f 70 74 69 6f 6e 73 20 76 69 61 20 74 68 65 20 73 65 74 74 69 6e 67 73 20 68 61 73 68 2e 0d | .options.via.the.settings.hash.. |
| a100 | 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 22 63 61 63 68 65 22 20 3d 3e 20 74 72 75 65 3a 20 45 | .....#......#."cache".=>.true:.E |
| a120 | 76 65 72 79 74 68 69 6e 67 20 79 6f 75 20 73 63 72 69 70 74 20 73 65 6e 64 20 74 6f 20 74 68 65 | verything.you.script.send.to.the |
| a140 | 20 63 6c 69 65 6e 74 20 77 69 6c 6c 20 62 65 20 63 61 63 68 65 64 0d 0a 20 20 20 20 23 20 75 6e | .client.will.be.cached......#.un |
| a160 | 74 69 6c 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 6f 75 74 20 62 6c 6f 63 6b 20 6f 72 20 | til.the.end.of.the.out.block.or. |
| a180 | 75 6e 74 69 6c 20 66 6c 75 73 68 20 69 73 20 63 61 6c 6c 65 64 2e 20 54 68 69 73 20 77 61 79 2c | until.flush.is.called..This.way, |
| a1a0 | 20 79 6f 75 0d 0a 20 20 20 20 23 20 63 61 6e 20 6d 6f 64 69 66 79 20 68 65 61 64 65 72 73 20 61 | .you......#.can.modify.headers.a |
| a1c0 | 6e 64 20 63 6f 6f 6b 69 65 73 20 65 76 65 6e 20 61 66 74 65 72 20 70 72 69 6e 74 69 6e 67 20 73 | nd.cookies.even.after.printing.s |
| a1e0 | 6f 6d 65 74 68 69 6e 67 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 2e 0d 0a 20 20 20 20 23 0d 0a | omething.to.the.client.......#.. |
| a200 | 20 20 20 20 23 20 22 73 61 66 65 22 20 3d 3e 20 6c 65 76 65 6c 3a 20 43 68 61 6e 67 65 73 20 74 | ....#."safe".=>.level:.Changes.t |
| a220 | 68 65 20 24 53 41 46 45 20 61 74 74 72 69 62 75 74 65 2e 20 42 79 20 64 65 66 61 75 6c 74 2c 20 | he.$SAFE.attribute..By.default,. |
| a240 | 24 53 41 46 45 20 77 69 6c 6c 20 62 65 20 73 65 74 0d 0a 20 20 20 20 23 20 74 6f 20 31 2e 20 49 | $SAFE.will.be.set......#.to.1..I |
| a260 | 66 20 24 53 41 46 45 20 69 73 20 61 6c 72 65 61 64 79 20 68 69 67 68 65 72 20 74 68 61 6e 20 74 | f.$SAFE.is.already.higher.than.t |
| a280 | 68 69 73 20 76 61 6c 75 65 2c 20 69 74 20 77 6f 6e 27 74 20 62 65 20 63 68 61 6e 67 65 64 2e 0d | his.value,.it.won't.be.changed.. |
| a2a0 | 0a 20 20 20 20 23 0d 0a 20 20 20 20 23 20 22 73 69 6c 65 6e 64 22 20 3d 3e 20 74 72 75 65 3a 20 | .....#......#."silend".=>.true:. |
| a2c0 | 4e 6f 72 6d 61 6c 79 2c 20 52 77 65 62 20 61 64 64 73 20 61 75 74 6f 6d 61 74 69 63 6c 79 20 61 | Normaly,.Rweb.adds.automaticly.a |
| a2e0 | 20 68 65 61 64 65 72 20 6c 69 6b 65 20 74 68 69 73 0d 0a 20 20 20 20 23 20 22 58 2d 50 6f 77 65 | .header.like.this......#."X-Powe |
| a300 | 72 65 64 2d 42 79 3a 20 52 77 65 62 2f 78 2e 78 2e 78 20 28 52 75 62 79 2f 79 2e 79 2e 79 29 22 | red-By:.Rweb/x.x.x.(Ruby/y.y.y)" |
| a320 | 2e 20 57 69 74 68 20 74 68 65 20 73 69 6c 65 6e 64 20 6f 70 74 69 6f 6e 20 79 6f 75 20 63 61 6e | ..With.the.silend.option.you.can |
| a340 | 0d 0a 20 20 20 20 23 20 73 75 70 70 72 65 73 73 20 74 68 69 73 2e 0d 0a 20 20 20 20 64 65 66 20 | ......#.suppress.this.......def. |
| a360 | 69 6e 69 74 69 61 6c 69 7a 65 20 28 73 65 74 74 69 6e 67 73 20 3d 20 7b 7d 29 0d 0a 20 20 20 20 | initialize.(settings.=.{})...... |
| a380 | 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 20 40 68 65 61 64 65 72 20 3d 20 7b 7d 0d | ....#.{{{..........@header.=.{}. |
| a3a0 | 0a 20 20 20 20 20 20 20 20 40 63 6f 6f 6b 69 65 73 20 3d 20 7b 7d 0d 0a 20 20 20 20 20 20 20 20 | .........@cookies.=.{}.......... |
| a3c0 | 40 67 65 74 20 3d 20 7b 7d 0d 0a 20 20 20 20 20 20 20 20 40 70 6f 73 74 20 3d 20 7b 7d 0d 0a 0d | @get.=.{}..........@post.=.{}... |
| a3e0 | 0a 20 20 20 20 20 20 20 20 23 20 49 6e 74 65 72 6e 61 6c 20 61 74 74 72 69 62 75 74 65 73 0d 0a | .........#.Internal.attributes.. |
| a400 | 20 20 20 20 20 20 20 20 40 73 74 61 74 75 73 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 40 | ........@status.=.nil..........@ |
| a420 | 72 65 61 73 6f 6e 50 68 72 61 73 65 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 40 73 65 74 | reasonPhrase.=.nil..........@set |
| a440 | 63 6f 6f 6b 69 65 73 20 3d 20 5b 5d 0d 0a 20 20 20 20 20 20 20 20 40 6f 75 74 70 75 74 5f 73 74 | cookies.=.[]..........@output_st |
| a460 | 61 72 74 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 40 6f 75 74 70 75 74 5f | arted.=.false;..........@output_ |
| a480 | 61 6c 6c 6f 77 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 40 6d 6f 64 | allowed.=.false;............@mod |
| a4a0 | 5f 72 75 62 79 20 3d 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 40 65 6e 76 20 3d 20 45 4e | _ruby.=.false..........@env.=.EN |
| a4c0 | 56 2e 74 6f 5f 68 61 73 68 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 64 65 66 69 6e 65 64 3f | V.to_hash............if.defined? |
| a4e0 | 28 4d 4f 44 5f 52 55 42 59 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 6f 75 74 70 75 74 5f | (MOD_RUBY)..............@output_ |
| a500 | 6d 65 74 68 6f 64 20 3d 20 22 6d 6f 64 5f 72 75 62 79 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | method.=."mod_ruby"............. |
| a520 | 20 40 6d 6f 64 5f 72 75 62 79 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 | .@mod_ruby.=.true..........elsif |
| a540 | 20 40 65 6e 76 5b 27 53 45 52 56 45 52 5f 53 4f 46 54 57 41 52 45 27 5d 20 3d 7e 20 2f 5e 4d 69 | .@env['SERVER_SOFTWARE'].=~./^Mi |
| a560 | 63 72 6f 73 6f 66 74 2d 49 49 53 2f 69 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 6f 75 74 70 | crosoft-IIS/i..............@outp |
| a580 | 75 74 5f 6d 65 74 68 6f 64 20 3d 20 22 6e 70 68 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d | ut_method.=."nph"..........else. |
| a5a0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 6f 75 74 70 75 74 5f 6d 65 74 68 6f 64 20 3d 20 22 70 | .............@output_method.=."p |
| a5c0 | 68 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 75 6e 6c 65 73 | h"..........end............unles |
| a5e0 | 73 20 73 65 74 74 69 6e 67 73 2e 69 73 5f 61 3f 28 48 61 73 68 29 0d 0a 20 20 20 20 20 20 20 20 | s.settings.is_a?(Hash).......... |
| a600 | 20 20 20 20 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 73 65 74 74 69 6e 67 73 20 6d | ....raise.TypeError,."settings.m |
| a620 | 75 73 74 20 62 65 20 61 20 48 61 73 68 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 | ust.be.a.Hash"..........end..... |
| a640 | 20 20 20 20 20 40 73 65 74 74 69 6e 67 73 20 3d 20 73 65 74 74 69 6e 67 73 0d 0a 0d 0a 20 20 20 | .....@settings.=.settings....... |
| a660 | 20 20 20 20 20 75 6e 6c 65 73 73 20 40 73 65 74 74 69 6e 67 73 2e 68 61 73 5f 6b 65 79 3f 28 22 | .....unless.@settings.has_key?(" |
| a680 | 73 61 66 65 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 73 65 74 74 69 6e 67 73 5b 22 73 | safe")..............@settings["s |
| a6a0 | 61 66 65 22 5d 20 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 | afe"].=.1..........end.......... |
| a6c0 | 20 20 69 66 20 24 53 41 46 45 20 3c 20 40 73 65 74 74 69 6e 67 73 5b 22 73 61 66 65 22 5d 0d 0a | ..if.$SAFE.<.@settings["safe"].. |
| a6e0 | 20 20 20 20 20 20 20 20 20 20 20 20 24 53 41 46 45 20 3d 20 40 73 65 74 74 69 6e 67 73 5b 22 73 | ............$SAFE.=.@settings["s |
| a700 | 61 66 65 22 5d 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 75 6e | afe"]..........end............un |
| a720 | 6c 65 73 73 20 40 73 65 74 74 69 6e 67 73 2e 68 61 73 5f 6b 65 79 3f 28 22 63 61 63 68 65 22 29 | less.@settings.has_key?("cache") |
| a740 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 73 65 74 74 69 6e 67 73 5b 22 63 61 63 68 65 22 5d | ..............@settings["cache"] |
| a760 | 20 3d 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 | .=.false..........end........... |
| a780 | 20 23 20 6d 6f 64 5f 72 75 62 79 20 73 65 74 73 20 6e 6f 20 51 55 45 52 59 5f 53 54 52 49 4e 47 | .#.mod_ruby.sets.no.QUERY_STRING |
| a7a0 | 20 76 61 72 69 61 62 6c 65 2c 20 69 66 20 6e 6f 20 47 45 54 2d 50 61 72 61 6d 65 74 65 72 73 20 | .variable,.if.no.GET-Parameters. |
| a7c0 | 61 72 65 20 67 69 76 65 6e 0d 0a 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 65 6e 76 2e 68 | are.given..........unless.@env.h |
| a7e0 | 61 73 5f 6b 65 79 3f 28 22 51 55 45 52 59 5f 53 54 52 49 4e 47 22 29 0d 0a 20 20 20 20 20 20 20 | as_key?("QUERY_STRING")......... |
| a800 | 20 20 20 20 20 40 65 6e 76 5b 22 51 55 45 52 59 5f 53 54 52 49 4e 47 22 5d 20 3d 20 22 22 0d 0a | .....@env["QUERY_STRING"].=."".. |
| a820 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 20 4e 6f 77 20 77 65 20 | ........end............#.Now.we. |
| a840 | 73 70 6c 69 74 20 74 68 65 20 51 55 45 52 59 5f 53 54 52 49 4e 47 20 62 79 20 74 68 65 20 73 65 | split.the.QUERY_STRING.by.the.se |
| a860 | 70 65 72 61 74 6f 72 73 20 26 20 61 6e 64 20 3b 20 6f 72 2c 20 69 66 0d 0a 20 20 20 20 20 20 20 | perators.&.and.;.or,.if......... |
| a880 | 20 23 20 73 70 65 63 69 66 69 65 64 2c 20 73 65 74 74 69 6e 67 73 5b 27 67 65 74 20 73 65 70 65 | .#.specified,.settings['get.sepe |
| a8a0 | 72 61 74 6f 72 27 5d 0d 0a 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 73 65 74 74 69 6e 67 | rator']..........unless.@setting |
| a8c0 | 73 2e 68 61 73 5f 6b 65 79 3f 28 22 67 65 74 20 73 65 70 65 72 61 74 6f 72 22 29 0d 0a 20 20 20 | s.has_key?("get.seperator")..... |
| a8e0 | 20 20 20 20 20 20 20 20 20 67 65 74 5f 61 72 67 73 20 3d 20 40 65 6e 76 5b 27 51 55 45 52 59 5f | .........get_args.=.@env['QUERY_ |
| a900 | 53 54 52 49 4e 47 27 5d 2e 73 70 6c 69 74 28 2f 5b 26 3b 5d 2f 29 0d 0a 20 20 20 20 20 20 20 20 | STRING'].split(/[&;]/).......... |
| a920 | 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 61 72 67 73 20 3d 20 40 65 6e | else..............get_args.=.@en |
| a940 | 76 5b 27 51 55 45 52 59 5f 53 54 52 49 4e 47 27 5d 2e 73 70 6c 69 74 28 40 73 65 74 74 69 6e 67 | v['QUERY_STRING'].split(@setting |
| a960 | 73 5b 27 67 65 74 20 73 65 70 65 72 61 74 6f 72 27 5d 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 | s['get.seperator'])..........end |
| a980 | 0d 0a 0d 0a 20 20 20 20 20 20 20 20 67 65 74 5f 61 72 67 73 2e 65 61 63 68 20 64 6f 20 7c 20 61 | ............get_args.each.do.|.a |
| a9a0 | 72 67 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 6b 65 79 2c 20 61 72 67 5f 76 | rg.|..............arg_key,.arg_v |
| a9c0 | 61 6c 20 3d 20 61 72 67 2e 73 70 6c 69 74 28 2f 3d 2f 2c 20 32 29 0d 0a 20 20 20 20 20 20 20 20 | al.=.arg.split(/=/,.2).......... |
| a9e0 | 20 20 20 20 61 72 67 5f 6b 65 79 20 3d 20 52 77 65 62 3a 3a 75 6e 65 73 63 61 70 65 28 61 72 67 | ....arg_key.=.Rweb::unescape(arg |
| aa00 | 5f 6b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 76 61 6c 20 3d 20 52 77 65 | _key)..............arg_val.=.Rwe |
| aa20 | 62 3a 3a 75 6e 65 73 63 61 70 65 28 61 72 67 5f 76 61 6c 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 | b::unescape(arg_val)............ |
| aa40 | 20 20 20 20 23 20 50 61 72 73 65 20 6e 61 6d 65 73 20 6c 69 6b 65 20 6e 61 6d 65 5b 30 5d 2c 20 | ....#.Parse.names.like.name[0],. |
| aa60 | 6e 61 6d 65 5b 27 74 65 78 74 27 5d 20 6f 72 20 6e 61 6d 65 5b 5d 0d 0a 20 20 20 20 20 20 20 20 | name['text'].or.name[].......... |
| aa80 | 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 2f 5e 28 2e 2b 29 5c 5b 28 22 5b 5e 5c 5d 5d 2a 22 7c | ....pattern.=./^(.+)\[("[^\]]*"| |
| aaa0 | 27 5b 5e 5c 5d 5d 2a 27 7c 5b 30 2d 39 5d 2a 29 5c 5d 24 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 | '[^\]]*'|[0-9]*)\]$/............ |
| aac0 | 20 20 6b 65 79 73 20 3d 20 5b 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 6d | ..keys.=.[]..............while.m |
| aae0 | 61 74 63 68 20 3d 20 70 61 74 74 65 72 6e 2e 6d 61 74 63 68 28 61 72 67 5f 6b 65 79 29 0d 0a 20 | atch.=.pattern.match(arg_key)... |
| ab00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 6b 65 79 20 3d 20 6d 61 74 63 68 5b 31 | ...............arg_key.=.match[1 |
| ab20 | 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 73 20 3d 20 5b 6d 61 74 63 68 | ]..................keys.=.[match |
| ab40 | 5b 32 5d 5d 20 2b 20 6b 65 79 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | [2]].+.keys..............end.... |
| ab60 | 20 20 20 20 20 20 20 20 20 20 6b 65 79 73 20 3d 20 5b 61 72 67 5f 6b 65 79 5d 20 2b 20 6b 65 79 | ..........keys.=.[arg_key].+.key |
| ab80 | 73 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6b 74 20 3d 20 40 67 65 74 0d 0a 20 20 20 | s................akt.=.@get..... |
| aba0 | 20 20 20 20 20 20 20 20 20 6c 61 73 74 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | .........last.=.nil............. |
| abc0 | 20 6c 61 73 74 6b 65 79 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 73 | .lastkey.=.nil..............keys |
| abe0 | 2e 65 61 63 68 20 64 6f 20 7c 6b 65 79 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .each.do.|key|.................. |
| ac00 | 69 66 20 6b 65 79 20 3d 3d 20 22 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | if.key.==."".................... |
| ac20 | 20 20 23 20 4e 6f 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 20 28 6c 69 6b 65 20 69 6e 20 22 74 | ..#.No.key.specified.(like.in."t |
| ac40 | 65 73 74 5b 5d 22 29 2c 20 73 6f 20 77 65 20 75 73 65 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 | est[]"),.so.we.use.the.......... |
| ac60 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6c 6f 77 65 72 73 74 20 75 6e 75 73 65 64 20 49 6e 74 | ............#.lowerst.unused.Int |
| ac80 | 65 67 65 72 20 61 73 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | eger.as.key..................... |
| aca0 | 20 6b 65 79 20 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 | .key.=.0......................wh |
| acc0 | 69 6c 65 20 61 6b 74 2e 68 61 73 5f 6b 65 79 3f 28 6b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 | ile.akt.has_key?(key)........... |
| ace0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 2b 3d 20 31 0d 0a 20 20 20 20 20 20 20 | ...............key.+=.1......... |
| ad00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .............end................ |
| ad20 | 20 20 65 6c 73 69 66 20 2f 5e 5b 30 2d 39 5d 2a 24 2f 20 3d 7e 20 6b 65 79 0d 0a 20 20 20 20 20 | ..elsif./^[0-9]*$/.=~.key....... |
| ad40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 66 20 74 68 65 20 69 6e 64 65 78 20 69 73 | ...............#.If.the.index.is |
| ad60 | 20 6e 75 6d 65 72 69 63 61 6c 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20 61 6e 20 49 6e 74 65 | .numerical.convert.it.to.an.Inte |
| ad80 | 67 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b | ger......................key.=.k |
| ada0 | 65 79 2e 74 6f 5f 69 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 6b | ey.to_i..................elsif.k |
| adc0 | 65 79 5b 30 5d 2e 63 68 72 20 3d 3d 20 22 27 22 20 7c 7c 20 6b 65 79 5b 30 5d 2e 63 68 72 20 3d | ey[0].chr.==."'".||.key[0].chr.= |
| ade0 | 3d 20 27 22 27 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d | =.'"'......................key.= |
| ae00 | 20 6b 65 79 5b 31 2c 20 6b 65 79 2e 6c 65 6e 67 74 68 28 29 20 2d 32 5d 0d 0a 20 20 20 20 20 20 | .key[1,.key.length().-2]........ |
| ae20 | 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 | ..........end..................i |
| ae40 | 66 20 21 61 6b 74 2e 68 61 73 5f 6b 65 79 3f 28 6b 65 79 29 20 7c 7c 20 21 61 6b 74 5b 6b 65 79 | f.!akt.has_key?(key).||.!akt[key |
| ae60 | 5d 2e 63 6c 61 73 73 20 3d 3d 20 48 61 73 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ].class.==.Hash................. |
| ae80 | 20 20 20 20 20 23 20 63 72 65 61 74 65 20 61 6e 20 65 6d 70 74 79 20 48 61 73 68 20 69 66 20 74 | .....#.create.an.empty.Hash.if.t |
| aea0 | 68 65 72 65 20 69 73 6e 27 74 20 61 6c 72 65 61 64 79 20 6f 6e 65 0d 0a 20 20 20 20 20 20 20 20 | here.isn't.already.one.......... |
| aec0 | 20 20 20 20 20 20 20 20 20 20 20 20 61 6b 74 5b 6b 65 79 5d 20 3d 20 7b 7d 0d 0a 20 20 20 20 20 | ............akt[key].=.{}....... |
| aee0 | 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........end.................. |
| af00 | 6c 61 73 74 20 3d 20 61 6b 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 | last.=.akt..................last |
| af20 | 6b 65 79 20 3d 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6b 74 20 3d | key.=.key..................akt.= |
| af40 | 20 61 6b 74 5b 6b 65 79 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | .akt[key]..............end...... |
| af60 | 20 20 20 20 20 20 20 20 6c 61 73 74 5b 6c 61 73 74 6b 65 79 5d 20 3d 20 61 72 67 5f 76 61 6c 0d | ........last[lastkey].=.arg_val. |
| af80 | 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 65 6e 76 5b | .........end............if.@env[ |
| afa0 | 27 52 45 51 55 45 53 54 5f 4d 45 54 48 4f 44 27 5d 20 3d 3d 20 22 50 4f 53 54 22 0d 0a 20 20 20 | 'REQUEST_METHOD'].==."POST"..... |
| afc0 | 20 20 20 20 20 20 20 20 20 69 66 20 40 65 6e 76 2e 68 61 73 5f 6b 65 79 3f 28 22 43 4f 4e 54 45 | .........if.@env.has_key?("CONTE |
| afe0 | 4e 54 5f 54 59 50 45 22 29 20 26 26 20 40 65 6e 76 5b 27 43 4f 4e 54 45 4e 54 5f 54 59 50 45 27 | NT_TYPE").&&.@env['CONTENT_TYPE' |
| b000 | 5d 20 3d 3d 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c | ].==."application/x-www-form-url |
| b020 | 65 6e 63 6f 64 65 64 22 20 26 26 20 40 65 6e 76 2e 68 61 73 5f 6b 65 79 3f 28 27 43 4f 4e 54 45 | encoded".&&.@env.has_key?('CONTE |
| b040 | 4e 54 5f 4c 45 4e 47 54 48 27 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c | NT_LENGTH')..................unl |
| b060 | 65 73 73 20 40 73 65 74 74 69 6e 67 73 2e 68 61 73 5f 6b 65 79 3f 28 22 70 6f 73 74 20 73 65 70 | ess.@settings.has_key?("post.sep |
| b080 | 65 72 61 74 6f 72 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f | erator")......................po |
| b0a0 | 73 74 5f 61 72 67 73 20 3d 20 24 73 74 64 69 6e 2e 72 65 61 64 28 40 65 6e 76 5b 27 43 4f 4e 54 | st_args.=.$stdin.read(@env['CONT |
| b0c0 | 45 4e 54 5f 4c 45 4e 47 54 48 27 5d 2e 74 6f 5f 69 29 2e 73 70 6c 69 74 28 2f 5b 26 3b 5d 2f 29 | ENT_LENGTH'].to_i).split(/[&;]/) |
| b0e0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 | ..................else.......... |
| b100 | 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 74 5f 61 72 67 73 20 3d 20 24 73 74 64 69 6e 2e 72 | ............post_args.=.$stdin.r |
| b120 | 65 61 64 28 40 65 6e 76 5b 27 43 4f 4e 54 45 4e 54 5f 4c 45 4e 47 54 48 27 5d 2e 74 6f 5f 69 29 | ead(@env['CONTENT_LENGTH'].to_i) |
| b140 | 2e 73 70 6c 69 74 28 40 73 65 74 74 69 6e 67 73 5b 27 70 6f 73 74 20 73 65 70 65 72 61 74 6f 72 | .split(@settings['post.seperator |
| b160 | 27 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 | '])..................end........ |
| b180 | 20 20 20 20 20 20 20 20 20 20 70 6f 73 74 5f 61 72 67 73 2e 65 61 63 68 20 64 6f 20 7c 20 61 72 | ..........post_args.each.do.|.ar |
| b1a0 | 67 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 6b 65 79 | g.|......................arg_key |
| b1c0 | 2c 20 61 72 67 5f 76 61 6c 20 3d 20 61 72 67 2e 73 70 6c 69 74 28 2f 3d 2f 2c 20 32 29 0d 0a 20 | ,.arg_val.=.arg.split(/=/,.2)... |
| b1e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 6b 65 79 20 3d 20 52 77 65 | ...................arg_key.=.Rwe |
| b200 | 62 3a 3a 75 6e 65 73 63 61 70 65 28 61 72 67 5f 6b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | b::unescape(arg_key)............ |
| b220 | 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 76 61 6c 20 3d 20 52 77 65 62 3a 3a 75 6e 65 73 63 61 | ..........arg_val.=.Rweb::unesca |
| b240 | 70 65 28 61 72 67 5f 76 61 6c 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | pe(arg_val)..................... |
| b260 | 20 20 20 23 20 50 61 72 73 65 20 6e 61 6d 65 73 20 6c 69 6b 65 20 6e 61 6d 65 5b 30 5d 2c 20 6e | ...#.Parse.names.like.name[0],.n |
| b280 | 61 6d 65 5b 27 74 65 78 74 27 5d 20 6f 72 20 6e 61 6d 65 5b 5d 0d 0a 20 20 20 20 20 20 20 20 20 | ame['text'].or.name[]........... |
| b2a0 | 20 20 20 20 20 20 20 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 2f 5e 28 2e 2b 29 5c 5b 28 22 5b | ...........pattern.=./^(.+)\[("[ |
| b2c0 | 5e 5c 5d 5d 2a 22 7c 27 5b 5e 5c 5d 5d 2a 27 7c 5b 30 2d 39 5d 2a 29 5c 5d 24 2f 0d 0a 20 20 20 | ^\]]*"|'[^\]]*'|[0-9]*)\]$/..... |
| b2e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 73 20 3d 20 5b 5d 0d 0a 20 20 20 20 | .................keys.=.[]...... |
| b300 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 6d 61 74 63 68 20 3d 20 70 61 | ................while.match.=.pa |
| b320 | 74 74 65 72 6e 2e 6d 61 74 63 68 28 61 72 67 5f 6b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | ttern.match(arg_key)............ |
| b340 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67 5f 6b 65 79 20 3d 20 6d 61 74 63 68 5b 31 5d | ..............arg_key.=.match[1] |
| b360 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 73 20 3d | ..........................keys.= |
| b380 | 20 5b 6d 61 74 63 68 5b 32 5d 5d 20 2b 20 6b 65 79 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .[match[2]].+.keys.............. |
| b3a0 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........end..................... |
| b3c0 | 20 6b 65 79 73 20 3d 20 5b 61 72 67 5f 6b 65 79 5d 20 2b 20 6b 65 79 73 0d 0a 0d 0a 20 20 20 20 | .keys.=.[arg_key].+.keys........ |
| b3e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6b 74 20 3d 20 40 70 6f 73 74 0d 0a 20 20 20 | ................akt.=.@post..... |
| b400 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 20 3d 20 6e 69 6c 0d 0a 20 20 20 | .................last.=.nil..... |
| b420 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 6b 65 79 20 3d 20 6e 69 6c 0d 0a | .................lastkey.=.nil.. |
| b440 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 73 2e 65 61 63 68 20 64 6f | ....................keys.each.do |
| b460 | 20 7c 6b 65 79 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .|key|.......................... |
| b480 | 69 66 20 6b 65 79 20 3d 3d 20 22 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | if.key.==."".................... |
| b4a0 | 20 20 20 20 20 20 20 20 20 20 23 20 4e 6f 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 20 28 6c 69 | ..........#.No.key.specified.(li |
| b4c0 | 6b 65 20 69 6e 20 22 74 65 73 74 5b 5d 22 29 2c 20 73 6f 20 77 65 20 75 73 65 0d 0a 20 20 20 20 | ke.in."test[]"),.so.we.use...... |
| b4e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 20 6c 6f | ........................#.the.lo |
| b500 | 77 65 72 73 74 20 75 6e 75 73 65 64 20 49 6e 74 65 67 65 72 20 61 73 20 6b 65 79 0d 0a 20 20 20 | werst.unused.Integer.as.key..... |
| b520 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 30 | .........................key.=.0 |
| b540 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 68 | ..............................wh |
| b560 | 69 6c 65 20 61 6b 74 2e 68 61 73 5f 6b 65 79 3f 28 6b 65 79 29 0d 0a 20 20 20 20 20 20 20 20 20 | ile.akt.has_key?(key)........... |
| b580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 2b 3d 20 31 0d | .......................key.+=.1. |
| b5a0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 | .............................end |
| b5c0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 | ..........................elsif. |
| b5e0 | 2f 5e 5b 30 2d 39 5d 2a 24 2f 20 3d 7e 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | /^[0-9]*$/.=~.key............... |
| b600 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 66 20 74 68 65 20 69 6e 64 65 78 20 69 73 | ...............#.If.the.index.is |
| b620 | 20 6e 75 6d 65 72 69 63 61 6c 20 63 6f 6e 76 65 72 74 20 69 74 20 74 6f 20 61 6e 20 49 6e 74 65 | .numerical.convert.it.to.an.Inte |
| b640 | 67 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ger............................. |
| b660 | 20 6b 65 79 20 3d 20 6b 65 79 2e 74 6f 5f 69 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .key.=.key.to_i................. |
| b680 | 20 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 6b 65 79 5b 30 5d 2e 63 68 72 20 3d 3d 20 22 27 22 | .........elsif.key[0].chr.==."'" |
| b6a0 | 20 7c 7c 20 6b 65 79 5b 30 5d 2e 63 68 72 20 3d 3d 20 27 22 27 0d 0a 20 20 20 20 20 20 20 20 20 | .||.key[0].chr.==.'"'........... |
| b6c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 5b 31 2c 20 | ...................key.=.key[1,. |
| b6e0 | 6b 65 79 2e 6c 65 6e 67 74 68 28 29 20 2d 32 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | key.length().-2]................ |
| b700 | 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........end................... |
| b720 | 20 20 20 20 20 20 20 69 66 20 21 61 6b 74 2e 68 61 73 5f 6b 65 79 3f 28 6b 65 79 29 20 7c 7c 20 | .......if.!akt.has_key?(key).||. |
| b740 | 21 61 6b 74 5b 6b 65 79 5d 2e 63 6c 61 73 73 20 3d 3d 20 48 61 73 68 0d 0a 20 20 20 20 20 20 20 | !akt[key].class.==.Hash......... |
| b760 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 72 65 61 74 65 20 61 6e | .....................#.create.an |
| b780 | 20 65 6d 70 74 79 20 48 61 73 68 20 69 66 20 74 68 65 72 65 20 69 73 6e 27 74 20 61 6c 72 65 61 | .empty.Hash.if.there.isn't.alrea |
| b7a0 | 64 79 20 6f 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | dy.one.......................... |
| b7c0 | 20 20 20 20 61 6b 74 5b 6b 65 79 5d 20 3d 20 7b 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....akt[key].=.{}............... |
| b7e0 | 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........end.................. |
| b800 | 20 20 20 20 20 20 20 20 6c 61 73 74 20 3d 20 61 6b 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ........last.=.akt.............. |
| b820 | 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 6b 65 79 20 3d 20 6b 65 79 0d 0a 20 20 20 20 20 | ............lastkey.=.key....... |
| b840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6b 74 20 3d 20 61 6b 74 5b 6b 65 79 | ...................akt.=.akt[key |
| b860 | 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | ]......................end...... |
| b880 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 5b 6c 61 73 74 6b 65 79 5d 20 3d 20 | ................last[lastkey].=. |
| b8a0 | 61 72 67 5f 76 61 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | arg_val..................end.... |
| b8c0 | 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........else.................. |
| b8e0 | 23 20 4d 61 79 62 65 20 77 65 20 73 68 6f 75 6c 64 20 70 72 69 6e 74 20 61 20 77 61 72 6e 69 6e | #.Maybe.we.should.print.a.warnin |
| b900 | 67 20 68 65 72 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 64 65 72 72 | g.here?..................$stderr |
| b920 | 2e 70 72 69 6e 74 28 22 55 6e 69 64 65 6e 74 69 66 69 65 64 20 66 6f 72 6d 20 64 61 74 61 20 72 | .print("Unidentified.form.data.r |
| b940 | 65 63 69 76 65 64 20 61 6e 64 20 64 69 73 63 61 72 64 65 64 2e 22 29 0d 0a 20 20 20 20 20 20 20 | ecived.and.discarded.")......... |
| b960 | 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 | .....end..........end........... |
| b980 | 20 69 66 20 40 65 6e 76 2e 68 61 73 5f 6b 65 79 3f 28 22 48 54 54 50 5f 43 4f 4f 4b 49 45 22 29 | .if.@env.has_key?("HTTP_COOKIE") |
| b9a0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 69 65 20 3d 20 40 65 6e 76 5b 27 48 54 54 | ..............cookie.=.@env['HTT |
| b9c0 | 50 5f 43 4f 4f 4b 49 45 27 5d 2e 73 70 6c 69 74 28 2f 3b 20 3f 2f 29 0d 0a 20 20 20 20 20 20 20 | P_COOKIE'].split(/;.?/)......... |
| b9e0 | 20 20 20 20 20 63 6f 6f 6b 69 65 2e 65 61 63 68 20 64 6f 20 7c 20 63 20 7c 0d 0a 20 20 20 20 20 | .....cookie.each.do.|.c.|....... |
| ba00 | 20 20 20 20 20 20 20 20 20 20 20 63 6f 6f 6b 69 65 5f 6b 65 79 2c 20 63 6f 6f 6b 69 65 5f 76 61 | ...........cookie_key,.cookie_va |
| ba20 | 6c 20 3d 20 63 2e 73 70 6c 69 74 28 2f 3d 2f 2c 20 32 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 | l.=.c.split(/=/,.2)............. |
| ba40 | 20 20 20 20 20 20 20 40 63 6f 6f 6b 69 65 73 20 5b 52 77 65 62 3a 3a 75 6e 65 73 63 61 70 65 28 | .......@cookies.[Rweb::unescape( |
| ba60 | 63 6f 6f 6b 69 65 5f 6b 65 79 29 5d 20 3d 20 52 77 65 62 3a 3a 75 6e 65 73 63 61 70 65 28 63 6f | cookie_key)].=.Rweb::unescape(co |
| ba80 | 6f 6b 69 65 5f 76 61 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | okie_val)..............end...... |
| baa0 | 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 64 65 66 69 6e 65 64 3f 28 40 | ....end............if.defined?(@ |
| bac0 | 65 6e 76 5b 27 48 54 54 50 5f 55 53 45 52 5f 41 47 45 4e 54 27 5d 29 0d 0a 20 20 20 20 20 20 20 | env['HTTP_USER_AGENT'])......... |
| bae0 | 20 20 20 20 20 40 75 73 65 72 5f 61 67 65 6e 74 20 3d 20 40 65 6e 76 5b 27 48 54 54 50 5f 55 53 | .....@user_agent.=.@env['HTTP_US |
| bb00 | 45 52 5f 41 47 45 4e 54 27 5d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 | ER_AGENT']..........else........ |
| bb20 | 20 20 20 20 20 20 40 75 73 65 72 5f 61 67 65 6e 74 20 3d 20 6e 69 6c 3b 0d 0a 20 20 20 20 20 20 | ......@user_agent.=.nil;........ |
| bb40 | 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 64 65 66 69 6e 65 64 3f 28 40 65 6e | ..end............if.defined?(@en |
| bb60 | 76 5b 27 52 45 4d 4f 54 45 5f 41 44 44 52 27 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 | v['REMOTE_ADDR'])..............@ |
| bb80 | 72 65 6d 6f 74 65 5f 61 64 64 72 20 3d 20 40 65 6e 76 5b 27 52 45 4d 4f 54 45 5f 41 44 44 52 27 | remote_addr.=.@env['REMOTE_ADDR' |
| bba0 | 5d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 72 65 | ]..........else..............@re |
| bbc0 | 6d 6f 74 65 5f 61 64 64 72 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | mote_addr.=.nil..........end.... |
| bbe0 | 20 20 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 50 72 | ......#.}}}......end........#.Pr |
| bc00 | 69 6e 74 73 20 61 20 53 74 72 69 6e 67 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 2e 20 49 66 20 | ints.a.String.to.the.client..If. |
| bc20 | 63 61 63 68 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 74 68 65 20 53 74 72 69 6e 67 20 77 | caching.is.enabled,.the.String.w |
| bc40 | 69 6c 6c 0d 0a 20 20 20 20 23 20 62 75 66 66 65 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20 65 6e | ill......#.buffered.until.the.en |
| bc60 | 64 20 6f 66 20 74 68 65 20 6f 75 74 20 62 6c 6f 63 6b 20 65 6e 64 73 2e 0d 0a 20 20 20 20 64 65 | d.of.the.out.block.ends.......de |
| bc80 | 66 20 70 72 69 6e 74 28 73 74 72 20 3d 20 22 22 29 0d 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b | f.print(str.=."")..........#.{{{ |
| bca0 | 0d 0a 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 70 75 74 5f 61 6c 6c 6f 77 65 64 | ..........unless.@output_allowed |
| bcc0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 59 6f 75 20 6a 75 73 74 20 63 61 | ..............raise."You.just.ca |
| bce0 | 6e 20 77 72 69 74 65 20 74 6f 20 6f 75 74 70 75 74 20 69 6e 73 69 64 65 20 6f 66 20 61 20 52 77 | n.write.to.output.inside.of.a.Rw |
| bd00 | 65 62 3a 3a 6f 75 74 2d 62 6c 6f 63 6b 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 | eb::out-block"..........end..... |
| bd20 | 20 20 20 20 20 20 20 69 66 20 40 73 65 74 74 69 6e 67 73 5b 22 63 61 63 68 65 22 5d 0d 0a 20 20 | .......if.@settings["cache"].... |
| bd40 | 20 20 20 20 20 20 20 20 20 20 40 62 75 66 66 65 72 20 2b 3d 20 5b 73 74 72 2e 74 6f 5f 73 5d 0d | ..........@buffer.+=.[str.to_s]. |
| bd60 | 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 | .........else..............unles |
| bd80 | 73 20 40 6f 75 74 70 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | s.@output_started............... |
| bda0 | 20 20 20 73 65 6e 64 48 65 61 64 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d | ...sendHeaders..............end. |
| bdc0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 64 6f 75 74 2e 70 72 69 6e 74 28 73 74 72 29 0d | .............$stdout.print(str). |
| bde0 | 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 6e 69 6c 0d 0a 20 20 20 20 20 | .........end..........nil....... |
| be00 | 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 50 72 69 6e 74 | ...#.}}}......end........#.Print |
| be20 | 73 20 61 20 53 74 72 69 6e 67 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 20 61 6e 64 20 61 64 64 | s.a.String.to.the.client.and.add |
| be40 | 73 20 61 20 6c 69 6e 65 20 62 72 65 61 6b 20 61 74 20 74 68 65 20 65 6e 64 2e 20 50 6c 65 61 73 | s.a.line.break.at.the.end..Pleas |
| be60 | 65 0d 0a 09 09 23 20 72 65 6d 65 6d 62 65 72 2c 20 74 68 61 74 20 61 20 6c 69 6e 65 20 62 72 65 | e....#.remember,.that.a.line.bre |
| be80 | 61 6b 20 69 73 20 6e 6f 74 20 76 69 73 69 62 6c 65 20 69 6e 20 48 54 4d 4c 2c 20 75 73 65 20 74 | ak.is.not.visible.in.HTML,.use.t |
| bea0 | 68 65 20 3c 62 72 3e 20 48 54 4d 4c 2d 54 61 67 0d 0a 09 09 23 20 66 6f 72 20 74 68 69 73 2e 20 | he.<br>.HTML-Tag....#.for.this.. |
| bec0 | 49 66 20 63 61 63 68 69 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2c 20 74 68 65 20 53 74 72 69 6e | If.caching.is.enabled,.the.Strin |
| bee0 | 67 20 77 69 6c 6c 20 62 75 66 66 65 72 65 64 20 75 6e 74 69 6c 20 74 68 65 20 65 6e 64 0d 0a 09 | g.will.buffered.until.the.end... |
| bf00 | 09 23 20 6f 66 20 74 68 65 20 6f 75 74 20 62 6c 6f 63 6b 20 65 6e 64 73 2e 0d 0a 20 20 20 20 64 | .#.of.the.out.block.ends.......d |
| bf20 | 65 66 20 70 75 74 73 28 73 74 72 20 3d 20 22 22 29 0d 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b | ef.puts(str.=."")..........#.{{{ |
| bf40 | 0d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 72 69 6e 74 28 73 74 72 20 2b 20 22 5c 6e 22 29 | ..........self.print(str.+."\n") |
| bf60 | 0d 0a 20 20 20 20 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 09 09 23 20 | ..........#.}}}......end......#. |
| bf80 | 41 6c 69 61 73 20 74 6f 20 70 72 69 6e 74 2e 0d 0a 20 20 20 20 64 65 66 20 77 72 69 74 65 28 73 | Alias.to.print.......def.write(s |
| bfa0 | 74 72 20 3d 20 22 22 29 0d 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 | tr.=."")..........#.{{{......... |
| bfc0 | 20 73 65 6c 66 2e 70 72 69 6e 74 28 73 74 72 29 0d 0a 20 20 20 20 20 20 20 20 23 20 7d 7d 7d 0d | .self.print(str)..........#.}}}. |
| bfe0 | 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 49 66 20 63 61 63 68 69 6e 67 20 69 73 20 | .....end........#.If.caching.is. |
| c000 | 65 6e 61 62 6c 65 64 2c 20 61 6c 6c 20 63 61 63 68 65 64 20 64 61 74 61 20 61 72 65 20 73 65 6e | enabled,.all.cached.data.are.sen |
| c020 | 64 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 64 20 61 6e 64 20 74 68 65 0d 0a 09 09 23 20 63 61 63 | d.to.the.cliend.and.the....#.cac |
| c040 | 68 65 20 65 6d 70 74 69 65 64 2e 0d 0a 20 20 20 20 64 65 66 20 66 6c 75 73 68 0d 0a 20 20 20 20 | he.emptied.......def.flush...... |
| c060 | 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 70 75 | ....#.{{{..........unless.@outpu |
| c080 | 74 5f 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 59 6f | t_allowed..............raise."Yo |
| c0a0 | 75 20 63 61 6e 27 74 20 75 73 65 20 66 6c 75 73 68 20 6f 75 74 73 69 64 65 20 6f 66 20 61 20 52 | u.can't.use.flush.outside.of.a.R |
| c0c0 | 77 65 62 3a 3a 6f 75 74 2d 62 6c 6f 63 6b 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | web::out-block"..........end.... |
| c0e0 | 20 20 20 20 20 20 62 75 66 66 65 72 20 3d 20 40 62 75 66 66 65 72 2e 6a 6f 69 6e 0d 0a 0d 0a 20 | ......buffer.=.@buffer.join..... |
| c100 | 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 70 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 | .......unless.@output_started... |
| c120 | 20 20 20 20 20 20 20 20 20 20 20 73 65 6e 64 48 65 61 64 65 72 73 0d 0a 20 20 20 20 20 20 20 20 | ...........sendHeaders.......... |
| c140 | 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 24 73 74 64 6f 75 74 2e 70 72 69 6e 74 28 62 75 66 66 65 | end..........$stdout.print(buffe |
| c160 | 72 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 40 62 75 66 66 65 72 20 3d 20 5b 5d 0d 0a 20 20 20 20 | r)............@buffer.=.[]...... |
| c180 | 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 53 65 6e 64 | ....#.}}}......end........#.Send |
| c1a0 | 73 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 68 65 61 64 65 72 20 74 6f 20 74 68 65 20 63 6c 69 65 | s.one.or.more.header.to.the.clie |
| c1c0 | 6e 74 2e 20 41 6c 6c 20 68 65 61 64 65 72 73 20 61 72 65 20 63 61 63 68 65 64 20 6a 75 73 74 0d | nt..All.headers.are.cached.just. |
| c1e0 | 0a 09 09 23 20 62 65 66 6f 72 65 20 62 6f 64 79 20 64 61 74 61 20 61 72 65 20 73 65 6e 64 20 74 | ...#.before.body.data.are.send.t |
| c200 | 6f 20 74 68 65 20 63 6c 69 65 6e 74 2e 20 49 66 20 74 68 65 20 73 61 6d 65 20 68 65 61 64 65 72 | o.the.client..If.the.same.header |
| c220 | 20 61 72 65 20 73 65 74 0d 0a 09 09 23 20 74 77 69 63 65 2c 20 6f 6e 6c 79 20 74 68 65 20 6c 61 | .are.set....#.twice,.only.the.la |
| c240 | 73 74 20 76 61 6c 75 65 20 69 73 20 73 65 6e 64 2e 0d 0a 09 09 23 0d 0a 09 09 23 20 45 78 61 6d | st.value.is.send.....#....#.Exam |
| c260 | 70 6c 65 3a 0d 0a 09 09 23 20 20 77 65 62 2e 68 65 61 64 65 72 28 22 4c 61 73 74 2d 4d 6f 64 69 | ple:....#..web.header("Last-Modi |
| c280 | 66 69 65 64 3a 20 4d 6f 6e 2c 20 31 36 20 46 65 62 20 32 30 30 34 20 32 30 3a 31 35 3a 34 31 20 | fied:.Mon,.16.Feb.2004.20:15:41. |
| c2a0 | 47 4d 54 22 29 0d 0a 09 09 23 20 20 77 65 62 2e 68 65 61 64 65 72 28 22 4c 6f 63 61 74 69 6f 6e | GMT")....#..web.header("Location |
| c2c0 | 3a 20 68 74 74 70 3a 2f 2f 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 22 29 0d 0a 09 09 | :.http://www.ruby-lang.org").... |
| c2e0 | 23 0d 0a 09 09 23 20 59 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 6d 6f 72 65 20 74 68 61 6e | #....#.You.can.specify.more.than |
| c300 | 20 6f 6e 65 20 68 65 61 64 65 72 20 61 74 20 74 68 65 20 74 69 6d 65 20 62 79 20 64 6f 69 6e 67 | .one.header.at.the.time.by.doing |
| c320 | 20 73 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 0d 0a 09 09 23 20 74 68 69 73 3a 0d 0a 09 09 23 20 | .something.like....#.this:....#. |
| c340 | 20 77 65 62 2e 68 65 61 64 65 72 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f | .web.header("Content-Type:.text/ |
| c360 | 70 6c 61 69 6e 5c 6e 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 3a 20 33 38 33 22 29 0d 0a 09 09 | plain\nContent-Length:.383").... |
| c380 | 23 20 6f 72 0d 0a 09 09 23 20 20 77 65 62 2e 68 65 61 64 65 72 28 5b 22 43 6f 6e 74 65 6e 74 2d | #.or....#..web.header(["Content- |
| c3a0 | 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 22 2c 20 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 | Type:.text/plain",."Content-Leng |
| c3c0 | 74 68 3a 20 33 38 33 22 5d 29 0d 0a 20 20 20 20 64 65 66 20 68 65 61 64 65 72 28 73 74 72 29 0d | th:.383"])......def.header(str). |
| c3e0 | 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 6f 75 74 70 | .........#.{{{..........if.@outp |
| c400 | 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 48 | ut_started..............raise."H |
| c420 | 54 54 50 2d 48 65 61 64 65 72 73 20 61 72 65 20 61 6c 72 65 61 64 79 20 73 65 6e 64 2e 20 59 6f | TTP-Headers.are.already.send..Yo |
| c440 | 75 20 63 61 6e 27 74 20 63 68 61 6e 67 65 20 74 68 65 6d 20 61 66 74 65 72 20 6f 75 74 70 75 74 | u.can't.change.them.after.output |
| c460 | 20 68 61 73 20 73 74 61 72 74 65 64 21 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 | .has.started!"..........end..... |
| c480 | 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 70 75 74 5f 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 | .....unless.@output_allowed..... |
| c4a0 | 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 59 6f 75 20 6a 75 73 74 20 63 61 6e 20 73 65 74 | .........raise."You.just.can.set |
| c4c0 | 20 68 65 61 64 65 72 73 20 69 6e 73 69 64 65 20 6f 66 20 61 20 52 77 65 62 3a 3a 6f 75 74 2d 62 | .headers.inside.of.a.Rweb::out-b |
| c4e0 | 6c 6f 63 6b 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 69 66 20 73 | lock"..........end..........if.s |
| c500 | 74 72 2e 69 73 5f 61 3f 41 72 72 61 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 2e 65 | tr.is_a?Array..............str.e |
| c520 | 61 63 68 20 64 6f 20 7c 20 76 61 6c 75 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ach.do.|.value.|................ |
| c540 | 20 20 73 65 6c 66 2e 68 65 61 64 65 72 28 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | ..self.header(value)............ |
| c560 | 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 72 2e 73 70 6c 69 74 | ..end............elsif.str.split |
| c580 | 28 2f 5c 6e 2f 29 2e 6c 65 6e 67 74 68 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 | (/\n/).length.>.1..............s |
| c5a0 | 74 72 2e 73 70 6c 69 74 28 2f 5c 6e 2f 29 2e 65 61 63 68 20 64 6f 20 7c 20 76 61 6c 75 65 20 7c | tr.split(/\n/).each.do.|.value.| |
| c5c0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 68 65 61 64 65 72 28 76 61 | ..................self.header(va |
| c5e0 | 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 | lue)..............end........... |
| c600 | 20 65 6c 73 69 66 20 73 74 72 2e 69 73 5f 61 3f 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 | .elsif.str.is_a?.String......... |
| c620 | 20 20 20 20 20 73 74 72 2e 67 73 75 62 21 28 2f 5c 72 2f 2c 20 22 22 29 0d 0a 0d 0a 20 20 20 20 | .....str.gsub!(/\r/,."")........ |
| c640 | 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 20 3d 7e 20 2f 5e 48 54 54 50 5c 2f 31 5c 2e 5b 30 | ........if.(str.=~./^HTTP\/1\.[0 |
| c660 | 31 5d 20 5b 30 2d 39 5d 7b 33 7d 20 3f 2e 2a 24 2f 29 20 3d 3d 20 30 0d 0a 20 20 20 20 20 20 20 | 1].[0-9]{3}.?.*$/).==.0......... |
| c680 | 20 20 20 20 20 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 2f 5e 48 54 54 50 5c 2f 31 2e 5b 30 31 | .........pattern.=./^HTTP\/1.[01 |
| c6a0 | 5d 20 28 5b 30 2d 39 5d 7b 33 7d 29 20 3f 28 2e 2a 29 24 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 | ].([0-9]{3}).?(.*)$/............ |
| c6c0 | 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 70 61 74 74 65 72 6e 2e 6d 61 74 63 68 28 73 | ........result.=.pattern.match(s |
| c6e0 | 74 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 73 74 61 | tr)..................self.setsta |
| c700 | 74 75 73 28 72 65 73 75 6c 74 5b 30 5d 2c 20 72 65 73 75 6c 74 5b 31 5d 29 0d 0a 20 20 20 20 20 | tus(result[0],.result[1])....... |
| c720 | 20 20 20 20 20 20 20 65 6c 73 69 66 20 28 73 74 72 20 3d 7e 20 2f 5e 73 74 61 74 75 73 3a 20 5b | .......elsif.(str.=~./^status:.[ |
| c740 | 30 2d 39 5d 7b 33 7d 20 3f 2e 2a 24 2f 69 29 20 3d 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 20 20 | 0-9]{3}.?.*$/i).==.0............ |
| c760 | 20 20 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 2f 5e 73 74 61 74 75 73 3a 20 28 5b 30 2d 39 5d | ......pattern.=./^status:.([0-9] |
| c780 | 7b 33 7d 29 20 3f 28 2e 2a 29 24 2f 69 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | {3}).?(.*)$/i................... |
| c7a0 | 20 72 65 73 75 6c 74 20 3d 20 70 61 74 74 65 72 6e 2e 6d 61 74 63 68 28 73 74 72 29 0d 0a 20 20 | .result.=.pattern.match(str).... |
| c7c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 73 65 74 73 74 61 74 75 73 28 72 65 73 | ..............self.setstatus(res |
| c7e0 | 75 6c 74 5b 30 5d 2c 20 72 65 73 75 6c 74 5b 31 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ult[0],.result[1]).............. |
| c800 | 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 20 3d 20 73 74 72 2e 73 70 | else..................a.=.str.sp |
| c820 | 6c 69 74 28 2f 3a 20 3f 2f 2c 20 32 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lit(/:.?/,.2)................... |
| c840 | 20 40 68 65 61 64 65 72 5b 61 5b 30 5d 2e 64 6f 77 6e 63 61 73 65 5d 20 3d 20 61 5b 31 5d 0d 0a | .@header[a[0].downcase].=.a[1].. |
| c860 | 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | ............end..........end.... |
| c880 | 20 20 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 43 68 | ......#.}}}......end........#.Ch |
| c8a0 | 61 6e 67 65 73 20 74 68 65 20 73 74 61 74 75 73 20 6f 66 20 74 68 69 73 20 70 61 67 65 2e 20 54 | anges.the.status.of.this.page..T |
| c8c0 | 68 65 72 65 20 61 72 65 20 73 65 76 65 72 61 6c 20 63 6f 64 65 73 20 6c 69 6b 65 20 22 32 30 30 | here.are.several.codes.like."200 |
| c8e0 | 20 4f 4b 22 2c 0d 0a 09 09 23 20 22 33 30 32 20 46 6f 75 6e 64 22 2c 20 22 34 30 34 20 4e 6f 74 | .OK",....#."302.Found",."404.Not |
| c900 | 20 46 6f 75 6e 64 22 20 6f 72 20 22 35 30 30 20 49 6e 74 65 72 6e 61 6c 20 53 65 72 76 65 72 20 | .Found".or."500.Internal.Server. |
| c920 | 45 72 72 6f 72 22 2e 20 41 20 6c 69 73 74 20 6f 66 0d 0a 09 09 23 20 61 6c 6c 20 63 6f 64 65 73 | Error"..A.list.of....#.all.codes |
| c940 | 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 61 74 0d 0a 09 09 23 20 68 74 74 70 3a 2f 2f 77 77 77 | .is.available.at....#.http://www |
| c960 | 2e 77 33 2e 6f 72 67 2f 50 72 6f 74 6f 63 6f 6c 73 2f 72 66 63 32 36 31 36 2f 72 66 63 32 36 31 | .w3.org/Protocols/rfc2616/rfc261 |
| c980 | 36 2d 73 65 63 31 30 2e 68 74 6d 6c 23 73 65 63 31 30 0d 0a 09 09 23 0d 0a 09 09 23 20 59 6f 75 | 6-sec10.html#sec10....#....#.You |
| c9a0 | 20 63 61 6e 20 6a 75 73 74 20 73 65 6e 64 20 74 68 65 20 63 6f 64 65 20 6e 75 6d 62 65 72 2c 20 | .can.just.send.the.code.number,. |
| c9c0 | 74 68 65 20 72 65 61 73 6f 6e 20 70 68 72 61 73 65 20 77 69 6c 6c 20 62 65 20 61 64 64 65 64 0d | the.reason.phrase.will.be.added. |
| c9e0 | 0a 09 09 23 20 61 75 74 6f 6d 61 74 69 63 6c 79 20 77 69 74 68 20 74 68 65 20 72 65 63 6f 6d 6d | ...#.automaticly.with.the.recomm |
| ca00 | 65 6e 64 61 74 69 6f 6e 73 20 66 72 6f 6d 20 74 68 65 20 77 33 63 20 69 66 20 6e 6f 74 20 73 70 | endations.from.the.w3c.if.not.sp |
| ca20 | 65 63 69 66 69 65 64 2e 20 49 66 0d 0a 09 09 23 20 79 6f 75 20 73 65 74 20 74 68 65 20 73 74 61 | ecified..If....#.you.set.the.sta |
| ca40 | 74 75 73 20 74 77 69 63 65 20 6f 72 20 6d 6f 72 65 2c 20 6f 6e 6c 79 20 74 68 65 20 6c 61 73 74 | tus.twice.or.more,.only.the.last |
| ca60 | 20 73 74 61 74 75 73 20 77 69 6c 6c 20 62 65 20 73 65 6e 64 2e 0d 0a 09 09 23 20 45 78 61 6d 70 | .status.will.be.send.....#.Examp |
| ca80 | 6c 65 73 3a 0d 0a 09 09 23 20 20 77 65 62 2e 73 74 61 74 75 73 28 22 34 30 31 20 55 6e 61 75 74 | les:....#..web.status("401.Unaut |
| caa0 | 68 6f 72 69 7a 65 64 22 29 0d 0a 09 09 23 20 20 77 65 62 2e 73 74 61 74 75 73 28 22 34 31 30 20 | horized")....#..web.status("410. |
| cac0 | 53 61 64 20 62 75 74 20 74 72 75 65 2c 20 74 68 69 73 20 6c 6f 6e 65 6c 79 20 70 61 67 65 20 69 | Sad.but.true,.this.lonely.page.i |
| cae0 | 73 20 67 6f 6e 65 20 3a 28 22 29 0d 0a 09 09 23 20 20 77 65 62 2e 73 74 61 74 75 73 28 32 30 36 | s.gone.:(")....#..web.status(206 |
| cb00 | 29 0d 0a 09 09 23 20 20 77 65 62 2e 73 74 61 74 75 73 28 22 34 30 30 22 29 0d 0a 09 09 23 0d 0a | )....#..web.status("400")....#.. |
| cb20 | 09 09 23 20 54 68 65 20 64 65 66 61 75 6c 74 20 73 74 61 74 75 73 20 69 73 20 22 32 30 30 20 4f | ..#.The.default.status.is."200.O |
| cb40 | 4b 22 2e 20 49 66 20 61 20 22 4c 6f 63 61 74 69 6f 6e 22 20 68 65 61 64 65 72 20 69 73 20 73 65 | K"..If.a."Location".header.is.se |
| cb60 | 74 2c 20 74 68 65 0d 0a 09 09 23 20 64 65 66 61 75 6c 74 20 73 74 61 74 75 73 20 69 73 20 22 33 | t,.the....#.default.status.is."3 |
| cb80 | 30 32 20 46 6f 75 6e 64 22 2e 0d 0a 20 20 20 20 64 65 66 20 73 74 61 74 75 73 28 73 74 72 29 0d | 02.Found".......def.status(str). |
| cba0 | 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 6f 75 74 70 | .........#.{{{..........if.@outp |
| cbc0 | 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 48 | ut_started..............raise."H |
| cbe0 | 54 54 50 2d 48 65 61 64 65 72 73 20 61 72 65 20 61 6c 72 65 61 64 79 20 73 65 6e 64 2e 20 59 6f | TTP-Headers.are.already.send..Yo |
| cc00 | 75 20 63 61 6e 27 74 20 63 68 61 6e 67 65 20 74 68 65 6d 20 61 66 74 65 72 20 6f 75 74 70 75 74 | u.can't.change.them.after.output |
| cc20 | 20 68 61 73 20 73 74 61 72 74 65 64 21 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 | .has.started!"..........end..... |
| cc40 | 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 70 75 74 5f 61 6c 6c 6f 77 65 64 0d 0a 20 20 20 | .....unless.@output_allowed..... |
| cc60 | 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 59 6f 75 20 6a 75 73 74 20 63 61 6e 20 73 65 74 | .........raise."You.just.can.set |
| cc80 | 20 68 65 61 64 65 72 73 20 69 6e 73 69 64 65 20 6f 66 20 61 20 52 77 65 62 3a 3a 6f 75 74 2d 62 | .headers.inside.of.a.Rweb::out-b |
| cca0 | 6c 6f 63 6b 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 69 66 20 73 | lock"..........end..........if.s |
| ccc0 | 74 72 2e 69 73 5f 61 3f 49 6e 74 65 67 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 73 74 | tr.is_a?Integer..............@st |
| cce0 | 61 74 75 73 20 3d 20 73 74 72 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 72 2e 69 73 | atus.=.str..........elsif.str.is |
| cd00 | 5f 61 3f 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 31 20 3d 20 2f 5e 28 5b | _a?String..............p1.=./^([ |
| cd20 | 30 2d 39 5d 7b 33 7d 29 20 3f 28 2e 2a 29 24 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 32 | 0-9]{3}).?(.*)$/..............p2 |
| cd40 | 20 3d 20 2f 5e 48 54 54 50 5c 2f 31 5c 2e 5b 30 31 5d 20 28 5b 30 2d 39 5d 7b 33 7d 29 20 3f 28 | .=./^HTTP\/1\.[01].([0-9]{3}).?( |
| cd60 | 2e 2a 29 24 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 33 20 3d 20 2f 5e 73 74 61 74 75 73 | .*)$/..............p3.=./^status |
| cd80 | 3a 20 28 5b 30 2d 39 5d 7b 33 7d 29 20 3f 28 2e 2a 29 24 2f 69 0d 0a 0d 0a 20 20 20 20 20 20 20 | :.([0-9]{3}).?(.*)$/i........... |
| cda0 | 20 20 20 20 20 69 66 20 28 61 20 3d 20 70 31 2e 6d 61 74 63 68 28 73 74 72 29 29 20 3d 3d 20 6e | .....if.(a.=.p1.match(str)).==.n |
| cdc0 | 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 20 3d 20 70 32 2e 6d | il..................if.(a.=.p2.m |
| cde0 | 61 74 63 68 28 73 74 72 29 29 20 3d 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | atch(str)).==.nil............... |
| ce00 | 20 20 20 20 20 20 20 69 66 20 28 61 20 3d 20 70 33 2e 6d 61 74 63 68 28 73 74 72 29 29 20 3d 3d | .......if.(a.=.p3.match(str)).== |
| ce20 | 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 61 | .nil..........................ra |
| ce40 | 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 49 6e 76 61 6c 69 64 20 61 72 67 75 | ise.ArgumentError,."Invalid.argu |
| ce60 | 6d 65 6e 74 22 2c 20 63 61 6c 6c 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ment",.caller................... |
| ce80 | 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 | ...end..................end..... |
| cea0 | 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 73 74 61 74 75 | .........end..............@statu |
| cec0 | 73 20 3d 20 61 5b 31 5d 2e 74 6f 5f 69 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 61 5b | s.=.a[1].to_i..............if.a[ |
| cee0 | 32 5d 20 21 3d 20 22 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 72 65 61 73 6f | 2].!=.""..................@reaso |
| cf00 | 6e 50 68 72 61 73 65 20 3d 20 61 5b 32 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 | nPhrase.=.a[2]..............else |
| cf20 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 72 65 61 73 6f 6e 50 68 72 61 73 65 20 | ..................@reasonPhrase. |
| cf40 | 3d 20 67 65 74 52 65 61 73 6f 6e 50 68 72 61 73 65 28 40 73 74 61 74 75 73 29 0d 0a 20 20 20 20 | =.getReasonPhrase(@status)...... |
| cf60 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 | ........end..........else....... |
| cf80 | 20 20 20 20 20 20 20 72 61 69 73 65 20 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 41 72 67 | .......raise.ArgumentError,."Arg |
| cfa0 | 75 6d 65 6e 74 20 6f 66 20 73 65 74 73 74 61 74 75 73 20 6d 75 73 74 20 62 65 20 69 6e 74 65 67 | ument.of.setstatus.must.be.integ |
| cfc0 | 65 72 20 6f 72 20 73 74 72 69 6e 67 22 2c 20 63 61 6c 6c 65 72 0d 0a 20 20 20 20 20 20 20 20 65 | er.or.string",.caller..........e |
| cfe0 | 6e 64 0d 0a 20 20 20 20 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 | nd..........#.}}}......end...... |
| d000 | 20 20 23 20 48 61 6e 64 6c 65 73 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 79 6f 75 72 20 63 | ..#.Handles.the.output.of.your.c |
| d020 | 6f 6e 74 65 6e 74 20 61 6e 64 20 72 65 73 63 75 65 73 20 61 6c 6c 20 65 78 63 65 70 74 69 6f 6e | ontent.and.rescues.all.exception |
| d040 | 73 2e 20 53 65 6e 64 20 61 6c 6c 0d 0a 09 09 23 20 64 61 74 61 20 69 6e 20 74 68 65 20 62 6c 6f | s..Send.all....#.data.in.the.blo |
| d060 | 63 6b 20 74 6f 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0d | ck.to.this.method..For.example:. |
| d080 | 0a 09 09 23 20 20 77 65 62 2e 6f 75 74 20 64 6f 0d 0a 09 09 23 20 20 20 20 20 20 77 65 62 2e 68 | ...#..web.out.do....#......web.h |
| d0a0 | 65 61 64 65 72 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 6c 61 69 6e 22 | eader("Content-Type:.text/plain" |
| d0c0 | 29 0d 0a 09 09 23 20 20 20 20 20 20 77 65 62 2e 70 75 74 73 28 22 48 65 6c 6c 6f 2c 20 70 6c 61 | )....#......web.puts("Hello,.pla |
| d0e0 | 69 6e 20 77 6f 72 6c 64 21 22 29 0d 0a 09 09 23 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 6f | in.world!")....#..end......def.o |
| d100 | 75 74 0d 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 20 40 6f 75 74 70 | ut..........#.{{{..........@outp |
| d120 | 75 74 5f 61 6c 6c 6f 77 65 64 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 40 62 75 66 66 | ut_allowed.=.true..........@buff |
| d140 | 65 72 20 3d 20 5b 5d 3b 20 23 20 57 65 20 75 73 65 20 61 6e 20 61 72 72 61 79 20 61 73 20 62 75 | er.=.[];.#.We.use.an.array.as.bu |
| d160 | 66 66 65 72 2c 20 62 65 63 61 75 73 65 20 69 74 27 73 20 6d 6f 72 65 20 70 65 72 66 6f 72 6d 61 | ffer,.because.it's.more.performa |
| d180 | 6e 74 20 3a 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 20 20 | nt.:)............begin.......... |
| d1a0 | 20 20 20 20 79 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 72 65 73 63 75 65 20 45 78 63 65 70 74 | ....yield..........rescue.Except |
| d1c0 | 69 6f 6e 20 3d 3e 20 65 78 63 65 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 | ion.=>.exception..............$s |
| d1e0 | 74 64 65 72 72 2e 70 75 74 73 20 22 52 75 62 79 20 65 78 63 65 70 74 69 6f 6e 20 72 65 73 63 75 | tderr.puts."Ruby.exception.rescu |
| d200 | 65 64 20 28 23 7b 65 78 63 65 70 74 69 6f 6e 2e 63 6c 61 73 73 7d 29 3a 20 23 7b 65 78 63 65 70 | ed.(#{exception.class}):.#{excep |
| d220 | 74 69 6f 6e 2e 6d 65 73 73 61 67 65 7d 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 64 | tion.message}"..............$std |
| d240 | 65 72 72 2e 70 75 74 73 20 65 78 63 65 70 74 69 6f 6e 2e 62 61 63 6b 74 72 61 63 65 2e 6a 6f 69 | err.puts.exception.backtrace.joi |
| d260 | 6e 28 22 5c 6e 22 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f | n("\n")................unless.@o |
| d280 | 75 74 70 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 | utput_started..................s |
| d2a0 | 65 6c 66 2e 73 65 74 73 74 61 74 75 73 28 35 30 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | elf.setstatus(500).............. |
| d2c0 | 20 20 20 20 40 68 65 61 64 65 72 20 3d 20 7b 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e | ....@header.=.{}..............en |
| d2e0 | 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 28 40 73 65 74 74 69 6e | d................unless.(@settin |
| d300 | 67 73 2e 68 61 73 5f 6b 65 79 3f 28 22 68 69 64 65 20 65 72 72 6f 72 73 22 29 20 61 6e 64 20 40 | gs.has_key?("hide.errors").and.@ |
| d320 | 73 65 74 74 69 6e 67 73 5b 22 68 69 64 65 20 65 72 72 6f 72 73 22 5d 20 3d 3d 20 74 72 75 65 29 | settings["hide.errors"].==.true) |
| d340 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 70 75 74 | ..................unless.@output |
| d360 | 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 | _started......................se |
| d380 | 6c 66 2e 68 65 61 64 65 72 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 68 74 | lf.header("Content-Type:.text/ht |
| d3a0 | 6d 6c 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 | ml")......................self.p |
| d3c0 | 75 74 73 20 22 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 5c 22 2d 2f 2f | uts."<!DOCTYPE.HTML.PUBLIC.\"-// |
| d3e0 | 57 33 43 2f 2f 44 54 44 20 48 54 4d 4c 20 34 2e 30 31 20 53 74 72 69 63 74 2f 2f 45 4e 5c 22 20 | W3C//DTD.HTML.4.01.Strict//EN\". |
| d400 | 5c 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 2e 6f 72 67 2f 54 52 2f 68 74 6d 6c 34 2f 73 74 72 | \"http://www.w3.org/TR/html4/str |
| d420 | 69 63 74 2e 64 74 64 5c 22 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ict.dtd\">"..................... |
| d440 | 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 68 74 6d 6c 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | .self.puts."<html>"............. |
| d460 | 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 68 65 61 64 3e 22 0d 0a 20 20 20 | .........self.puts."<head>"..... |
| d480 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 74 69 74 | .................self.puts."<tit |
| d4a0 | 6c 65 3e 35 30 30 20 49 6e 74 65 72 6e 61 6c 20 53 65 72 76 65 72 20 45 72 72 6f 72 3c 2f 74 69 | le>500.Internal.Server.Error</ti |
| d4c0 | 74 6c 65 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e | tle>"......................self. |
| d4e0 | 70 75 74 73 20 22 3c 2f 68 65 61 64 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | puts."</head>".................. |
| d500 | 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 62 6f 64 79 3e 22 0d 0a 20 20 20 20 20 20 20 20 | ....self.puts."<body>".......... |
| d520 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | ........end..................if. |
| d540 | 40 68 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 22 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 29 | @header.has_key?("content-type") |
| d560 | 20 61 6e 64 20 28 40 68 65 61 64 65 72 5b 22 63 6f 6e 74 65 6e 74 2d 74 79 70 65 22 5d 20 3d 7e | .and.(@header["content-type"].=~ |
| d580 | 20 2f 5e 74 65 78 74 5c 2f 68 74 6d 6c 2f 69 29 20 3d 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 20 | ./^text\/html/i).==.0........... |
| d5a0 | 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 68 31 3e 49 6e 74 65 72 6e | ...........self.puts."<h1>Intern |
| d5c0 | 61 6c 20 53 65 72 76 65 72 20 45 72 72 6f 72 3c 2f 68 31 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 | al.Server.Error</h1>"........... |
| d5e0 | 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 70 3e 54 68 65 20 73 65 72 | ...........self.puts."<p>The.ser |
| d600 | 76 65 72 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 61 6e 64 | ver.encountered.an.exception.and |
| d620 | 20 77 61 73 20 75 6e 61 62 6c 65 20 74 6f 20 63 6f 6d 70 6c 65 74 65 20 79 6f 75 72 20 72 65 71 | .was.unable.to.complete.your.req |
| d640 | 75 65 73 74 2e 3c 2f 70 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | uest.</p>"...................... |
| d660 | 73 65 6c 66 2e 70 75 74 73 20 22 3c 70 3e 54 68 65 20 65 78 63 65 70 74 69 6f 6e 20 68 61 73 20 | self.puts."<p>The.exception.has. |
| d680 | 70 72 6f 76 69 64 65 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 6e 66 6f 72 6d 61 74 69 | provided.the.following.informati |
| d6a0 | 6f 6e 3a 3c 2f 70 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 | on:</p>"......................se |
| d6c0 | 6c 66 2e 70 75 74 73 20 22 3c 70 72 65 20 73 74 79 6c 65 3d 5c 22 62 61 63 6b 67 72 6f 75 6e 64 | lf.puts."<pre.style=\"background |
| d6e0 | 3a 20 23 46 46 43 43 43 43 3b 20 62 6f 72 64 65 72 3a 20 62 6c 61 63 6b 20 73 6f 6c 69 64 20 32 | :.#FFCCCC;.border:.black.solid.2 |
| d700 | 70 78 3b 20 6d 61 72 67 69 6e 2d 6c 65 66 74 3a 20 32 63 6d 3b 20 6d 61 72 67 69 6e 2d 72 69 67 | px;.margin-left:.2cm;.margin-rig |
| d720 | 68 74 3a 20 32 63 6d 3b 20 70 61 64 64 69 6e 67 3a 20 32 6d 6d 3b 5c 22 3e 3c 62 3e 23 7b 65 78 | ht:.2cm;.padding:.2mm;\"><b>#{ex |
| d740 | 63 65 70 74 69 6f 6e 2e 63 6c 61 73 73 7d 3c 2f 62 3e 3a 20 23 7b 65 78 63 65 70 74 69 6f 6e 2e | ception.class}</b>:.#{exception. |
| d760 | 6d 65 73 73 61 67 65 7d 20 3c 62 3e 6f 6e 3c 2f 62 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | message}.<b>on</b>"............. |
| d780 | 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .........self.puts.............. |
| d7a0 | 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 23 7b 65 78 63 65 70 74 69 6f 6e 2e 62 | ........self.puts."#{exception.b |
| d7c0 | 61 63 6b 74 72 61 63 65 2e 6a 6f 69 6e 28 22 5c 6e 22 29 7d 3c 2f 70 72 65 3e 22 0d 0a 20 20 20 | acktrace.join("\n")}</pre>"..... |
| d7e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 3c 2f 62 6f | .................self.puts."</bo |
| d800 | 64 79 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 | dy>"......................self.p |
| d820 | 75 74 73 20 22 3c 2f 68 74 6d 6c 3e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 | uts."</html>"..................e |
| d840 | 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 | lse......................self.pu |
| d860 | 74 73 20 22 54 68 65 20 73 65 72 76 65 72 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 61 6e 20 65 78 | ts."The.server.encountered.an.ex |
| d880 | 63 65 70 74 69 6f 6e 20 61 6e 64 20 77 61 73 20 75 6e 61 62 6c 65 20 74 6f 20 63 6f 6d 70 6c 65 | ception.and.was.unable.to.comple |
| d8a0 | 74 65 20 79 6f 75 72 20 72 65 71 75 65 73 74 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | te.your.request"................ |
| d8c0 | 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 22 54 68 65 20 65 78 63 65 70 74 69 6f 6e 20 68 | ......self.puts."The.exception.h |
| d8e0 | 61 73 20 70 72 6f 76 69 64 65 64 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 6e 66 6f 72 6d | as.provided.the.following.inform |
| d900 | 61 74 69 6f 6e 3a 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c | ation:"......................sel |
| d920 | 66 2e 70 75 74 73 20 22 23 7b 65 78 63 65 70 74 69 6f 6e 2e 63 6c 61 73 73 7d 3a 20 23 7b 65 78 | f.puts."#{exception.class}:.#{ex |
| d940 | 63 65 70 74 69 6f 6e 2e 6d 65 73 73 61 67 65 7d 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ception.message}"............... |
| d960 | 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .......self.puts................ |
| d980 | 20 20 20 20 20 20 73 65 6c 66 2e 70 75 74 73 20 65 78 63 65 70 74 69 6f 6e 2e 62 61 63 6b 74 72 | ......self.puts.exception.backtr |
| d9a0 | 61 63 65 2e 6a 6f 69 6e 28 22 5c 6e 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ace.join("\n").................. |
| d9c0 | 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e | end..............end..........en |
| d9e0 | 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 73 65 74 74 69 6e 67 73 5b 22 63 61 63 68 65 | d............if.@settings["cache |
| da00 | 22 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72 20 3d 20 40 62 75 66 66 65 72 | "]..............buffer.=.@buffer |
| da20 | 2e 6a 6f 69 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c 65 73 73 20 40 6f 75 74 | .join................unless.@out |
| da40 | 70 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 6e 6c | put_started..................unl |
| da60 | 65 73 73 20 40 68 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 22 63 6f 6e 74 65 6e 74 2d 6c 65 | ess.@header.has_key?("content-le |
| da80 | 6e 67 74 68 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 | ngth")......................self |
| daa0 | 2e 68 65 61 64 65 72 28 22 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 3a 20 23 7b 62 75 66 66 65 | .header("content-length:.#{buffe |
| dac0 | 72 2e 6c 65 6e 67 74 68 7d 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 | r.length}")..................end |
| dae0 | 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6e 64 48 65 61 64 65 72 73 0d | ....................sendHeaders. |
| db00 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 24 73 | .............end..............$s |
| db20 | 74 64 6f 75 74 2e 70 72 69 6e 74 28 62 75 66 66 65 72 29 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 | tdout.print(buffer)..........els |
| db40 | 69 66 20 21 40 6f 75 74 70 75 74 5f 73 74 61 72 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | if.!@output_started............. |
| db60 | 20 73 65 6e 64 48 65 61 64 65 72 73 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 | .sendHeaders..........end....... |
| db80 | 20 20 20 40 6f 75 74 70 75 74 5f 61 6c 6c 6f 77 65 64 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 | ...@output_allowed.=.false;..... |
| dba0 | 20 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 44 65 63 | .....#.}}}......end........#.Dec |
| dbc0 | 6f 64 65 73 20 55 52 4c 20 65 6e 63 6f 64 65 64 20 64 61 74 61 2c 20 25 32 30 20 66 6f 72 20 65 | odes.URL.encoded.data,.%20.for.e |
| dbe0 | 78 61 6d 70 6c 65 20 73 74 61 6e 64 73 20 66 6f 72 20 61 20 73 70 61 63 65 2e 0d 0a 20 20 20 20 | xample.stands.for.a.space....... |
| dc00 | 64 65 66 20 52 77 65 62 2e 75 6e 65 73 63 61 70 65 28 73 74 72 29 0d 0a 20 20 20 20 20 20 20 20 | def.Rweb.unescape(str).......... |
| dc20 | 23 20 7b 7b 7b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 64 65 66 69 6e 65 64 3f 20 73 74 72 20 61 | #.{{{..........if.defined?.str.a |
| dc40 | 6e 64 20 73 74 72 2e 69 73 5f 61 3f 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | nd.str.is_a?.String............. |
| dc60 | 20 73 74 72 2e 67 73 75 62 21 28 2f 5c 2b 2f 2c 20 22 20 22 29 0d 0a 20 20 20 20 20 20 20 20 20 | .str.gsub!(/\+/,.".")........... |
| dc80 | 20 20 20 73 74 72 2e 67 73 75 62 28 2f 25 2e 7b 32 7d 2f 29 20 64 6f 20 7c 20 73 20 7c 0d 0a 20 | ...str.gsub(/%.{2}/).do.|.s.|... |
| dca0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 5b 31 2c 32 5d 2e 68 65 78 2e 63 68 72 0d 0a 20 | ...............s[1,2].hex.chr... |
| dcc0 | 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 | ...........end..........end..... |
| dce0 | 20 20 20 20 20 23 20 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 70 72 6f 74 65 | .....#.}}}......end........prote |
| dd00 | 63 74 65 64 0d 0a 20 20 20 20 64 65 66 20 73 65 6e 64 48 65 61 64 65 72 73 0d 0a 20 20 20 20 20 | cted......def.sendHeaders....... |
| dd20 | 20 20 20 23 20 7b 7b 7b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 43 6f 6f 6b 69 65 2e 64 69 73 61 6c | ...#.{{{............Cookie.disal |
| dd40 | 6c 6f 77 20 23 20 6e 6f 20 6d 6f 72 65 20 63 6f 6f 6b 69 65 73 20 63 61 6e 20 62 65 20 73 65 74 | low.#.no.more.cookies.can.be.set |
| dd60 | 20 6f 72 20 6d 6f 64 69 66 69 65 64 0d 0a 20 20 20 20 20 20 20 20 69 66 20 21 28 40 73 65 74 74 | .or.modified..........if.!(@sett |
| dd80 | 69 6e 67 73 2e 68 61 73 5f 6b 65 79 3f 28 22 73 69 6c 65 6e 74 22 29 20 61 6e 64 20 40 73 65 74 | ings.has_key?("silent").and.@set |
| dda0 | 74 69 6e 67 73 5b 22 73 69 6c 65 6e 74 22 5d 20 3d 3d 20 74 72 75 65 29 20 61 6e 64 20 21 40 68 | tings["silent"].==.true).and.!@h |
| ddc0 | 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 22 78 2d 70 6f 77 65 72 65 64 2d 62 79 22 29 0d 0a | eader.has_key?("x-powered-by").. |
| dde0 | 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 40 6d 6f 64 5f 72 75 62 79 0d 0a 20 20 20 20 20 20 | ............if.@mod_ruby........ |
| de00 | 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 28 22 78 2d 70 6f 77 65 72 65 64 2d 62 79 3a 20 | ..........header("x-powered-by:. |
| de20 | 23 7b 52 57 45 42 7d 20 28 52 75 62 79 2f 23 7b 52 55 42 59 5f 56 45 52 53 49 4f 4e 7d 2c 20 23 | #{RWEB}.(Ruby/#{RUBY_VERSION},.# |
| de40 | 7b 4d 4f 44 5f 52 55 42 59 7d 29 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 | {MOD_RUBY})");..............else |
| de60 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 28 22 78 2d 70 6f 77 65 | ..................header("x-powe |
| de80 | 72 65 64 2d 62 79 3a 20 23 7b 52 57 45 42 7d 20 28 52 75 62 79 2f 23 7b 52 55 42 59 5f 56 45 52 | red-by:.#{RWEB}.(Ruby/#{RUBY_VER |
| dea0 | 53 49 4f 4e 7d 29 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | SION})");..............end...... |
| dec0 | 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 6f 75 74 70 75 74 5f 6d 65 | ....end............if.@output_me |
| dee0 | 74 68 6f 64 20 3d 3d 20 22 70 68 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 40 | thod.==."ph"..............if.((@ |
| df00 | 73 74 61 74 75 73 20 3d 3d 20 6e 69 6c 20 6f 72 20 40 73 74 61 74 75 73 20 3d 3d 20 32 30 30 29 | status.==.nil.or.@status.==.200) |
| df20 | 20 61 6e 64 20 21 40 68 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 22 63 6f 6e 74 65 6e 74 2d | .and.!@header.has_key?("content- |
| df40 | 74 79 70 65 22 29 20 61 6e 64 20 21 40 68 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 22 6c 6f | type").and.!@header.has_key?("lo |
| df60 | 63 61 74 69 6f 6e 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 | cation"))..................heade |
| df80 | 72 28 22 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 22 29 0d 0a 20 20 | r("content-type:.text/html").... |
| dfa0 | 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | ..........end................if. |
| dfc0 | 40 73 74 61 74 75 73 20 21 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | @status.!=.nil.................. |
| dfe0 | 24 73 74 64 6f 75 74 2e 70 72 69 6e 74 20 22 53 74 61 74 75 73 3a 20 23 7b 40 73 74 61 74 75 73 | $stdout.print."Status:.#{@status |
| e000 | 7d 20 23 7b 40 72 65 61 73 6f 6e 50 68 72 61 73 65 7d 5c 72 5c 6e 22 0d 0a 20 20 20 20 20 20 20 | }.#{@reasonPhrase}\r\n"......... |
| e020 | 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 68 65 61 64 65 72 2e | .....end................@header. |
| e040 | 65 61 63 68 20 64 6f 20 7c 6b 65 79 2c 20 76 61 6c 75 65 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 | each.do.|key,.value|............ |
| e060 | 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 20 2a 31 20 23 20 22 75 6e 66 72 65 65 7a 65 22 20 | ......key.=.key.*1.#."unfreeze". |
| e080 | 6b 65 79 20 3a 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 5b 30 5d 20 3d | key.:)..................key[0].= |
| e0a0 | 20 6b 65 79 5b 30 2c 31 5d 2e 75 70 63 61 73 65 21 5b 30 5d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 | .key[0,1].upcase![0]............ |
| e0c0 | 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 2e 67 73 75 62 28 2f 2d 5b 61 2d 7a 5d 2f 29 | ........key.=.key.gsub(/-[a-z]/) |
| e0e0 | 20 64 6f 20 7c 63 68 61 72 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .do.|char|...................... |
| e100 | 22 2d 22 20 2b 20 63 68 61 72 5b 31 2c 31 5d 2e 75 70 63 61 73 65 0d 0a 20 20 20 20 20 20 20 20 | "-".+.char[1,1].upcase.......... |
| e120 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 | ........end....................$ |
| e140 | 73 74 64 6f 75 74 2e 70 72 69 6e 74 20 22 23 7b 6b 65 79 7d 3a 20 23 7b 76 61 6c 75 65 7d 5c 72 | stdout.print."#{key}:.#{value}\r |
| e160 | 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 | \n"..............end............ |
| e180 | 20 20 63 6f 6f 6b 69 65 73 20 3d 20 43 6f 6f 6b 69 65 2e 67 65 74 48 74 74 70 48 65 61 64 65 72 | ..cookies.=.Cookie.getHttpHeader |
| e1a0 | 20 23 20 47 65 74 20 61 6c 6c 20 63 6f 6f 6b 69 65 73 20 61 73 20 61 6e 20 48 54 54 50 20 48 65 | .#.Get.all.cookies.as.an.HTTP.He |
| e1c0 | 61 64 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6f 6b 69 65 73 0d 0a 20 20 | ader..............if.cookies.... |
| e1e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 24 73 74 64 6f 75 74 2e 70 72 69 6e 74 20 63 6f 6f 6b | ..............$stdout.print.cook |
| e200 | 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 | ies..............end............ |
| e220 | 20 20 20 20 24 73 74 64 6f 75 74 2e 70 72 69 6e 74 20 22 5c 72 5c 6e 22 0d 0a 0d 0a 20 20 20 20 | ....$stdout.print."\r\n"........ |
| e240 | 20 20 20 20 65 6c 73 69 66 20 40 6f 75 74 70 75 74 5f 6d 65 74 68 6f 64 20 3d 3d 20 22 6e 70 68 | ....elsif.@output_method.==."nph |
| e260 | 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 40 6f 75 74 70 75 74 5f 6d 65 74 68 6f 64 20 | "..........elsif.@output_method. |
| e280 | 3d 3d 20 22 6d 6f 64 5f 72 75 62 79 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 20 3d 20 41 | ==."mod_ruby"..............r.=.A |
| e2a0 | 70 61 63 68 65 2e 72 65 71 75 65 73 74 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | pache.request................if. |
| e2c0 | 28 28 40 73 74 61 74 75 73 20 3d 3d 20 6e 69 6c 20 6f 72 20 40 73 74 61 74 75 73 20 3d 3d 20 32 | ((@status.==.nil.or.@status.==.2 |
| e2e0 | 30 30 29 20 61 6e 64 20 21 40 68 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 22 63 6f 6e 74 65 | 00).and.!@header.has_key?("conte |
| e300 | 6e 74 2d 74 79 70 65 22 29 20 61 6e 64 20 21 40 68 65 61 64 65 72 2e 68 61 73 5f 6b 65 79 3f 28 | nt-type").and.!@header.has_key?( |
| e320 | 22 6c 6f 63 61 74 69 6f 6e 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 | "location"))..................he |
| e340 | 61 64 65 72 28 22 74 65 78 74 2f 68 74 6d 6c 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 | ader("text/html")..............e |
| e360 | 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 40 73 74 61 74 75 73 20 21 3d 20 | nd................if.@status.!=. |
| e380 | 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 2e 73 74 61 74 75 73 5f 6c 69 | nil..................r.status_li |
| e3a0 | 6e 65 20 3d 20 22 23 7b 40 73 74 61 74 75 73 7d 20 23 7b 40 72 65 61 73 6f 6e 50 68 72 61 73 65 | ne.=."#{@status}.#{@reasonPhrase |
| e3c0 | 7d 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 | }"..............end............. |
| e3e0 | 20 20 20 72 2e 73 65 6e 64 5f 68 74 74 70 5f 68 65 61 64 65 72 0d 0a 20 20 20 20 20 20 20 20 20 | ...r.send_http_header........... |
| e400 | 20 20 20 40 68 65 61 64 65 72 2e 65 61 63 68 20 64 6f 20 7c 6b 65 79 2c 20 76 61 6c 75 65 7c 0d | ...@header.each.do.|key,.value|. |
| e420 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 20 2a 31 20 23 20 | .................key.=.key.*1.#. |
| e440 | 22 75 6e 66 72 65 65 7a 65 22 20 6b 65 79 20 3a 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | "unfreeze".key.:)............... |
| e460 | 20 20 20 20 20 6b 65 79 5b 30 5d 20 3d 20 6b 65 79 5b 30 2c 31 5d 2e 75 70 63 61 73 65 21 5b 30 | .....key[0].=.key[0,1].upcase![0 |
| e480 | 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 2e 67 73 75 | ]..................key.=.key.gsu |
| e4a0 | 62 28 2f 2d 5b 61 2d 7a 5d 2f 29 20 64 6f 20 7c 63 68 61 72 7c 0d 0a 20 20 20 20 20 20 20 20 20 | b(/-[a-z]/).do.|char|........... |
| e4c0 | 20 20 20 20 20 20 20 20 20 20 20 22 2d 22 20 2b 20 63 68 61 72 5b 31 2c 31 5d 2e 75 70 63 61 73 | ..........."-".+.char[1,1].upcas |
| e4e0 | 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 | e..................end.......... |
| e500 | 20 20 20 20 20 20 20 20 70 75 74 73 20 22 23 7b 6b 65 79 7d 3a 20 23 7b 76 61 6c 75 65 2e 63 6c | ........puts."#{key}:.#{value.cl |
| e520 | 61 73 73 7d 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 72 2e 68 65 61 64 65 72 | ass}"..................#r.header |
| e540 | 73 5f 6f 75 74 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | s_out[key].=.value.............. |
| e560 | 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 40 6f 75 74 70 75 | end..........end..........@outpu |
| e580 | 74 5f 73 74 61 72 74 65 64 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 20 20 20 20 23 20 7d 7d 7d 0d | t_started.=.true..........#.}}}. |
| e5a0 | 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 67 65 74 52 65 61 73 6f 6e 50 68 72 | .....end........def.getReasonPhr |
| e5c0 | 61 73 65 20 28 73 74 61 74 75 73 29 0d 0a 20 20 20 20 20 20 20 20 23 20 7b 7b 7b 0d 0a 20 20 20 | ase.(status)..........#.{{{..... |
| e5e0 | 20 20 20 20 20 69 66 20 73 74 61 74 75 73 20 3d 3d 20 31 30 30 0d 0a 20 20 20 20 20 20 20 20 20 | .....if.status.==.100........... |
| e600 | 20 20 20 22 43 6f 6e 74 69 6e 75 65 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 | ..."Continue"..........elsif.sta |
| e620 | 74 75 73 20 3d 3d 20 31 30 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 53 77 69 74 63 68 69 | tus.==.101.............."Switchi |
| e640 | 6e 67 20 50 72 6f 74 6f 63 6f 6c 73 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 | ng.Protocols"..........elsif.sta |
| e660 | 74 75 73 20 3d 3d 20 32 30 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4f 4b 22 0d 0a 20 20 | tus.==.200.............."OK".... |
| e680 | 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 32 30 31 0d 0a 20 20 20 20 20 | ......elsif.status.==.201....... |
| e6a0 | 20 20 20 20 20 20 20 22 43 72 65 61 74 65 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 | ......."Created"..........elsif. |
| e6c0 | 73 74 61 74 75 73 20 3d 3d 20 32 30 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 41 63 63 65 | status.==.202.............."Acce |
| e6e0 | 70 74 65 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 32 | pted"..........elsif.status.==.2 |
| e700 | 30 33 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 6e 2d 41 75 74 68 6f 72 69 74 61 74 69 | 03.............."Non-Authoritati |
| e720 | 76 65 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 | ve.Information"..........elsif.s |
| e740 | 74 61 74 75 73 20 3d 3d 20 32 30 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 20 43 6f | tatus.==.204.............."No.Co |
| e760 | 6e 74 65 6e 74 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 | ntent"..........elsif.status.==. |
| e780 | 32 30 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 73 65 74 20 43 6f 6e 74 65 6e 74 22 | 205.............."Reset.Content" |
| e7a0 | 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 32 30 36 0d 0a 20 | ..........elsif.status.==.206... |
| e7c0 | 20 20 20 20 20 20 20 20 20 20 20 22 50 61 72 74 69 61 6c 20 43 6f 6e 74 65 6e 74 22 0d 0a 20 20 | ..........."Partial.Content".... |
| e7e0 | 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 33 30 30 0d 0a 20 20 20 20 20 | ......elsif.status.==.300....... |
| e800 | 20 20 20 20 20 20 20 22 4d 75 6c 74 69 70 6c 65 20 43 68 6f 69 63 65 73 22 0d 0a 20 20 20 20 20 | ......."Multiple.Choices"....... |
| e820 | 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 33 30 31 0d 0a 20 20 20 20 20 20 20 20 | ...elsif.status.==.301.......... |
| e840 | 20 20 20 20 22 4d 6f 76 65 64 20 50 65 72 6d 61 6e 65 6e 74 6c 79 22 0d 0a 20 20 20 20 20 20 20 | ...."Moved.Permanently"......... |
| e860 | 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 33 30 32 0d 0a 20 20 20 20 20 20 20 20 20 20 | .elsif.status.==.302............ |
| e880 | 20 20 22 46 6f 75 6e 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 | .."Found"..........elsif.status. |
| e8a0 | 3d 3d 20 33 30 33 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 53 65 65 20 4f 74 68 65 72 22 0d | ==.303.............."See.Other". |
| e8c0 | 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 33 30 34 0d 0a 20 20 | .........elsif.status.==.304.... |
| e8e0 | 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74 20 4d 6f 64 69 66 69 65 64 22 0d 0a 20 20 20 20 20 20 | .........."Not.Modified"........ |
| e900 | 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 33 30 35 0d 0a 20 20 20 20 20 20 20 20 20 | ..elsif.status.==.305........... |
| e920 | 20 20 20 22 55 73 65 20 50 72 6f 78 79 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 | ..."Use.Proxy"..........elsif.st |
| e940 | 61 74 75 73 20 3d 3d 20 33 30 37 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 54 65 6d 70 6f 72 | atus.==.307.............."Tempor |
| e960 | 61 72 79 20 52 65 64 69 72 65 63 74 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 | ary.Redirect"..........elsif.sta |
| e980 | 74 75 73 20 3d 3d 20 34 30 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 42 61 64 20 52 65 71 | tus.==.400.............."Bad.Req |
| e9a0 | 75 65 73 74 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 | uest"..........elsif.status.==.4 |
| e9c0 | 30 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 61 75 74 68 6f 72 69 7a 65 64 22 0d 0a | 01.............."Unauthorized".. |
| e9e0 | 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 30 32 0d 0a 20 20 20 | ........elsif.status.==.402..... |
| ea00 | 20 20 20 20 20 20 20 20 20 22 50 61 79 6d 65 6e 74 20 52 65 71 75 69 72 65 64 22 0d 0a 20 20 20 | ........."Payment.Required"..... |
| ea20 | 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 30 33 0d 0a 20 20 20 20 20 20 | .....elsif.status.==.403........ |
| ea40 | 20 20 20 20 20 20 22 46 6f 72 62 69 64 64 65 6e 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 | ......"Forbidden"..........elsif |
| ea60 | 20 73 74 61 74 75 73 20 3d 3d 20 34 30 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74 | .status.==.404.............."Not |
| ea80 | 20 46 6f 75 6e 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d | .Found"..........elsif.status.== |
| eaa0 | 20 34 30 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4d 65 74 68 6f 64 20 4e 6f 74 20 41 6c | .405.............."Method.Not.Al |
| eac0 | 6c 6f 77 65 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 | lowed"..........elsif.status.==. |
| eae0 | 34 30 36 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74 20 41 63 63 65 70 74 61 62 6c 65 | 406.............."Not.Acceptable |
| eb00 | 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 30 37 0d 0a | "..........elsif.status.==.407.. |
| eb20 | 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 6f 78 79 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f | ............"Proxy.Authenticatio |
| eb40 | 6e 20 52 65 71 75 69 72 65 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 | n.Required"..........elsif.statu |
| eb60 | 73 20 3d 3d 20 34 30 38 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 71 75 65 73 74 20 54 | s.==.408.............."Request.T |
| eb80 | 69 6d 65 2d 6f 75 74 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d | ime-out"..........elsif.status.= |
| eba0 | 3d 20 34 30 39 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e 66 6c 69 63 74 22 0d 0a 20 | =.409.............."Conflict"... |
| ebc0 | 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 31 30 0d 0a 20 20 20 20 | .......elsif.status.==.410...... |
| ebe0 | 20 20 20 20 20 20 20 20 22 47 6f 6e 65 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 | ........"Gone"..........elsif.st |
| ec00 | 61 74 75 73 20 3d 3d 20 34 31 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 4c 65 6e 67 74 68 | atus.==.411.............."Length |
| ec20 | 20 52 65 71 75 69 72 65 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 | .Required"..........elsif.status |
| ec40 | 20 3d 3d 20 34 31 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 65 63 6f 6e 64 69 74 69 | .==.412.............."Preconditi |
| ec60 | 6f 6e 20 46 61 69 6c 65 64 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 | on.Failed"..........elsif.status |
| ec80 | 20 3d 3d 20 34 31 33 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 71 75 65 73 74 20 45 6e | .==.413.............."Request.En |
| eca0 | 74 69 74 79 20 54 6f 6f 20 4c 61 72 67 65 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 | tity.Too.Large"..........elsif.s |
| ecc0 | 74 61 74 75 73 20 3d 3d 20 34 31 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 71 75 65 | tatus.==.414.............."Reque |
| ece0 | 73 74 2d 55 52 49 20 54 6f 6f 20 4c 61 72 67 65 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 | st-URI.Too.Large"..........elsif |
| ed00 | 20 73 74 61 74 75 73 20 3d 3d 20 34 31 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 73 | .status.==.415.............."Uns |
| ed20 | 75 70 70 6f 72 74 65 64 20 4d 65 64 69 61 20 54 79 70 65 22 0d 0a 20 20 20 20 20 20 20 20 65 6c | upported.Media.Type"..........el |
| ed40 | 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 31 36 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 | sif.status.==.416.............." |
| ed60 | 52 65 71 75 65 73 74 65 64 20 72 61 6e 67 65 20 6e 6f 74 20 73 61 74 69 73 66 69 61 62 6c 65 22 | Requested.range.not.satisfiable" |
| ed80 | 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 34 31 37 0d 0a 20 | ..........elsif.status.==.417... |
| eda0 | 20 20 20 20 20 20 20 20 20 20 20 22 45 78 70 65 63 74 61 74 69 6f 6e 20 46 61 69 6c 65 64 22 0d | ..........."Expectation.Failed". |
| edc0 | 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 35 30 30 0d 0a 20 20 | .........elsif.status.==.500.... |
| ede0 | 20 20 20 20 20 20 20 20 20 20 22 49 6e 74 65 72 6e 61 6c 20 53 65 72 76 65 72 20 45 72 72 6f 72 | .........."Internal.Server.Error |
| ee00 | 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 35 30 31 0d 0a | "..........elsif.status.==.501.. |
| ee20 | 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 74 20 49 6d 70 6c 65 6d 65 6e 74 65 64 22 0d 0a 20 | ............"Not.Implemented"... |
| ee40 | 20 20 20 20 20 20 20 65 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 35 30 32 0d 0a 20 20 20 20 | .......elsif.status.==.502...... |
| ee60 | 20 20 20 20 20 20 20 20 22 42 61 64 20 47 61 74 65 77 61 79 22 0d 0a 20 20 20 20 20 20 20 20 65 | ........"Bad.Gateway"..........e |
| ee80 | 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 35 30 33 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | lsif.status.==.503.............. |
| eea0 | 22 53 65 72 76 69 63 65 20 55 6e 61 76 61 69 6c 61 62 6c 65 22 0d 0a 20 20 20 20 20 20 20 20 65 | "Service.Unavailable"..........e |
| eec0 | 6c 73 69 66 20 73 74 61 74 75 73 20 3d 3d 20 35 30 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | lsif.status.==.504.............. |
| eee0 | 22 47 61 74 65 77 61 79 20 54 69 6d 65 2d 6f 75 74 22 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 | "Gateway.Time-out"..........elsi |
| ef00 | 66 20 73 74 61 74 75 73 20 3d 3d 20 35 30 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 48 54 | f.status.==.505.............."HT |
| ef20 | 54 50 20 56 65 72 73 69 6f 6e 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 22 0d 0a 20 20 20 20 20 | TP.Version.not.supported"....... |
| ef40 | 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 20 22 55 6e 6b 6e | ...else..............raise."Unkn |
| ef60 | 6f 77 6e 20 53 74 61 74 75 73 63 6f 64 65 2e 20 53 65 65 20 68 74 74 70 3a 2f 2f 77 77 77 2e 77 | own.Statuscode..See.http://www.w |
| ef80 | 33 2e 6f 72 67 2f 50 72 6f 74 6f 63 6f 6c 73 2f 72 66 63 32 36 31 36 2f 72 66 63 32 36 31 36 2d | 3.org/Protocols/rfc2616/rfc2616- |
| efa0 | 73 65 63 36 2e 68 74 6d 6c 23 73 65 63 36 2e 31 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 72 6d | sec6.html#sec6.1.for.more.inform |
| efc0 | 61 74 69 6f 6e 2e 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 23 20 | ation."..........end..........#. |
| efe0 | 7d 7d 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 63 6c 61 73 73 20 43 6f 6f 6b 69 | }}}......end..end....class.Cooki |
| f000 | 65 0d 0a 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 6e 61 6d 65 2c 20 3a 76 61 6c 75 65 2c 20 3a | e...attr_reader.:name,.:value,.: |
| f020 | 6d 61 78 61 67 65 2c 20 3a 70 61 74 68 2c 20 3a 64 6f 6d 61 69 6e 2c 20 3a 73 65 63 75 72 65 2c | maxage,.:path,.:domain,.:secure, |
| f040 | 20 3a 63 6f 6d 6d 65 6e 74 0d 0a 0d 0a 09 23 20 53 65 74 73 20 61 20 63 6f 6f 6b 69 65 2e 20 50 | .:comment.....#.Sets.a.cookie..P |
| f060 | 6c 65 61 73 65 20 73 65 65 20 62 65 6c 6f 77 20 66 6f 72 20 64 65 74 61 69 6c 73 20 6f 66 20 74 | lease.see.below.for.details.of.t |
| f080 | 68 65 20 61 74 74 72 69 62 75 74 65 73 2e 0d 0a 09 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 20 | he.attributes....def.initialize. |
| f0a0 | 28 6e 61 6d 65 2c 20 76 61 6c 75 65 20 3d 20 6e 69 6c 2c 20 6d 61 78 61 67 65 20 3d 20 6e 69 6c | (name,.value.=.nil,.maxage.=.nil |
| f0c0 | 2c 20 70 61 74 68 20 3d 20 6e 69 6c 2c 20 64 6f 6d 61 69 6e 20 3d 20 6e 69 6c 2c 20 73 65 63 75 | ,.path.=.nil,.domain.=.nil,.secu |
| f0e0 | 72 65 20 3d 20 66 61 6c 73 65 29 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 23 20 48 54 54 50 20 68 | re.=.false)....#.{{{....#.HTTP.h |
| f100 | 65 61 64 65 72 73 20 28 43 6f 6f 6b 69 65 73 20 61 72 65 20 61 20 48 54 54 50 20 68 65 61 64 65 | eaders.(Cookies.are.a.HTTP.heade |
| f120 | 72 29 20 63 61 6e 20 6f 6e 6c 79 20 73 65 74 2c 20 77 68 69 6c 65 20 6e 6f 20 63 6f 6e 74 65 6e | r).can.only.set,.while.no.conten |
| f140 | 74 0d 0a 09 09 23 20 69 73 20 73 65 6e 64 2e 20 53 6f 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 | t....#.is.send..So.an.exception. |
| f160 | 77 69 6c 6c 20 62 65 20 72 61 69 73 65 64 2c 20 77 68 65 6e 20 40 40 61 6c 6c 6f 77 65 64 20 69 | will.be.raised,.when.@@allowed.i |
| f180 | 73 20 73 65 74 20 74 6f 20 66 61 6c 73 65 0d 0a 09 09 23 20 61 6e 64 20 61 20 6e 65 77 20 63 6f | s.set.to.false....#.and.a.new.co |
| f1a0 | 6f 6b 69 65 20 68 61 73 20 73 65 74 2e 0d 0a 09 09 75 6e 6c 65 73 73 20 64 65 66 69 6e 65 64 3f | okie.has.set.....unless.defined? |
| f1c0 | 28 40 40 61 6c 6c 6f 77 65 64 29 0d 0a 09 09 09 40 40 61 6c 6c 6f 77 65 64 20 3d 20 74 72 75 65 | (@@allowed).....@@allowed.=.true |
| f1e0 | 0d 0a 09 09 65 6e 64 0d 0a 09 09 75 6e 6c 65 73 73 20 40 40 61 6c 6c 6f 77 65 64 0d 0a 09 09 09 | ....end....unless.@@allowed..... |
| f200 | 72 61 69 73 65 20 22 59 6f 75 20 63 61 6e 27 74 20 73 65 74 20 63 6f 6f 6b 69 65 73 20 61 66 74 | raise."You.can't.set.cookies.aft |
| f220 | 65 72 20 74 68 65 20 48 54 54 50 20 68 65 61 64 65 72 73 20 61 72 65 20 73 65 6e 64 2e 22 0d 0a | er.the.HTTP.headers.are.send.".. |
| f240 | 09 09 65 6e 64 0d 0a 0d 0a 09 09 75 6e 6c 65 73 73 20 64 65 66 69 6e 65 64 3f 28 40 40 6c 69 73 | ..end......unless.defined?(@@lis |
| f260 | 74 29 0d 0a 09 09 09 40 40 6c 69 73 74 20 3d 20 5b 5d 0d 0a 09 09 65 6e 64 0d 0a 09 09 40 40 6c | t).....@@list.=.[]....end....@@l |
| f280 | 69 73 74 20 2b 3d 20 5b 73 65 6c 66 5d 0d 0a 0d 0a 09 09 75 6e 6c 65 73 73 20 64 65 66 69 6e 65 | ist.+=.[self]......unless.define |
| f2a0 | 64 3f 28 40 40 74 79 70 65 29 0d 0a 09 09 09 40 40 74 79 70 65 20 3d 20 22 6e 65 74 73 63 61 70 | d?(@@type).....@@type.=."netscap |
| f2c0 | 65 22 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 75 6e 6c 65 73 73 20 6e 61 6d 65 2e 63 6c 61 73 73 | e"....end......unless.name.class |
| f2e0 | 20 3d 3d 20 53 74 72 69 6e 67 0d 0a 09 09 09 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 | .==.String.....raise.TypeError,. |
| f300 | 22 54 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 61 20 | "The.name.of.a.cookie.must.be.a. |
| f320 | 73 74 72 69 6e 67 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 09 09 69 66 20 76 61 6c | string",.caller....end....if.val |
| f340 | 75 65 2e 63 6c 61 73 73 2e 73 75 70 65 72 63 6c 61 73 73 20 3d 3d 20 49 6e 74 65 67 65 72 20 7c | ue.class.superclass.==.Integer.| |
| f360 | 7c 20 76 61 6c 75 65 2e 63 6c 61 73 73 20 3d 3d 20 46 6c 6f 61 74 0d 0a 09 09 09 76 61 6c 75 65 | |.value.class.==.Float.....value |
| f380 | 20 3d 20 76 61 6c 75 65 2e 74 6f 5f 73 0d 0a 09 09 65 6c 73 69 66 20 76 61 6c 75 65 2e 63 6c 61 | .=.value.to_s....elsif.value.cla |
| f3a0 | 73 73 20 21 3d 20 53 74 72 69 6e 67 20 26 26 20 76 61 6c 75 65 20 21 3d 20 6e 69 6c 0d 0a 09 09 | ss.!=.String.&&.value.!=.nil.... |
| f3c0 | 09 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 76 61 6c 75 65 20 6f 66 20 | .raise.TypeError,."The.value.of. |
| f3e0 | 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 69 6e 74 65 67 | a.cookie.must.be.a.string,.integ |
| f400 | 65 72 2c 20 66 6c 6f 61 74 20 6f 72 20 6e 69 6c 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 | er,.float.or.nil",.caller....end |
| f420 | 0d 0a 09 09 69 66 20 6d 61 78 61 67 65 2e 63 6c 61 73 73 20 3d 3d 20 54 69 6d 65 0d 0a 09 09 09 | ....if.maxage.class.==.Time..... |
| f440 | 6d 61 78 61 67 65 20 3d 20 6d 61 78 61 67 65 20 2d 20 54 69 6d 65 2e 6e 6f 77 0d 0a 09 09 65 6c | maxage.=.maxage.-.Time.now....el |
| f460 | 73 69 66 20 21 6d 61 78 61 67 65 2e 63 6c 61 73 73 2e 73 75 70 65 72 63 6c 61 73 73 20 3d 3d 20 | sif.!maxage.class.superclass.==. |
| f480 | 49 6e 74 65 67 65 72 20 20 7c 7c 20 21 6d 61 78 61 67 65 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 72 | Integer..||.!maxage.==.nil.....r |
| f4a0 | 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 6d 61 78 61 67 65 20 64 61 74 65 | aise.TypeError,."The.maxage.date |
| f4c0 | 20 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 61 6e 20 49 6e 74 65 67 65 72 20 | .of.a.cookie.must.be.an.Integer. |
| f4e0 | 6f 72 20 54 69 6d 65 20 6f 62 6a 65 63 74 20 6f 72 20 6e 69 6c 2e 22 2c 20 63 61 6c 6c 65 72 0d | or.Time.object.or.nil.",.caller. |
| f500 | 0a 09 09 65 6e 64 0d 0a 09 09 75 6e 6c 65 73 73 20 70 61 74 68 2e 63 6c 61 73 73 20 3d 3d 20 53 | ...end....unless.path.class.==.S |
| f520 | 74 72 69 6e 67 20 20 7c 7c 20 70 61 74 68 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 72 61 69 73 65 20 | tring..||.path.==.nil.....raise. |
| f540 | 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 70 61 74 68 20 6f 66 20 61 20 63 6f 6f 6b 69 65 | TypeError,."The.path.of.a.cookie |
| f560 | 20 6d 75 73 74 20 62 65 20 6e 69 6c 20 6f 72 20 61 20 73 74 72 69 6e 67 22 2c 20 63 61 6c 6c 65 | .must.be.nil.or.a.string",.calle |
| f580 | 72 0d 0a 09 09 65 6e 64 0d 0a 09 09 75 6e 6c 65 73 73 20 64 6f 6d 61 69 6e 2e 63 6c 61 73 73 20 | r....end....unless.domain.class. |
| f5a0 | 3d 3d 20 53 74 72 69 6e 67 20 20 7c 7c 20 64 6f 6d 61 69 6e 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 | ==.String..||.domain.==.nil..... |
| f5c0 | 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 76 61 6c 75 65 20 6f 66 20 61 | raise.TypeError,."The.value.of.a |
| f5e0 | 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 6e 69 6c 20 6f 72 20 61 20 73 74 72 69 6e 67 22 | .cookie.must.be.nil.or.a.string" |
| f600 | 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 09 09 75 6e 6c 65 73 73 20 73 65 63 75 72 65 | ,.caller....end....unless.secure |
| f620 | 20 3d 3d 20 74 72 75 65 20 20 7c 7c 20 73 65 63 75 72 65 20 3d 3d 20 66 61 6c 73 65 0d 0a 09 09 | .==.true..||.secure.==.false.... |
| f640 | 09 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 73 65 63 75 72 65 20 66 69 | .raise.TypeError,."The.secure.fi |
| f660 | 65 6c 64 20 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 74 72 75 65 20 6f 72 20 | eld.of.a.cookie.must.be.true.or. |
| f680 | 66 61 6c 73 65 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 40 6e 61 6d 65 | false",.caller....end......@name |
| f6a0 | 2c 20 40 76 61 6c 75 65 2c 20 40 6d 61 78 61 67 65 2c 20 40 70 61 74 68 2c 20 40 64 6f 6d 61 69 | ,.@value,.@maxage,.@path,.@domai |
| f6c0 | 6e 2c 20 40 73 65 63 75 72 65 20 3d 20 6e 61 6d 65 2c 20 76 61 6c 75 65 2c 20 6d 61 78 61 67 65 | n,.@secure.=.name,.value,.maxage |
| f6e0 | 2c 20 70 61 74 68 2c 20 64 6f 6d 61 69 6e 2c 20 73 65 63 75 72 65 0d 0a 09 09 40 63 6f 6d 6d 65 | ,.path,.domain,.secure....@comme |
| f700 | 6e 74 20 3d 20 6e 69 6c 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 4d 6f | nt.=.nil....#.}}}...end.....#.Mo |
| f720 | 64 69 66 69 65 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73 20 63 6f 6f 6b 69 65 2e | difies.the.value.of.this.cookie. |
| f740 | 20 54 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 73 74 6f | .The.information.you.want.to.sto |
| f760 | 72 65 2e 20 49 66 20 74 68 65 0d 0a 09 23 20 76 61 6c 75 65 20 69 73 20 6e 69 6c 2c 20 74 68 65 | re..If.the...#.value.is.nil,.the |
| f780 | 20 63 6f 6f 6b 69 65 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64 20 62 79 20 74 68 65 20 63 | .cookie.will.be.deleted.by.the.c |
| f7a0 | 6c 69 65 6e 74 2e 0d 0a 09 23 0d 0a 09 23 20 54 68 69 73 20 61 74 74 72 69 62 75 74 65 20 63 61 | lient....#...#.This.attribute.ca |
| f7c0 | 6e 20 62 65 20 61 20 53 74 72 69 6e 67 2c 20 49 6e 74 65 67 65 72 20 6f 72 20 46 6c 6f 61 74 20 | n.be.a.String,.Integer.or.Float. |
| f7e0 | 6f 62 6a 65 63 74 20 6f 72 20 6e 69 6c 2e 0d 0a 09 64 65 66 20 76 61 6c 75 65 3d 28 76 61 6c 75 | object.or.nil....def.value=(valu |
| f800 | 65 29 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 69 66 20 76 61 6c 75 65 2e 63 6c 61 73 73 2e 73 75 | e)....#.{{{....if.value.class.su |
| f820 | 70 65 72 63 6c 61 73 73 20 3d 3d 20 49 6e 74 65 67 65 72 20 7c 7c 20 76 61 6c 75 65 2e 63 6c 61 | perclass.==.Integer.||.value.cla |
| f840 | 73 73 20 3d 3d 20 46 6c 6f 61 74 0d 0a 09 09 09 76 61 6c 75 65 20 3d 20 76 61 6c 75 65 2e 74 6f | ss.==.Float.....value.=.value.to |
| f860 | 5f 73 0d 0a 09 09 65 6c 73 69 66 20 76 61 6c 75 65 2e 63 6c 61 73 73 20 21 3d 20 53 74 72 69 6e | _s....elsif.value.class.!=.Strin |
| f880 | 67 20 26 26 20 76 61 6c 75 65 20 21 3d 20 6e 69 6c 0d 0a 09 09 09 72 61 69 73 65 20 54 79 70 65 | g.&&.value.!=.nil.....raise.Type |
| f8a0 | 45 72 72 6f 72 2c 20 22 54 68 65 20 76 61 6c 75 65 20 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 | Error,."The.value.of.a.cookie.mu |
| f8c0 | 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 69 6e 74 65 67 65 72 2c 20 66 6c 6f 61 74 20 6f | st.be.a.string,.integer,.float.o |
| f8e0 | 72 20 6e 69 6c 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 09 09 40 76 61 6c 75 65 20 | r.nil",.caller....end....@value. |
| f900 | 3d 20 76 61 6c 75 65 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 4d 6f 64 | =.value....#.}}}...end.....#.Mod |
| f920 | 69 66 69 65 73 20 74 68 65 20 6d 61 78 61 67 65 20 6f 66 20 74 68 69 73 20 63 6f 6f 6b 69 65 2e | ifies.the.maxage.of.this.cookie. |
| f940 | 20 54 68 69 73 20 61 74 74 72 69 62 75 74 65 20 64 65 66 69 6e 65 73 20 74 68 65 20 6c 69 66 65 | .This.attribute.defines.the.life |
| f960 | 74 69 6d 65 20 6f 66 0d 0a 09 23 20 74 68 65 20 63 6f 6f 6b 69 65 2c 20 69 6e 20 73 65 63 6f 6e | time.of...#.the.cookie,.in.secon |
| f980 | 64 73 2e 20 41 20 76 61 6c 75 65 20 6f 66 20 30 20 6d 65 61 6e 73 20 74 68 65 20 63 6f 6f 6b 69 | ds..A.value.of.0.means.the.cooki |
| f9a0 | 65 20 73 68 6f 75 6c 64 20 62 65 20 64 69 73 63 61 72 64 65 64 0d 0a 09 23 20 69 6d 65 64 69 61 | e.should.be.discarded...#.imedia |
| f9c0 | 74 6c 79 2e 20 49 66 20 69 74 20 73 65 74 20 74 6f 20 6e 69 6c 2c 20 74 68 65 20 63 6f 6f 6b 69 | tly..If.it.set.to.nil,.the.cooki |
| f9e0 | 65 20 77 69 6c 6c 20 62 65 20 64 65 6c 65 74 65 64 20 77 68 65 6e 20 74 68 65 20 62 72 6f 77 73 | e.will.be.deleted.when.the.brows |
| fa00 | 65 72 0d 0a 09 23 20 77 69 6c 6c 20 62 65 20 63 6c 6f 73 65 64 2e 0d 0a 09 23 0d 0a 09 23 20 41 | er...#.will.be.closed....#...#.A |
| fa20 | 74 74 65 6e 74 69 6f 6e 3a 20 54 68 69 73 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d | ttention:.This.is.different.from |
| fa40 | 20 6f 74 68 65 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 20 6c 69 6b 65 20 50 48 50 2c | .other.implementations.like.PHP, |
| fa60 | 20 77 68 65 72 65 20 79 6f 75 0d 0a 09 23 20 67 69 76 65 73 20 74 68 65 20 73 65 63 6f 6e 64 73 | .where.you...#.gives.the.seconds |
| fa80 | 20 73 69 6e 63 65 20 31 2f 31 2f 31 39 37 30 20 30 3a 30 30 3a 30 30 20 47 4d 54 2e 0d 0a 09 23 | .since.1/1/1970.0:00:00.GMT....# |
| faa0 | 0d 0a 09 23 20 54 68 69 73 20 61 74 74 72 69 62 75 74 65 20 6d 75 73 74 20 62 65 20 61 6e 20 49 | ...#.This.attribute.must.be.an.I |
| fac0 | 6e 74 65 67 65 72 20 6f 72 20 54 69 6d 65 20 6f 62 6a 65 63 74 20 6f 72 20 6e 69 6c 2e 0d 0a 09 | nteger.or.Time.object.or.nil.... |
| fae0 | 64 65 66 20 6d 61 78 61 67 65 3d 28 6d 61 78 61 67 65 29 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 | def.maxage=(maxage)....#.{{{.... |
| fb00 | 69 66 20 6d 61 78 61 67 65 2e 63 6c 61 73 73 20 3d 3d 20 54 69 6d 65 0d 0a 09 09 09 6d 61 78 61 | if.maxage.class.==.Time.....maxa |
| fb20 | 67 65 20 3d 20 6d 61 78 61 67 65 20 2d 20 54 69 6d 65 2e 6e 6f 77 0d 0a 09 09 65 6c 73 69 66 20 | ge.=.maxage.-.Time.now....elsif. |
| fb40 | 6d 61 78 61 67 65 2e 63 6c 61 73 73 2e 73 75 70 65 72 63 6c 61 73 73 20 3d 3d 20 49 6e 74 65 67 | maxage.class.superclass.==.Integ |
| fb60 | 65 72 20 20 7c 7c 20 21 6d 61 78 61 67 65 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 72 61 69 73 65 20 | er..||.!maxage.==.nil.....raise. |
| fb80 | 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 6d 61 78 61 67 65 20 6f 66 20 61 20 63 6f 6f 6b | TypeError,."The.maxage.of.a.cook |
| fba0 | 69 65 20 6d 75 73 74 20 62 65 20 61 6e 20 49 6e 74 65 72 67 65 72 20 6f 72 20 54 69 6d 65 20 6f | ie.must.be.an.Interger.or.Time.o |
| fbc0 | 62 6a 65 63 74 20 6f 72 20 6e 69 6c 2e 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 09 | bject.or.nil.",.caller....end... |
| fbe0 | 09 40 6d 61 78 61 67 65 20 3d 20 6d 61 78 61 67 65 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 | .@maxage.=.maxage....#.}}}...end |
| fc00 | 0d 0a 0d 0a 09 23 20 4d 6f 64 69 66 69 65 73 20 74 68 65 20 70 61 74 68 20 76 61 6c 75 65 20 6f | .....#.Modifies.the.path.value.o |
| fc20 | 66 20 74 68 69 73 20 63 6f 6f 6b 69 65 2e 20 54 68 65 20 63 6c 69 65 6e 74 20 77 69 6c 6c 20 73 | f.this.cookie..The.client.will.s |
| fc40 | 65 6e 64 20 74 68 69 73 20 63 6f 6f 6b 69 65 0d 0a 09 23 20 6f 6e 6c 79 2c 20 69 66 20 74 68 65 | end.this.cookie...#.only,.if.the |
| fc60 | 20 72 65 71 75 65 73 74 65 64 20 64 6f 63 75 6d 65 6e 74 20 69 73 20 74 68 69 73 20 64 69 72 65 | .requested.document.is.this.dire |
| fc80 | 63 74 6f 72 79 20 6f 72 20 61 20 73 75 62 64 69 72 65 63 74 6f 72 79 20 6f 66 20 69 74 2e 0d 0a | ctory.or.a.subdirectory.of.it... |
| fca0 | 09 23 0d 0a 09 23 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 61 74 74 72 69 62 75 74 | .#...#.The.value.of.the.attribut |
| fcc0 | 65 20 6d 75 73 74 20 62 65 20 61 20 53 74 72 69 6e 67 20 6f 62 6a 65 63 74 20 6f 72 20 6e 69 6c | e.must.be.a.String.object.or.nil |
| fce0 | 2e 0d 0a 09 64 65 66 20 70 61 74 68 3d 28 70 61 74 68 29 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 | ....def.path=(path)....#.{{{.... |
| fd00 | 75 6e 6c 65 73 73 20 70 61 74 68 2e 63 6c 61 73 73 20 3d 3d 20 53 74 72 69 6e 67 20 20 7c 7c 20 | unless.path.class.==.String..||. |
| fd20 | 70 61 74 68 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c | path.==.nil.....raise.TypeError, |
| fd40 | 20 22 54 68 65 20 70 61 74 68 20 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 6e | ."The.path.of.a.cookie.must.be.n |
| fd60 | 69 6c 20 6f 72 20 61 20 73 74 72 69 6e 67 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a | il.or.a.string",.caller....end.. |
| fd80 | 09 09 40 70 61 74 68 20 3d 20 70 61 74 68 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d | ..@path.=.path....#.}}}...end... |
| fda0 | 0a 09 23 20 4d 6f 64 69 66 69 65 73 20 74 68 65 20 64 6f 6d 61 69 6e 20 76 61 6c 75 65 20 6f 66 | ..#.Modifies.the.domain.value.of |
| fdc0 | 20 74 68 69 73 20 63 6f 6f 6b 69 65 2e 20 54 68 65 20 63 6c 69 65 6e 74 20 77 69 6c 6c 20 73 65 | .this.cookie..The.client.will.se |
| fde0 | 6e 64 20 74 68 69 73 20 63 6f 6f 6b 69 65 0d 0a 09 23 20 6f 6e 6c 79 20 69 66 20 69 74 27 73 20 | nd.this.cookie...#.only.if.it's. |
| fe00 | 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 74 68 69 73 20 64 6f 6d 61 69 6e 20 28 6f 72 20 61 | connected.with.this.domain.(or.a |
| fe20 | 20 73 75 62 64 6f 6d 61 69 6e 2c 20 69 66 20 74 68 65 20 66 69 72 73 74 0d 0a 09 23 20 63 68 61 | .subdomain,.if.the.first...#.cha |
| fe40 | 72 61 63 74 65 72 20 69 73 20 61 20 64 6f 74 20 6c 69 6b 65 20 69 6e 20 22 2e 72 75 62 79 2d 6c | racter.is.a.dot.like.in.".ruby-l |
| fe60 | 61 6e 67 2e 6f 72 67 22 29 0d 0a 09 23 0d 0a 09 23 20 54 68 65 20 76 61 6c 75 65 20 6f 66 20 74 | ang.org")...#...#.The.value.of.t |
| fe80 | 68 69 73 20 61 74 74 72 69 62 75 74 65 20 6d 75 73 74 20 62 65 20 61 20 53 74 72 69 6e 67 20 6f | his.attribute.must.be.a.String.o |
| fea0 | 72 20 6e 69 6c 2e 0d 0a 09 64 65 66 20 64 6f 6d 61 69 6e 3d 28 64 6f 6d 61 69 6e 29 0d 0a 09 09 | r.nil....def.domain=(domain).... |
| fec0 | 23 20 7b 7b 7b 0d 0a 09 09 75 6e 6c 65 73 73 20 64 6f 6d 61 69 6e 2e 63 6c 61 73 73 20 3d 3d 20 | #.{{{....unless.domain.class.==. |
| fee0 | 53 74 72 69 6e 67 20 20 7c 7c 20 64 6f 6d 61 69 6e 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 72 61 69 | String..||.domain.==.nil.....rai |
| ff00 | 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 64 6f 6d 61 69 6e 20 6f 66 20 61 20 63 | se.TypeError,."The.domain.of.a.c |
| ff20 | 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 61 20 53 74 72 69 6e 67 20 6f 72 20 6e 69 6c 2e 22 2c | ookie.must.be.a.String.or.nil.", |
| ff40 | 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 09 09 40 64 6f 6d 61 69 6e 20 3d 20 64 6f 6d 61 | .caller....end....@domain.=.doma |
| ff60 | 69 6e 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 4d 6f 64 69 66 69 65 73 | in....#.}}}...end.....#.Modifies |
| ff80 | 20 74 68 65 20 73 65 63 75 72 65 20 66 6c 61 67 20 6f 66 20 74 68 69 73 20 63 6f 6f 6b 69 65 2e | .the.secure.flag.of.this.cookie. |
| ffa0 | 20 49 66 20 69 74 27 73 20 74 72 75 65 2c 20 74 68 65 20 63 6c 69 65 6e 74 20 77 69 6c 6c 20 6f | .If.it's.true,.the.client.will.o |
| ffc0 | 6e 6c 79 0d 0a 09 23 20 73 65 6e 64 20 74 68 69 73 20 63 6f 6f 6b 69 65 20 69 66 20 69 74 20 69 | nly...#.send.this.cookie.if.it.i |
| ffe0 | 73 20 73 65 63 75 72 65 64 20 63 6f 6e 6e 65 63 74 65 64 20 77 69 74 68 20 75 73 2e 0d 0a 09 23 | s.secured.connected.with.us....# |
| 10000 | 0d 0a 09 23 20 54 68 65 20 76 61 6c 75 65 20 6f 64 20 74 68 69 73 20 61 74 74 72 69 62 75 74 65 | ...#.The.value.od.this.attribute |
| 10020 | 20 68 61 73 20 74 6f 20 62 65 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 09 64 65 66 20 | .has.to.be.true.or.false....def. |
| 10040 | 73 65 63 75 72 65 3d 28 73 65 63 75 72 65 29 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 75 6e 6c 65 | secure=(secure)....#.{{{....unle |
| 10060 | 73 73 20 73 65 63 75 72 65 20 3d 3d 20 74 72 75 65 20 20 7c 7c 20 73 65 63 75 72 65 20 3d 3d 20 | ss.secure.==.true..||.secure.==. |
| 10080 | 66 61 6c 73 65 0d 0a 09 09 09 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 | false.....raise.TypeError,."The. |
| 100a0 | 73 65 63 75 72 65 20 66 69 65 6c 64 20 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 | secure.field.of.a.cookie.must.be |
| 100c0 | 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a | .true.or.false",.caller....end.. |
| 100e0 | 09 09 40 73 65 63 75 72 65 20 3d 20 73 65 63 75 72 65 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e | ..@secure.=.secure....#.}}}...en |
| 10100 | 64 0d 0a 0d 0a 09 23 20 4d 6f 64 69 66 69 65 73 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 76 61 6c | d.....#.Modifies.the.comment.val |
| 10120 | 75 65 20 6f 66 20 74 68 69 73 20 63 6f 6f 6b 69 65 2e 20 54 68 65 20 63 6f 6d 6d 65 6e 74 20 77 | ue.of.this.cookie..The.comment.w |
| 10140 | 6f 6e 27 74 20 62 65 20 73 65 6e 64 2c 20 69 66 0d 0a 09 23 20 74 79 70 65 20 69 73 20 22 6e 65 | on't.be.send,.if...#.type.is."ne |
| 10160 | 74 73 63 61 70 65 22 2e 0d 0a 09 64 65 66 20 63 6f 6d 6d 65 6e 74 3d 28 63 6f 6d 6d 65 6e 74 29 | tscape"....def.comment=(comment) |
| 10180 | 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 75 6e 6c 65 73 73 20 63 6f 6d 6d 65 6e 74 2e 63 6c 61 73 | ....#.{{{....unless.comment.clas |
| 101a0 | 73 20 3d 3d 20 53 74 72 69 6e 67 20 7c 7c 20 63 6f 6d 6d 65 6e 74 20 3d 3d 20 6e 69 6c 0d 0a 09 | s.==.String.||.comment.==.nil... |
| 101c0 | 09 09 72 61 69 73 65 20 54 79 70 65 45 72 72 6f 72 2c 20 22 54 68 65 20 63 6f 6d 6d 65 6e 74 20 | ..raise.TypeError,."The.comment. |
| 101e0 | 6f 66 20 61 20 63 6f 6f 6b 69 65 20 6d 75 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 20 6f 72 20 | of.a.cookie.must.be.a.string.or. |
| 10200 | 6e 69 6c 22 2c 20 63 61 6c 6c 65 72 0d 0a 09 09 65 6e 64 0d 0a 09 09 40 63 6f 6d 6d 65 6e 74 20 | nil",.caller....end....@comment. |
| 10220 | 3d 20 63 6f 6d 6d 65 6e 74 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 43 | =.comment....#.}}}...end.....#.C |
| 10240 | 68 61 6e 67 65 73 20 74 68 65 20 74 79 70 65 20 6f 66 20 61 6c 6c 20 63 6f 6f 6b 69 65 73 2e 0d | hanges.the.type.of.all.cookies.. |
| 10260 | 0a 09 23 20 41 6c 6c 6f 77 65 64 20 76 61 6c 75 65 73 20 61 72 65 20 52 46 43 32 31 30 39 20 61 | ..#.Allowed.values.are.RFC2109.a |
| 10280 | 6e 64 20 6e 65 74 73 63 61 70 65 20 28 64 65 66 61 75 6c 74 29 2e 0d 0a 09 64 65 66 20 43 6f 6f | nd.netscape.(default)....def.Coo |
| 102a0 | 6b 69 65 2e 74 79 70 65 3d 28 74 79 70 65 29 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 09 75 6e 6c 65 | kie.type=(type)....#.{{{....unle |
| 102c0 | 73 73 20 40 40 61 6c 6c 6f 77 65 64 0d 0a 09 09 09 72 61 69 73 65 20 22 54 68 65 20 63 6f 6f 6b | ss.@@allowed.....raise."The.cook |
| 102e0 | 69 65 73 20 61 72 65 20 61 6c 6c 72 65 61 64 79 20 73 65 6e 64 2c 20 73 6f 20 79 6f 75 20 63 61 | ies.are.allready.send,.so.you.ca |
| 10300 | 6e 27 74 20 63 68 61 6e 67 65 20 74 68 65 20 74 79 70 65 20 61 6e 79 6d 6f 72 65 2e 22 0d 0a 09 | n't.change.the.type.anymore."... |
| 10320 | 09 65 6e 64 0d 0a 09 09 75 6e 6c 65 73 73 20 74 79 70 65 2e 64 6f 77 6e 63 61 73 65 20 3d 3d 20 | .end....unless.type.downcase.==. |
| 10340 | 22 72 66 63 32 31 30 39 22 20 26 26 20 74 79 70 65 2e 64 6f 77 6e 63 61 73 65 20 3d 3d 20 22 6e | "rfc2109".&&.type.downcase.==."n |
| 10360 | 65 74 73 63 61 70 65 22 0d 0a 09 09 09 72 61 69 73 65 20 22 54 68 65 20 74 79 70 65 20 6f 66 20 | etscape".....raise."The.type.of. |
| 10380 | 74 68 65 20 63 6f 6f 6b 69 65 73 20 6d 75 73 74 20 62 65 20 5c 22 52 46 43 32 31 30 39 5c 22 20 | the.cookies.must.be.\"RFC2109\". |
| 103a0 | 6f 72 20 5c 22 6e 65 74 73 63 61 70 65 5c 22 2e 22 0d 0a 09 09 65 6e 64 0d 0a 09 09 40 40 74 79 | or.\"netscape\"."....end....@@ty |
| 103c0 | 70 65 20 3d 20 74 79 70 65 3b 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 | pe.=.type;....#.}}}...end.....#. |
| 103e0 | 41 66 74 65 72 20 73 65 6e 64 69 6e 67 20 74 68 69 73 20 6d 65 73 73 61 67 65 2c 20 6e 6f 20 63 | After.sending.this.message,.no.c |
| 10400 | 6f 6f 6b 69 65 73 20 63 61 6e 20 62 65 20 73 65 74 20 6f 72 20 6d 6f 64 69 66 69 65 64 2e 20 55 | ookies.can.be.set.or.modified..U |
| 10420 | 73 65 20 69 74 2c 20 77 68 65 6e 0d 0a 09 23 20 48 54 54 50 2d 48 65 61 64 65 72 73 20 61 72 65 | se.it,.when...#.HTTP-Headers.are |
| 10440 | 20 73 65 6e 64 2e 20 52 77 65 62 20 64 6f 65 73 20 74 68 69 73 20 66 6f 72 20 79 6f 75 2e 0d 0a | .send..Rweb.does.this.for.you... |
| 10460 | 09 64 65 66 20 43 6f 6f 6b 69 65 2e 64 69 73 61 6c 6c 6f 77 0d 0a 09 09 23 20 7b 7b 7b 0d 0a 09 | .def.Cookie.disallow....#.{{{... |
| 10480 | 09 40 40 61 6c 6c 6f 77 65 64 20 3d 20 66 61 6c 73 65 0d 0a 09 09 74 72 75 65 0d 0a 09 09 23 20 | .@@allowed.=.false....true....#. |
| 104a0 | 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 52 65 74 75 72 6e 73 20 61 20 48 54 54 50 20 68 | }}}...end.....#.Returns.a.HTTP.h |
| 104c0 | 65 61 64 65 72 20 28 74 79 70 65 20 53 74 72 69 6e 67 29 20 77 69 74 68 20 61 6c 6c 20 63 6f 6f | eader.(type.String).with.all.coo |
| 104e0 | 6b 69 65 73 2e 20 52 77 65 62 20 64 6f 65 73 20 74 68 69 73 20 66 6f 72 0d 0a 09 23 20 79 6f 75 | kies..Rweb.does.this.for...#.you |
| 10500 | 2e 0d 0a 09 64 65 66 20 43 6f 6f 6b 69 65 2e 67 65 74 48 74 74 70 48 65 61 64 65 72 0d 0a 09 09 | ....def.Cookie.getHttpHeader.... |
| 10520 | 23 20 7b 7b 7b 0d 0a 09 09 69 66 20 64 65 66 69 6e 65 64 3f 28 40 40 6c 69 73 74 29 0d 0a 09 09 | #.{{{....if.defined?(@@list).... |
| 10540 | 09 69 66 20 40 40 74 79 70 65 20 3d 3d 20 22 6e 65 74 73 63 61 70 65 22 0d 0a 09 09 09 09 73 74 | .if.@@type.==."netscape"......st |
| 10560 | 72 20 3d 20 22 22 0d 0a 09 09 09 09 40 40 6c 69 73 74 2e 65 61 63 68 20 64 6f 20 7c 63 6f 6f 6b | r.=.""......@@list.each.do.|cook |
| 10580 | 69 65 7c 0d 0a 09 09 09 09 09 69 66 20 63 6f 6f 6b 69 65 2e 76 61 6c 75 65 20 3d 3d 20 6e 69 6c | ie|.......if.cookie.value.==.nil |
| 105a0 | 0d 0a 09 09 09 09 09 09 63 6f 6f 6b 69 65 2e 6d 61 78 61 67 65 20 3d 20 30 0d 0a 09 09 09 09 09 | ........cookie.maxage.=.0....... |
| 105c0 | 09 63 6f 6f 6b 69 65 2e 76 61 6c 75 65 20 3d 20 22 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 | .cookie.value.=."".......end.... |
| 105e0 | 09 09 09 23 20 54 4f 44 4f 3a 20 4e 61 6d 65 20 61 6e 64 20 76 61 6c 75 65 20 73 68 6f 75 6c 64 | ...#.TODO:.Name.and.value.should |
| 10600 | 20 62 65 20 65 73 63 61 70 65 64 21 0d 0a 09 09 09 09 09 73 74 72 20 2b 3d 20 22 53 65 74 2d 43 | .be.escaped!.......str.+=."Set-C |
| 10620 | 6f 6f 6b 69 65 3a 20 23 7b 63 6f 6f 6b 69 65 2e 6e 61 6d 65 7d 3d 23 7b 63 6f 6f 6b 69 65 2e 76 | ookie:.#{cookie.name}=#{cookie.v |
| 10640 | 61 6c 75 65 7d 22 0d 0a 09 09 09 09 09 75 6e 6c 65 73 73 20 63 6f 6f 6b 69 65 2e 6d 61 78 61 67 | alue}".......unless.cookie.maxag |
| 10660 | 65 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 09 09 09 65 78 70 69 72 65 20 3d 20 54 69 6d 65 2e 6e 6f | e.==.nil........expire.=.Time.no |
| 10680 | 77 20 2b 20 63 6f 6f 6b 69 65 2e 6d 61 78 61 67 65 0d 0a 09 09 09 09 09 09 65 78 70 69 72 65 2e | w.+.cookie.maxage........expire. |
| 106a0 | 67 6d 74 69 6d 65 0d 0a 09 09 09 09 09 09 73 74 72 20 2b 3d 20 22 3b 20 45 78 70 69 72 65 3d 23 | gmtime........str.+=.";.Expire=# |
| 106c0 | 7b 65 78 70 69 72 65 2e 73 74 72 66 74 69 6d 65 28 22 25 61 2c 20 25 64 2d 25 62 2d 25 59 20 25 | {expire.strftime("%a,.%d-%b-%Y.% |
| 106e0 | 48 3a 25 4d 3a 25 53 20 25 5a 22 29 7d 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 75 | H:%M:%S.%Z")}".......end.......u |
| 10700 | 6e 6c 65 73 73 20 63 6f 6f 6b 69 65 2e 64 6f 6d 61 69 6e 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 09 | nless.cookie.domain.==.nil...... |
| 10720 | 09 09 73 74 72 20 2b 3d 20 22 3b 20 44 6f 6d 61 69 6e 3d 23 7b 63 6f 6f 6b 69 65 2e 64 6f 6d 61 | ..str.+=.";.Domain=#{cookie.doma |
| 10740 | 69 6e 7d 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 75 6e 6c 65 73 73 20 63 6f 6f 6b | in}".......end.......unless.cook |
| 10760 | 69 65 2e 70 61 74 68 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 09 09 09 73 74 72 20 2b 3d 20 22 3b 20 | ie.path.==.nil........str.+=.";. |
| 10780 | 50 61 74 68 3d 23 7b 63 6f 6f 6b 69 65 2e 70 61 74 68 7d 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a | Path=#{cookie.path}".......end.. |
| 107a0 | 09 09 09 09 09 69 66 20 63 6f 6f 6b 69 65 2e 73 65 63 75 72 65 0d 0a 09 09 09 09 09 09 73 74 72 | .....if.cookie.secure........str |
| 107c0 | 20 2b 3d 20 22 3b 20 53 65 63 75 72 65 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 73 | .+=.";.Secure".......end.......s |
| 107e0 | 74 72 20 2b 3d 20 22 5c 72 5c 6e 22 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 72 65 74 75 72 | tr.+=."\r\n"......end......retur |
| 10800 | 6e 20 73 74 72 0d 0a 09 09 09 65 6c 73 65 20 23 20 74 79 70 65 20 3d 3d 20 22 52 46 43 32 31 30 | n.str.....else.#.type.==."RFC210 |
| 10820 | 39 22 0d 0a 09 09 09 09 73 74 72 20 3d 20 22 53 65 74 2d 43 6f 6f 6b 69 65 3a 20 22 0d 0a 09 09 | 9"......str.=."Set-Cookie:.".... |
| 10840 | 09 09 63 6f 6d 6d 61 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 09 09 09 09 40 40 6c 69 73 74 2e 65 | ..comma.=.false;........@@list.e |
| 10860 | 61 63 68 20 64 6f 20 7c 63 6f 6f 6b 69 65 7c 0d 0a 09 09 09 09 09 69 66 20 63 6f 6f 6b 69 65 2e | ach.do.|cookie|.......if.cookie. |
| 10880 | 76 61 6c 75 65 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 09 09 09 63 6f 6f 6b 69 65 2e 6d 61 78 61 67 | value.==.nil........cookie.maxag |
| 108a0 | 65 20 3d 20 30 0d 0a 09 09 09 09 09 09 63 6f 6f 6b 69 65 2e 76 61 6c 75 65 20 3d 20 22 22 0d 0a | e.=.0........cookie.value.=."".. |
| 108c0 | 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 69 66 20 63 6f 6d 6d 61 0d 0a 09 09 09 09 09 09 73 | .....end.......if.comma........s |
| 108e0 | 74 72 20 2b 3d 20 22 2c 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 63 6f 6d 6d 61 20 | tr.+=.",".......end.......comma. |
| 10900 | 3d 20 74 72 75 65 0d 0a 0d 0a 09 09 09 09 09 73 74 72 20 2b 3d 20 22 23 7b 63 6f 6f 6b 69 65 2e | =.true.........str.+=."#{cookie. |
| 10920 | 6e 61 6d 65 7d 3d 5c 22 23 7b 63 6f 6f 6b 69 65 2e 76 61 6c 75 65 7d 5c 22 22 0d 0a 09 09 09 09 | name}=\"#{cookie.value}\""...... |
| 10940 | 09 75 6e 6c 65 73 73 20 63 6f 6f 6b 69 65 2e 6d 61 78 61 67 65 20 3d 3d 20 6e 69 6c 0d 0a 09 09 | .unless.cookie.maxage.==.nil.... |
| 10960 | 09 09 09 09 73 74 72 20 2b 3d 20 22 3b 20 4d 61 78 2d 41 67 65 3d 5c 22 23 7b 63 6f 6f 6b 69 65 | ....str.+=.";.Max-Age=\"#{cookie |
| 10980 | 2e 6d 61 78 61 67 65 7d 5c 22 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 75 6e 6c 65 | .maxage}\"".......end.......unle |
| 109a0 | 73 73 20 63 6f 6f 6b 69 65 2e 64 6f 6d 61 69 6e 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 09 09 09 73 | ss.cookie.domain.==.nil........s |
| 109c0 | 74 72 20 2b 3d 20 22 3b 20 44 6f 6d 61 69 6e 3d 5c 22 23 7b 63 6f 6f 6b 69 65 2e 64 6f 6d 61 69 | tr.+=.";.Domain=\"#{cookie.domai |
| 109e0 | 6e 7d 5c 22 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 75 6e 6c 65 73 73 20 63 6f 6f | n}\"".......end.......unless.coo |
| 10a00 | 6b 69 65 2e 70 61 74 68 20 3d 3d 20 6e 69 6c 0d 0a 09 09 09 09 09 09 73 74 72 20 2b 3d 20 22 3b | kie.path.==.nil........str.+=."; |
| 10a20 | 20 50 61 74 68 3d 5c 22 23 7b 63 6f 6f 6b 69 65 2e 70 61 74 68 7d 5c 22 22 0d 0a 09 09 09 09 09 | .Path=\"#{cookie.path}\""....... |
| 10a40 | 65 6e 64 0d 0a 09 09 09 09 09 69 66 20 63 6f 6f 6b 69 65 2e 73 65 63 75 72 65 0d 0a 09 09 09 09 | end.......if.cookie.secure...... |
| 10a60 | 09 09 73 74 72 20 2b 3d 20 22 3b 20 53 65 63 75 72 65 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 | ..str.+=.";.Secure".......end... |
| 10a80 | 09 09 09 09 75 6e 6c 65 73 73 20 63 6f 6f 6b 69 65 2e 63 6f 6d 6d 65 6e 74 20 3d 3d 20 6e 69 6c | ....unless.cookie.comment.==.nil |
| 10aa0 | 0d 0a 09 09 09 09 09 09 73 74 72 20 2b 3d 20 22 3b 20 43 6f 6d 6d 65 6e 74 3d 5c 22 23 7b 63 6f | ........str.+=.";.Comment=\"#{co |
| 10ac0 | 6f 6b 69 65 2e 63 6f 6d 6d 65 6e 74 7d 5c 22 22 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 | okie.comment}\"".......end...... |
| 10ae0 | 09 73 74 72 20 2b 3d 20 22 3b 20 56 65 72 73 69 6f 6e 3d 5c 22 31 5c 22 22 0d 0a 09 09 09 09 65 | .str.+=.";.Version=\"1\""......e |
| 10b00 | 6e 64 0d 0a 09 09 09 09 73 74 72 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 09 | nd......str.....end....else..... |
| 10b20 | 66 61 6c 73 65 0d 0a 09 09 65 6e 64 0d 0a 09 09 23 20 7d 7d 7d 0d 0a 09 65 6e 64 0d 0a 65 6e 64 | false....end....#.}}}...end..end |
| 10b40 | 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 73 74 72 73 63 61 6e 27 0d 0a 0d 0a 6d 6f 64 75 6c 65 20 | ....require.'strscan'....module. |
| 10b60 | 42 42 43 6f 64 65 0d 0a 09 44 45 42 55 47 20 3d 20 74 72 75 65 0d 0a 0d 0a 09 75 73 65 20 27 65 | BBCode...DEBUG.=.true.....use.'e |
| 10b80 | 6e 63 6f 64 65 72 27 2c 20 27 74 61 67 73 27 2c 20 27 74 61 67 73 74 61 63 6b 27 2c 20 27 73 6d | ncoder',.'tags',.'tagstack',.'sm |
| 10ba0 | 69 6c 65 79 73 27 0d 0a 0d 0a 3d 62 65 67 69 6e 0d 0a 09 54 68 65 20 50 61 72 73 65 72 20 63 6c | ileys'....=begin...The.Parser.cl |
| 10bc0 | 61 73 73 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66 20 74 68 65 20 65 6e 63 6f 64 69 6e 67 2e 0d | ass.takes.care.of.the.encoding.. |
| 10be0 | 0a 09 49 74 20 73 63 61 6e 73 20 74 68 65 20 67 69 76 65 6e 20 42 42 43 6f 64 65 20 28 61 73 20 | ..It.scans.the.given.BBCode.(as. |
| 10c00 | 70 6c 61 69 6e 20 74 65 78 74 29 2c 20 66 69 6e 64 73 20 74 61 67 73 0d 0a 09 61 6e 64 20 73 6d | plain.text),.finds.tags...and.sm |
| 10c20 | 69 6c 69 65 73 20 61 6e 64 20 61 6c 73 6f 20 6d 61 6b 65 73 20 6c 69 6e 6b 73 20 6f 66 20 75 72 | ilies.and.also.makes.links.of.ur |
| 10c40 | 6c 73 20 69 6e 20 74 65 78 74 2e 0d 0a 0d 0a 09 4e 6f 72 6d 61 6c 20 74 65 78 74 20 69 73 20 73 | ls.in.text......Normal.text.is.s |
| 10c60 | 65 6e 64 20 64 69 72 65 63 74 6c 79 20 74 6f 20 74 68 65 20 65 6e 63 6f 64 65 72 2e 0d 0a 0d 0a | end.directly.to.the.encoder..... |
| 10c80 | 09 49 66 20 61 20 74 61 67 20 77 61 73 20 66 6f 75 6e 64 2c 20 61 6e 20 69 6e 73 74 61 6e 63 65 | .If.a.tag.was.found,.an.instance |
| 10ca0 | 20 6f 66 20 61 20 54 61 67 20 73 75 62 63 6c 61 73 73 20 69 73 20 63 72 65 61 74 65 64 0d 0a 09 | .of.a.Tag.subclass.is.created... |
| 10cc0 | 74 6f 20 68 61 6e 64 6c 65 20 74 68 65 20 63 61 73 65 2e 0d 0a 0d 0a 09 54 68 65 20 40 74 61 67 | to.handle.the.case......The.@tag |
| 10ce0 | 73 74 61 63 6b 20 6d 61 6e 61 67 65 73 20 74 61 67 20 6e 65 73 74 69 6e 67 20 61 6e 64 20 65 6e | stack.manages.tag.nesting.and.en |
| 10d00 | 73 75 72 65 73 20 76 61 6c 69 64 20 48 54 4d 4c 2e 0d 0a 3d 65 6e 64 0d 0a 0d 0a 09 63 6c 61 73 | sures.valid.HTML...=end.....clas |
| 10d20 | 73 20 50 61 72 73 65 72 0d 0a 09 09 63 6c 61 73 73 20 41 74 74 72 69 62 75 74 65 0d 0a 09 09 09 | s.Parser....class.Attribute..... |
| 10d40 | 23 20 66 6c 61 74 74 65 6e 20 61 6e 64 20 75 73 65 20 6f 6e 6c 79 20 6f 6e 65 20 65 6d 70 74 79 | #.flatten.and.use.only.one.empty |
| 10d60 | 5f 61 72 67 0d 0a 09 09 09 64 65 66 20 73 65 6c 66 2e 63 72 65 61 74 65 20 61 74 74 72 0d 0a 09 | _arg.....def.self.create.attr... |
| 10d80 | 09 09 09 61 74 74 72 20 3d 20 66 6c 61 74 74 65 6e 20 61 74 74 72 0d 0a 09 09 09 09 72 65 74 75 | ...attr.=.flatten.attr......retu |
| 10da0 | 72 6e 20 40 40 65 6d 70 74 79 5f 61 74 74 72 20 69 66 20 61 74 74 72 2e 65 6d 70 74 79 3f 0d 0a | rn.@@empty_attr.if.attr.empty?.. |
| 10dc0 | 09 09 09 09 6e 65 77 20 61 74 74 72 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 70 72 69 76 61 | ....new.attr.....end.......priva |
| 10de0 | 74 65 5f 63 6c 61 73 73 5f 6d 65 74 68 6f 64 20 3a 6e 65 77 0d 0a 0d 0a 09 09 09 23 20 72 65 6d | te_class_method.:new.......#.rem |
| 10e00 | 6f 76 65 20 6c 65 61 64 69 6e 67 20 61 6e 64 20 74 72 61 69 6c 69 6e 67 20 77 68 69 74 65 73 70 | ove.leading.and.trailing.whitesp |
| 10e20 | 61 63 65 3b 20 63 6f 6e 63 61 74 20 6c 69 6e 65 73 0d 0a 09 09 09 64 65 66 20 73 65 6c 66 2e 66 | ace;.concat.lines.....def.self.f |
| 10e40 | 6c 61 74 74 65 6e 20 61 74 74 72 0d 0a 09 09 09 09 61 74 74 72 2e 73 74 72 69 70 2e 67 73 75 62 | latten.attr......attr.strip.gsub |
| 10e60 | 28 2f 5c 6e 2f 2c 20 27 20 27 29 0d 0a 09 09 09 09 23 20 2d 3e 20 5e 20 61 6e 64 20 24 20 63 61 | (/\n/,.'.')......#.->.^.and.$.ca |
| 10e80 | 6e 20 6f 6e 6c 79 20 6d 61 74 63 68 20 61 74 20 62 65 67 69 6e 20 61 6e 64 20 65 6e 64 20 6e 6f | n.only.match.at.begin.and.end.no |
| 10ea0 | 77 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 41 54 54 52 49 42 55 54 45 5f 53 43 41 4e 20 3d | w.....end.......ATTRIBUTE_SCAN.= |
| 10ec0 | 20 2f 0d 0a 09 09 09 09 28 3f 21 24 29 20 20 23 20 64 6f 6e 27 74 20 6d 61 74 63 68 20 61 74 20 | ./......(?!$)..#.don't.match.at. |
| 10ee0 | 65 6e 64 0d 0a 09 09 09 09 5c 73 2a 0d 0a 09 09 09 09 28 20 23 20 24 31 20 3d 20 6b 65 79 0d 0a | end......\s*......(.#.$1.=.key.. |
| 10f00 | 09 09 09 09 09 5b 5e 3d 5c 73 5c 5d 22 5c 5c 5d 2a 0d 0a 09 09 09 09 09 28 3f 3a 0d 0a 09 09 09 | .....[^=\s\]"\\]*.......(?:..... |
| 10f20 | 09 09 09 28 3f 3a 20 5c 5c 2e 20 7c 20 22 5b 5e 22 5c 5c 5d 2a 28 3f 3a 5c 5c 2e 5b 5e 22 5c 5c | ...(?:.\\..|."[^"\\]*(?:\\.[^"\\ |
| 10f40 | 5d 2a 29 2a 22 3f 20 29 0d 0a 09 09 09 09 09 09 5b 5e 3d 5c 73 5c 5d 22 5c 5c 5d 2a 0d 0a 09 09 | ]*)*"?.)........[^=\s\]"\\]*.... |
| 10f60 | 09 09 09 29 2a 0d 0a 09 09 09 09 29 0d 0a 09 09 09 09 28 3f 3a 0d 0a 09 09 09 09 09 3d 0d 0a 09 | ...)*......)......(?:.......=... |
| 10f80 | 09 09 09 09 28 20 23 20 24 32 20 3d 20 76 61 6c 75 65 0d 0a 09 09 09 09 09 09 5b 5e 5c 73 5c 5d | ....(.#.$2.=.value........[^\s\] |
| 10fa0 | 22 5c 5c 5d 2a 0d 0a 09 09 09 09 09 09 28 3f 3a 0d 0a 09 09 09 09 09 09 09 28 3f 3a 20 5c 5c 2e | "\\]*........(?:.........(?:.\\. |
| 10fc0 | 20 7c 20 22 5b 5e 22 5c 5c 5d 2a 28 3f 3a 5c 5c 2e 5b 5e 22 5c 5c 5d 2a 29 2a 22 3f 20 29 0d 0a | .|."[^"\\]*(?:\\.[^"\\]*)*"?.).. |
| 10fe0 | 09 09 09 09 09 09 09 5b 5e 5c 73 5c 5d 22 5c 5c 5d 2a 0d 0a 09 09 09 09 09 09 29 2a 0d 0a 09 09 | .......[^\s\]"\\]*........)*.... |
| 11000 | 09 09 09 29 3f 0d 0a 09 09 09 09 29 3f 0d 0a 09 09 09 09 5c 73 2a 0d 0a 09 09 09 2f 78 0d 0a 0d | ...)?......)?......\s*...../x... |
| 11020 | 0a 09 09 09 64 65 66 20 73 65 6c 66 2e 70 61 72 73 65 20 73 6f 75 72 63 65 0d 0a 09 09 09 09 73 | ....def.self.parse.source......s |
| 11040 | 6f 75 72 63 65 20 3d 20 73 6f 75 72 63 65 2e 64 75 70 0d 0a 09 09 09 09 23 20 65 6d 70 74 79 5f | ource.=.source.dup......#.empty_ |
| 11060 | 74 61 67 3a 20 74 68 65 20 74 61 67 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 5b 2e 2e 2e 20 2f 5d 0d | tag:.the.tag.looks.like.[..../]. |
| 11080 | 0a 09 09 09 09 23 20 73 6c 69 63 65 21 3a 20 74 68 69 73 20 64 65 6c 65 74 65 73 20 74 68 65 20 | .....#.slice!:.this.deletes.the. |
| 110a0 | 5c 73 2a 2f 5d 20 61 74 20 74 68 65 20 65 6e 64 0d 0a 09 09 09 09 23 20 5c 73 2b 20 62 65 63 61 | \s*/].at.the.end......#.\s+.beca |
| 110c0 | 75 73 65 20 5b 75 72 6c 3d 68 74 74 70 3a 2f 2f 72 75 62 79 62 62 2e 6f 72 67 2f 66 6f 72 75 6d | use.[url=http://rubybb.org/forum |
| 110e0 | 2f 5d 20 69 73 20 4e 4f 54 20 61 6e 20 65 6d 70 74 79 20 74 61 67 2e 0d 0a 09 09 09 09 23 20 49 | /].is.NOT.an.empty.tag.......#.I |
| 11100 | 6e 20 52 75 62 79 42 42 43 6f 64 65 2c 20 79 6f 75 20 63 61 6e 20 75 73 65 20 5b 75 72 6c 3d 68 | n.RubyBBCode,.you.can.use.[url=h |
| 11120 | 74 74 70 3a 2f 2f 72 75 62 79 62 62 2e 6f 72 67 2f 66 6f 72 75 6d 2f 20 2f 5d 2c 20 61 6e 64 20 | ttp://rubybb.org/forum/./],.and. |
| 11140 | 74 68 69 73 20 68 61 73 20 74 6f 20 62 65 0d 0a 09 09 09 09 23 20 69 6e 74 65 72 70 72 65 74 65 | this.has.to.be......#.interprete |
| 11160 | 64 20 63 6f 72 72 65 63 74 6c 79 2e 0d 0a 09 09 09 09 65 6d 70 74 79 5f 74 61 67 20 3d 20 73 6f | d.correctly.......empty_tag.=.so |
| 11180 | 75 72 63 65 2e 73 75 62 21 28 2f 5e 3a 2f 2c 20 27 3d 27 29 20 6f 72 20 73 6f 75 72 63 65 2e 73 | urce.sub!(/^:/,.'=').or.source.s |
| 111a0 | 6c 69 63 65 21 28 2f 5c 2f 24 2f 29 0d 0a 09 09 09 09 64 65 62 75 67 20 27 50 41 52 53 45 3a 20 | lice!(/\/$/)......debug.'PARSE:. |
| 111c0 | 27 20 2b 20 73 6f 75 72 63 65 2e 69 6e 73 70 65 63 74 20 2b 20 27 20 3d 3e 20 27 20 2b 20 65 6d | '.+.source.inspect.+.'.=>.'.+.em |
| 111e0 | 70 74 79 5f 74 61 67 2e 69 6e 73 70 65 63 74 0d 0a 09 09 09 09 23 2d 3e 20 77 65 20 68 61 76 65 | pty_tag.inspect......#->.we.have |
| 11200 | 20 6e 6f 77 20 61 6e 20 61 74 74 72 20 74 68 61 74 27 73 20 45 49 54 48 45 52 20 65 6d 70 74 79 | .now.an.attr.that's.EITHER.empty |
| 11220 | 20 4f 52 20 62 65 67 69 6e 73 20 61 6e 64 20 65 6e 64 73 20 77 69 74 68 20 6e 6f 6e 2d 77 68 69 | .OR.begins.and.ends.with.non-whi |
| 11240 | 74 65 73 70 61 63 65 2e 0d 0a 0d 0a 09 09 09 09 61 74 74 72 20 3d 20 48 61 73 68 2e 6e 65 77 0d | tespace.........attr.=.Hash.new. |
| 11260 | 0a 09 09 09 09 61 74 74 72 5b 3a 66 6c 61 67 73 5d 20 3d 20 5b 5d 0d 0a 09 09 09 09 73 6f 75 72 | .....attr[:flags].=.[]......sour |
| 11280 | 63 65 2e 73 63 61 6e 28 41 54 54 52 49 42 55 54 45 5f 53 43 41 4e 29 20 7b 20 7c 6b 65 79 2c 20 | ce.scan(ATTRIBUTE_SCAN).{.|key,. |
| 112a0 | 76 61 6c 75 65 7c 0d 0a 09 09 09 09 09 69 66 20 6e 6f 74 20 76 61 6c 75 65 0d 0a 09 09 09 09 09 | value|.......if.not.value....... |
| 112c0 | 09 61 74 74 72 5b 3a 66 6c 61 67 73 5d 20 3c 3c 20 75 6e 65 73 63 61 70 65 28 6b 65 79 29 0d 0a | .attr[:flags].<<.unescape(key).. |
| 112e0 | 09 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 09 6e 65 78 74 20 69 66 20 76 61 6c 75 65 2e 65 | .....else........next.if.value.e |
| 11300 | 6d 70 74 79 3f 20 61 6e 64 20 6b 65 79 2e 65 6d 70 74 79 3f 0d 0a 09 09 09 09 09 09 61 74 74 72 | mpty?.and.key.empty?........attr |
| 11320 | 5b 75 6e 65 73 63 61 70 65 28 6b 65 79 29 5d 20 3d 20 75 6e 65 73 63 61 70 65 28 76 61 6c 75 65 | [unescape(key)].=.unescape(value |
| 11340 | 29 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 09 64 65 62 75 67 20 61 74 | ).......end......}......debug.at |
| 11360 | 74 72 2e 69 6e 73 70 65 63 74 0d 0a 0d 0a 09 09 09 09 72 65 74 75 72 6e 20 65 6d 70 74 79 5f 74 | tr.inspect........return.empty_t |
| 11380 | 61 67 2c 20 61 74 74 72 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 64 65 66 20 73 65 6c 66 2e | ag,.attr.....end.......def.self. |
| 113a0 | 75 6e 65 73 63 61 70 65 5f 63 68 61 72 20 65 73 63 0d 0a 09 09 09 09 65 73 63 5b 31 5d 0d 0a 09 | unescape_char.esc......esc[1]... |
| 113c0 | 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 64 65 66 20 73 65 6c 66 2e 75 6e 71 75 6f 74 65 20 71 74 0d | ..end.......def.self.unquote.qt. |
| 113e0 | 0a 09 09 09 09 71 74 5b 31 2e 2e 2d 31 5d 2e 63 68 6f 6d 70 28 27 22 27 29 2e 67 73 75 62 28 2f | .....qt[1..-1].chomp('"').gsub(/ |
| 11400 | 5c 5c 2e 2f 29 20 7b 20 7c 65 73 63 7c 20 75 6e 65 73 63 61 70 65 5f 63 68 61 72 20 65 73 63 20 | \\./).{.|esc|.unescape_char.esc. |
| 11420 | 7d 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 64 65 66 20 73 65 6c 66 2e 75 6e 65 73 63 61 70 | }.....end.......def.self.unescap |
| 11440 | 65 20 73 74 72 0d 0a 09 09 09 09 73 74 72 2e 67 73 75 62 28 2f 20 28 5c 5c 2e 29 20 7c 20 28 22 | e.str......str.gsub(/.(\\.).|.(" |
| 11460 | 20 5b 5e 22 5c 5c 5d 2a 20 28 3f 3a 5c 5c 2e 5b 5e 22 5c 5c 5d 2a 29 2a 20 22 3f 29 20 2f 78 29 | .[^"\\]*.(?:\\.[^"\\]*)*."?)./x) |
| 11480 | 20 7b 0d 0a 09 09 09 09 09 69 66 20 24 31 0d 0a 09 09 09 09 09 09 75 6e 65 73 63 61 70 65 5f 63 | .{.......if.$1........unescape_c |
| 114a0 | 68 61 72 20 24 31 0d 0a 09 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 09 75 6e 71 75 6f 74 65 | har.$1.......else........unquote |
| 114c0 | 20 24 32 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 7d 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a | .$2.......end......}.....end.... |
| 114e0 | 09 09 09 69 6e 63 6c 75 64 65 20 45 6e 75 6d 65 72 61 62 6c 65 0d 0a 09 09 09 64 65 66 20 65 61 | ...include.Enumerable.....def.ea |
| 11500 | 63 68 20 26 62 6c 6f 63 6b 0d 0a 09 09 09 09 40 61 72 67 73 2e 65 61 63 68 28 26 62 6c 6f 63 6b | ch.&block......@args.each(&block |
| 11520 | 29 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 73 6f 75 | ).....end.......attr_reader.:sou |
| 11540 | 72 63 65 2c 20 3a 61 72 67 73 2c 20 3a 76 61 6c 75 65 0d 0a 0d 0a 09 09 09 64 65 66 20 69 6e 69 | rce,.:args,.:value.......def.ini |
| 11560 | 74 69 61 6c 69 7a 65 20 73 6f 75 72 63 65 0d 0a 09 09 09 09 40 73 6f 75 72 63 65 20 3d 20 73 6f | tialize.source......@source.=.so |
| 11580 | 75 72 63 65 0d 0a 09 09 09 09 64 65 62 75 67 20 27 41 74 74 72 69 62 75 74 65 23 6e 65 77 28 25 | urce......debug.'Attribute#new(% |
| 115a0 | 70 29 27 20 25 20 73 6f 75 72 63 65 0d 0a 09 09 09 09 40 65 6d 70 74 79 5f 74 61 67 2c 20 40 61 | p)'.%.source......@empty_tag,.@a |
| 115c0 | 74 74 72 20 3d 20 41 74 74 72 69 62 75 74 65 2e 70 61 72 73 65 20 73 6f 75 72 63 65 0d 0a 09 09 | ttr.=.Attribute.parse.source.... |
| 115e0 | 09 09 40 76 61 6c 75 65 20 3d 20 40 61 74 74 72 5b 27 27 5d 2e 74 6f 5f 73 0d 0a 09 09 09 65 6e | ..@value.=.@attr[''].to_s.....en |
| 11600 | 64 0d 0a 0d 0a 09 09 09 64 65 66 20 65 6d 70 74 79 3f 0d 0a 09 09 09 09 73 65 6c 66 20 3d 3d 20 | d.......def.empty?......self.==. |
| 11620 | 40 40 65 6d 70 74 79 5f 61 74 74 72 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 64 65 66 20 65 | @@empty_attr.....end.......def.e |
| 11640 | 6d 70 74 79 5f 74 61 67 3f 0d 0a 09 09 09 09 40 65 6d 70 74 79 5f 74 61 67 0d 0a 09 09 09 65 6e | mpty_tag?......@empty_tag.....en |
| 11660 | 64 0d 0a 0d 0a 09 09 09 64 65 66 20 5b 5d 20 2a 6b 65 79 73 0d 0a 09 09 09 09 72 65 73 20 3d 20 | d.......def.[].*keys......res.=. |
| 11680 | 40 61 74 74 72 5b 2a 6b 65 79 73 5d 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 64 65 66 20 66 | @attr[*keys].....end.......def.f |
| 116a0 | 6c 61 67 73 0d 0a 09 09 09 09 61 74 74 72 5b 3a 66 6c 61 67 73 5d 0d 0a 09 09 09 65 6e 64 0d 0a | lags......attr[:flags].....end.. |
| 116c0 | 0d 0a 09 09 09 64 65 66 20 74 6f 5f 73 0d 0a 09 09 09 09 40 61 74 74 72 0d 0a 09 09 09 65 6e 64 | .....def.to_s......@attr.....end |
| 116e0 | 0d 0a 0d 0a 09 09 09 64 65 66 20 69 6e 73 70 65 63 74 0d 0a 09 09 09 09 27 41 54 54 52 5b 27 20 | .......def.inspect......'ATTR['. |
| 11700 | 2b 20 40 61 74 74 72 2e 69 6e 73 70 65 63 74 20 2b 20 28 40 65 6d 70 74 79 5f 74 61 67 20 3f 20 | +.@attr.inspect.+.(@empty_tag.?. |
| 11720 | 27 20 7c 20 65 6d 70 74 79 20 74 61 67 27 20 3a 20 27 27 29 20 2b 20 27 5d 27 0d 0a 09 09 09 65 | '.|.empty.tag'.:.'').+.']'.....e |
| 11740 | 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 09 63 6c 61 73 73 20 41 74 74 72 69 62 75 74 65 0d 0a 09 09 | nd....end....class.Attribute.... |
| 11760 | 09 40 40 65 6d 70 74 79 5f 61 74 74 72 20 3d 20 6e 65 77 20 27 27 0d 0a 09 09 65 6e 64 0d 0a 09 | .@@empty_attr.=.new.''....end... |
| 11780 | 65 6e 64 0d 0a 0d 0a 09 63 6c 61 73 73 20 50 61 72 73 65 72 0d 0a 09 09 64 65 66 20 50 61 72 73 | end.....class.Parser....def.Pars |
| 117a0 | 65 72 2e 66 6c 61 74 74 65 6e 20 73 74 72 0d 0a 09 09 09 23 20 72 65 70 6c 61 63 65 20 6d 61 63 | er.flatten.str.....#.replace.mac |
| 117c0 | 20 26 20 64 6f 73 20 6e 65 77 6c 69 6e 65 73 20 77 69 74 68 20 75 6e 69 78 20 73 74 79 6c 65 0d | .&.dos.newlines.with.unix.style. |
| 117e0 | 0a 09 09 09 73 74 72 2e 67 73 75 62 28 2f 5c 72 5c 6e 3f 2f 2c 20 22 5c 6e 22 29 0d 0a 09 09 65 | ....str.gsub(/\r\n?/,."\n")....e |
| 11800 | 6e 64 0d 0a 0d 0a 09 09 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 6e 70 75 74 20 3d 20 27 | nd......def.initialize.input.=.' |
| 11820 | 27 0d 0a 09 09 09 23 20 69 6e 70 75 74 20 6d 61 6e 61 67 65 72 0d 0a 09 09 09 40 73 63 61 6e 6e | '.....#.input.manager.....@scann |
| 11840 | 65 72 20 3d 20 53 74 72 69 6e 67 53 63 61 6e 6e 65 72 2e 6e 65 77 20 27 27 0d 0a 09 09 09 23 20 | er.=.StringScanner.new.''.....#. |
| 11860 | 6f 75 74 70 75 74 20 6d 61 6e 61 67 65 72 0d 0a 09 09 09 40 65 6e 63 6f 64 65 72 20 3d 20 45 6e | output.manager.....@encoder.=.En |
| 11880 | 63 6f 64 65 72 2e 6e 65 77 0d 0a 09 09 09 40 6f 75 74 70 75 74 20 3d 20 27 27 0d 0a 09 09 09 23 | coder.new.....@output.=.''.....# |
| 118a0 | 20 74 61 67 20 6d 61 6e 61 67 65 72 0d 0a 09 09 09 40 74 61 67 73 74 61 63 6b 20 3d 20 54 61 67 | .tag.manager.....@tagstack.=.Tag |
| 118c0 | 53 74 61 63 6b 2e 6e 65 77 28 40 65 6e 63 6f 64 65 72 29 0d 0a 0d 0a 09 09 09 40 64 6f 5f 6d 61 | Stack.new(@encoder).......@do_ma |
| 118e0 | 67 69 63 20 3d 20 74 72 75 65 0d 0a 09 09 09 23 20 73 65 74 20 74 68 65 20 69 6e 70 75 74 0d 0a | gic.=.true.....#.set.the.input.. |
| 11900 | 09 09 09 66 65 65 64 20 69 6e 70 75 74 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 23 20 69 66 20 79 | ...feed.input....end......#.if.y |
| 11920 | 6f 75 20 77 61 6e 74 2c 20 79 6f 75 20 63 61 6e 20 66 65 65 64 20 61 20 70 61 72 73 65 72 20 69 | ou.want,.you.can.feed.a.parser.i |
| 11940 | 6e 73 74 61 6e 63 65 20 61 66 74 65 72 20 63 72 65 61 74 69 6e 67 2c 0d 0a 09 09 23 20 6f 72 20 | nstance.after.creating,....#.or. |
| 11960 | 65 76 65 6e 20 66 65 65 64 20 69 74 20 72 65 70 65 61 74 65 64 6c 79 2e 0d 0a 09 09 64 65 66 20 | even.feed.it.repeatedly.....def. |
| 11980 | 66 65 65 64 20 66 6f 6f 64 0d 0a 09 09 09 40 73 63 61 6e 6e 65 72 2e 73 74 72 69 6e 67 20 3d 20 | feed.food.....@scanner.string.=. |
| 119a0 | 50 61 72 73 65 72 2e 66 6c 61 74 74 65 6e 20 66 6f 6f 64 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 | Parser.flatten.food....end...... |
| 119c0 | 23 20 70 61 72 73 65 20 74 68 72 6f 75 67 68 20 74 68 65 20 73 74 72 69 6e 67 20 75 73 69 6e 67 | #.parse.through.the.string.using |
| 119e0 | 20 70 61 72 73 65 5f 74 6f 6b 65 6e 0d 0a 09 09 64 65 66 20 70 61 72 73 65 0d 0a 09 09 09 70 61 | .parse_token....def.parse.....pa |
| 11a00 | 72 73 65 5f 74 6f 6b 65 6e 20 75 6e 74 69 6c 20 40 73 63 61 6e 6e 65 72 2e 65 6f 73 3f 0d 0a 09 | rse_token.until.@scanner.eos?... |
| 11a20 | 09 09 40 74 61 67 73 74 61 63 6b 2e 63 6c 6f 73 65 5f 61 6c 6c 0d 0a 09 09 09 40 6f 75 74 70 75 | ..@tagstack.close_all.....@outpu |
| 11a40 | 74 20 3d 20 70 61 72 73 65 5f 6d 61 67 69 63 20 40 65 6e 63 6f 64 65 72 2e 6f 75 74 70 75 74 0d | t.=.parse_magic.@encoder.output. |
| 11a60 | 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 64 65 66 20 6f 75 74 70 75 74 0d 0a 09 09 09 40 6f 75 74 70 | ...end......def.output.....@outp |
| 11a80 | 75 74 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 23 20 6f 6b 2c 20 69 6e 74 65 72 6e 61 6c 73 20 73 74 | ut....end.....#.ok,.internals.st |
| 11aa0 | 61 72 74 20 68 65 72 65 0d 0a 09 70 72 69 76 61 74 65 0d 0a 09 09 23 20 74 68 65 20 64 65 66 61 | art.here...private....#.the.defa |
| 11ac0 | 75 6c 74 20 6f 75 74 70 75 74 20 66 75 6e 63 74 69 6f 6e 73 2e 20 65 76 65 72 79 74 68 69 6e 67 | ult.output.functions..everything |
| 11ae0 | 20 73 68 6f 75 6c 64 20 75 73 65 20 74 68 65 6d 20 6f 72 20 74 68 65 20 74 61 67 73 2e 0d 0a 09 | .should.use.them.or.the.tags.... |
| 11b00 | 09 64 65 66 20 61 64 64 5f 74 65 78 74 20 74 65 78 74 20 3d 20 40 73 63 61 6e 6e 65 72 2e 6d 61 | .def.add_text.text.=.@scanner.ma |
| 11b20 | 74 63 68 65 64 0d 0a 09 09 09 40 65 6e 63 6f 64 65 72 2e 61 64 64 5f 74 65 78 74 20 74 65 78 74 | tched.....@encoder.add_text.text |
| 11b40 | 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 23 20 75 73 65 20 74 68 69 73 20 63 61 72 65 66 75 6c 6c | ....end......#.use.this.carefull |
| 11b60 | 79 0d 0a 09 09 64 65 66 20 61 64 64 5f 68 74 6d 6c 20 68 74 6d 6c 0d 0a 09 09 09 40 65 6e 63 6f | y....def.add_html.html.....@enco |
| 11b80 | 64 65 72 2e 61 64 64 5f 68 74 6d 6c 20 68 74 6d 6c 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 23 20 | der.add_html.html....end......#. |
| 11ba0 | 68 69 67 68 6c 69 67 68 74 73 20 74 68 65 20 74 65 78 74 20 61 73 20 65 72 72 6f 72 0d 0a 09 09 | highlights.the.text.as.error.... |
| 11bc0 | 64 65 66 20 61 64 64 5f 67 61 72 62 61 67 65 20 67 61 72 62 61 67 65 0d 0a 09 09 09 61 64 64 5f | def.add_garbage.garbage.....add_ |
| 11be0 | 68 74 6d 6c 20 27 3c 73 70 61 6e 20 63 6c 61 73 73 3d 22 65 72 72 6f 72 22 3e 27 20 69 66 20 44 | html.'<span.class="error">'.if.D |
| 11c00 | 45 42 55 47 0d 0a 09 09 09 61 64 64 5f 74 65 78 74 20 67 61 72 62 61 67 65 0d 0a 09 09 09 61 64 | EBUG.....add_text.garbage.....ad |
| 11c20 | 64 5f 68 74 6d 6c 20 27 3c 2f 73 70 61 6e 3e 27 20 69 66 20 44 45 42 55 47 0d 0a 09 09 65 6e 64 | d_html.'</span>'.if.DEBUG....end |
| 11c40 | 0d 0a 0d 0a 09 09 23 20 75 6e 6b 6e 6f 77 6e 20 61 6e 64 20 69 6e 63 6f 72 72 65 63 74 6c 79 20 | ......#.unknown.and.incorrectly. |
| 11c60 | 6e 65 73 74 65 64 20 74 61 67 73 20 61 72 65 20 69 67 6e 6f 72 65 64 20 61 6e 64 0d 0a 09 09 23 | nested.tags.are.ignored.and....# |
| 11c80 | 20 73 65 6e 74 20 61 73 20 70 6c 61 69 6e 74 65 78 74 20 28 67 61 72 62 61 67 65 20 69 6e 20 2d | .sent.as.plaintext.(garbage.in.- |
| 11ca0 | 20 67 61 72 62 61 67 65 20 6f 75 74 29 2e 0d 0a 09 09 23 20 69 6e 20 64 65 62 75 67 20 6d 6f 64 | .garbage.out).....#.in.debug.mod |
| 11cc0 | 65 2c 20 67 61 72 62 61 67 65 20 69 73 20 6d 61 72 6b 65 64 20 77 69 74 68 20 6c 69 6d 65 20 62 | e,.garbage.is.marked.with.lime.b |
| 11ce0 | 61 63 6b 67 72 6f 75 6e 64 2e 0d 0a 09 09 64 65 66 20 67 61 72 62 61 67 65 5f 6f 75 74 20 73 74 | ackground.....def.garbage_out.st |
| 11d00 | 61 72 74 0d 0a 09 09 09 40 73 63 61 6e 6e 65 72 2e 70 6f 73 20 3d 20 73 74 61 72 74 0d 0a 09 09 | art.....@scanner.pos.=.start.... |
| 11d20 | 09 67 61 72 62 61 67 65 20 3d 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 2e 2f 6d 29 0d 0a | .garbage.=.@scanner.scan(/./m).. |
| 11d40 | 09 09 09 64 65 62 75 67 20 27 47 41 52 42 41 47 45 3a 20 27 20 2b 20 67 61 72 62 61 67 65 0d 0a | ...debug.'GARBAGE:.'.+.garbage.. |
| 11d60 | 09 09 09 61 64 64 5f 67 61 72 62 61 67 65 20 67 61 72 62 61 67 65 0d 0a 09 09 65 6e 64 0d 0a 0d | ...add_garbage.garbage....end... |
| 11d80 | 0a 09 09 23 20 73 69 6d 70 6c 65 20 74 65 78 74 3b 20 65 76 65 72 79 74 68 69 6e 67 20 62 75 74 | ...#.simple.text;.everything.but |
| 11da0 | 20 5b 2c 20 5c 5b 20 61 6c 6c 6f 77 65 64 0d 0a 09 09 53 49 4d 50 4c 45 5f 54 45 58 54 5f 53 43 | .[,.\[.allowed....SIMPLE_TEXT_SC |
| 11dc0 | 41 4e 5f 20 3d 20 2f 0d 0a 09 09 09 5b 5e 5c 5b 5c 5c 5d 2a 20 20 20 20 23 20 6e 6f 72 6d 61 6c | AN_.=./.....[^\[\\]*....#.normal |
| 11de0 | 2a 0d 0a 09 09 09 28 3f 3a 20 20 20 20 20 20 20 20 20 23 20 28 0d 0a 09 09 09 5c 5c 2e 3f 20 20 | *.....(?:.........#.(.....\\.?.. |
| 11e00 | 20 20 20 20 20 20 23 20 20 20 73 70 65 63 69 61 6c 0d 0a 09 09 09 5b 5e 5c 5b 5c 5c 5d 2a 20 20 | ......#...special.....[^\[\\]*.. |
| 11e20 | 20 20 23 20 20 20 6e 6f 72 6d 61 6c 2a 0d 0a 09 09 09 29 2a 20 20 20 20 20 20 20 20 20 20 23 20 | ..#...normal*.....)*..........#. |
| 11e40 | 29 2a 0d 0a 09 09 2f 6d 78 0d 0a 09 09 53 49 4d 50 4c 45 5f 54 45 58 54 5f 53 43 41 4e 20 3d 20 | )*..../mx....SIMPLE_TEXT_SCAN.=. |
| 11e60 | 2f 5b 5e 5c 5b 5d 2b 2f 0d 0a 0d 0a 3d 62 65 67 69 6e 0d 0a 0d 0a 09 57 48 41 54 20 49 53 20 41 | /[^\[]+/....=begin.....WHAT.IS.A |
| 11e80 | 20 54 41 47 3f 0d 0a 09 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 0d 0a 09 54 61 67 73 20 | .TAG?...==============.....Tags. |
| 11ea0 | 69 6e 20 42 42 43 6f 64 65 20 63 61 6e 20 62 65 20 6d 75 63 68 20 6d 6f 72 65 20 74 68 61 6e 20 | in.BBCode.can.be.much.more.than. |
| 11ec0 | 6a 75 73 74 20 61 20 73 69 6d 70 6c 65 20 5b 62 5d 2e 0d 0a 09 49 20 75 73 65 20 6d 61 6e 79 20 | just.a.simple.[b]....I.use.many. |
| 11ee0 | 74 65 72 6d 73 20 68 65 72 65 20 74 6f 20 64 69 66 66 65 72 20 74 68 65 20 70 61 72 74 73 20 6f | terms.here.to.differ.the.parts.o |
| 11f00 | 66 20 65 61 63 68 20 74 61 67 2e 0d 0a 0d 0a 09 42 61 73 69 63 20 73 63 68 65 6d 65 3a 0d 0a 09 | f.each.tag......Basic.scheme:... |
| 11f20 | 20 20 20 20 5b 20 20 20 20 20 20 20 20 20 63 6f 64 65 20 20 20 20 20 20 20 20 5d 0d 0a 09 54 41 | ....[.........code........]...TA |
| 11f40 | 47 20 53 54 41 52 54 20 20 20 54 41 47 20 49 4e 46 4f 20 20 20 54 41 47 20 45 4e 44 0d 0a 0d 0a | G.START...TAG.INFO...TAG.END.... |
| 11f60 | 09 4d 6f 73 74 20 74 61 67 73 20 6e 65 65 64 20 61 20 73 65 63 6f 6e 64 20 74 61 67 20 74 6f 20 | .Most.tags.need.a.second.tag.to. |
| 11f80 | 63 6c 6f 73 65 20 74 68 65 20 72 61 6e 67 65 20 69 74 20 6f 70 65 6e 65 64 2e 0d 0a 09 54 68 69 | close.the.range.it.opened....Thi |
| 11fa0 | 73 20 69 73 20 64 6f 6e 65 20 77 69 74 68 20 43 4c 4f 53 49 4e 47 20 54 41 47 53 3a 0d 0a 09 09 | s.is.done.with.CLOSING.TAGS:.... |
| 11fc0 | 5b 2f 63 6f 64 65 5d 0d 0a 09 6f 72 20 62 79 20 75 73 69 6e 67 20 65 6d 70 74 79 20 74 61 67 73 | [/code]...or.by.using.empty.tags |
| 11fe0 | 20 74 68 61 74 20 68 61 76 65 20 6e 6f 20 63 6f 6e 74 65 6e 74 20 61 6e 64 20 63 6c 6f 73 65 20 | .that.have.no.content.and.close. |
| 12000 | 74 68 65 6d 73 65 6c 66 65 73 3a 0d 0a 09 09 5b 75 72 6c 3d 77 69 6e 61 6d 70 2e 63 6f 6d 20 2f | themselfes:....[url=winamp.com./ |
| 12020 | 5d 0d 0a 09 59 6f 75 20 73 75 72 65 6c 79 20 6b 6e 6f 77 20 74 68 69 73 20 66 72 6f 6d 20 48 54 | ]...You.surely.know.this.from.HT |
| 12040 | 4d 4c 2e 0d 0a 09 54 68 65 73 65 20 73 6c 61 73 68 65 73 20 64 65 66 69 6e 65 20 74 68 65 20 54 | ML....These.slashes.define.the.T |
| 12060 | 41 47 20 4b 49 4e 44 20 3d 20 6e 6f 72 6d 61 6c 7c 63 6c 6f 73 69 6e 67 7c 65 6d 70 74 79 20 61 | AG.KIND.=.normal|closing|empty.a |
| 12080 | 6e 64 0d 0a 09 63 61 6e 6e 6f 74 20 62 65 09 75 73 65 64 20 74 6f 67 65 74 68 65 72 2e 0d 0a 0d | nd...cannot.be.used.together.... |
| 120a0 | 0a 09 45 76 65 72 79 74 68 69 6e 67 20 62 65 74 77 65 65 6e 20 5b 20 61 6e 64 20 5d 20 61 6e 64 | ..Everything.between.[.and.].and |
| 120c0 | 20 65 78 70 6c 75 64 69 6e 67 20 74 68 65 20 73 6c 61 73 68 65 73 20 69 73 20 63 61 6c 6c 65 64 | .expluding.the.slashes.is.called |
| 120e0 | 20 74 68 65 0d 0a 09 54 41 47 20 49 4e 46 4f 2e 09 54 68 69 73 20 69 6e 66 6f 20 6d 61 79 20 63 | .the...TAG.INFO..This.info.may.c |
| 12100 | 6f 6e 74 61 69 6e 3a 0d 0a 09 2d 20 54 41 47 20 49 44 0d 0a 09 2d 20 54 41 47 20 4e 41 4d 45 20 | ontain:...-.TAG.ID...-.TAG.NAME. |
| 12120 | 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 74 61 67 20 69 64 0d 0a 09 2d 20 61 74 74 72 69 62 75 | including.the.tag.id...-.attribu |
| 12140 | 74 65 73 0d 0a 0d 0a 09 54 68 65 20 54 41 47 20 49 44 20 69 73 20 74 68 65 20 66 69 72 73 74 20 | tes.....The.TAG.ID.is.the.first. |
| 12160 | 63 68 61 72 20 6f 66 20 74 68 65 20 69 6e 66 6f 3a 0d 0a 0d 0a 09 54 41 47 20 20 20 20 20 20 20 | char.of.the.info:.....TAG....... |
| 12180 | 7c 20 49 44 0d 0a 09 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 0d 0a 09 5b 71 75 6f 74 65 5d | |.ID...----------+----...[quote] |
| 121a0 | 20 20 20 7c 20 71 0d 0a 09 5b 26 70 6c 75 73 6d 6e 5d 20 7c 20 26 0d 0a 09 5b 22 5b 62 5d 22 5d | ...|.q...[±].|.&...["[b]"] |
| 121c0 | 20 20 20 7c 20 22 0d 0a 09 5b 2f 75 72 6c 5d 20 20 20 20 7c 20 75 0d 0a 09 5b 2d 2d 2d 5d 20 20 | ...|."...[/url]....|.u...[---].. |
| 121e0 | 20 20 20 7c 20 2d 0d 0a 0d 0a 09 41 73 20 79 6f 75 20 63 61 6e 20 73 65 65 2c 20 74 68 65 20 74 | ...|.-.....As.you.can.see,.the.t |
| 12200 | 61 67 20 69 64 20 73 68 6f 77 73 20 74 68 65 20 54 41 47 20 54 59 50 45 2c 20 69 74 20 63 61 6e | ag.id.shows.the.TAG.TYPE,.it.can |
| 12220 | 20 62 65 20 61 0d 0a 09 6e 6f 72 6d 61 6c 20 74 61 67 2c 09 61 20 66 6f 72 6d 61 74 74 69 6e 67 | .be.a...normal.tag,.a.formatting |
| 12240 | 20 74 61 67 20 6f 72 20 61 6e 20 65 6e 74 69 74 79 2e 0d 0a 09 54 68 65 72 65 66 6f 72 2c 20 74 | .tag.or.an.entity....Therefor,.t |
| 12260 | 68 65 20 70 61 72 73 65 72 20 66 69 72 73 74 20 73 63 61 6e 73 20 74 68 65 20 69 64 20 74 6f 20 | he.parser.first.scans.the.id.to. |
| 12280 | 64 65 63 69 64 65 20 68 6f 77 20 74 6f 20 67 6f 0d 0a 09 6f 6e 20 77 69 74 68 20 70 61 72 73 69 | decide.how.to.go...on.with.parsi |
| 122a0 | 6e 67 2e 0d 0a 3d 65 6e 64 0d 0a 09 09 23 20 74 61 67 0d 0a 09 09 23 20 54 4f 44 4f 20 6d 6f 72 | ng...=end....#.tag....#.TODO.mor |
| 122c0 | 65 20 63 6f 6d 70 6c 65 78 20 65 78 70 72 65 73 73 69 6f 6e 20 61 6c 6c 6f 77 69 6e 67 0d 0a 09 | e.complex.expression.allowing... |
| 122e0 | 09 23 20 20 20 5b 71 75 6f 74 65 3d 22 5b 6c 61 64 69 63 6f 5d 22 5d 20 61 6e 64 20 5b 71 75 6f | .#...[quote="[ladico]"].and.[quo |
| 12300 | 74 65 3d 5c 5b 6c 61 64 69 63 6f 5c 5d 5d 20 74 6f 20 62 65 20 63 6f 72 72 65 63 74 20 74 61 67 | te=\[ladico\]].to.be.correct.tag |
| 12320 | 73 0d 0a 09 09 54 41 47 5f 42 45 47 49 4e 5f 53 43 41 4e 20 3d 20 2f 0d 0a 09 09 09 5c 5b 20 20 | s....TAG_BEGIN_SCAN.=./.....\[.. |
| 12340 | 20 20 20 20 20 20 20 20 20 20 20 23 20 74 61 67 20 73 74 61 72 74 0d 0a 09 09 09 28 20 5c 2f 20 | ...........#.tag.start.....(.\/. |
| 12360 | 29 3f 20 20 20 20 20 20 20 20 23 20 24 31 20 3d 20 63 6c 6f 73 69 6e 67 20 74 61 67 3f 0d 0a 09 | )?........#.$1.=.closing.tag?... |
| 12380 | 09 09 28 20 5b 5e 5c 5d 5d 20 29 20 20 20 20 20 20 23 20 24 32 20 3d 20 74 61 67 20 69 64 0d 0a | ..(.[^\]].)......#.$2.=.tag.id.. |
| 123a0 | 09 09 2f 78 0d 0a 09 09 54 41 47 5f 45 4e 44 5f 53 43 41 4e 20 3d 20 2f 0d 0a 09 09 09 5b 5e 5c | ../x....TAG_END_SCAN.=./.....[^\ |
| 123c0 | 5d 5d 2a 20 20 20 20 20 20 20 20 20 23 20 72 65 73 74 20 74 68 61 74 20 77 61 73 20 6e 6f 74 20 | ]]*.........#.rest.that.was.not. |
| 123e0 | 68 61 6e 64 6c 65 64 0d 0a 09 09 09 5c 5d 3f 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 61 67 | handled.....\]?............#.tag |
| 12400 | 20 65 6e 64 0d 0a 09 09 2f 78 0d 0a 09 09 43 4c 4f 53 45 5f 54 41 47 5f 53 43 41 4e 20 3d 20 2f | .end..../x....CLOSE_TAG_SCAN.=./ |
| 12420 | 0d 0a 09 09 09 28 20 5b 5e 5c 5d 5d 2a 20 29 20 20 20 20 20 23 20 24 31 20 3d 20 74 68 65 20 72 | .....(.[^\]]*.).....#.$1.=.the.r |
| 12440 | 65 73 74 20 6f 66 20 74 68 65 20 74 61 67 20 69 6e 66 6f 0d 0a 09 09 09 28 20 5c 2f 20 29 3f 20 | est.of.the.tag.info.....(.\/.)?. |
| 12460 | 20 20 20 20 20 20 20 23 20 24 32 20 3d 20 65 6d 70 74 79 20 74 61 67 3f 0d 0a 09 09 09 5c 5d 3f | .......#.$2.=.empty.tag?.....\]? |
| 12480 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 61 67 20 65 6e 64 0d 0a 09 09 2f 78 0d 0a 09 09 55 | ............#.tag.end..../x....U |
| 124a0 | 4e 43 4c 4f 53 45 44 5f 54 41 47 5f 53 43 41 4e 20 3d 20 2f 20 5c 5b 20 2f 78 0d 0a 0d 0a 09 09 | NCLOSED_TAG_SCAN.=./.\[./x...... |
| 124c0 | 43 4c 41 53 53 49 43 5f 54 41 47 5f 53 43 41 4e 20 3d 20 2f 20 5b 61 2d 7a 5d 2a 20 2f 69 78 0d | CLASSIC_TAG_SCAN.=./.[a-z]*./ix. |
| 124e0 | 0a 0d 0a 09 09 53 45 50 41 52 41 54 4f 52 5f 54 41 47 5f 53 43 41 4e 20 3d 20 2f 20 5c 2a 2a 20 | .....SEPARATOR_TAG_SCAN.=./.\**. |
| 12500 | 2f 78 0d 0a 0d 0a 09 09 46 4f 52 4d 41 54 5f 54 41 47 5f 53 43 41 4e 20 3d 20 2f 20 2d 2d 20 2d | /x......FORMAT_TAG_SCAN.=./.--.- |
| 12520 | 2a 20 2f 78 0d 0a 0d 0a 09 09 51 55 4f 54 45 44 5f 53 43 41 4e 20 3d 20 2f 0d 0a 09 09 09 28 20 | *./x......QUOTED_SCAN.=./.....(. |
| 12540 | 20 20 20 20 20 20 20 20 20 20 20 23 20 24 31 20 3d 20 71 75 6f 74 65 64 20 74 65 78 74 0d 0a 09 | ...........#.$1.=.quoted.text... |
| 12560 | 09 09 09 5b 5e 22 5c 5c 5d 2a 20 20 20 20 23 20 6e 6f 72 6d 61 6c 2a 0d 0a 09 09 09 09 28 3f 3a | ...[^"\\]*....#.normal*......(?: |
| 12580 | 20 20 20 20 20 20 20 20 23 20 28 0d 0a 09 09 09 09 09 5c 5c 2e 20 20 20 20 20 20 23 20 09 73 70 | ........#.(.......\\.......#..sp |
| 125a0 | 65 63 69 61 6c 0d 0a 09 09 09 09 09 5b 5e 22 5c 5c 5d 2a 20 20 23 20 09 6e 6f 72 6d 61 6c 2a 0d | ecial.......[^"\\]*..#..normal*. |
| 125c0 | 0a 09 09 09 09 29 2a 20 20 20 20 20 20 20 20 20 23 20 29 2a 0d 0a 09 09 09 29 0d 0a 09 09 09 22 | .....)*.........#.)*.....)....." |
| 125e0 | 3f 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6e 64 20 71 75 6f 74 65 20 22 0d 0a 09 09 2f 6d 78 | ?...........#.end.quote."..../mx |
| 12600 | 0d 0a 0d 0a 09 09 45 4e 54 49 54 59 5f 53 43 41 4e 20 3d 20 2f 0d 0a 09 09 09 28 20 5b 5e 3b 5c | ......ENTITY_SCAN.=./.....(.[^;\ |
| 12620 | 5d 5d 2b 20 29 20 20 23 20 24 31 20 3d 20 65 6e 74 69 74 79 20 63 6f 64 65 0d 0a 09 09 09 3b 3f | ]]+.)..#.$1.=.entity.code.....;? |
| 12640 | 20 20 20 20 20 20 20 20 20 20 20 23 20 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 69 6e 67 20 73 65 6d | ...........#.optional.ending.sem |
| 12660 | 69 63 6f 6c 6f 6e 0d 0a 09 09 2f 69 78 0d 0a 0d 0a 09 09 53 4d 49 4c 45 59 5f 53 43 41 4e 20 3d | icolon..../ix......SMILEY_SCAN.= |
| 12680 | 20 53 6d 69 6c 65 79 73 3a 3a 53 4d 49 4c 45 59 5f 50 41 54 54 45 52 4e 0d 0a 0d 0a 09 09 23 20 | .Smileys::SMILEY_PATTERN......#. |
| 126a0 | 74 68 69 73 20 69 73 20 74 68 65 20 6d 61 69 6e 20 70 61 72 73 65 72 20 6c 6f 6f 70 20 74 68 61 | this.is.the.main.parser.loop.tha |
| 126c0 | 74 20 73 65 70 61 72 61 74 65 73 0d 0a 09 09 23 20 20 20 74 65 78 74 20 2d 20 65 76 65 72 79 74 | t.separates....#...text.-.everyt |
| 126e0 | 68 69 6e 67 20 75 6e 74 69 6c 20 22 5b 22 0d 0a 09 09 23 20 66 72 6f 6d 0d 0a 09 09 23 20 20 20 | hing.until."["....#.from....#... |
| 12700 | 74 61 67 73 20 2d 20 73 74 61 72 74 69 6e 67 20 77 69 74 68 20 22 5b 22 2c 20 65 6e 64 69 6e 67 | tags.-.starting.with."[",.ending |
| 12720 | 20 77 69 74 68 20 22 5d 22 0d 0a 09 09 64 65 66 20 70 61 72 73 65 5f 74 6f 6b 65 6e 0d 0a 09 09 | .with."]"....def.parse_token.... |
| 12740 | 09 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 53 49 4d 50 4c 45 5f 54 45 58 54 5f 53 43 | .if.@scanner.scan(SIMPLE_TEXT_SC |
| 12760 | 41 4e 29 0d 0a 09 09 09 09 61 64 64 5f 74 65 78 74 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 | AN)......add_text.....else...... |
| 12780 | 68 61 6e 64 6c 65 5f 74 61 67 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 64 | handle_tag.....end....end......d |
| 127a0 | 65 66 20 68 61 6e 64 6c 65 5f 74 61 67 0d 0a 09 09 09 74 61 67 5f 73 74 61 72 74 20 3d 20 40 73 | ef.handle_tag.....tag_start.=.@s |
| 127c0 | 63 61 6e 6e 65 72 2e 70 6f 73 0d 0a 0d 0a 09 09 09 75 6e 6c 65 73 73 20 40 73 63 61 6e 6e 65 72 | canner.pos.......unless.@scanner |
| 127e0 | 2e 73 63 61 6e 20 54 41 47 5f 42 45 47 49 4e 5f 53 43 41 4e 0d 0a 09 09 09 09 67 61 72 62 61 67 | .scan.TAG_BEGIN_SCAN......garbag |
| 12800 | 65 5f 6f 75 74 20 74 61 67 5f 73 74 61 72 74 0d 0a 09 09 09 09 72 65 74 75 72 6e 0d 0a 09 09 09 | e_out.tag_start......return..... |
| 12820 | 65 6e 64 0d 0a 0d 0a 09 09 09 63 6c 6f 73 69 6e 67 2c 20 69 64 20 3d 20 40 73 63 61 6e 6e 65 72 | end.......closing,.id.=.@scanner |
| 12840 | 5b 31 5d 2c 20 40 73 63 61 6e 6e 65 72 5b 32 5d 0d 0a 09 09 09 23 64 65 62 75 67 20 27 68 61 6e | [1],.@scanner[2].....#debug.'han |
| 12860 | 64 6c 65 5f 74 61 67 28 25 70 29 27 20 25 20 40 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 0d | dle_tag(%p)'.%.@scanner.matched. |
| 12880 | 0a 0d 0a 09 09 09 68 61 6e 64 6c 65 64 20 3d 0d 0a 09 09 09 09 63 61 73 65 20 69 64 0d 0a 0d 0a | ......handled.=......case.id.... |
| 128a0 | 09 09 09 09 09 77 68 65 6e 20 2f 5b 61 2d 7a 5d 2f 69 0d 0a 09 09 09 09 09 09 69 66 20 40 73 63 | .....when./[a-z]/i........if.@sc |
| 128c0 | 61 6e 6e 65 72 2e 73 63 61 6e 28 43 4c 41 53 53 49 43 5f 54 41 47 5f 53 43 41 4e 29 0d 0a 09 09 | anner.scan(CLASSIC_TAG_SCAN).... |
| 128e0 | 09 09 09 09 09 69 66 20 68 61 6e 64 6c 65 5f 63 6c 61 73 73 69 63 5f 74 61 67 28 69 64 20 2b 20 | .....if.handle_classic_tag(id.+. |
| 12900 | 40 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 2c 20 63 6c 6f 73 69 6e 67 29 0d 0a 09 09 09 09 | @scanner.matched,.closing)...... |
| 12920 | 09 09 09 09 61 6c 72 65 61 64 79 5f 63 6c 6f 73 65 64 20 3d 20 74 72 75 65 0d 0a 09 09 09 09 09 | ....already_closed.=.true....... |
| 12940 | 09 09 65 6e 64 0d 0a 09 09 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 09 09 77 68 65 6e 20 27 2a | ..end........end.........when.'* |
| 12960 | 27 0d 0a 09 09 09 09 09 09 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 53 45 50 41 52 41 | '........if.@scanner.scan(SEPARA |
| 12980 | 54 4f 52 5f 54 41 47 5f 53 43 41 4e 29 0d 0a 09 09 09 09 09 09 09 68 61 6e 64 6c 65 5f 61 73 74 | TOR_TAG_SCAN).........handle_ast |
| 129a0 | 65 72 69 73 6b 20 74 61 67 5f 73 74 61 72 74 2c 20 69 64 20 2b 20 40 73 63 61 6e 6e 65 72 2e 6d | erisk.tag_start,.id.+.@scanner.m |
| 129c0 | 61 74 63 68 65 64 0d 0a 09 09 09 09 09 09 09 74 72 75 65 0d 0a 09 09 09 09 09 09 65 6e 64 0d 0a | atched.........true........end.. |
| 129e0 | 0d 0a 09 09 09 09 09 77 68 65 6e 20 27 2d 27 0d 0a 09 09 09 09 09 09 69 66 20 40 73 63 61 6e 6e | .......when.'-'........if.@scann |
| 12a00 | 65 72 2e 73 63 61 6e 28 46 4f 52 4d 41 54 5f 54 41 47 5f 53 43 41 4e 29 0d 0a 09 09 09 09 09 09 | er.scan(FORMAT_TAG_SCAN)........ |
| 12a20 | 09 23 66 6f 72 6d 61 74 20 3d 20 69 64 20 2b 20 40 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 | .#format.=.id.+.@scanner.matched |
| 12a40 | 0d 0a 09 09 09 09 09 09 09 40 65 6e 63 6f 64 65 72 2e 61 64 64 5f 68 74 6d 6c 20 22 5c 6e 3c 68 | .........@encoder.add_html."\n<h |
| 12a60 | 72 3e 5c 6e 22 0d 0a 09 09 09 09 09 09 09 74 72 75 65 0d 0a 09 09 09 09 09 09 65 6e 64 0d 0a 0d | r>\n".........true........end... |
| 12a80 | 0a 09 09 09 09 09 77 68 65 6e 20 27 22 27 0d 0a 09 09 09 09 09 09 69 66 20 40 73 63 61 6e 6e 65 | ......when.'"'........if.@scanne |
| 12aa0 | 72 2e 73 63 61 6e 28 51 55 4f 54 45 44 5f 53 43 41 4e 29 0d 0a 09 09 09 09 09 09 09 40 65 6e 63 | r.scan(QUOTED_SCAN).........@enc |
| 12ac0 | 6f 64 65 72 2e 61 64 64 5f 74 65 78 74 20 75 6e 65 73 63 61 70 65 28 40 73 63 61 6e 6e 65 72 5b | oder.add_text.unescape(@scanner[ |
| 12ae0 | 31 5d 29 0d 0a 09 09 09 09 09 09 09 74 72 75 65 0d 0a 09 09 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 | 1]).........true........end..... |
| 12b00 | 09 09 09 09 77 68 65 6e 20 27 26 27 0d 0a 09 09 09 09 09 09 69 66 20 40 73 63 61 6e 6e 65 72 2e | ....when.'&'........if.@scanner. |
| 12b20 | 73 63 61 6e 28 45 4e 54 49 54 59 5f 53 43 41 4e 29 0d 0a 09 09 09 09 09 09 09 40 65 6e 63 6f 64 | scan(ENTITY_SCAN).........@encod |
| 12b40 | 65 72 2e 61 64 64 5f 65 6e 74 69 74 79 20 40 73 63 61 6e 6e 65 72 5b 31 5d 0d 0a 09 09 09 09 09 | er.add_entity.@scanner[1]....... |
| 12b60 | 09 09 74 72 75 65 0d 0a 09 09 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 09 09 77 68 65 6e 20 53 | ..true........end.........when.S |
| 12b80 | 6d 69 6c 65 79 73 3a 3a 53 4d 49 4c 45 59 5f 53 54 41 52 54 5f 43 48 41 52 53 45 54 0d 0a 09 09 | mileys::SMILEY_START_CHARSET.... |
| 12ba0 | 09 09 09 09 40 73 63 61 6e 6e 65 72 2e 70 6f 73 20 3d 20 40 73 63 61 6e 6e 65 72 2e 70 6f 73 20 | ....@scanner.pos.=.@scanner.pos. |
| 12bc0 | 2d 20 31 20 20 23 20 28 75 6e 67 65 74 63 68 29 0d 0a 09 09 09 09 09 09 69 66 20 40 73 63 61 6e | -.1..#.(ungetch)........if.@scan |
| 12be0 | 6e 65 72 2e 73 63 61 6e 28 53 4d 49 4c 45 59 5f 53 43 41 4e 29 0d 0a 09 09 09 09 09 09 09 40 65 | ner.scan(SMILEY_SCAN).........@e |
| 12c00 | 6e 63 6f 64 65 72 2e 61 64 64 5f 68 74 6d 6c 20 53 6d 69 6c 65 79 73 2e 73 6d 69 6c 65 79 5f 74 | ncoder.add_html.Smileys.smiley_t |
| 12c20 | 6f 5f 69 6d 61 67 65 28 40 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 29 0d 0a 09 09 09 09 09 | o_image(@scanner.matched)....... |
| 12c40 | 09 09 74 72 75 65 0d 0a 09 09 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 09 65 6e 64 20 23 20 63 | ..true........end........end.#.c |
| 12c60 | 61 73 65 0d 0a 0d 0a 09 09 09 72 65 74 75 72 6e 20 67 61 72 62 61 67 65 5f 6f 75 74 28 74 61 67 | ase.......return.garbage_out(tag |
| 12c80 | 5f 73 74 61 72 74 29 20 75 6e 6c 65 73 73 20 68 61 6e 64 6c 65 64 0d 0a 0d 0a 09 09 09 40 73 63 | _start).unless.handled.......@sc |
| 12ca0 | 61 6e 6e 65 72 2e 73 63 61 6e 28 54 41 47 5f 45 4e 44 5f 53 43 41 4e 29 20 75 6e 6c 65 73 73 20 | anner.scan(TAG_END_SCAN).unless. |
| 12cc0 | 61 6c 72 65 61 64 79 5f 63 6c 6f 73 65 64 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 41 54 54 52 49 | already_closed....end......ATTRI |
| 12ce0 | 42 55 54 45 53 5f 53 43 41 4e 20 3d 20 2f 0d 0a 09 09 09 28 0d 0a 09 09 09 09 5b 5e 5c 5d 22 5c | BUTES_SCAN.=./.....(......[^\]"\ |
| 12d00 | 5c 5d 2a 0d 0a 09 09 09 09 28 3f 3a 0d 0a 09 09 09 09 09 28 3f 3a 0d 0a 09 09 09 09 09 09 5c 5c | \]*......(?:.......(?:........\\ |
| 12d20 | 2e 0d 0a 09 09 09 09 09 7c 0d 0a 09 09 09 09 09 09 22 0d 0a 09 09 09 09 09 09 5b 5e 22 5c 5c 5d | ........|........"........[^"\\] |
| 12d40 | 2a 0d 0a 09 09 09 09 09 09 28 3f 3a 0d 0a 09 09 09 09 09 09 09 5c 5c 2e 0d 0a 09 09 09 09 09 09 | *........(?:.........\\......... |
| 12d60 | 09 5b 5e 22 5c 5c 5d 2a 0d 0a 09 09 09 09 09 09 29 2a 0d 0a 09 09 09 09 09 09 22 3f 0d 0a 09 09 | .[^"\\]*........)*........"?.... |
| 12d80 | 09 09 09 29 0d 0a 09 09 09 09 09 5b 5e 5c 5d 22 5c 5c 5d 2a 0d 0a 09 09 09 09 29 2a 0d 0a 09 09 | ...).......[^\]"\\]*......)*.... |
| 12da0 | 09 29 0d 0a 09 09 09 5c 5d 3f 0d 0a 09 09 2f 78 0d 0a 0d 0a 09 09 64 65 66 20 68 61 6e 64 6c 65 | .).....\]?..../x......def.handle |
| 12dc0 | 5f 63 6c 61 73 73 69 63 5f 74 61 67 20 6e 61 6d 65 2c 20 63 6c 6f 73 69 6e 67 0d 0a 09 09 09 64 | _classic_tag.name,.closing.....d |
| 12de0 | 65 62 75 67 20 27 54 41 47 3a 20 27 20 2b 20 28 63 6c 6f 73 69 6e 67 20 3f 20 27 2f 27 20 3a 20 | ebug.'TAG:.'.+.(closing.?.'/'.:. |
| 12e00 | 27 27 29 20 2b 20 6e 61 6d 65 0d 0a 09 09 09 23 20 66 6c 61 74 74 65 6e 0d 0a 09 09 09 6e 61 6d | '').+.name.....#.flatten.....nam |
| 12e20 | 65 2e 64 6f 77 6e 63 61 73 65 21 0d 0a 09 09 09 74 61 67 5f 63 6c 61 73 73 20 3d 20 54 41 47 5f | e.downcase!.....tag_class.=.TAG_ |
| 12e40 | 4c 49 53 54 5b 6e 61 6d 65 5d 0d 0a 09 09 09 72 65 74 75 72 6e 20 75 6e 6c 65 73 73 20 74 61 67 | LIST[name].....return.unless.tag |
| 12e60 | 5f 63 6c 61 73 73 0d 0a 0d 0a 09 09 09 23 64 65 62 75 67 28 28 6f 70 65 6e 69 6e 67 20 3f 20 27 | _class.......#debug((opening.?.' |
| 12e80 | 4f 50 45 4e 20 27 20 3a 20 27 43 4c 4f 53 45 20 27 29 20 2b 20 74 61 67 5f 63 6c 61 73 73 2e 6e | OPEN.'.:.'CLOSE.').+.tag_class.n |
| 12ea0 | 61 6d 65 29 0d 0a 0d 0a 09 09 09 23 20 63 72 65 61 74 65 20 61 6e 20 61 74 74 72 69 62 75 74 65 | ame).......#.create.an.attribute |
| 12ec0 | 20 6f 62 6a 65 63 74 20 74 6f 20 68 61 6e 64 6c 65 20 69 74 0d 0a 09 09 09 40 73 63 61 6e 6e 65 | .object.to.handle.it.....@scanne |
| 12ee0 | 72 2e 73 63 61 6e 28 41 54 54 52 49 42 55 54 45 53 5f 53 43 41 4e 29 0d 0a 09 09 09 23 64 65 62 | r.scan(ATTRIBUTES_SCAN).....#deb |
| 12f00 | 75 67 20 6e 61 6d 65 20 2b 20 27 3a 27 20 2b 20 40 73 63 61 6e 6e 65 72 5b 31 5d 0d 0a 09 09 09 | ug.name.+.':'.+.@scanner[1]..... |
| 12f20 | 61 74 74 72 20 3d 20 41 74 74 72 69 62 75 74 65 2e 63 72 65 61 74 65 20 40 73 63 61 6e 6e 65 72 | attr.=.Attribute.create.@scanner |
| 12f40 | 5b 31 5d 0d 0a 09 09 09 23 64 65 62 75 67 20 27 41 54 54 52 49 42 55 54 45 53 20 25 70 20 27 20 | [1].....#debug.'ATTRIBUTES.%p.'. |
| 12f60 | 25 20 61 74 74 72 20 23 75 6e 6c 65 73 73 20 61 74 74 72 2e 65 6d 70 74 79 3f 0d 0a 0d 0a 09 09 | %.attr.#unless.attr.empty?...... |
| 12f80 | 09 23 64 65 62 75 67 20 27 63 6c 6f 73 69 6e 67 3a 20 25 70 3b 20 6e 61 6d 65 3d 25 73 2c 20 61 | .#debug.'closing:.%p;.name=%s,.a |
| 12fa0 | 74 74 72 3d 25 70 27 20 25 20 5b 63 6c 6f 73 69 6e 67 2c 20 6e 61 6d 65 2c 20 61 74 74 72 5d 0d | ttr=%p'.%.[closing,.name,.attr]. |
| 12fc0 | 0a 0d 0a 09 09 09 23 20 4f 50 45 4e 0d 0a 09 09 09 69 66 20 6e 6f 74 20 63 6c 6f 73 69 6e 67 20 | ......#.OPEN.....if.not.closing. |
| 12fe0 | 61 6e 64 20 74 61 67 20 3d 20 40 74 61 67 73 74 61 63 6b 2e 74 72 79 5f 6f 70 65 6e 5f 63 6c 61 | and.tag.=.@tagstack.try_open_cla |
| 13000 | 73 73 28 74 61 67 5f 63 6c 61 73 73 2c 20 61 74 74 72 29 0d 0a 09 09 09 09 23 64 65 62 75 67 20 | ss(tag_class,.attr)......#debug. |
| 13020 | 27 6f 70 65 6e 69 6e 67 27 0d 0a 09 09 09 09 74 61 67 2e 64 6f 5f 6f 70 65 6e 20 40 73 63 61 6e | 'opening'......tag.do_open.@scan |
| 13040 | 6e 65 72 0d 0a 09 09 09 09 23 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 64 6f 6e 65 20 62 | ner......#.this.should.be.done.b |
| 13060 | 79 20 74 68 65 20 74 61 67 20 69 74 73 65 6c 66 2e 0d 0a 09 09 09 09 69 66 20 61 74 74 72 2e 65 | y.the.tag.itself.......if.attr.e |
| 13080 | 6d 70 74 79 5f 74 61 67 3f 0d 0a 09 09 09 09 09 74 61 67 2e 68 61 6e 64 6c 65 5f 65 6d 70 74 79 | mpty_tag?.......tag.handle_empty |
| 130a0 | 0d 0a 09 09 09 09 09 40 74 61 67 73 74 61 63 6b 2e 63 6c 6f 73 65 5f 74 61 67 0d 0a 09 09 09 09 | .......@tagstack.close_tag...... |
| 130c0 | 65 6c 73 69 66 20 74 61 67 2e 73 70 65 63 69 61 6c 5f 63 6f 6e 74 65 6e 74 3f 0d 0a 09 09 09 09 | elsif.tag.special_content?...... |
| 130e0 | 09 68 61 6e 64 6c 65 5f 73 70 65 63 69 61 6c 5f 63 6f 6e 74 65 6e 74 28 74 61 67 29 0d 0a 09 09 | .handle_special_content(tag).... |
| 13100 | 09 09 09 40 74 61 67 73 74 61 63 6b 2e 63 6c 6f 73 65 5f 74 61 67 0d 0a 09 09 09 09 09 23 20 20 | ...@tagstack.close_tag.......#.. |
| 13120 | 20 20 20 20 20 20 23 20 69 67 6e 6f 72 65 20 61 73 74 65 72 69 73 6b 73 20 64 69 72 65 63 74 6c | ......#.ignore.asterisks.directl |
| 13140 | 79 20 61 66 74 65 72 20 74 68 65 20 6f 70 65 6e 69 6e 67 3b 20 74 68 65 73 65 20 61 72 65 20 70 | y.after.the.opening;.these.are.p |
| 13160 | 68 70 42 42 43 6f 64 65 0d 0a 09 09 09 09 09 23 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 74 61 | hpBBCode.......#........elsif.ta |
| 13180 | 67 2e 72 65 73 70 6f 6e 64 5f 74 6f 3f 20 3a 61 73 74 65 72 69 73 6b 0d 0a 09 09 09 09 09 23 20 | g.respond_to?.:asterisk.......#. |
| 131a0 | 20 20 20 20 20 20 20 20 20 64 65 62 75 67 20 27 53 4b 49 50 20 41 53 54 45 52 49 53 4b 53 3a 20 | .........debug.'SKIP.ASTERISKS:. |
| 131c0 | 27 20 69 66 20 40 73 63 61 6e 6e 65 72 2e 73 6b 69 70 28 41 53 54 45 52 49 53 4b 5f 54 41 47 53 | '.if.@scanner.skip(ASTERISK_TAGS |
| 131e0 | 5f 53 43 41 4e 29 0d 0a 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 23 20 43 4c 4f 53 45 0d 0a 09 | _SCAN)......end.......#.CLOSE... |
| 13200 | 09 09 65 6c 73 69 66 20 40 74 61 67 73 74 61 63 6b 2e 74 72 79 5f 63 6c 6f 73 65 5f 63 6c 61 73 | ..elsif.@tagstack.try_close_clas |
| 13220 | 73 28 74 61 67 5f 63 6c 61 73 73 29 0d 0a 09 09 09 09 23 64 65 62 75 67 20 27 63 6c 6f 73 69 6e | s(tag_class)......#debug.'closin |
| 13240 | 67 27 0d 0a 09 09 09 09 23 20 47 41 52 42 41 47 45 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 | g'......#.GARBAGE.....else...... |
| 13260 | 72 65 74 75 72 6e 0d 0a 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 74 72 75 65 0d 0a 09 09 65 6e 64 | return.....end.......true....end |
| 13280 | 0d 0a 0d 0a 09 09 64 65 66 20 68 61 6e 64 6c 65 5f 61 73 74 65 72 69 73 6b 20 74 61 67 5f 73 74 | ......def.handle_asterisk.tag_st |
| 132a0 | 61 72 74 2c 20 73 74 61 72 73 0d 0a 09 09 09 23 64 65 62 75 67 20 27 41 53 54 45 52 49 53 4b 3a | art,.stars.....#debug.'ASTERISK: |
| 132c0 | 20 27 20 2b 20 73 74 61 72 73 2e 74 6f 5f 73 0d 0a 09 09 09 23 20 72 75 6c 65 20 66 6f 72 20 61 | .'.+.stars.to_s.....#.rule.for.a |
| 132e0 | 73 74 65 72 69 73 6b 20 74 61 67 73 3a 20 74 68 65 79 20 62 65 6c 6f 6e 67 20 74 6f 20 74 68 65 | sterisk.tags:.they.belong.to.the |
| 13300 | 20 6c 61 73 74 20 74 61 67 0d 0a 09 09 09 23 20 74 68 61 74 20 68 61 6e 64 6c 65 73 20 74 68 65 | .last.tag.....#.that.handles.the |
| 13320 | 6d 2e 20 74 61 67 73 20 6f 70 65 6e 65 64 20 61 66 74 65 72 20 74 68 69 73 20 74 61 67 20 61 72 | m..tags.opened.after.this.tag.ar |
| 13340 | 65 20 63 6c 6f 73 65 64 2e 0d 0a 09 09 09 23 20 69 66 20 6e 6f 20 6f 70 65 6e 20 74 61 67 20 75 | e.closed......#.if.no.open.tag.u |
| 13360 | 73 65 73 20 74 68 65 6d 2c 20 61 6c 6c 20 61 72 65 20 63 6c 6f 73 65 64 2e 0d 0a 09 09 09 74 61 | ses.them,.all.are.closed......ta |
| 13380 | 67 20 3d 20 40 74 61 67 73 74 61 63 6b 2e 63 6c 6f 73 65 5f 61 6c 6c 5f 75 6e 74 69 6c 20 7b 20 | g.=.@tagstack.close_all_until.{. |
| 133a0 | 7c 74 61 67 7c 20 74 61 67 2e 72 65 73 70 6f 6e 64 5f 74 6f 3f 20 3a 61 73 74 65 72 69 73 6b 20 | |tag|.tag.respond_to?.:asterisk. |
| 133c0 | 7d 0d 0a 09 09 09 75 6e 6c 65 73 73 20 74 61 67 20 61 6e 64 20 74 61 67 2e 61 73 74 65 72 69 73 | }.....unless.tag.and.tag.asteris |
| 133e0 | 6b 20 73 74 61 72 73 2c 20 40 73 63 61 6e 6e 65 72 0d 0a 09 09 09 09 67 61 72 62 61 67 65 5f 6f | k.stars,.@scanner......garbage_o |
| 13400 | 75 74 20 74 61 67 5f 73 74 61 72 74 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 | ut.tag_start.....end....end..... |
| 13420 | 09 64 65 66 20 68 61 6e 64 6c 65 5f 73 70 65 63 69 61 6c 5f 63 6f 6e 74 65 6e 74 20 74 61 67 0d | .def.handle_special_content.tag. |
| 13440 | 0a 09 09 09 73 63 61 6e 6e 65 64 20 3d 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 5f 75 6e 74 69 | ....scanned.=.@scanner.scan_unti |
| 13460 | 6c 28 74 61 67 2e 63 6c 6f 73 69 6e 67 5f 74 61 67 29 0d 0a 09 09 09 69 66 20 73 63 61 6e 6e 65 | l(tag.closing_tag).....if.scanne |
| 13480 | 64 0d 0a 09 09 09 09 73 63 61 6e 6e 65 64 2e 73 6c 69 63 65 21 28 2d 28 40 73 63 61 6e 6e 65 72 | d......scanned.slice!(-(@scanner |
| 134a0 | 2e 6d 61 74 63 68 65 64 2e 73 69 7a 65 29 2e 2e 2d 31 29 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 | .matched.size)..-1).....else.... |
| 134c0 | 09 09 73 63 61 6e 6e 65 64 20 3d 20 40 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 2e 2a 2f 6d 29 | ..scanned.=.@scanner.scan(/.*/m) |
| 134e0 | 2e 74 6f 5f 73 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 23 64 65 62 75 67 20 27 53 50 45 43 49 41 | .to_s.....end.....#debug.'SPECIA |
| 13500 | 4c 20 43 4f 4e 54 45 4e 54 3a 20 27 20 2b 20 73 63 61 6e 6e 65 64 0d 0a 09 09 09 74 61 67 2e 68 | L.CONTENT:.'.+.scanned.....tag.h |
| 13520 | 61 6e 64 6c 65 5f 63 6f 6e 74 65 6e 74 28 73 63 61 6e 6e 65 64 29 0d 0a 09 09 65 6e 64 0d 0a 0d | andle_content(scanned)....end... |
| 13540 | 0a 09 09 64 65 66 20 75 6e 65 73 63 61 70 65 20 74 65 78 74 0d 0a 09 09 09 23 20 69 6e 70 75 74 | ...def.unescape.text.....#.input |
| 13560 | 3a 20 63 6f 72 72 65 63 74 6c 79 20 66 6f 72 6d 61 74 74 65 64 20 71 75 6f 74 65 64 20 73 74 72 | :.correctly.formatted.quoted.str |
| 13580 | 69 6e 67 20 28 77 69 74 68 6f 75 74 20 74 68 65 20 71 75 6f 74 65 73 29 0d 0a 09 09 09 74 65 78 | ing.(without.the.quotes).....tex |
| 135a0 | 74 2e 67 73 75 62 28 2f 5c 5c 28 3f 3a 28 5b 22 5c 5c 5d 29 7c 2e 29 2f 29 20 7b 20 24 31 20 6f | t.gsub(/\\(?:(["\\])|.)/).{.$1.o |
| 135c0 | 72 20 24 26 20 7d 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 0d 0a 09 09 23 20 4d 41 47 49 43 20 46 45 41 | r.$&.}....end........#.MAGIC.FEA |
| 135e0 | 55 54 55 52 45 53 0d 0a 0d 0a 09 09 55 52 4c 5f 50 41 54 54 45 52 4e 20 3d 20 2f 28 3f 3a 28 3f | UTURES......URL_PATTERN.=./(?:(? |
| 13600 | 3a 77 77 77 7c 66 74 70 29 5c 2e 7c 28 3f 3e 5c 77 7b 33 2c 7d 29 3a 5c 2f 5c 2f 29 5c 53 2b 2f | :www|ftp)\.|(?>\w{3,}):\/\/)\S+/ |
| 13620 | 0d 0a 09 09 45 4d 41 49 4c 5f 50 41 54 54 45 52 4e 20 3d 20 2f 28 3f 3e 5b 5c 77 5c 2d 5f 2e 5d | ....EMAIL_PATTERN.=./(?>[\w\-_.] |
| 13640 | 2b 29 40 5b 5c 77 5c 2d 5c 2e 5d 2b 5c 2e 5c 77 2b 2f 0d 0a 0d 0a 09 09 48 41 53 5f 4d 41 47 49 | +)@[\w\-\.]+\.\w+/......HAS_MAGI |
| 13660 | 43 20 3d 20 2f 5b 26 40 23 7b 53 6d 69 6c 65 79 73 3a 3a 53 4d 49 4c 45 59 5f 53 54 41 52 54 5f | C.=./[&@#{Smileys::SMILEY_START_ |
| 13680 | 43 48 41 52 53 7d 5d 7c 28 3f 69 3a 77 77 77 7c 66 74 70 29 2f 0d 0a 0d 0a 09 09 4d 41 47 49 43 | CHARS}]|(?i:www|ftp)/......MAGIC |
| 136a0 | 5f 50 41 54 54 45 52 4e 20 3d 20 52 65 67 65 78 70 2e 6e 65 77 28 27 28 5c 57 7c 5e 29 28 25 73 | _PATTERN.=.Regexp.new('(\W|^)(%s |
| 136c0 | 29 27 20 25 0d 0a 09 09 09 5b 53 6d 69 6c 65 79 73 3a 3a 4d 41 47 49 43 5f 53 4d 49 4c 45 59 5f | )'.%.....[Smileys::MAGIC_SMILEY_ |
| 136e0 | 50 41 54 54 45 52 4e 2c 20 55 52 4c 5f 50 41 54 54 45 52 4e 2c 20 45 4d 41 49 4c 5f 50 41 54 54 | PATTERN,.URL_PATTERN,.EMAIL_PATT |
| 13700 | 45 52 4e 5d 2e 6d 61 70 20 7b 20 7c 70 61 74 74 65 72 6e 7c 0d 0a 09 09 09 09 70 61 74 74 65 72 | ERN].map.{.|pattern|......patter |
| 13720 | 6e 2e 74 6f 5f 73 0d 0a 09 09 09 7d 2e 6a 6f 69 6e 28 27 7c 27 29 20 29 0d 0a 0d 0a 09 09 49 53 | n.to_s.....}.join('|').)......IS |
| 13740 | 5f 53 4d 49 4c 45 59 5f 50 41 54 54 45 52 4e 20 3d 20 52 65 67 65 78 70 2e 6e 65 77 28 27 5e 25 | _SMILEY_PATTERN.=.Regexp.new('^% |
| 13760 | 73 27 20 25 20 53 6d 69 6c 65 79 73 3a 3a 53 4d 49 4c 45 59 5f 53 54 41 52 54 5f 43 48 41 52 53 | s'.%.Smileys::SMILEY_START_CHARS |
| 13780 | 45 54 2e 74 6f 5f 73 20 29 0d 0a 09 09 49 53 5f 55 52 4c 5f 50 41 54 54 45 52 4e 20 3d 20 2f 5e | ET.to_s.)....IS_URL_PATTERN.=./^ |
| 137a0 | 28 3f 3a 28 3f 69 3a 77 77 77 7c 66 74 70 29 5c 2e 7c 28 3f 3e 5c 77 2b 29 3a 5c 2f 5c 2f 29 2f | (?:(?i:www|ftp)\.|(?>\w+):\/\/)/ |
| 137c0 | 0d 0a 09 09 55 52 4c 5f 53 54 41 52 54 53 5f 57 49 54 48 5f 50 52 4f 54 4f 43 4f 4c 20 3d 20 2f | ....URL_STARTS_WITH_PROTOCOL.=./ |
| 137e0 | 5e 5c 77 2b 3a 5c 2f 5c 2f 2f 0d 0a 09 09 49 53 5f 45 4d 41 49 4c 5f 50 41 54 54 45 52 4e 20 3d | ^\w+:\/\//....IS_EMAIL_PATTERN.= |
| 13800 | 20 2f 5e 5b 5c 77 5c 2d 5f 2e 5d 2b 40 2f 0d 0a 0d 0a 09 09 64 65 66 20 74 6f 5f 6d 61 67 69 63 | ./^[\w\-_.]+@/......def.to_magic |
| 13820 | 20 74 65 78 74 0d 0a 09 09 09 23 20 20 20 20 20 20 64 65 62 75 67 20 4d 41 47 49 43 5f 50 41 54 | .text.....#......debug.MAGIC_PAT |
| 13840 | 54 45 52 4e 2e 74 6f 5f 73 0d 0a 09 09 09 74 65 78 74 2e 67 73 75 62 21 28 4d 41 47 49 43 5f 50 | TERN.to_s.....text.gsub!(MAGIC_P |
| 13860 | 41 54 54 45 52 4e 29 20 7b 0d 0a 09 09 09 09 6d 61 67 69 63 20 3d 20 24 32 0d 0a 09 09 09 09 24 | ATTERN).{......magic.=.$2......$ |
| 13880 | 31 20 2b 20 63 61 73 65 20 6d 61 67 69 63 0d 0a 09 09 09 09 09 77 68 65 6e 20 49 53 5f 53 4d 49 | 1.+.case.magic.......when.IS_SMI |
| 138a0 | 4c 45 59 5f 50 41 54 54 45 52 4e 0d 0a 09 09 09 09 09 09 53 6d 69 6c 65 79 73 2e 73 6d 69 6c 65 | LEY_PATTERN........Smileys.smile |
| 138c0 | 79 5f 74 6f 5f 69 6d 67 20 6d 61 67 69 63 0d 0a 09 09 09 09 09 77 68 65 6e 20 49 53 5f 55 52 4c | y_to_img.magic.......when.IS_URL |
| 138e0 | 5f 50 41 54 54 45 52 4e 0d 0a 09 09 09 09 09 09 6c 61 73 74 20 3d 20 6d 61 67 69 63 2e 73 6c 69 | _PATTERN........last.=.magic.sli |
| 13900 | 63 65 5f 70 75 6e 63 74 61 74 69 6f 6e 21 20 20 23 20 6e 6f 20 70 75 6e 63 74 61 74 69 6f 6e 20 | ce_punctation!..#.no.punctation. |
| 13920 | 69 6e 20 6d 79 20 55 52 4c 0d 0a 09 09 09 09 09 09 68 72 65 66 20 3d 20 6d 61 67 69 63 0d 0a 09 | in.my.URL........href.=.magic... |
| 13940 | 09 09 09 09 09 68 72 65 66 2e 69 6e 73 65 72 74 28 30 2c 20 27 68 74 74 70 3a 2f 2f 27 29 20 75 | .....href.insert(0,.'http://').u |
| 13960 | 6e 6c 65 73 73 20 6d 61 67 69 63 20 3d 7e 20 55 52 4c 5f 53 54 41 52 54 53 5f 57 49 54 48 5f 50 | nless.magic.=~.URL_STARTS_WITH_P |
| 13980 | 52 4f 54 4f 43 4f 4c 0d 0a 09 09 09 09 09 09 27 3c 61 20 68 72 65 66 3d 22 27 20 2b 20 68 72 65 | ROTOCOL........'<a.href="'.+.hre |
| 139a0 | 66 20 2b 20 27 22 3e 27 20 2b 20 6d 61 67 69 63 20 2b 20 27 3c 2f 61 3e 27 20 2b 20 6c 61 73 74 | f.+.'">'.+.magic.+.'</a>'.+.last |
| 139c0 | 0d 0a 09 09 09 09 09 77 68 65 6e 20 49 53 5f 45 4d 41 49 4c 5f 50 41 54 54 45 52 4e 0d 0a 09 09 | .......when.IS_EMAIL_PATTERN.... |
| 139e0 | 09 09 09 09 6c 61 73 74 20 3d 20 6d 61 67 69 63 2e 73 6c 69 63 65 5f 70 75 6e 63 74 61 74 69 6f | ....last.=.magic.slice_punctatio |
| 13a00 | 6e 21 0d 0a 09 09 09 09 09 09 27 3c 61 20 68 72 65 66 3d 22 6d 61 69 6c 74 6f 3a 27 20 2b 20 6d | n!........'<a.href="mailto:'.+.m |
| 13a20 | 61 67 69 63 20 2b 20 27 22 3e 27 20 2b 20 6d 61 67 69 63 20 2b 20 27 3c 2f 61 3e 27 20 2b 20 6c | agic.+.'">'.+.magic.+.'</a>'.+.l |
| 13a40 | 61 73 74 0d 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 72 61 69 73 65 20 27 7b 7b 7b 27 20 | ast......else.......raise.'{{{'. |
| 13a60 | 2b 20 6d 61 67 69 63 20 2b 20 27 7d 7d 7d 27 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 7d 0d 0a | +.magic.+.'}}}'......end.....}.. |
| 13a80 | 09 09 09 74 65 78 74 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 23 20 68 61 6e 64 6c 65 73 20 73 6d | ...text....end......#.handles.sm |
| 13aa0 | 69 6c 65 79 73 20 61 6e 64 20 75 72 6c 73 0d 0a 09 09 64 65 66 20 70 61 72 73 65 5f 6d 61 67 69 | ileys.and.urls....def.parse_magi |
| 13ac0 | 63 20 68 74 6d 6c 0d 0a 09 09 09 72 65 74 75 72 6e 20 68 74 6d 6c 20 75 6e 6c 65 73 73 20 40 64 | c.html.....return.html.unless.@d |
| 13ae0 | 6f 5f 6d 61 67 69 63 0d 0a 09 09 09 73 63 61 6e 6e 65 72 20 3d 20 53 74 72 69 6e 67 53 63 61 6e | o_magic.....scanner.=.StringScan |
| 13b00 | 6e 65 72 2e 6e 65 77 20 68 74 6d 6c 0d 0a 09 09 09 6f 75 74 20 3d 20 27 27 0d 0a 09 09 09 77 68 | ner.new.html.....out.=.''.....wh |
| 13b20 | 69 6c 65 20 73 63 61 6e 6e 65 72 2e 72 65 73 74 3f 0d 0a 09 09 09 09 69 66 20 73 63 61 6e 6e 65 | ile.scanner.rest?......if.scanne |
| 13b40 | 72 2e 73 63 61 6e 28 2f 20 3c 20 28 3f 3a 20 61 5c 73 20 2e 2a 3f 20 3c 5c 2f 61 3e 20 7c 20 70 | r.scan(/.<.(?:.a\s..*?.<\/a>.|.p |
| 13b60 | 72 65 5c 57 20 2e 2a 3f 20 3c 5c 2f 70 72 65 3e 20 7c 20 5b 5e 3e 5d 2a 20 3e 20 29 20 2f 6d 78 | re\W..*?.<\/pre>.|.[^>]*.>.)./mx |
| 13b80 | 29 0d 0a 09 09 09 09 09 6f 75 74 20 3c 3c 20 73 63 61 6e 6e 65 72 2e 6d 61 74 63 68 65 64 0d 0a | ).......out.<<.scanner.matched.. |
| 13ba0 | 09 09 09 09 65 6c 73 69 66 20 73 63 61 6e 6e 65 72 2e 73 63 61 6e 28 2f 20 5b 5e 3c 5d 2b 20 2f | ....elsif.scanner.scan(/.[^<]+./ |
| 13bc0 | 78 29 0d 0a 09 09 09 09 09 6f 75 74 20 3c 3c 20 74 6f 5f 6d 61 67 69 63 28 73 63 61 6e 6e 65 72 | x).......out.<<.to_magic(scanner |
| 13be0 | 2e 6d 61 74 63 68 65 64 29 0d 0a 0d 0a 09 09 09 09 23 20 74 68 69 73 20 73 68 6f 75 6c 64 20 6e | .matched)........#.this.should.n |
| 13c00 | 65 76 65 72 20 68 61 70 70 65 6e 0d 0a 09 09 09 09 65 6c 73 69 66 20 73 63 61 6e 6e 65 72 2e 73 | ever.happen......elsif.scanner.s |
| 13c20 | 63 61 6e 28 2f 2e 2f 6d 29 0d 0a 09 09 09 09 09 72 61 69 73 65 20 27 45 52 52 4f 52 3a 20 65 6c | can(/./m).......raise.'ERROR:.el |
| 13c40 | 73 65 20 63 61 73 65 20 72 65 61 63 68 65 64 27 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 65 6e | se.case.reached'......end.....en |
| 13c60 | 64 0d 0a 09 09 09 6f 75 74 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 20 20 23 20 50 61 72 73 65 72 | d.....out....end...end..#.Parser |
| 13c80 | 0d 0a 65 6e 64 0d 0a 0d 0a 63 6c 61 73 73 20 53 74 72 69 6e 67 0d 0a 09 64 65 66 20 73 6c 69 63 | ..end....class.String...def.slic |
| 13ca0 | 65 5f 70 75 6e 63 74 61 74 69 6f 6e 21 0d 0a 09 09 73 6c 69 63 65 21 28 2f 5b 2e 3a 2c 21 5c 3f | e_punctation!....slice!(/[.:,!\? |
| 13cc0 | 5d 2b 24 2f 29 2e 74 6f 5f 73 20 20 23 20 72 65 74 75 72 6e 20 27 27 20 69 6e 73 74 65 61 64 20 | ]+$/).to_s..#.return.''.instead. |
| 13ce0 | 6f 66 20 6e 69 6c 0d 0a 09 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 0d 0a 23 20 3d 20 47 72 61 6d | of.nil...end..end....#..#.=.Gram |
| 13d00 | 6d 61 72 0d 0a 23 0d 0a 23 20 41 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 63 | mar..#..#.An.implementation.of.c |
| 13d20 | 6f 6d 6d 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 73 20 6f 6e 20 67 72 61 6d 6d 61 72 73 2e 0d 0a 23 | ommon.algorithms.on.grammars...# |
| 13d40 | 0d 0a 23 20 54 68 69 73 20 69 73 20 75 73 65 64 20 62 79 20 53 68 69 6e 6f 62 75 2c 20 61 20 76 | ..#.This.is.used.by.Shinobu,.a.v |
| 13d60 | 69 73 75 61 6c 69 7a 61 74 69 6f 6e 20 74 6f 6f 6c 20 66 6f 72 20 65 64 75 63 61 74 69 6e 67 20 | isualization.tool.for.educating. |
| 13d80 | 63 6f 6d 70 69 6c 65 72 2d 62 75 69 6c 64 69 6e 67 2e 0d 0a 23 0d 0a 23 20 54 68 61 6e 6b 73 20 | compiler-building...#..#.Thanks. |
| 13da0 | 74 6f 20 41 6e 64 72 65 61 73 20 4b 75 6e 65 72 74 20 66 6f 72 20 68 69 73 20 77 6f 6e 64 65 72 | to.Andreas.Kunert.for.his.wonder |
| 13dc0 | 66 75 6c 20 4c 52 28 6b 29 20 50 61 6d 70 68 6c 65 74 20 28 47 65 72 6d 61 6e 2c 20 73 65 65 20 | ful.LR(k).Pamphlet.(German,.see. |
| 13de0 | 68 74 74 70 3a 2f 2f 77 77 77 2e 69 6e 66 6f 72 6d 61 74 69 6b 2e 68 75 2d 62 65 72 6c 69 6e 2e | http://www.informatik.hu-berlin. |
| 13e00 | 64 65 2f 7e 6b 75 6e 65 72 74 2f 70 61 70 65 72 73 2f 6c 72 2d 61 6e 61 6c 79 73 65 29 2c 20 61 | de/~kunert/papers/lr-analyse),.a |
| 13e20 | 6e 64 20 41 68 6f 2f 53 65 74 68 69 2f 55 6c 6c 6d 61 6e 20 66 6f 72 20 74 68 65 69 72 20 44 72 | nd.Aho/Sethi/Ullman.for.their.Dr |
| 13e40 | 61 67 6f 6e 20 42 6f 6f 6b 2e 0d 0a 23 0d 0a 23 20 48 6f 6d 65 70 61 67 65 3a 3a 20 20 68 74 74 | agon.Book...#..#.Homepage::..htt |
| 13e60 | 70 3a 2f 2f 73 68 69 6e 6f 62 75 2e 63 59 63 6e 75 73 2e 64 65 20 28 6e 6f 74 20 65 78 69 73 74 | p://shinobu.cYcnus.de.(not.exist |
| 13e80 | 69 6e 67 20 79 65 74 29 0d 0a 23 20 41 75 74 68 6f 72 3a 3a 20 20 20 20 6d 75 72 70 68 79 20 28 | ing.yet)..#.Author::....murphy.( |
| 13ea0 | 4b 6f 72 6e 65 6c 69 75 73 20 4b 61 6c 6e 62 61 63 68 29 0d 0a 23 20 43 6f 70 79 72 69 67 68 74 | Kornelius.Kalnbach)..#.Copyright |
| 13ec0 | 3a 3a 20 28 63 63 29 20 32 30 30 35 20 63 59 63 6e 75 73 0d 0a 23 20 4c 69 63 65 6e 73 65 3a 3a | ::.(cc).2005.cYcnus..#.License:: |
| 13ee0 | 20 20 20 47 50 4c 0d 0a 23 20 56 65 72 73 69 6f 6e 3a 3a 20 30 2e 32 2e 30 20 28 32 30 30 35 2d | ...GPL..#.Version::.0.2.0.(2005- |
| 13f00 | 30 33 2d 32 37 29 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 73 65 74 5f 68 61 73 68 27 0d 0a 72 65 | 03-27)....require.'set_hash'..re |
| 13f20 | 71 75 69 72 65 20 27 63 74 79 70 65 27 0d 0a 72 65 71 75 69 72 65 20 27 74 6f 6f 6c 73 27 0d 0a | quire.'ctype'..require.'tools'.. |
| 13f40 | 72 65 71 75 69 72 65 20 27 72 75 6c 65 73 27 0d 0a 72 65 71 75 69 72 65 20 27 74 72 61 63 65 27 | require.'rules'..require.'trace' |
| 13f60 | 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 66 69 72 73 74 27 0d 0a 72 65 71 75 69 72 65 20 27 66 6f | ....require.'first'..require.'fo |
| 13f80 | 6c 6c 6f 77 27 0d 0a 0d 0a 23 20 3d 20 47 72 61 6d 6d 61 72 0d 0a 23 0d 0a 23 20 3d 3d 20 53 79 | llow'....#.=.Grammar..#..#.==.Sy |
| 13fa0 | 6e 74 61 78 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 52 75 6c 65 73 0d 0a 23 0d 0a 23 20 45 61 63 68 20 | ntax..#..#.===.Rules..#..#.Each. |
| 13fc0 | 6c 69 6e 65 20 69 73 20 61 20 72 75 6c 65 2e 0d 0a 23 20 54 68 65 20 73 79 6e 74 61 78 20 69 73 | line.is.a.rule...#.The.syntax.is |
| 13fe0 | 0d 0a 23 0d 0a 23 20 09 6c 65 66 74 20 2d 20 72 69 67 68 74 0d 0a 23 0d 0a 23 20 77 68 65 72 65 | ..#..#..left.-.right..#..#.where |
| 14000 | 20 2b 6c 65 66 74 2b 20 61 6e 64 20 2b 72 69 67 68 74 2b 20 63 61 6e 20 62 65 20 75 70 70 65 72 | .+left+.and.+right+.can.be.upper |
| 14020 | 63 61 73 65 20 61 6e 64 20 6c 6f 77 65 72 63 61 73 65 20 6c 65 74 74 65 72 73 2c 0d 0a 23 20 61 | case.and.lowercase.letters,..#.a |
| 14040 | 6e 64 20 3c 63 6f 64 65 3e 2d 3c 2f 63 6f 64 65 3e 20 63 61 6e 20 62 65 20 61 6e 79 20 63 6f 6d | nd.<code>-</code>.can.be.any.com |
| 14060 | 62 69 6e 61 74 69 6f 6e 20 6f 66 20 3c 2c 20 3e 2c 20 2d 20 6f 72 20 77 68 69 74 65 73 70 61 63 | bination.of.<,.>,.-.or.whitespac |
| 14080 | 65 2e 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 53 79 6d 62 6f 6c 73 0d 0a 23 0d 0a 23 20 55 70 70 65 72 | e...#..#.===.Symbols..#..#.Upper |
| 140a0 | 63 61 73 65 20 6c 65 74 74 65 72 73 20 73 74 61 6e 64 20 66 6f 72 20 6d 65 74 61 20 73 79 6d 62 | case.letters.stand.for.meta.symb |
| 140c0 | 6f 6c 73 2c 20 6c 6f 77 65 72 63 61 73 65 20 66 6f 72 20 74 65 72 6d 69 6e 61 6c 73 2e 0d 0a 23 | ols,.lowercase.for.terminals...# |
| 140e0 | 0d 0a 23 20 59 6f 75 20 63 61 6e 20 6d 61 6b 65 20 65 70 73 69 6c 6f 6e 2d 64 65 72 69 76 61 74 | ..#.You.can.make.epsilon-derivat |
| 14100 | 69 6f 6e 73 20 62 79 20 6c 65 61 76 69 6e 67 20 3c 63 6f 64 65 3e 3c 72 69 67 68 74 3e 3c 2f 63 | ions.by.leaving.<code><right></c |
| 14120 | 6f 64 65 3e 20 65 6d 70 74 79 2e 0d 0a 23 0d 0a 23 20 3d 3d 3d 20 45 78 61 6d 70 6c 65 0d 0a 23 | ode>.empty...#..#.===.Example..# |
| 14140 | 20 09 53 20 2d 20 41 63 0d 0a 23 20 09 41 20 2d 20 53 63 0d 0a 23 20 09 41 20 2d 20 62 0d 0a 23 | ..S.-.Ac..#..A.-.Sc..#..A.-.b..# |
| 14160 | 20 09 41 20 2d 0d 0a 63 6c 61 73 73 20 47 72 61 6d 6d 61 72 0d 0a 0d 0a 09 61 74 74 72 5f 72 65 | ..A.-..class.Grammar.....attr_re |
| 14180 | 61 64 65 72 20 3a 74 72 61 63 65 72 0d 0a 09 23 20 43 72 65 61 74 65 73 20 61 20 6e 65 77 20 47 | ader.:tracer...#.Creates.a.new.G |
| 141a0 | 72 61 6d 6d 61 72 2e 0d 0a 09 23 20 49 66 20 24 74 72 61 63 65 20 69 73 20 74 72 75 65 2c 20 74 | rammar....#.If.$trace.is.true,.t |
| 141c0 | 68 65 20 61 6c 67 6f 72 69 74 68 6d 73 20 65 78 70 6c 61 69 6e 20 28 74 65 78 74 75 61 6c 29 20 | he.algorithms.explain.(textual). |
| 141e0 | 77 68 61 74 20 74 68 65 79 20 64 6f 20 74 6f 20 24 73 74 64 6f 75 74 2e 0d 0a 09 64 65 66 20 69 | what.they.do.to.$stdout....def.i |
| 14200 | 6e 69 74 69 61 6c 69 7a 65 20 64 61 74 61 2c 20 74 72 61 63 65 72 20 3d 20 54 72 61 63 65 72 2e | nitialize.data,.tracer.=.Tracer. |
| 14220 | 6e 65 77 0d 0a 09 09 40 74 72 61 63 65 72 20 3d 20 74 72 61 63 65 72 0d 0a 09 09 40 72 75 6c 65 | new....@tracer.=.tracer....@rule |
| 14240 | 73 20 3d 20 52 75 6c 65 73 2e 6e 65 77 0d 0a 09 09 40 74 65 72 6d 69 6e 61 6c 73 2c 20 40 6d 65 | s.=.Rules.new....@terminals,.@me |
| 14260 | 74 61 5f 73 79 6d 62 6f 6c 73 20 3d 20 53 6f 72 74 65 64 53 65 74 2e 6e 65 77 2c 20 41 72 72 61 | ta_symbols.=.SortedSet.new,.Arra |
| 14280 | 79 2e 6e 65 77 0d 0a 09 09 40 73 74 61 72 74 5f 73 79 6d 62 6f 6c 20 3d 20 6e 69 6c 0d 0a 09 09 | y.new....@start_symbol.=.nil.... |
| 142a0 | 61 64 64 5f 72 75 6c 65 73 20 64 61 74 61 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 61 74 74 72 5f 72 65 | add_rules.data...end.....attr_re |
| 142c0 | 61 64 65 72 20 3a 6d 65 74 61 5f 73 79 6d 62 6f 6c 73 2c 20 3a 74 65 72 6d 69 6e 61 6c 73 2c 20 | ader.:meta_symbols,.:terminals,. |
| 142e0 | 3a 72 75 6c 65 73 2c 20 3a 73 74 61 72 74 5f 73 79 6d 62 6f 6c 0d 0a 0d 0a 09 61 6c 69 61 73 5f | :rules,.:start_symbol.....alias_ |
| 14300 | 6d 65 74 68 6f 64 20 3a 73 69 67 6d 61 2c 20 3a 74 65 72 6d 69 6e 61 6c 73 0d 0a 09 61 6c 69 61 | method.:sigma,.:terminals...alia |
| 14320 | 73 5f 6d 65 74 68 6f 64 20 3a 61 6c 70 68 61 62 65 74 2c 20 3a 74 65 72 6d 69 6e 61 6c 73 0d 0a | s_method.:alphabet,.:terminals.. |
| 14340 | 09 61 6c 69 61 73 5f 6d 65 74 68 6f 64 20 3a 76 61 72 69 61 62 6c 65 73 2c 20 3a 6d 65 74 61 5f | .alias_method.:variables,.:meta_ |
| 14360 | 73 79 6d 62 6f 6c 73 0d 0a 09 61 6c 69 61 73 5f 6d 65 74 68 6f 64 20 3a 6e 6f 6e 74 65 72 6d 69 | symbols...alias_method.:nontermi |
| 14380 | 6e 61 6c 73 2c 20 3a 6d 65 74 61 5f 73 79 6d 62 6f 6c 73 0d 0a 0d 0a 09 23 20 41 20 73 74 72 69 | nals,.:meta_symbols.....#.A.stri |
| 143a0 | 6e 67 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 67 72 61 6d 6d 61 72 | ng.representation.of.the.grammar |
| 143c0 | 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 0d 0a 09 64 65 66 20 69 6e 73 70 65 63 74 20 70 72 | .for.debugging....def.inspect.pr |
| 143e0 | 6f 64 75 63 74 69 6f 6e 73 5f 74 6f 6f 20 3d 20 66 61 6c 73 65 0d 0a 09 09 27 47 72 61 6d 6d 61 | oductions_too.=.false....'Gramma |
| 14400 | 72 28 6d 65 74 61 20 73 79 6d 62 6f 6c 73 3a 20 25 73 3b 20 61 6c 70 68 61 62 65 74 3a 20 25 73 | r(meta.symbols:.%s;.alphabet:.%s |
| 14420 | 3b 20 70 72 6f 64 75 63 74 69 6f 6e 73 3a 20 5b 25 73 5d 3b 20 73 74 61 72 74 20 73 79 6d 62 6f | ;.productions:.[%s];.start.symbo |
| 14440 | 6c 3a 20 25 73 29 27 20 25 0d 0a 09 09 09 5b 0d 0a 09 09 09 09 6d 65 74 61 5f 73 79 6d 62 6f 6c | l:.%s)'.%.....[......meta_symbol |
| 14460 | 73 2e 6a 6f 69 6e 28 27 2c 20 27 29 2c 0d 0a 09 09 09 09 74 65 72 6d 69 6e 61 6c 73 2e 6a 6f 69 | s.join(',.'),......terminals.joi |
| 14480 | 6e 28 27 2c 20 27 29 2c 0d 0a 09 09 09 09 69 66 20 70 72 6f 64 75 63 74 69 6f 6e 73 5f 74 6f 6f | n(',.'),......if.productions_too |
| 144a0 | 0d 0a 09 09 09 09 09 40 72 75 6c 65 73 2e 69 6e 73 70 65 63 74 0d 0a 09 09 09 09 65 6c 73 65 0d | .......@rules.inspect......else. |
| 144c0 | 0a 09 09 09 09 09 40 72 75 6c 65 73 2e 73 69 7a 65 0d 0a 09 09 09 09 65 6e 64 2c 0d 0a 09 09 09 | ......@rules.size......end,..... |
| 144e0 | 09 73 74 61 72 74 5f 73 79 6d 62 6f 6c 0d 0a 09 09 09 5d 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 | .start_symbol.....]...end.....#. |
| 14500 | 41 64 64 20 72 75 6c 65 73 20 74 6f 20 74 68 65 20 67 72 61 6d 6d 61 72 2e 20 2b 72 75 6c 65 73 | Add.rules.to.the.grammar..+rules |
| 14520 | 2b 20 73 68 6f 75 6c 64 20 62 65 20 61 20 53 74 72 69 6e 67 20 6f 72 20 72 65 73 70 6f 6e 64 20 | +.should.be.a.String.or.respond. |
| 14540 | 74 6f 20 2b 73 63 61 6e 2b 20 69 6e 20 61 20 73 69 6d 69 6c 61 72 20 77 61 79 2e 0d 0a 09 23 0d | to.+scan+.in.a.similar.way....#. |
| 14560 | 0a 09 23 20 53 79 6e 74 61 78 3a 20 73 65 65 20 47 72 61 6d 6d 61 72 2e 0d 0a 09 64 65 66 20 61 | ..#.Syntax:.see.Grammar....def.a |
| 14580 | 64 64 5f 72 75 6c 65 73 20 67 72 61 6d 6d 61 72 0d 0a 09 09 40 72 75 6c 65 73 20 3d 20 52 75 6c | dd_rules.grammar....@rules.=.Rul |
| 145a0 | 65 73 2e 70 61 72 73 65 20 67 72 61 6d 6d 61 72 20 64 6f 20 7c 72 75 6c 65 7c 0d 0a 09 09 09 40 | es.parse.grammar.do.|rule|.....@ |
| 145c0 | 73 74 61 72 74 5f 73 79 6d 62 6f 6c 20 7c 7c 3d 20 72 75 6c 65 2e 6c 65 66 74 0d 0a 09 09 09 40 | start_symbol.||=.rule.left.....@ |
| 145e0 | 6d 65 74 61 5f 73 79 6d 62 6f 6c 73 20 3c 3c 20 72 75 6c 65 2e 6c 65 66 74 0d 0a 09 09 09 40 74 | meta_symbols.<<.rule.left.....@t |
| 14600 | 65 72 6d 69 6e 61 6c 73 2e 6d 65 72 67 65 20 72 75 6c 65 2e 72 69 67 68 74 2e 73 70 6c 69 74 28 | erminals.merge.rule.right.split( |
| 14620 | 27 27 29 2e 73 65 6c 65 63 74 20 7b 20 7c 73 7c 20 74 65 72 6d 69 6e 61 6c 3f 20 73 20 7d 0d 0a | '').select.{.|s|.terminal?.s.}.. |
| 14640 | 09 09 65 6e 64 0d 0a 09 09 40 6d 65 74 61 5f 73 79 6d 62 6f 6c 73 2e 75 6e 69 71 21 0d 0a 09 09 | ..end....@meta_symbols.uniq!.... |
| 14660 | 75 70 64 61 74 65 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 52 65 74 75 72 6e 73 20 61 20 68 61 73 | update...end.....#.Returns.a.has |
| 14680 | 68 20 61 63 74 69 6e 67 20 61 73 20 46 49 52 53 54 20 6f 70 65 72 61 74 6f 72 2c 20 73 6f 20 74 | h.acting.as.FIRST.operator,.so.t |
| 146a0 | 68 61 74 0d 0a 09 23 20 3c 63 6f 64 65 3e 66 69 72 73 74 5b 22 41 42 43 22 5d 3c 2f 63 6f 64 65 | hat...#.<code>first["ABC"]</code |
| 146c0 | 3e 20 69 73 20 46 49 52 53 54 28 41 42 43 29 2e 0d 0a 09 23 20 53 65 65 20 68 74 74 70 3a 2f 2f | >.is.FIRST(ABC)....#.See.http:// |
| 146e0 | 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4c 4c 5f 70 61 72 73 65 72 20 | en.wikipedia.org/wiki/LL_parser. |
| 14700 | 22 43 6f 6e 73 74 72 75 63 74 69 6e 67 20 61 6e 20 4c 4c 28 31 29 20 70 61 72 73 69 6e 67 20 74 | "Constructing.an.LL(1).parsing.t |
| 14720 | 61 62 6c 65 22 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0d 0a 09 64 65 66 20 66 69 72 73 74 0d 0a | able".for.details....def.first.. |
| 14740 | 09 09 66 69 72 73 74 5f 6f 70 65 72 61 74 6f 72 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 52 65 74 | ..first_operator...end.....#.Ret |
| 14760 | 75 72 6e 73 20 61 20 68 61 73 68 20 61 63 74 69 6e 67 20 61 73 20 46 4f 4c 4c 4f 57 20 6f 70 65 | urns.a.hash.acting.as.FOLLOW.ope |
| 14780 | 72 61 74 6f 72 2c 20 73 6f 20 74 68 61 74 0d 0a 09 23 20 3c 63 6f 64 65 3e 66 69 72 73 74 5b 22 | rator,.so.that...#.<code>first[" |
| 147a0 | 41 22 5d 3c 2f 63 6f 64 65 3e 20 69 73 20 46 4f 4c 4c 4f 57 28 41 29 2e 0d 0a 09 23 20 53 65 65 | A"]</code>.is.FOLLOW(A)....#.See |
| 147c0 | 20 68 74 74 70 3a 2f 2f 65 6e 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69 2f 4c 4c | .http://en.wikipedia.org/wiki/LL |
| 147e0 | 5f 70 61 72 73 65 72 20 22 43 6f 6e 73 74 72 75 63 74 69 6e 67 20 61 6e 20 4c 4c 28 31 29 20 70 | _parser."Constructing.an.LL(1).p |
| 14800 | 61 72 73 69 6e 67 20 74 61 62 6c 65 22 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0d 0a 09 64 65 66 | arsing.table".for.details....def |
| 14820 | 20 66 6f 6c 6c 6f 77 0d 0a 09 09 66 6f 6c 6c 6f 77 5f 6f 70 65 72 61 74 6f 72 0d 0a 09 65 6e 64 | .follow....follow_operator...end |
| 14840 | 0d 0a 0d 0a 09 4c 4c 45 72 72 6f 72 20 3d 20 43 6c 61 73 73 2e 6e 65 77 28 45 78 63 65 70 74 69 | .....LLError.=.Class.new(Excepti |
| 14860 | 6f 6e 29 0d 0a 09 4c 4c 45 72 72 6f 72 54 79 70 65 31 20 3d 20 43 6c 61 73 73 2e 6e 65 77 28 4c | on)...LLErrorType1.=.Class.new(L |
| 14880 | 4c 45 72 72 6f 72 29 0d 0a 09 4c 4c 45 72 72 6f 72 54 79 70 65 32 20 3d 20 43 6c 61 73 73 2e 6e | LError)...LLErrorType2.=.Class.n |
| 148a0 | 65 77 28 4c 4c 45 72 72 6f 72 29 0d 0a 0d 0a 09 23 20 54 65 73 74 73 20 69 66 20 74 68 65 20 67 | ew(LLError).....#.Tests.if.the.g |
| 148c0 | 72 61 6d 6d 61 72 20 69 73 20 4c 4c 28 31 29 2e 0d 0a 09 64 65 66 20 6c 6c 31 3f 0d 0a 09 09 62 | rammar.is.LL(1)....def.ll1?....b |
| 148e0 | 65 67 69 6e 0d 0a 09 09 09 66 6f 72 20 6d 65 74 61 20 69 6e 20 40 6d 65 74 61 5f 73 79 6d 62 6f | egin.....for.meta.in.@meta_symbo |
| 14900 | 6c 73 0d 0a 09 09 09 09 66 69 72 73 74 5f 73 65 74 73 20 3d 20 40 72 75 6c 65 73 5b 6d 65 74 61 | ls......first_sets.=.@rules[meta |
| 14920 | 5d 2e 6d 61 70 20 7b 20 7c 61 6c 70 68 61 7c 20 66 69 72 73 74 5b 61 6c 70 68 61 5d 20 7d 0d 0a | ].map.{.|alpha|.first[alpha].}.. |
| 14940 | 09 09 09 09 66 69 72 73 74 5f 73 65 74 73 2e 69 6e 6a 65 63 74 28 53 65 74 5b 5d 29 20 64 6f 20 | ....first_sets.inject(Set[]).do. |
| 14960 | 7c 61 6c 72 65 61 64 79 5f 75 73 65 64 2c 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 65 74 | |already_used,.another_first_set |
| 14980 | 7c 0d 0a 09 09 09 09 09 75 6e 6c 65 73 73 20 61 6c 72 65 61 64 79 5f 75 73 65 64 2e 64 69 73 6a | |.......unless.already_used.disj |
| 149a0 | 6f 69 6e 74 3f 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 65 74 0d 0a 09 09 09 09 09 09 72 | oint?.another_first_set........r |
| 149c0 | 61 69 73 65 20 4c 4c 45 72 72 6f 72 54 79 70 65 31 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 09 09 09 | aise.LLErrorType1.......end..... |
| 149e0 | 09 09 61 6c 72 65 61 64 79 5f 75 73 65 64 2e 6d 65 72 67 65 20 61 6e 6f 74 68 65 72 5f 66 69 72 | ..already_used.merge.another_fir |
| 14a00 | 73 74 5f 73 65 74 0d 0a 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 09 69 66 20 66 69 72 73 74 5b | st_set......end........if.first[ |
| 14a20 | 6d 65 74 61 5d 2e 69 6e 63 6c 75 64 65 3f 20 45 50 53 49 4c 4f 4e 20 61 6e 64 20 6e 6f 74 20 66 | meta].include?.EPSILON.and.not.f |
| 14a40 | 69 72 73 74 5b 6d 65 74 61 5d 2e 64 69 73 6a 6f 69 6e 74 3f 20 66 6f 6c 6c 6f 77 5b 6d 65 74 61 | irst[meta].disjoint?.follow[meta |
| 14a60 | 5d 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4c 4c 45 72 72 6f 72 54 79 70 65 32 0d 0a 09 09 09 09 | ].......raise.LLErrorType2...... |
| 14a80 | 65 6e 64 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 72 65 73 63 75 65 20 4c 4c 45 72 72 6f 72 0d 0a 09 | end.....end....rescue.LLError... |
| 14aa0 | 09 09 66 61 6c 73 65 0d 0a 09 09 65 6c 73 65 0d 0a 09 09 09 74 72 75 65 0d 0a 09 09 65 6e 64 0d | ..false....else.....true....end. |
| 14ac0 | 0a 09 65 6e 64 0d 0a 0d 0a 70 72 69 76 61 74 65 0d 0a 0d 0a 09 64 65 66 20 66 69 72 73 74 5f 6f | ..end....private.....def.first_o |
| 14ae0 | 70 65 72 61 74 6f 72 0d 0a 09 09 40 66 69 72 73 74 20 7c 7c 3d 20 46 69 72 73 74 4f 70 65 72 61 | perator....@first.||=.FirstOpera |
| 14b00 | 74 6f 72 2e 6e 65 77 20 73 65 6c 66 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 66 6f 6c 6c 6f | tor.new.self...end.....def.follo |
| 14b20 | 77 5f 6f 70 65 72 61 74 6f 72 0d 0a 09 09 40 66 6f 6c 6c 6f 77 20 7c 7c 3d 20 46 6f 6c 6c 6f 77 | w_operator....@follow.||=.Follow |
| 14b40 | 4f 70 65 72 61 74 6f 72 2e 6e 65 77 20 73 65 6c 66 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 | Operator.new.self...end.....def. |
| 14b60 | 75 70 64 61 74 65 0d 0a 09 09 40 66 69 72 73 74 20 3d 20 40 66 6f 6c 6c 6f 77 20 3d 20 6e 69 6c | update....@first.=.@follow.=.nil |
| 14b80 | 0d 0a 09 65 6e 64 0d 0a 0d 0a 65 6e 64 0d 0a 0d 0a 69 66 20 24 30 20 3d 3d 20 5f 5f 46 49 4c 45 | ...end....end....if.$0.==.__FILE |
| 14ba0 | 5f 5f 0d 0a 20 20 65 76 61 6c 20 44 41 54 41 2e 72 65 61 64 2c 20 6e 69 6c 2c 20 24 30 2c 20 5f | __....eval.DATA.read,.nil,.$0,._ |
| 14bc0 | 5f 4c 49 4e 45 5f 5f 2b 34 0d 0a 65 6e 64 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 74 65 73 74 2f | _LINE__+4..end....require.'test/ |
| 14be0 | 75 6e 69 74 27 0d 0a 0d 0a 63 6c 61 73 73 20 54 65 73 74 43 61 73 65 47 72 61 6d 6d 61 72 20 3c | unit'....class.TestCaseGrammar.< |
| 14c00 | 20 54 65 73 74 3a 3a 55 6e 69 74 3a 3a 54 65 73 74 43 61 73 65 0d 0a 0d 0a 09 69 6e 63 6c 75 64 | .Test::Unit::TestCase.....includ |
| 14c20 | 65 20 47 72 61 6d 6d 61 72 3a 3a 53 79 6d 62 6f 6c 73 0d 0a 0d 0a 09 64 65 66 20 66 69 66 6f 20 | e.Grammar::Symbols.....def.fifo. |
| 14c40 | 73 0d 0a 09 09 53 65 74 5b 2a 73 2e 73 70 6c 69 74 28 27 27 29 5d 0d 0a 09 65 6e 64 0d 0a 0d 0a | s....Set[*s.split('')]...end.... |
| 14c60 | 09 64 65 66 20 74 65 73 74 5f 66 69 66 6f 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 20 53 | .def.test_fifo....assert_equal.S |
| 14c80 | 65 74 5b 5d 2c 20 66 69 66 6f 28 27 27 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 20 53 | et[],.fifo('')....assert_equal.S |
| 14ca0 | 65 74 5b 45 50 53 49 4c 4f 4e 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 2c 20 27 78 27 2c 20 27 | et[EPSILON,.END_OF_INPUT,.'x',.' |
| 14cc0 | 59 27 5d 2c 20 66 69 66 6f 28 27 3f 78 59 24 27 29 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 54 45 53 54 | Y'],.fifo('?xY$')...end.....TEST |
| 14ce0 | 5f 47 52 41 4d 4d 41 52 5f 31 20 3d 20 3c 3c 2d 45 4f 47 0d 0a 53 20 2d 20 41 42 43 44 0d 0a 41 | _GRAMMAR_1.=.<<-EOG..S.-.ABCD..A |
| 14d00 | 20 2d 20 61 0d 0a 41 20 2d 0d 0a 42 20 2d 20 62 0d 0a 42 20 2d 0d 0a 43 20 2d 20 63 0d 0a 43 20 | .-.a..A.-..B.-.b..B.-..C.-.c..C. |
| 14d20 | 2d 0d 0a 44 20 2d 20 53 0d 0a 44 20 2d 0d 0a 09 45 4f 47 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 | -..D.-.S..D.-...EOG.....def.test |
| 14d40 | 5f 73 79 6d 62 6f 6c 73 0d 0a 09 09 61 73 73 65 72 74 20 45 50 53 49 4c 4f 4e 0d 0a 09 09 61 73 | _symbols....assert.EPSILON....as |
| 14d60 | 73 65 72 74 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 | sert.END_OF_INPUT...end.....def. |
| 14d80 | 74 65 73 74 5f 66 69 72 73 74 5f 31 0d 0a 09 09 67 20 3d 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 | test_first_1....g.=.Grammar.new. |
| 14da0 | 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 31 0d 0a 0d 0a 09 09 66 20 3d 20 6e 69 6c 0d 0a 09 09 61 | TEST_GRAMMAR_1......f.=.nil....a |
| 14dc0 | 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 66 20 3d 20 67 2e 66 69 72 | ssert_nothing_raised.{.f.=.g.fir |
| 14de0 | 73 74 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 45 50 | st.}....assert_equal(Set['a',.EP |
| 14e00 | 53 49 4c 4f 4e 5d 2c 20 66 5b 27 41 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 | SILON],.f['A'])....assert_equal( |
| 14e20 | 53 65 74 5b 27 62 27 2c 20 45 50 53 49 4c 4f 4e 5d 2c 20 66 5b 27 42 27 5d 29 0d 0a 09 09 61 73 | Set['b',.EPSILON],.f['B'])....as |
| 14e40 | 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 63 27 2c 20 45 50 53 49 4c 4f 4e 5d 2c 20 66 5b | sert_equal(Set['c',.EPSILON],.f[ |
| 14e60 | 27 43 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 | 'C'])....assert_equal(Set['a',.' |
| 14e80 | 62 27 2c 20 27 63 27 2c 20 45 50 53 49 4c 4f 4e 5d 2c 20 66 5b 27 44 27 5d 29 0d 0a 09 09 61 73 | b',.'c',.EPSILON],.f['D'])....as |
| 14ea0 | 73 65 72 74 5f 65 71 75 61 6c 28 66 5b 27 44 27 5d 2c 20 66 5b 27 53 27 5d 29 0d 0a 09 65 6e 64 | sert_equal(f['D'],.f['S'])...end |
| 14ec0 | 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 66 6f 6c 6c 6f 77 5f 31 0d 0a 09 09 67 20 3d 20 47 72 | .....def.test_follow_1....g.=.Gr |
| 14ee0 | 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 31 0d 0a 0d 0a 09 09 66 20 | ammar.new.TEST_GRAMMAR_1......f. |
| 14f00 | 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b | =.nil....assert_nothing_raised.{ |
| 14f20 | 20 66 20 3d 20 67 2e 66 6f 6c 6c 6f 77 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 | .f.=.g.follow.}....assert_equal( |
| 14f40 | 53 65 74 5b 27 61 27 2c 20 27 62 27 2c 20 27 63 27 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d | Set['a',.'b',.'c',.END_OF_INPUT] |
| 14f60 | 2c 20 66 5b 27 41 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 | ,.f['A'])....assert_equal(Set['a |
| 14f80 | 27 2c 20 27 62 27 2c 20 27 63 27 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c 20 66 5b 27 42 | ',.'b',.'c',.END_OF_INPUT],.f['B |
| 14fa0 | 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 62 27 | '])....assert_equal(Set['a',.'b' |
| 14fc0 | 2c 20 27 63 27 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c 20 66 5b 27 43 27 5d 29 0d 0a 09 | ,.'c',.END_OF_INPUT],.f['C'])... |
| 14fe0 | 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c | .assert_equal(Set[END_OF_INPUT], |
| 15000 | 20 66 5b 27 44 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 4e 44 | .f['D'])....assert_equal(Set[END |
| 15020 | 5f 4f 46 5f 49 4e 50 55 54 5d 2c 20 66 5b 27 53 27 5d 29 0d 0a 09 65 6e 64 0d 0a 0d 0a 0d 0a 09 | _OF_INPUT],.f['S'])...end....... |
| 15040 | 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 32 20 3d 20 3c 3c 2d 45 4f 47 0d 0a 53 20 2d 20 45 64 0d | TEST_GRAMMAR_2.=.<<-EOG..S.-.Ed. |
| 15060 | 0a 45 20 2d 20 45 70 54 0d 0a 45 20 2d 20 45 6d 54 0d 0a 45 20 2d 20 54 0d 0a 54 20 2d 20 54 75 | .E.-.EpT..E.-.EmT..E.-.T..T.-.Tu |
| 15080 | 46 0d 0a 54 20 2d 20 54 64 46 0d 0a 54 20 2d 20 46 0d 0a 46 20 2d 20 69 0d 0a 46 20 2d 20 6e 0d | F..T.-.TdF..T.-.F..F.-.i..F.-.n. |
| 150a0 | 0a 46 20 2d 20 61 45 7a 0d 0a 09 45 4f 47 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 66 69 72 73 | .F.-.aEz...EOG.....def.test_firs |
| 150c0 | 74 5f 32 0d 0a 09 09 67 20 3d 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d | t_2....g.=.Grammar.new.TEST_GRAM |
| 150e0 | 4d 41 52 5f 32 0d 0a 0d 0a 09 09 66 20 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 5f 6e 6f 74 | MAR_2......f.=.nil....assert_not |
| 15100 | 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 66 20 3d 20 67 2e 66 69 72 73 74 20 7d 0d 0a 09 09 61 | hing_raised.{.f.=.g.first.}....a |
| 15120 | 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 6e 27 2c 20 27 69 27 5d 2c 20 | ssert_equal(Set['a',.'n',.'i'],. |
| 15140 | 66 5b 27 45 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c | f['E'])....assert_equal(Set['a', |
| 15160 | 20 27 6e 27 2c 20 27 69 27 5d 2c 20 66 5b 27 46 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 | .'n',.'i'],.f['F'])....assert_eq |
| 15180 | 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 6e 27 2c 20 27 69 27 5d 2c 20 66 5b 27 54 27 5d 29 0d | ual(Set['a',.'n',.'i'],.f['T']). |
| 151a0 | 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 6e 27 2c 20 27 69 | ...assert_equal(Set['a',.'n',.'i |
| 151c0 | 27 5d 2c 20 66 5b 27 53 27 5d 29 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 66 | '],.f['S'])...end.....def.test_f |
| 151e0 | 6f 6c 6c 6f 77 5f 32 0d 0a 09 09 67 20 3d 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f | ollow_2....g.=.Grammar.new.TEST_ |
| 15200 | 47 52 41 4d 4d 41 52 5f 32 0d 0a 0d 0a 09 09 66 20 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 | GRAMMAR_2......f.=.nil....assert |
| 15220 | 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 66 20 3d 20 67 2e 66 6f 6c 6c 6f 77 20 7d | _nothing_raised.{.f.=.g.follow.} |
| 15240 | 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 6d 27 2c 20 27 64 27 2c 20 27 | ....assert_equal(Set['m',.'d',.' |
| 15260 | 7a 27 2c 20 27 70 27 5d 2c 20 66 5b 27 45 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 | z',.'p'],.f['E'])....assert_equa |
| 15280 | 6c 28 53 65 74 5b 27 6d 27 2c 20 27 64 27 2c 20 27 7a 27 2c 20 27 70 27 2c 20 27 75 27 5d 2c 20 | l(Set['m',.'d',.'z',.'p',.'u'],. |
| 152a0 | 66 5b 27 46 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 6d 27 2c | f['F'])....assert_equal(Set['m', |
| 152c0 | 20 27 64 27 2c 20 27 7a 27 2c 20 27 70 27 2c 20 27 75 27 5d 2c 20 66 5b 27 54 27 5d 29 0d 0a 09 | .'d',.'z',.'p',.'u'],.f['T'])... |
| 152e0 | 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c | .assert_equal(Set[END_OF_INPUT], |
| 15300 | 20 66 5b 27 53 27 5d 29 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 4c 4c 45 72 72 6f 72 20 3d 20 47 72 61 | .f['S'])...end.....LLError.=.Gra |
| 15320 | 6d 6d 61 72 3a 3a 4c 4c 45 72 72 6f 72 0d 0a 0d 0a 09 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 33 | mmar::LLError.....TEST_GRAMMAR_3 |
| 15340 | 20 3d 20 3c 3c 2d 45 4f 47 0d 0a 45 20 2d 20 54 44 0d 0a 44 20 2d 20 70 54 44 0d 0a 44 20 2d 0d | .=.<<-EOG..E.-.TD..D.-.pTD..D.-. |
| 15360 | 0a 54 20 2d 20 46 53 0d 0a 53 20 2d 20 75 46 53 0d 0a 53 20 2d 0d 0a 53 20 2d 20 70 0d 0a 46 20 | .T.-.FS..S.-.uFS..S.-..S.-.p..F. |
| 15380 | 2d 20 61 45 7a 0d 0a 46 20 2d 20 69 0d 0a 09 45 4f 47 0d 0a 0d 0a 09 4e 6f 45 72 72 6f 72 20 3d | -.aEz..F.-.i...EOG.....NoError.= |
| 153a0 | 20 43 6c 61 73 73 2e 6e 65 77 28 45 78 63 65 70 74 69 6f 6e 29 0d 0a 0d 0a 09 64 65 66 20 74 65 | .Class.new(Exception).....def.te |
| 153c0 | 73 74 5f 66 69 72 73 74 5f 33 0d 0a 09 09 67 20 3d 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 | st_first_3....g.=.Grammar.new.TE |
| 153e0 | 53 54 5f 47 52 41 4d 4d 41 52 5f 33 0d 0a 0d 0a 09 09 23 20 47 72 61 6d 6d 61 72 20 33 20 69 73 | ST_GRAMMAR_3......#.Grammar.3.is |
| 15400 | 20 4c 4c 28 31 29 2c 20 73 6f 20 61 6c 6c 20 66 69 72 73 74 2d 73 65 74 73 20 6d 75 73 74 20 62 | .LL(1),.so.all.first-sets.must.b |
| 15420 | 65 20 64 69 73 6a 6f 69 6e 74 2e 0d 0a 09 09 66 20 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 | e.disjoint.....f.=.nil....assert |
| 15440 | 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 66 20 3d 20 67 2e 66 69 72 73 74 20 7d 0d | _nothing_raised.{.f.=.g.first.}. |
| 15460 | 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 69 27 5d 2c 20 66 | ...assert_equal(Set['a',.'i'],.f |
| 15480 | 5b 27 45 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 50 53 49 4c | ['E'])....assert_equal(Set[EPSIL |
| 154a0 | 4f 4e 2c 20 27 70 27 5d 2c 20 66 5b 27 44 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 | ON,.'p'],.f['D'])....assert_equa |
| 154c0 | 6c 28 53 65 74 5b 27 61 27 2c 20 27 69 27 5d 2c 20 66 5b 27 46 27 5d 29 0d 0a 09 09 61 73 73 65 | l(Set['a',.'i'],.f['F'])....asse |
| 154e0 | 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 69 27 5d 2c 20 66 5b 27 54 27 5d 29 0d | rt_equal(Set['a',.'i'],.f['T']). |
| 15500 | 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 50 53 49 4c 4f 4e 2c 20 27 75 27 | ...assert_equal(Set[EPSILON,.'u' |
| 15520 | 2c 20 27 70 27 5d 2c 20 66 5b 27 53 27 5d 29 0d 0a 09 09 66 6f 72 20 6d 20 69 6e 20 67 2e 6d 65 | ,.'p'],.f['S'])....for.m.in.g.me |
| 15540 | 74 61 5f 73 79 6d 62 6f 6c 73 0d 0a 09 09 09 72 20 3d 20 67 2e 72 75 6c 65 73 5b 6d 5d 0d 0a 09 | ta_symbols.....r.=.g.rules[m]... |
| 15560 | 09 09 66 69 72 73 74 73 20 3d 20 72 2e 6d 61 70 20 7b 20 7c 78 7c 20 66 5b 78 5d 20 7d 2e 74 6f | ..firsts.=.r.map.{.|x|.f[x].}.to |
| 15580 | 5f 73 65 74 0d 0a 09 09 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 64 | _set.....assert_nothing_raised.d |
| 155a0 | 6f 0d 0a 09 09 09 09 66 69 72 73 74 73 2e 69 6e 6a 65 63 74 28 53 65 74 2e 6e 65 77 29 20 64 6f | o......firsts.inject(Set.new).do |
| 155c0 | 20 7c 61 6c 72 65 61 64 79 5f 75 73 65 64 2c 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 65 | .|already_used,.another_first_se |
| 155e0 | 74 7c 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4c 4c 45 72 72 6f 72 2c 20 27 6e 6f 74 20 64 69 73 | t|.......raise.LLError,.'not.dis |
| 15600 | 6a 6f 69 6e 74 21 27 20 75 6e 6c 65 73 73 20 61 6c 72 65 61 64 79 5f 75 73 65 64 2e 64 69 73 6a | joint!'.unless.already_used.disj |
| 15620 | 6f 69 6e 74 3f 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 65 74 0d 0a 09 09 09 09 09 61 6c | oint?.another_first_set.......al |
| 15640 | 72 65 61 64 79 5f 75 73 65 64 2e 6d 65 72 67 65 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 | ready_used.merge.another_first_s |
| 15660 | 65 74 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 | et......end.....end....end...end |
| 15680 | 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 66 6f 6c 6c 6f 77 5f 33 0d 0a 09 09 67 20 3d 20 47 72 | .....def.test_follow_3....g.=.Gr |
| 156a0 | 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 33 0d 0a 0d 0a 09 09 23 20 | ammar.new.TEST_GRAMMAR_3......#. |
| 156c0 | 47 72 61 6d 6d 61 72 20 33 20 69 73 20 6e 6f 74 20 4c 4c 28 31 29 2c 20 62 65 63 61 75 73 65 20 | Grammar.3.is.not.LL(1),.because. |
| 156e0 | 65 70 73 69 6c 6f 6e 20 69 73 20 69 6e 20 46 49 52 53 54 28 53 29 2c 0d 0a 09 09 23 20 62 75 74 | epsilon.is.in.FIRST(S),....#.but |
| 15700 | 20 46 49 52 53 54 28 53 29 20 61 6e 64 20 46 4f 4c 4c 4f 57 28 53 29 20 61 72 65 20 6e 6f 74 20 | .FIRST(S).and.FOLLOW(S).are.not. |
| 15720 | 64 69 73 6a 6f 69 6e 74 2e 0d 0a 09 09 66 20 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 5f 6e | disjoint.....f.=.nil....assert_n |
| 15740 | 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 66 20 3d 20 67 2e 66 6f 6c 6c 6f 77 20 7d 0d 0a | othing_raised.{.f.=.g.follow.}.. |
| 15760 | 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 7a 27 2c 20 45 4e 44 5f 4f 46 5f 49 | ..assert_equal(Set['z',.END_OF_I |
| 15780 | 4e 50 55 54 5d 2c 20 66 5b 27 45 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 | NPUT],.f['E'])....assert_equal(S |
| 157a0 | 65 74 5b 27 7a 27 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c 20 66 5b 27 44 27 5d 29 0d 0a | et['z',.END_OF_INPUT],.f['D']).. |
| 157c0 | 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 7a 27 2c 20 27 70 27 2c 20 27 75 27 | ..assert_equal(Set['z',.'p',.'u' |
| 157e0 | 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c 20 66 5b 27 46 27 5d 29 0d 0a 09 09 61 73 73 65 | ,.END_OF_INPUT],.f['F'])....asse |
| 15800 | 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 70 27 2c 20 27 7a 27 2c 20 45 4e 44 5f 4f 46 5f 49 4e | rt_equal(Set['p',.'z',.END_OF_IN |
| 15820 | 50 55 54 5d 2c 20 66 5b 27 54 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 | PUT],.f['T'])....assert_equal(Se |
| 15840 | 74 5b 27 70 27 2c 20 27 7a 27 2c 20 45 4e 44 5f 4f 46 5f 49 4e 50 55 54 5d 2c 20 66 5b 27 53 27 | t['p',.'z',.END_OF_INPUT],.f['S' |
| 15860 | 5d 29 0d 0a 09 09 66 6f 72 20 6d 20 69 6e 20 67 2e 6d 65 74 61 5f 73 79 6d 62 6f 6c 73 0d 0a 09 | ])....for.m.in.g.meta_symbols... |
| 15880 | 09 09 66 69 72 73 74 5f 6d 20 3d 20 67 2e 66 69 72 73 74 5b 6d 5d 0d 0a 09 09 09 6e 65 78 74 20 | ..first_m.=.g.first[m].....next. |
| 158a0 | 75 6e 6c 65 73 73 20 66 69 72 73 74 5f 6d 2e 69 6e 63 6c 75 64 65 3f 20 45 50 53 49 4c 4f 4e 0d | unless.first_m.include?.EPSILON. |
| 158c0 | 0a 09 09 09 61 73 73 65 72 74 5f 72 61 69 73 65 28 6d 20 3d 3d 20 27 53 27 20 3f 20 4c 4c 45 72 | ....assert_raise(m.==.'S'.?.LLEr |
| 158e0 | 72 6f 72 20 3a 20 4e 6f 45 72 72 6f 72 29 20 64 6f 0d 0a 09 09 09 09 69 66 20 66 69 72 73 74 5f | ror.:.NoError).do......if.first_ |
| 15900 | 6d 2e 64 69 73 6a 6f 69 6e 74 3f 20 66 5b 6d 5d 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4e 6f 45 | m.disjoint?.f[m].......raise.NoE |
| 15920 | 72 72 6f 72 20 20 23 20 74 68 69 73 20 69 73 20 66 75 6e 20 3a 44 0d 0a 09 09 09 09 65 6c 73 65 | rror..#.this.is.fun.:D......else |
| 15940 | 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4c 4c 45 72 72 6f 72 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 | .......raise.LLError......end... |
| 15960 | 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 54 45 53 54 5f 47 52 41 4d | ..end....end...end.....TEST_GRAM |
| 15980 | 4d 41 52 5f 33 62 20 3d 20 3c 3c 2d 45 4f 47 0d 0a 45 20 2d 20 54 44 0d 0a 44 20 2d 20 70 54 44 | MAR_3b.=.<<-EOG..E.-.TD..D.-.pTD |
| 159a0 | 0d 0a 44 20 2d 20 50 54 44 0d 0a 44 20 2d 0d 0a 54 20 2d 20 46 53 0d 0a 53 20 2d 20 75 46 53 0d | ..D.-.PTD..D.-..T.-.FS..S.-.uFS. |
| 159c0 | 0a 53 20 2d 0d 0a 46 20 2d 20 61 45 7a 0d 0a 46 20 2d 20 69 0d 0a 50 20 2d 20 70 0d 0a 09 45 4f | .S.-..F.-.aEz..F.-.i..P.-.p...EO |
| 159e0 | 47 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 66 69 72 73 74 5f 33 62 0d 0a 09 09 67 20 3d 20 47 | G.....def.test_first_3b....g.=.G |
| 15a00 | 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 33 62 0d 0a 0d 0a 09 09 | rammar.new.TEST_GRAMMAR_3b...... |
| 15a20 | 23 20 47 72 61 6d 6d 61 72 20 33 62 20 69 73 20 4e 4f 54 20 4c 4c 28 31 29 2c 20 73 69 6e 63 65 | #.Grammar.3b.is.NOT.LL(1),.since |
| 15a40 | 20 6e 6f 74 20 61 6c 6c 20 66 69 72 73 74 2d 73 65 74 73 20 61 72 65 20 64 69 73 6a 6f 69 6e 74 | .not.all.first-sets.are.disjoint |
| 15a60 | 2e 0d 0a 09 09 66 20 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 | .....f.=.nil....assert_nothing_r |
| 15a80 | 61 69 73 65 64 20 7b 20 66 20 3d 20 67 2e 66 69 72 73 74 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f | aised.{.f.=.g.first.}....assert_ |
| 15aa0 | 65 71 75 61 6c 28 53 65 74 5b 27 61 27 2c 20 27 69 27 5d 2c 20 66 5b 27 45 27 5d 29 0d 0a 09 09 | equal(Set['a',.'i'],.f['E']).... |
| 15ac0 | 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 50 53 49 4c 4f 4e 2c 20 27 70 27 5d 2c 20 | assert_equal(Set[EPSILON,.'p'],. |
| 15ae0 | 66 5b 27 44 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 70 27 5d | f['D'])....assert_equal(Set['p'] |
| 15b00 | 2c 20 66 5b 27 50 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 53 65 74 5b 27 61 | ,.f['P'])....assert_equal(Set['a |
| 15b20 | 27 2c 20 27 69 27 5d 2c 20 66 5b 27 46 27 5d 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c | ',.'i'],.f['F'])....assert_equal |
| 15b40 | 28 53 65 74 5b 27 61 27 2c 20 27 69 27 5d 2c 20 66 5b 27 54 27 5d 29 0d 0a 09 09 61 73 73 65 72 | (Set['a',.'i'],.f['T'])....asser |
| 15b60 | 74 5f 65 71 75 61 6c 28 53 65 74 5b 45 50 53 49 4c 4f 4e 2c 20 27 75 27 5d 2c 20 66 5b 27 53 27 | t_equal(Set[EPSILON,.'u'],.f['S' |
| 15b80 | 5d 29 0d 0a 09 09 66 6f 72 20 6d 20 69 6e 20 67 2e 6d 65 74 61 5f 73 79 6d 62 6f 6c 73 0d 0a 09 | ])....for.m.in.g.meta_symbols... |
| 15ba0 | 09 09 72 20 3d 20 67 2e 72 75 6c 65 73 5b 6d 5d 0d 0a 09 09 09 66 69 72 73 74 73 20 3d 20 72 2e | ..r.=.g.rules[m].....firsts.=.r. |
| 15bc0 | 6d 61 70 20 7b 20 7c 78 7c 20 66 5b 78 5d 20 7d 0d 0a 09 09 09 61 73 73 65 72 74 5f 72 61 69 73 | map.{.|x|.f[x].}.....assert_rais |
| 15be0 | 65 28 6d 20 3d 3d 20 27 44 27 20 3f 20 4c 4c 45 72 72 6f 72 20 3a 20 4e 6f 45 72 72 6f 72 29 20 | e(m.==.'D'.?.LLError.:.NoError). |
| 15c00 | 64 6f 0d 0a 09 09 09 09 66 69 72 73 74 73 2e 69 6e 6a 65 63 74 28 53 65 74 2e 6e 65 77 29 20 64 | do......firsts.inject(Set.new).d |
| 15c20 | 6f 20 7c 61 6c 72 65 61 64 79 5f 75 73 65 64 2c 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 | o.|already_used,.another_first_s |
| 15c40 | 65 74 7c 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4c 4c 45 72 72 6f 72 2c 20 27 6e 6f 74 20 64 69 | et|.......raise.LLError,.'not.di |
| 15c60 | 73 6a 6f 69 6e 74 21 27 20 75 6e 6c 65 73 73 20 61 6c 72 65 61 64 79 5f 75 73 65 64 2e 64 69 73 | sjoint!'.unless.already_used.dis |
| 15c80 | 6a 6f 69 6e 74 3f 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f 73 65 74 0d 0a 09 09 09 09 09 61 | joint?.another_first_set.......a |
| 15ca0 | 6c 72 65 61 64 79 5f 75 73 65 64 2e 6d 65 72 67 65 20 61 6e 6f 74 68 65 72 5f 66 69 72 73 74 5f | lready_used.merge.another_first_ |
| 15cc0 | 73 65 74 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 72 61 69 73 65 20 4e 6f 45 72 72 6f 72 0d | set......end......raise.NoError. |
| 15ce0 | 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 74 65 73 | ....end....end...end.....def.tes |
| 15d00 | 74 5f 66 6f 6c 6c 6f 77 5f 33 62 0d 0a 09 09 67 20 3d 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 | t_follow_3b....g.=.Grammar.new.T |
| 15d20 | 45 53 54 5f 47 52 41 4d 4d 41 52 5f 33 62 0d 0a 0d 0a 09 09 23 20 41 6c 74 68 6f 75 67 68 20 47 | EST_GRAMMAR_3b......#.Although.G |
| 15d40 | 72 61 6d 6d 61 72 20 33 62 20 69 73 20 4e 4f 54 20 4c 4c 28 31 29 2c 20 74 68 65 20 46 4f 4c 4c | rammar.3b.is.NOT.LL(1),.the.FOLL |
| 15d60 | 4f 57 2d 63 6f 6e 64 69 74 69 6f 6e 20 69 73 20 73 61 74 69 73 66 69 65 64 2e 0d 0a 09 09 66 20 | OW-condition.is.satisfied.....f. |
| 15d80 | 3d 20 6e 69 6c 0d 0a 09 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b | =.nil....assert_nothing_raised.{ |
| 15da0 | 20 66 20 3d 20 67 2e 66 6f 6c 6c 6f 77 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 | .f.=.g.follow.}....assert_equal( |
| 15dc0 | 66 69 66 6f 28 27 7a 24 27 29 2c 20 66 5b 27 45 27 5d 2c 20 27 45 27 29 0d 0a 09 09 61 73 73 65 | fifo('z$'),.f['E'],.'E')....asse |
| 15de0 | 72 74 5f 65 71 75 61 6c 28 66 69 66 6f 28 27 7a 24 27 29 2c 20 66 5b 27 44 27 5d 2c 20 27 44 27 | rt_equal(fifo('z$'),.f['D'],.'D' |
| 15e00 | 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 66 69 66 6f 28 27 61 69 27 29 2c 20 66 5b | )....assert_equal(fifo('ai'),.f[ |
| 15e20 | 27 50 27 5d 2c 20 27 50 27 29 0d 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 66 69 66 6f 28 | 'P'],.'P')....assert_equal(fifo( |
| 15e40 | 27 7a 24 70 75 27 29 2c 20 66 5b 27 46 27 5d 2c 20 27 46 27 29 0d 0a 09 09 61 73 73 65 72 74 5f | 'z$pu'),.f['F'],.'F')....assert_ |
| 15e60 | 65 71 75 61 6c 28 66 69 66 6f 28 27 7a 24 70 27 29 2c 20 66 5b 27 54 27 5d 2c 20 27 54 27 29 0d | equal(fifo('z$p'),.f['T'],.'T'). |
| 15e80 | 0a 09 09 61 73 73 65 72 74 5f 65 71 75 61 6c 28 66 69 66 6f 28 27 7a 24 70 27 29 2c 20 66 5b 27 | ...assert_equal(fifo('z$p'),.f[' |
| 15ea0 | 53 27 5d 2c 20 27 53 27 29 0d 0a 09 09 66 6f 72 20 6d 20 69 6e 20 67 2e 6d 65 74 61 5f 73 79 6d | S'],.'S')....for.m.in.g.meta_sym |
| 15ec0 | 62 6f 6c 73 0d 0a 09 09 09 66 69 72 73 74 5f 6d 20 3d 20 67 2e 66 69 72 73 74 5b 6d 5d 0d 0a 09 | bols.....first_m.=.g.first[m]... |
| 15ee0 | 09 09 6e 65 78 74 20 75 6e 6c 65 73 73 20 66 69 72 73 74 5f 6d 2e 69 6e 63 6c 75 64 65 3f 20 45 | ..next.unless.first_m.include?.E |
| 15f00 | 50 53 49 4c 4f 4e 0d 0a 09 09 09 61 73 73 65 72 74 5f 72 61 69 73 65 28 4e 6f 45 72 72 6f 72 29 | PSILON.....assert_raise(NoError) |
| 15f20 | 20 64 6f 0d 0a 09 09 09 09 69 66 20 66 69 72 73 74 5f 6d 2e 64 69 73 6a 6f 69 6e 74 3f 20 66 5b | .do......if.first_m.disjoint?.f[ |
| 15f40 | 6d 5d 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4e 6f 45 72 72 6f 72 20 20 23 20 74 68 69 73 20 69 | m].......raise.NoError..#.this.i |
| 15f60 | 73 20 66 75 6e 20 3a 44 0d 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 72 61 69 73 65 20 4c | s.fun.:D......else.......raise.L |
| 15f80 | 4c 45 72 72 6f 72 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a | LError......end.....end....end.. |
| 15fa0 | 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 6c 6c 31 3f 0d 0a 09 09 61 73 73 65 72 74 | .end.....def.test_ll1?....assert |
| 15fc0 | 5f 65 71 75 61 6c 20 66 61 6c 73 65 2c 20 47 72 61 6d 6d 61 72 2e 6e 65 77 28 54 45 53 54 5f 47 | _equal.false,.Grammar.new(TEST_G |
| 15fe0 | 52 41 4d 4d 41 52 5f 33 29 2e 6c 6c 31 3f 2c 20 27 47 72 61 6d 6d 61 72 20 33 27 0d 0a 09 09 61 | RAMMAR_3).ll1?,.'Grammar.3'....a |
| 16000 | 73 73 65 72 74 5f 65 71 75 61 6c 20 66 61 6c 73 65 2c 20 47 72 61 6d 6d 61 72 2e 6e 65 77 28 54 | ssert_equal.false,.Grammar.new(T |
| 16020 | 45 53 54 5f 47 52 41 4d 4d 41 52 5f 33 62 29 2e 6c 6c 31 3f 2c 20 27 47 72 61 6d 6d 61 72 20 33 | EST_GRAMMAR_3b).ll1?,.'Grammar.3 |
| 16040 | 62 27 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 74 65 73 74 5f 6e 65 77 0d 0a 09 09 61 73 73 | b'...end.....def.test_new....ass |
| 16060 | 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 47 72 61 6d 6d 61 72 2e 6e 65 77 | ert_nothing_raised.{.Grammar.new |
| 16080 | 20 27 27 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b | .''.}....assert_nothing_raised.{ |
| 160a0 | 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 31 20 7d 0d 0a 09 | .Grammar.new.TEST_GRAMMAR_1.}... |
| 160c0 | 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 47 72 61 6d 6d 61 72 | .assert_nothing_raised.{.Grammar |
| 160e0 | 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 32 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f | .new.TEST_GRAMMAR_2.}....assert_ |
| 16100 | 6e 6f 74 68 69 6e 67 5f 72 61 69 73 65 64 20 7b 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 | nothing_raised.{.Grammar.new.TES |
| 16120 | 54 5f 47 52 41 4d 4d 41 52 5f 33 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f 6e 6f 74 68 69 6e 67 5f | T_GRAMMAR_3.}....assert_nothing_ |
| 16140 | 72 61 69 73 65 64 20 7b 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 54 45 53 54 5f 47 52 41 4d 4d 41 | raised.{.Grammar.new.TEST_GRAMMA |
| 16160 | 52 5f 31 20 2b 20 54 45 53 54 5f 47 52 41 4d 4d 41 52 5f 32 20 2b 20 54 45 53 54 5f 47 52 41 4d | R_1.+.TEST_GRAMMAR_2.+.TEST_GRAM |
| 16180 | 4d 41 52 5f 33 20 7d 0d 0a 09 09 61 73 73 65 72 74 5f 72 61 69 73 65 28 41 72 67 75 6d 65 6e 74 | MAR_3.}....assert_raise(Argument |
| 161a0 | 45 72 72 6f 72 29 20 7b 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 27 53 20 2d 20 3f 27 20 7d 0d 0a | Error).{.Grammar.new.'S.-.?'.}.. |
| 161c0 | 09 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 76 69 6d 3a 66 6f 6c 64 6d 65 74 68 6f 64 3d 73 79 | .end..end....#.vim:foldmethod=sy |
| 161e0 | 6e 74 61 78 0d 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 72 75 62 79 0d 0a 0d 0a 72 | ntax....#!/usr/bin/env.ruby....r |
| 16200 | 65 71 75 69 72 65 20 27 66 6f 78 31 32 27 0d 0a 0d 0a 69 6e 63 6c 75 64 65 20 46 6f 78 0d 0a 0d | equire.'fox12'....include.Fox... |
| 16220 | 0a 63 6c 61 73 73 20 57 69 6e 64 6f 77 20 3c 20 46 58 4d 61 69 6e 57 69 6e 64 6f 77 0d 0a 09 64 | .class.Window.<.FXMainWindow...d |
| 16240 | 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 61 70 70 29 0d 0a 09 09 73 75 70 65 72 28 61 70 70 2c | ef.initialize(app)....super(app, |
| 16260 | 20 61 70 70 2e 61 70 70 4e 61 6d 65 20 2b 20 22 3a 20 46 69 72 73 74 20 53 65 74 20 43 61 6c 63 | .app.appName.+.":.First.Set.Calc |
| 16280 | 75 6c 61 74 69 6f 6e 22 2c 20 6e 69 6c 2c 20 6e 69 6c 2c 20 44 45 43 4f 52 5f 41 4c 4c 2c 20 30 | ulation",.nil,.nil,.DECOR_ALL,.0 |
| 162a0 | 2c 20 30 2c 20 38 30 30 2c 20 36 30 30 2c 20 30 2c 20 30 29 0d 0a 0d 0a 09 09 23 20 7b 7b 7b 20 | ,.0,.800,.600,.0,.0)......#.{{{. |
| 162c0 | 6d 65 6e 75 62 61 72 0d 0a 09 09 6d 65 6e 75 62 61 72 20 3d 20 46 58 4d 65 6e 75 42 61 72 2e 6e | menubar....menubar.=.FXMenuBar.n |
| 162e0 | 65 77 28 73 65 6c 66 2c 20 4c 41 59 4f 55 54 5f 53 49 44 45 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f | ew(self,.LAYOUT_SIDE_TOP|LAYOUT_ |
| 16300 | 46 49 4c 4c 5f 58 29 0d 0a 0d 0a 09 09 66 69 6c 65 6d 65 6e 75 20 3d 20 46 58 4d 65 6e 75 50 61 | FILL_X)......filemenu.=.FXMenuPa |
| 16320 | 6e 65 2e 6e 65 77 28 73 65 6c 66 29 0d 0a 0d 0a 09 09 46 58 4d 65 6e 75 43 6f 6d 6d 61 6e 64 2e | ne.new(self)......FXMenuCommand. |
| 16340 | 6e 65 77 28 66 69 6c 65 6d 65 6e 75 2c 20 22 26 53 74 61 72 74 5c 74 43 74 6c 2d 53 5c 74 53 74 | new(filemenu,."&Start\tCtl-S\tSt |
| 16360 | 61 72 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 22 2c 20 6e 69 6c 2c 20 67 65 74 41 | art.the.application.",.nil,.getA |
| 16380 | 70 70 28 29 29 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 43 4f 4d 4d 41 4e 44 2c 20 6d 65 74 68 6f | pp()).connect(SEL_COMMAND,.metho |
| 163a0 | 64 28 3a 73 74 61 72 74 29 29 0d 0a 09 09 46 58 4d 65 6e 75 43 6f 6d 6d 61 6e 64 2e 6e 65 77 28 | d(:start))....FXMenuCommand.new( |
| 163c0 | 66 69 6c 65 6d 65 6e 75 2c 20 22 26 51 75 69 74 5c 74 41 6c 74 2d 46 34 5c 74 51 75 69 74 20 74 | filemenu,."&Quit\tAlt-F4\tQuit.t |
| 163e0 | 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 22 2c 20 6e 69 6c 2c 20 67 65 74 41 70 70 28 29 2c | he.application.",.nil,.getApp(), |
| 16400 | 20 46 58 41 70 70 3a 3a 49 44 5f 51 55 49 54 29 0d 0a 09 09 46 58 4d 65 6e 75 54 69 74 6c 65 2e | .FXApp::ID_QUIT)....FXMenuTitle. |
| 16420 | 6e 65 77 28 6d 65 6e 75 62 61 72 2c 20 22 26 46 69 6c 65 22 2c 20 6e 69 6c 2c 20 66 69 6c 65 6d | new(menubar,."&File",.nil,.filem |
| 16440 | 65 6e 75 29 0d 0a 09 09 23 20 7d 7d 7d 20 6d 65 6e 75 62 61 72 0d 0a 0d 0a 09 09 23 20 7b 7b 7b | enu)....#.}}}.menubar......#.{{{ |
| 16460 | 20 73 74 61 74 75 73 62 61 72 0d 0a 09 09 40 73 74 61 74 75 73 62 61 72 20 3d 20 46 58 53 74 61 | .statusbar....@statusbar.=.FXSta |
| 16480 | 74 75 73 42 61 72 2e 6e 65 77 28 73 65 6c 66 2c 20 4c 41 59 4f 55 54 5f 53 49 44 45 5f 42 4f 54 | tusBar.new(self,.LAYOUT_SIDE_BOT |
| 164a0 | 54 4f 4d 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 53 54 41 54 55 53 42 41 52 5f 57 49 54 48 | TOM|LAYOUT_FILL_X|STATUSBAR_WITH |
| 164c0 | 5f 44 52 41 47 43 4f 52 4e 45 52 29 0d 0a 09 09 23 20 7d 7d 7d 20 73 74 61 74 75 73 62 61 72 0d | _DRAGCORNER)....#.}}}.statusbar. |
| 164e0 | 0a 0d 0a 09 09 23 20 7b 7b 7b 20 77 69 6e 64 6f 77 20 63 6f 6e 74 65 6e 74 0d 0a 09 09 68 6f 72 | .....#.{{{.window.content....hor |
| 16500 | 69 7a 6f 6e 74 61 6c 73 70 6c 69 74 74 20 3d 20 46 58 53 70 6c 69 74 74 65 72 2e 6e 65 77 28 73 | izontalsplitt.=.FXSplitter.new(s |
| 16520 | 65 6c 66 2c 20 53 50 4c 49 54 54 45 52 5f 56 45 52 54 49 43 41 4c 7c 4c 41 59 4f 55 54 5f 53 49 | elf,.SPLITTER_VERTICAL|LAYOUT_SI |
| 16540 | 44 45 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 29 0d 0a 0d 0a 0d 0a 09 09 40 70 72 6f 64 | DE_TOP|LAYOUT_FILL)........@prod |
| 16560 | 75 63 74 69 6f 6e 73 20 3d 20 46 58 4c 69 73 74 2e 6e 65 77 28 68 6f 72 69 7a 6f 6e 74 61 6c 73 | uctions.=.FXList.new(horizontals |
| 16580 | 70 6c 69 74 74 2c 20 6e 69 6c 2c 20 30 2c 20 4c 41 59 4f 55 54 5f 53 49 44 45 5f 54 4f 50 7c 4c | plitt,.nil,.0,.LAYOUT_SIDE_TOP|L |
| 165a0 | 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 46 49 58 5f 48 45 49 47 48 54 7c 4c | AYOUT_FILL_X|LAYOUT_FIX_HEIGHT|L |
| 165c0 | 49 53 54 5f 53 49 4e 47 4c 45 53 45 4c 45 43 54 29 0d 0a 09 09 40 70 72 6f 64 75 63 74 69 6f 6e | IST_SINGLESELECT)....@production |
| 165e0 | 73 2e 68 65 69 67 68 74 20 3d 20 31 30 30 0d 0a 0d 0a 09 09 40 72 65 73 75 6c 74 20 3d 20 46 58 | s.height.=.100......@result.=.FX |
| 16600 | 54 61 62 6c 65 2e 6e 65 77 28 68 6f 72 69 7a 6f 6e 74 61 6c 73 70 6c 69 74 74 2c 20 6e 69 6c 2c | Table.new(horizontalsplitt,.nil, |
| 16620 | 20 30 2c 20 4c 41 59 4f 55 54 5f 46 49 4c 4c 29 0d 0a 09 09 40 72 65 73 75 6c 74 2e 68 65 69 67 | .0,.LAYOUT_FILL)....@result.heig |
| 16640 | 68 74 20 3d 20 32 30 30 0d 0a 09 09 40 72 65 73 75 6c 74 2e 73 65 74 54 61 62 6c 65 53 69 7a 65 | ht.=.200....@result.setTableSize |
| 16660 | 28 32 2c 20 32 2c 20 66 61 6c 73 65 29 0d 0a 09 09 40 72 65 73 75 6c 74 2e 72 6f 77 48 65 61 64 | (2,.2,.false)....@result.rowHead |
| 16680 | 65 72 57 69 64 74 68 20 3d 20 30 0d 0a 0d 0a 09 09 68 65 61 64 65 72 20 3d 20 40 72 65 73 75 6c | erWidth.=.0......header.=.@resul |
| 166a0 | 74 2e 63 6f 6c 75 6d 6e 48 65 61 64 65 72 0d 0a 09 09 68 65 61 64 65 72 2e 73 65 74 49 74 65 6d | t.columnHeader....header.setItem |
| 166c0 | 54 65 78 74 20 30 2c 20 27 58 27 0d 0a 09 09 68 65 61 64 65 72 2e 73 65 74 49 74 65 6d 54 65 78 | Text.0,.'X'....header.setItemTex |
| 166e0 | 74 20 31 2c 20 27 46 49 52 53 54 28 58 29 27 0d 0a 09 09 66 6f 72 20 69 74 65 6d 20 69 6e 20 68 | t.1,.'FIRST(X)'....for.item.in.h |
| 16700 | 65 61 64 65 72 0d 0a 09 09 09 69 74 65 6d 2e 6a 75 73 74 69 66 69 63 61 74 69 6f 6e 20 3d 20 46 | eader.....item.justification.=.F |
| 16720 | 58 48 65 61 64 65 72 49 74 65 6d 3a 3a 43 45 4e 54 45 52 5f 58 0d 0a 09 09 65 6e 64 0d 0a 0d 0a | XHeaderItem::CENTER_X....end.... |
| 16740 | 09 09 40 64 65 62 75 67 20 3d 20 46 58 54 65 78 74 2e 6e 65 77 28 68 6f 72 69 7a 6f 6e 74 61 6c | ..@debug.=.FXText.new(horizontal |
| 16760 | 73 70 6c 69 74 74 2c 20 6e 69 6c 2c 20 30 2c 20 4c 41 59 4f 55 54 5f 53 49 44 45 5f 42 4f 54 54 | splitt,.nil,.0,.LAYOUT_SIDE_BOTT |
| 16780 | 4f 4d 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 46 49 58 5f 48 45 49 47 | OM|LAYOUT_FILL_X|LAYOUT_FIX_HEIG |
| 167a0 | 48 54 29 0d 0a 09 09 40 64 65 62 75 67 2e 68 65 69 67 68 74 20 3d 20 32 30 30 0d 0a 0d 0a 09 09 | HT)....@debug.height.=.200...... |
| 167c0 | 23 20 7d 7d 7d 20 77 69 6e 64 6f 77 20 63 6f 6e 74 65 6e 74 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 | #.}}}.window.content...end.....d |
| 167e0 | 65 66 20 6c 6f 61 64 5f 67 72 61 6d 6d 61 72 20 67 72 61 6d 6d 61 72 0d 0a 09 09 40 74 72 61 63 | ef.load_grammar.grammar....@trac |
| 16800 | 65 72 20 3d 20 46 69 72 73 74 54 72 61 63 65 72 2e 6e 65 77 28 73 65 6c 66 29 0d 0a 09 09 40 67 | er.=.FirstTracer.new(self)....@g |
| 16820 | 72 61 6d 6d 61 72 20 3d 20 47 72 61 6d 6d 61 72 2e 6e 65 77 20 67 72 61 6d 6d 61 72 2c 20 40 74 | rammar.=.Grammar.new.grammar,.@t |
| 16840 | 72 61 63 65 72 0d 0a 09 09 40 72 75 6c 65 73 5f 69 6e 64 65 78 65 73 20 3d 20 48 61 73 68 2e 6e | racer....@rules_indexes.=.Hash.n |
| 16860 | 65 77 0d 0a 09 09 40 67 72 61 6d 6d 61 72 2e 72 75 6c 65 73 2e 65 61 63 68 5f 77 69 74 68 5f 69 | ew....@grammar.rules.each_with_i |
| 16880 | 6e 64 65 78 20 64 6f 20 7c 72 75 6c 65 2c 20 69 7c 0d 0a 09 09 09 40 70 72 6f 64 75 63 74 69 6f | ndex.do.|rule,.i|.....@productio |
| 168a0 | 6e 73 2e 61 70 70 65 6e 64 49 74 65 6d 20 72 75 6c 65 2e 69 6e 73 70 65 63 74 0d 0a 09 09 09 40 | ns.appendItem.rule.inspect.....@ |
| 168c0 | 72 75 6c 65 73 5f 69 6e 64 65 78 65 73 5b 72 75 6c 65 5d 20 3d 20 69 0d 0a 09 09 65 6e 64 0d 0a | rules_indexes[rule].=.i....end.. |
| 168e0 | 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 63 72 65 61 74 65 0d 0a 09 09 73 75 70 65 72 0d 0a 09 09 | .end.....def.create....super.... |
| 16900 | 73 68 6f 77 28 50 4c 41 43 45 4d 45 4e 54 5f 53 43 52 45 45 4e 29 0d 0a 09 65 6e 64 0d 0a 0d 0a | show(PLACEMENT_SCREEN)...end.... |
| 16920 | 09 64 65 66 20 72 75 6c 65 20 72 75 6c 65 0d 0a 09 09 40 70 72 6f 64 75 63 74 69 6f 6e 73 2e 73 | .def.rule.rule....@productions.s |
| 16940 | 65 6c 65 63 74 49 74 65 6d 20 40 72 75 6c 65 73 5f 69 6e 64 65 78 65 73 5b 72 75 6c 65 5d 0d 0a | electItem.@rules_indexes[rule].. |
| 16960 | 09 09 73 6c 65 65 70 20 30 2e 31 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 69 74 65 72 61 74 | ..sleep.0.1...end.....def.iterat |
| 16980 | 65 20 69 0d 0a 09 09 73 65 74 54 69 74 6c 65 20 69 2e 74 6f 5f 73 0d 0a 09 09 73 6c 65 65 70 20 | e.i....setTitle.i.to_s....sleep. |
| 169a0 | 30 2e 31 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 6d 69 73 73 69 6e 67 20 77 68 61 74 0d 0a | 0.1...end.....def.missing.what.. |
| 169c0 | 09 09 40 64 65 62 75 67 2e 61 70 70 65 6e 64 54 65 78 74 20 77 68 61 74 20 2b 20 22 5c 6e 22 0d | ..@debug.appendText.what.+."\n". |
| 169e0 | 0a 09 09 73 6c 65 65 70 20 30 2e 31 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 73 74 61 72 74 | ...sleep.0.1...end.....def.start |
| 16a00 | 20 73 65 6e 64 65 72 2c 20 73 65 6c 2c 20 70 6f 69 6e 74 65 72 0d 0a 09 09 54 68 72 65 61 64 2e | .sender,.sel,.pointer....Thread. |
| 16a20 | 6e 65 77 20 64 6f 0d 0a 09 09 09 62 65 67 69 6e 0d 0a 09 09 09 09 40 67 72 61 6d 6d 61 72 2e 66 | new.do.....begin......@grammar.f |
| 16a40 | 69 72 73 74 0d 0a 09 09 09 72 65 73 63 75 65 20 3d 3e 20 62 6f 6f 6d 0d 0a 09 09 09 09 40 64 65 | irst.....rescue.=>.boom......@de |
| 16a60 | 62 75 67 2e 61 70 70 65 6e 64 54 65 78 74 20 5b 62 6f 6f 6d 2e 74 6f 5f 73 2c 20 2a 62 6f 6f 6d | bug.appendText.[boom.to_s,.*boom |
| 16a80 | 2e 62 61 63 6b 74 72 61 63 65 5d 2e 6a 6f 69 6e 28 22 5c 6e 22 29 0d 0a 09 09 09 65 6e 64 0d 0a | .backtrace].join("\n").....end.. |
| 16aa0 | 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 65 6e 64 0d 0a 0d 0a 24 3a 20 3c 3c 20 27 67 72 61 | ..end...end....end....$:.<<.'gra |
| 16ac0 | 6d 6d 61 72 27 0d 0a 72 65 71 75 69 72 65 20 27 67 72 61 6d 6d 61 72 27 0d 0a 0d 0a 72 65 71 75 | mmar'..require.'grammar'....requ |
| 16ae0 | 69 72 65 20 27 66 69 72 73 74 5f 74 72 61 63 65 72 27 0d 0a 0d 0a 61 70 70 20 3d 20 46 58 41 70 | ire.'first_tracer'....app.=.FXAp |
| 16b00 | 70 2e 6e 65 77 28 22 53 68 69 6e 6f 62 75 22 2c 20 22 63 59 63 6e 75 73 22 29 0d 0a 0d 0a 23 20 | p.new("Shinobu",."cYcnus")....#. |
| 16b20 | 66 65 6e 73 74 65 72 20 65 72 7a 65 75 67 65 6e 0d 0a 77 69 6e 64 6f 77 20 3d 20 57 69 6e 64 6f | fenster.erzeugen..window.=.Windo |
| 16b40 | 77 2e 6e 65 77 20 61 70 70 0d 0a 0d 0a 75 6e 6c 65 73 73 20 41 52 47 56 2e 65 6d 70 74 79 3f 0d | w.new.app....unless.ARGV.empty?. |
| 16b60 | 0a 09 67 72 61 6d 6d 61 72 20 3d 20 46 69 6c 65 2e 72 65 61 64 28 41 52 47 56 2e 66 69 72 73 74 | ..grammar.=.File.read(ARGV.first |
| 16b80 | 29 0d 0a 65 6c 73 65 0d 0a 09 67 72 61 6d 6d 61 72 20 3d 20 3c 3c 2d 45 4f 47 31 0d 0a 5a 20 2d | )..else...grammar.=.<<-EOG1..Z.- |
| 16ba0 | 2d 3e 20 53 0d 0a 53 20 2d 2d 3e 20 53 62 0d 0a 53 20 2d 2d 3e 20 62 41 61 0d 0a 41 20 2d 2d 3e | ->.S..S.-->.Sb..S.-->.bAa..A.--> |
| 16bc0 | 20 61 53 63 0d 0a 41 20 2d 2d 3e 20 61 0d 0a 41 20 2d 2d 3e 20 61 53 62 0d 0a 09 45 4f 47 31 0d | .aSc..A.-->.a..A.-->.aSb...EOG1. |
| 16be0 | 0a 65 6e 64 0d 0a 0d 0a 77 69 6e 64 6f 77 2e 6c 6f 61 64 5f 67 72 61 6d 6d 61 72 20 67 72 61 6d | .end....window.load_grammar.gram |
| 16c00 | 6d 61 72 0d 0a 0d 0a 61 70 70 2e 63 72 65 61 74 65 0d 0a 61 70 70 2e 72 75 6e 0d 0a 0d 0a 72 65 | mar....app.create..app.run....re |
| 16c20 | 71 75 69 72 65 20 27 65 72 62 27 0d 0a 72 65 71 75 69 72 65 20 27 66 74 6f 6f 6c 73 27 0d 0a 72 | quire.'erb'..require.'ftools'..r |
| 16c40 | 65 71 75 69 72 65 20 27 79 61 6d 6c 27 0d 0a 72 65 71 75 69 72 65 20 27 72 65 64 63 6c 6f 74 68 | equire.'yaml'..require.'redcloth |
| 16c60 | 27 0d 0a 0d 0a 6d 6f 64 75 6c 65 20 57 68 79 54 68 65 4c 75 63 6b 79 53 74 69 66 66 0d 0a 09 63 | '....module.WhyTheLuckyStiff...c |
| 16c80 | 6c 61 73 73 20 42 6f 6f 6b 0d 0a 09 09 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 61 75 74 68 | lass.Book....attr_accessor.:auth |
| 16ca0 | 6f 72 2c 20 3a 74 69 74 6c 65 2c 20 3a 74 65 72 6d 73 2c 20 3a 69 6d 61 67 65 2c 20 3a 74 65 61 | or,.:title,.:terms,.:image,.:tea |
| 16cc0 | 73 65 72 2c 0d 0a 09 09 09 3a 63 68 61 70 74 65 72 73 2c 20 3a 65 78 70 61 6e 73 69 6f 6e 5f 70 | ser,.....:chapters,.:expansion_p |
| 16ce0 | 61 6b 73 2c 20 3a 65 6e 63 6f 64 69 6e 67 2c 20 3a 63 72 65 64 69 74 73 0d 0a 09 09 64 65 66 20 | aks,.:encoding,.:credits....def. |
| 16d00 | 5b 5d 20 78 0d 0a 09 09 09 40 6c 61 6e 67 2e 66 65 74 63 68 28 78 29 20 64 6f 0d 0a 09 09 09 09 | [].x.....@lang.fetch(x).do...... |
| 16d20 | 77 61 72 6e 20 77 61 72 6e 69 6e 67 20 3d 20 22 5b 6e 6f 74 20 74 72 61 6e 73 6c 61 74 65 64 3a | warn.warning.=."[not.translated: |
| 16d40 | 20 27 23 7b 78 7d 27 21 5d 22 0d 0a 09 09 09 09 77 61 72 6e 69 6e 67 0d 0a 09 09 09 65 6e 64 0d | .'#{x}'!]"......warning.....end. |
| 16d60 | 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 42 6f 6f 6b 3a 3a 6c 6f 61 64 28 | ...end...end.....def.Book::load( |
| 16d80 | 20 66 69 6c 65 5f 6e 61 6d 65 20 29 0d 0a 09 09 59 41 4d 4c 3a 3a 6c 6f 61 64 28 20 46 69 6c 65 | .file_name.)....YAML::load(.File |
| 16da0 | 2e 6f 70 65 6e 28 20 66 69 6c 65 5f 6e 61 6d 65 20 29 20 29 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 63 | .open(.file_name.).)...end.....c |
| 16dc0 | 6c 61 73 73 20 53 65 63 74 69 6f 6e 0d 0a 09 09 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 69 | lass.Section....attr_accessor.:i |
| 16de0 | 6e 64 65 78 2c 20 3a 68 65 61 64 65 72 2c 20 3a 63 6f 6e 74 65 6e 74 0d 0a 09 09 64 65 66 20 69 | ndex,.:header,.:content....def.i |
| 16e00 | 6e 69 74 69 61 6c 69 7a 65 28 20 69 2c 20 68 2c 20 63 20 29 0d 0a 09 09 09 40 69 6e 64 65 78 2c | nitialize(.i,.h,.c.).....@index, |
| 16e20 | 20 40 68 65 61 64 65 72 2c 20 40 63 6f 6e 74 65 6e 74 20 3d 20 69 2c 20 68 2c 20 52 65 64 43 6c | .@header,.@content.=.i,.h,.RedCl |
| 16e40 | 6f 74 68 3a 3a 6e 65 77 28 20 63 2e 74 6f 5f 73 20 29 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d | oth::new(.c.to_s.)....end...end. |
| 16e60 | 0a 0d 0a 09 63 6c 61 73 73 20 53 69 64 65 62 61 72 0d 0a 09 09 61 74 74 72 5f 61 63 63 65 73 73 | ....class.Sidebar....attr_access |
| 16e80 | 6f 72 20 3a 74 69 74 6c 65 2c 20 3a 63 6f 6e 74 65 6e 74 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 59 41 | or.:title,.:content...end.....YA |
| 16ea0 | 4d 4c 3a 3a 61 64 64 5f 64 6f 6d 61 69 6e 5f 74 79 70 65 28 20 27 77 68 79 74 68 65 6c 75 63 6b | ML::add_domain_type(.'whytheluck |
| 16ec0 | 79 73 74 69 66 66 2e 6e 65 74 2c 32 30 30 33 27 2c 20 27 73 69 64 65 62 61 72 27 20 29 20 64 6f | ystiff.net,2003',.'sidebar'.).do |
| 16ee0 | 20 7c 74 61 67 75 72 69 2c 20 76 61 6c 7c 0d 0a 09 09 59 41 4d 4c 3a 3a 6f 62 6a 65 63 74 5f 6d | .|taguri,.val|....YAML::object_m |
| 16f00 | 61 6b 65 72 28 20 53 69 64 65 62 61 72 2c 20 27 74 69 74 6c 65 27 20 3d 3e 20 76 61 6c 2e 6b 65 | aker(.Sidebar,.'title'.=>.val.ke |
| 16f20 | 79 73 2e 66 69 72 73 74 2c 20 27 63 6f 6e 74 65 6e 74 27 20 3d 3e 20 52 65 64 43 6c 6f 74 68 3a | ys.first,.'content'.=>.RedCloth: |
| 16f40 | 3a 6e 65 77 28 20 76 61 6c 2e 76 61 6c 75 65 73 2e 66 69 72 73 74 20 29 20 29 0d 0a 09 65 6e 64 | :new(.val.values.first.).)...end |
| 16f60 | 0d 0a 09 63 6c 61 73 73 20 43 68 61 70 74 65 72 0d 0a 09 09 61 74 74 72 5f 61 63 63 65 73 73 6f | ...class.Chapter....attr_accesso |
| 16f80 | 72 20 3a 69 6e 64 65 78 2c 20 3a 74 69 74 6c 65 2c 20 3a 73 65 63 74 69 6f 6e 73 0d 0a 09 09 64 | r.:index,.:title,.:sections....d |
| 16fa0 | 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 20 69 2c 20 74 2c 20 73 65 63 74 73 20 29 0d 0a 09 09 | ef.initialize(.i,.t,.sects.).... |
| 16fc0 | 09 40 69 6e 64 65 78 20 3d 20 69 0d 0a 09 09 09 40 74 69 74 6c 65 20 3d 20 74 0d 0a 09 09 09 69 | .@index.=.i.....@title.=.t.....i |
| 16fe0 | 20 3d 20 30 0d 0a 09 09 09 40 73 65 63 74 69 6f 6e 73 20 3d 20 73 65 63 74 73 2e 63 6f 6c 6c 65 | .=.0.....@sections.=.sects.colle |
| 17000 | 63 74 20 64 6f 20 7c 73 7c 0d 0a 09 09 09 09 69 66 20 73 2e 72 65 73 70 6f 6e 64 5f 74 6f 3f 28 | ct.do.|s|......if.s.respond_to?( |
| 17020 | 20 3a 6b 65 79 73 20 29 0d 0a 09 09 09 09 09 69 20 2b 3d 20 31 0d 0a 09 09 09 09 09 53 65 63 74 | .:keys.).......i.+=.1.......Sect |
| 17040 | 69 6f 6e 2e 6e 65 77 28 20 69 2c 20 73 2e 6b 65 79 73 2e 66 69 72 73 74 2c 20 73 2e 76 61 6c 75 | ion.new(.i,.s.keys.first,.s.valu |
| 17060 | 65 73 2e 66 69 72 73 74 20 29 0d 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 73 0d 0a 09 09 | es.first.)......else.......s.... |
| 17080 | 09 09 65 6e 64 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 59 | ..end.....end....end...end.....Y |
| 170a0 | 41 4d 4c 3a 3a 61 64 64 5f 64 6f 6d 61 69 6e 5f 74 79 70 65 28 20 27 77 68 79 74 68 65 6c 75 63 | AML::add_domain_type(.'whytheluc |
| 170c0 | 6b 79 73 74 69 66 66 2e 6e 65 74 2c 32 30 30 33 27 2c 20 27 62 6f 6f 6b 27 20 29 20 64 6f 20 7c | kystiff.net,2003',.'book'.).do.| |
| 170e0 | 74 61 67 75 72 69 2c 20 76 61 6c 7c 0d 0a 09 09 5b 27 63 68 61 70 74 65 72 73 27 2c 20 27 65 78 | taguri,.val|....['chapters',.'ex |
| 17100 | 70 61 6e 73 69 6f 6e 5f 70 61 6b 73 27 5d 2e 65 61 63 68 20 64 6f 20 7c 63 68 61 70 74 79 70 65 | pansion_paks'].each.do.|chaptype |
| 17120 | 7c 0d 0a 09 09 09 69 20 3d 20 30 0d 0a 09 09 09 76 61 6c 5b 63 68 61 70 74 79 70 65 5d 2e 63 6f | |.....i.=.0.....val[chaptype].co |
| 17140 | 6c 6c 65 63 74 21 20 64 6f 20 7c 63 7c 0d 0a 09 09 09 09 69 20 2b 3d 20 31 0d 0a 09 09 09 09 43 | llect!.do.|c|......i.+=.1......C |
| 17160 | 68 61 70 74 65 72 3a 3a 6e 65 77 28 20 69 2c 20 63 2e 6b 65 79 73 2e 66 69 72 73 74 2c 20 63 2e | hapter::new(.i,.c.keys.first,.c. |
| 17180 | 76 61 6c 75 65 73 2e 66 69 72 73 74 20 29 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 | values.first.).....end....end... |
| 171a0 | 09 76 61 6c 5b 27 74 65 61 73 65 72 27 5d 2e 63 6f 6c 6c 65 63 74 21 20 64 6f 20 7c 74 7c 0d 0a | .val['teaser'].collect!.do.|t|.. |
| 171c0 | 09 09 09 53 65 63 74 69 6f 6e 3a 3a 6e 65 77 28 20 31 2c 20 74 2e 6b 65 79 73 2e 66 69 72 73 74 | ...Section::new(.1,.t.keys.first |
| 171e0 | 2c 20 74 2e 76 61 6c 75 65 73 2e 66 69 72 73 74 20 29 0d 0a 09 09 65 6e 64 0d 0a 09 09 76 61 6c | ,.t.values.first.)....end....val |
| 17200 | 5b 27 74 65 72 6d 73 27 5d 20 3d 20 52 65 64 43 6c 6f 74 68 3a 3a 6e 65 77 28 20 76 61 6c 5b 27 | ['terms'].=.RedCloth::new(.val[' |
| 17220 | 74 65 72 6d 73 27 5d 20 29 0d 0a 09 09 59 41 4d 4c 3a 3a 6f 62 6a 65 63 74 5f 6d 61 6b 65 72 28 | terms'].)....YAML::object_maker( |
| 17240 | 20 42 6f 6f 6b 2c 20 76 61 6c 20 29 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 63 6c 61 73 73 20 49 6d 61 | .Book,.val.)...end.....class.Ima |
| 17260 | 67 65 0d 0a 09 09 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 66 69 6c 65 5f 6e 61 6d 65 0d 0a | ge....attr_accessor.:file_name.. |
| 17280 | 09 65 6e 64 0d 0a 0d 0a 09 59 41 4d 4c 3a 3a 61 64 64 5f 64 6f 6d 61 69 6e 5f 74 79 70 65 28 20 | .end.....YAML::add_domain_type(. |
| 172a0 | 27 77 68 79 74 68 65 6c 75 63 6b 79 73 74 69 66 66 2e 6e 65 74 2c 32 30 30 33 27 2c 20 27 69 6d | 'whytheluckystiff.net,2003',.'im |
| 172c0 | 67 27 20 29 20 64 6f 20 7c 74 61 67 75 72 69 2c 20 76 61 6c 7c 0d 0a 09 09 59 41 4d 4c 3a 3a 6f | g'.).do.|taguri,.val|....YAML::o |
| 172e0 | 62 6a 65 63 74 5f 6d 61 6b 65 72 28 20 49 6d 61 67 65 2c 20 27 66 69 6c 65 5f 6e 61 6d 65 27 20 | bject_maker(.Image,.'file_name'. |
| 17300 | 3d 3e 20 22 69 2f 22 20 2b 20 76 61 6c 20 29 0d 0a 09 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 0d | =>."i/".+.val.)...end..end....#. |
| 17320 | 0a 23 20 43 6f 6e 76 65 72 74 20 74 68 65 20 62 6f 6f 6b 20 74 6f 20 48 54 4d 4c 0d 0a 23 0d 0a | .#.Convert.the.book.to.HTML..#.. |
| 17340 | 69 66 20 5f 5f 46 49 4c 45 5f 5f 20 3d 3d 20 24 30 0d 0a 09 75 6e 6c 65 73 73 20 41 52 47 56 5b | if.__FILE__.==.$0...unless.ARGV[ |
| 17360 | 30 5d 0d 0a 09 09 70 75 74 73 20 22 55 73 61 67 65 3a 20 23 7b 24 30 7d 20 5b 2f 70 61 74 68 2f | 0]....puts."Usage:.#{$0}.[/path/ |
| 17380 | 74 6f 2f 73 61 76 65 2f 68 74 6d 6c 5d 22 0d 0a 09 09 65 78 69 74 0d 0a 09 65 6e 64 0d 0a 0d 0a | to/save/html]"....exit...end.... |
| 173a0 | 09 73 69 74 65 5f 70 61 74 68 20 3d 20 41 52 47 56 5b 30 5d 0d 0a 09 62 6f 6f 6b 20 3d 20 57 68 | .site_path.=.ARGV[0]...book.=.Wh |
| 173c0 | 79 54 68 65 4c 75 63 6b 79 53 74 69 66 66 3a 3a 42 6f 6f 6b 3a 3a 6c 6f 61 64 28 20 27 70 6f 69 | yTheLuckyStiff::Book::load(.'poi |
| 173e0 | 67 6e 61 6e 74 2e 79 6d 6c 27 20 29 0d 0a 09 63 68 61 70 74 65 72 20 3d 20 6e 69 6c 0d 0a 0d 0a | gnant.yml'.)...chapter.=.nil.... |
| 17400 | 09 23 20 57 72 69 74 65 20 69 6e 64 65 78 20 70 61 67 65 0d 0a 09 69 6e 64 65 78 5f 74 70 6c 20 | .#.Write.index.page...index_tpl. |
| 17420 | 3d 20 45 52 42 3a 3a 6e 65 77 28 20 46 69 6c 65 2e 6f 70 65 6e 28 20 27 69 6e 64 65 78 2e 65 72 | =.ERB::new(.File.open(.'index.er |
| 17440 | 62 27 20 29 2e 72 65 61 64 20 29 0d 0a 09 46 69 6c 65 2e 6f 70 65 6e 28 20 46 69 6c 65 2e 6a 6f | b'.).read.)...File.open(.File.jo |
| 17460 | 69 6e 28 20 73 69 74 65 5f 70 61 74 68 2c 20 27 69 6e 64 65 78 2e 68 74 6d 6c 27 20 29 2c 20 27 | in(.site_path,.'index.html'.),.' |
| 17480 | 77 27 20 29 20 64 6f 20 7c 6f 75 74 7c 0d 0a 09 09 6f 75 74 20 3c 3c 20 69 6e 64 65 78 5f 74 70 | w'.).do.|out|....out.<<.index_tp |
| 174a0 | 6c 2e 72 65 73 75 6c 74 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 62 6f 6f 6b 2e 63 68 61 70 74 65 72 73 | l.result...end.....book.chapters |
| 174c0 | 20 3d 20 62 6f 6f 6b 2e 63 68 61 70 74 65 72 73 5b 30 2c 33 5d 20 69 66 20 41 52 47 56 2e 69 6e | .=.book.chapters[0,3].if.ARGV.in |
| 174e0 | 63 6c 75 64 65 3f 20 27 2d 66 61 73 74 27 0d 0a 0d 0a 09 23 20 57 72 69 74 65 20 63 68 61 70 74 | clude?.'-fast'.....#.Write.chapt |
| 17500 | 65 72 20 70 61 67 65 73 0d 0a 09 63 68 61 70 74 65 72 5f 74 70 6c 20 3d 20 45 52 42 3a 3a 6e 65 | er.pages...chapter_tpl.=.ERB::ne |
| 17520 | 77 28 20 46 69 6c 65 2e 6f 70 65 6e 28 20 27 63 68 61 70 74 65 72 2e 65 72 62 27 20 29 2e 72 65 | w(.File.open(.'chapter.erb'.).re |
| 17540 | 61 64 20 29 0d 0a 09 62 6f 6f 6b 2e 63 68 61 70 74 65 72 73 2e 65 61 63 68 20 64 6f 20 7c 63 68 | ad.)...book.chapters.each.do.|ch |
| 17560 | 61 70 74 65 72 7c 0d 0a 09 09 46 69 6c 65 2e 6f 70 65 6e 28 20 46 69 6c 65 2e 6a 6f 69 6e 28 20 | apter|....File.open(.File.join(. |
| 17580 | 73 69 74 65 5f 70 61 74 68 2c 20 22 63 68 61 70 74 65 72 2d 23 7b 20 63 68 61 70 74 65 72 2e 69 | site_path,."chapter-#{.chapter.i |
| 175a0 | 6e 64 65 78 20 7d 2e 68 74 6d 6c 22 20 29 2c 20 27 77 27 20 29 20 64 6f 20 7c 6f 75 74 7c 0d 0a | ndex.}.html".),.'w'.).do.|out|.. |
| 175c0 | 09 09 09 6f 75 74 20 3c 3c 20 63 68 61 70 74 65 72 5f 74 70 6c 2e 72 65 73 75 6c 74 0d 0a 09 09 | ...out.<<.chapter_tpl.result.... |
| 175e0 | 65 6e 64 0d 0a 09 65 6e 64 0d 0a 09 65 78 69 74 20 69 66 20 41 52 47 56 2e 69 6e 63 6c 75 64 65 | end...end...exit.if.ARGV.include |
| 17600 | 3f 20 27 2d 66 61 73 74 27 0d 0a 0d 0a 09 23 20 57 72 69 74 65 20 65 78 70 61 6e 73 69 6f 6e 20 | ?.'-fast'.....#.Write.expansion. |
| 17620 | 70 61 6b 20 70 61 67 65 73 0d 0a 09 65 78 70 61 6b 5f 74 70 6c 20 3d 20 45 52 42 3a 3a 6e 65 77 | pak.pages...expak_tpl.=.ERB::new |
| 17640 | 28 20 46 69 6c 65 2e 6f 70 65 6e 28 20 27 65 78 70 61 6e 73 69 6f 6e 2d 70 61 6b 2e 65 72 62 27 | (.File.open(.'expansion-pak.erb' |
| 17660 | 20 29 2e 72 65 61 64 20 29 0d 0a 09 62 6f 6f 6b 2e 65 78 70 61 6e 73 69 6f 6e 5f 70 61 6b 73 2e | .).read.)...book.expansion_paks. |
| 17680 | 65 61 63 68 20 64 6f 20 7c 70 61 6b 7c 0d 0a 09 09 46 69 6c 65 2e 6f 70 65 6e 28 20 46 69 6c 65 | each.do.|pak|....File.open(.File |
| 176a0 | 2e 6a 6f 69 6e 28 20 73 69 74 65 5f 70 61 74 68 2c 20 22 65 78 70 61 6e 73 69 6f 6e 2d 70 61 6b | .join(.site_path,."expansion-pak |
| 176c0 | 2d 23 7b 20 70 61 6b 2e 69 6e 64 65 78 20 7d 2e 68 74 6d 6c 22 20 29 2c 20 27 77 27 20 29 20 64 | -#{.pak.index.}.html".),.'w'.).d |
| 176e0 | 6f 20 7c 6f 75 74 7c 0d 0a 09 09 09 6f 75 74 20 3c 3c 20 65 78 70 61 6b 5f 74 70 6c 2e 72 65 73 | o.|out|.....out.<<.expak_tpl.res |
| 17700 | 75 6c 74 28 20 62 69 6e 64 69 6e 67 20 29 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 | ult(.binding.)....end...end..... |
| 17720 | 23 20 57 72 69 74 65 20 70 72 69 6e 74 61 62 6c 65 20 76 65 72 73 69 6f 6e 0d 0a 09 70 72 69 6e | #.Write.printable.version...prin |
| 17740 | 74 5f 74 70 6c 20 3d 20 45 52 42 3a 3a 6e 65 77 28 20 46 69 6c 65 2e 6f 70 65 6e 28 20 27 70 72 | t_tpl.=.ERB::new(.File.open(.'pr |
| 17760 | 69 6e 74 2e 65 72 62 27 20 29 2e 72 65 61 64 20 29 0d 0a 09 46 69 6c 65 2e 6f 70 65 6e 28 20 46 | int.erb'.).read.)...File.open(.F |
| 17780 | 69 6c 65 2e 6a 6f 69 6e 28 20 73 69 74 65 5f 70 61 74 68 2c 20 22 70 72 69 6e 74 2e 68 74 6d 6c | ile.join(.site_path,."print.html |
| 177a0 | 22 20 29 2c 20 27 77 27 20 29 20 64 6f 20 7c 6f 75 74 7c 0d 0a 09 09 6f 75 74 20 3c 3c 20 70 72 | ".),.'w'.).do.|out|....out.<<.pr |
| 177c0 | 69 6e 74 5f 74 70 6c 2e 72 65 73 75 6c 74 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 20 43 6f 70 79 20 | int_tpl.result...end.....#.Copy. |
| 177e0 | 63 73 73 20 2b 20 69 6d 61 67 65 73 20 69 6e 74 6f 20 73 69 74 65 0d 0a 09 63 6f 70 79 5f 6c 69 | css.+.images.into.site...copy_li |
| 17800 | 73 74 20 3d 20 5b 22 67 75 69 64 65 2e 63 73 73 22 5d 20 2b 0d 0a 09 09 44 69 72 5b 22 69 2f 2a | st.=.["guide.css"].+....Dir["i/* |
| 17820 | 22 5d 2e 66 69 6e 64 5f 61 6c 6c 20 7b 20 7c 69 6d 61 67 65 7c 20 69 6d 61 67 65 20 3d 7e 20 2f | "].find_all.{.|image|.image.=~./ |
| 17840 | 5c 2e 28 67 69 66 7c 6a 70 67 7c 70 6e 67 29 24 2f 20 7d 0d 0a 0d 0a 09 46 69 6c 65 2e 6d 61 6b | \.(gif|jpg|png)$/.}.....File.mak |
| 17860 | 65 64 69 72 73 28 20 46 69 6c 65 2e 6a 6f 69 6e 28 20 73 69 74 65 5f 70 61 74 68 2c 20 22 69 22 | edirs(.File.join(.site_path,."i" |
| 17880 | 20 29 20 29 0d 0a 09 63 6f 70 79 5f 6c 69 73 74 2e 65 61 63 68 20 64 6f 20 7c 63 6f 70 79 5f 66 | .).)...copy_list.each.do.|copy_f |
| 178a0 | 69 6c 65 7c 0d 0a 09 09 46 69 6c 65 2e 63 6f 70 79 28 20 63 6f 70 79 5f 66 69 6c 65 2c 20 46 69 | ile|....File.copy(.copy_file,.Fi |
| 178c0 | 6c 65 2e 6a 6f 69 6e 28 20 73 69 74 65 5f 70 61 74 68 2c 20 63 6f 70 79 5f 66 69 6c 65 20 29 20 | le.join(.site_path,.copy_file.). |
| 178e0 | 29 0d 0a 09 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 72 | )...end..end....#!/usr/bin/env.r |
| 17900 | 75 62 79 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 66 6f 78 27 0d 0a 62 65 67 69 6e 0d 0a 20 20 72 | uby....require.'fox'..begin....r |
| 17920 | 65 71 75 69 72 65 20 27 6f 70 65 6e 67 6c 27 0d 0a 72 65 73 63 75 65 20 4c 6f 61 64 45 72 72 6f | equire.'opengl'..rescue.LoadErro |
| 17940 | 72 0d 0a 20 20 72 65 71 75 69 72 65 20 27 66 6f 78 2f 6d 69 73 73 69 6e 67 64 65 70 27 0d 0a 20 | r....require.'fox/missingdep'... |
| 17960 | 20 4d 53 47 20 3d 20 3c 3c 45 4f 4d 0d 0a 20 20 53 6f 72 72 79 2c 20 74 68 69 73 20 65 78 61 6d | .MSG.=.<<EOM....Sorry,.this.exam |
| 17980 | 70 6c 65 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65 20 4f 70 65 6e 47 4c 20 65 78 74 65 6e 73 | ple.depends.on.the.OpenGL.extens |
| 179a0 | 69 6f 6e 2e 20 50 6c 65 61 73 65 0d 0a 20 20 63 68 65 63 6b 20 74 68 65 20 52 75 62 79 20 41 70 | ion..Please....check.the.Ruby.Ap |
| 179c0 | 70 6c 69 63 61 74 69 6f 6e 20 41 72 63 68 69 76 65 73 20 66 6f 72 20 61 6e 20 61 70 70 72 6f 70 | plication.Archives.for.an.approp |
| 179e0 | 72 69 61 74 65 0d 0a 20 20 64 6f 77 6e 6c 6f 61 64 20 73 69 74 65 2e 0d 0a 45 4f 4d 0d 0a 20 20 | riate....download.site...EOM.... |
| 17a00 | 6d 69 73 73 69 6e 67 44 65 70 65 6e 64 65 6e 63 79 28 4d 53 47 29 0d 0a 65 6e 64 0d 0a 0d 0a 0d | missingDependency(MSG)..end..... |
| 17a20 | 0a 69 6e 63 6c 75 64 65 20 46 6f 78 0d 0a 69 6e 63 6c 75 64 65 20 4d 61 74 68 0d 0a 0d 0a 44 65 | .include.Fox..include.Math....De |
| 17a40 | 67 32 52 61 64 20 3d 20 4d 61 74 68 3a 3a 50 49 20 2f 20 31 38 30 0d 0a 0d 0a 44 5f 4d 41 58 20 | g2Rad.=.Math::PI./.180....D_MAX. |
| 17a60 | 3d 20 36 0d 0a 53 51 55 41 52 45 5f 53 49 5a 45 20 3d 20 32 2e 30 20 2f 20 44 5f 4d 41 58 0d 0a | =.6..SQUARE_SIZE.=.2.0./.D_MAX.. |
| 17a80 | 53 51 55 41 52 45 5f 44 49 53 54 41 4e 43 45 20 3d 20 34 2e 30 20 2f 20 44 5f 4d 41 58 0d 0a 41 | SQUARE_DISTANCE.=.4.0./.D_MAX..A |
| 17aa0 | 4d 50 4c 49 54 55 44 45 20 3d 20 53 51 55 41 52 45 5f 53 49 5a 45 0d 0a 4c 41 4d 42 44 41 20 3d | MPLITUDE.=.SQUARE_SIZE..LAMBDA.= |
| 17ac0 | 20 44 5f 4d 41 58 2e 74 6f 5f 66 20 2f 20 32 0d 0a 0d 0a 63 6c 61 73 73 20 47 4c 54 65 73 74 57 | .D_MAX.to_f./.2....class.GLTestW |
| 17ae0 | 69 6e 64 6f 77 20 3c 20 46 58 4d 61 69 6e 57 69 6e 64 6f 77 0d 0a 0d 0a 20 20 23 20 48 6f 77 20 | indow.<.FXMainWindow......#.How. |
| 17b00 | 6f 66 74 65 6e 20 6f 75 72 20 74 69 6d 65 72 20 77 69 6c 6c 20 66 69 72 65 20 28 69 6e 20 6d 69 | often.our.timer.will.fire.(in.mi |
| 17b20 | 6c 6c 69 73 65 63 6f 6e 64 73 29 0d 0a 20 20 54 49 4d 45 52 5f 49 4e 54 45 52 56 41 4c 20 3d 20 | lliseconds)....TIMER_INTERVAL.=. |
| 17b40 | 35 30 30 0d 0a 0d 0a 20 20 23 20 52 6f 74 61 74 65 20 74 68 65 20 62 6f 78 65 73 20 77 68 65 6e | 500......#.Rotate.the.boxes.when |
| 17b60 | 20 61 20 74 69 6d 65 72 20 6d 65 73 73 61 67 65 20 69 73 20 72 65 63 65 69 76 65 64 0d 0a 20 20 | .a.timer.message.is.received.... |
| 17b80 | 64 65 66 20 6f 6e 54 69 6d 65 6f 75 74 28 73 65 6e 64 65 72 2c 20 73 65 6c 2c 20 70 74 72 29 0d | def.onTimeout(sender,.sel,.ptr). |
| 17ba0 | 0a 20 20 20 20 40 61 6e 67 6c 65 20 2b 3d 20 31 30 2e 30 0d 0a 23 20 20 20 20 40 73 69 7a 65 20 | .....@angle.+=.10.0..#....@size. |
| 17bc0 | 3d 20 30 2e 35 20 2b 20 30 2e 32 20 2a 20 4d 61 74 68 2e 63 6f 73 28 44 65 67 32 52 61 64 20 2a | =.0.5.+.0.2.*.Math.cos(Deg2Rad.* |
| 17be0 | 20 40 61 6e 67 6c 65 29 0d 0a 20 20 20 20 64 72 61 77 53 63 65 6e 65 28 29 0d 0a 20 20 20 20 40 | .@angle)......drawScene()......@ |
| 17c00 | 74 69 6d 65 72 20 3d 20 67 65 74 41 70 70 28 29 2e 61 64 64 54 69 6d 65 6f 75 74 28 54 49 4d 45 | timer.=.getApp().addTimeout(TIME |
| 17c20 | 52 5f 49 4e 54 45 52 56 41 4c 2c 20 6d 65 74 68 6f 64 28 3a 6f 6e 54 69 6d 65 6f 75 74 29 29 0d | R_INTERVAL,.method(:onTimeout)). |
| 17c40 | 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 52 6f 74 61 74 65 20 74 68 65 20 62 6f 78 65 73 20 77 | ...end......#.Rotate.the.boxes.w |
| 17c60 | 68 65 6e 20 61 20 63 68 6f 72 65 20 6d 65 73 73 61 67 65 20 69 73 20 72 65 63 65 69 76 65 64 0d | hen.a.chore.message.is.received. |
| 17c80 | 0a 20 20 64 65 66 20 6f 6e 43 68 6f 72 65 28 73 65 6e 64 65 72 2c 20 73 65 6c 2c 20 70 74 72 29 | ...def.onChore(sender,.sel,.ptr) |
| 17ca0 | 0d 0a 20 20 20 20 40 61 6e 67 6c 65 20 2b 3d 20 31 30 2e 30 0d 0a 23 20 20 20 20 40 61 6e 67 6c | ......@angle.+=.10.0..#....@angl |
| 17cc0 | 65 20 25 3d 20 33 36 30 2e 30 0d 0a 23 20 20 20 20 40 73 69 7a 65 20 3d 20 30 2e 35 20 2b 20 30 | e.%=.360.0..#....@size.=.0.5.+.0 |
| 17ce0 | 2e 32 20 2a 20 4d 61 74 68 2e 63 6f 73 28 44 65 67 32 52 61 64 20 2a 20 40 61 6e 67 6c 65 29 0d | .2.*.Math.cos(Deg2Rad.*.@angle). |
| 17d00 | 0a 20 20 20 20 64 72 61 77 53 63 65 6e 65 28 29 0d 0a 20 20 20 20 40 63 68 6f 72 65 20 3d 20 67 | .....drawScene()......@chore.=.g |
| 17d20 | 65 74 41 70 70 28 29 2e 61 64 64 43 68 6f 72 65 28 6d 65 74 68 6f 64 28 3a 6f 6e 43 68 6f 72 65 | etApp().addChore(method(:onChore |
| 17d40 | 29 29 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 44 72 61 77 20 74 68 65 20 47 4c 20 73 63 65 | ))....end......#.Draw.the.GL.sce |
| 17d60 | 6e 65 0d 0a 20 20 64 65 66 20 64 72 61 77 53 63 65 6e 65 0d 0a 20 20 20 20 6c 69 67 68 74 50 6f | ne....def.drawScene......lightPo |
| 17d80 | 73 69 74 69 6f 6e 20 3d 20 5b 31 35 2e 30 2c 20 31 30 2e 30 2c 20 35 2e 30 2c 20 31 2e 30 5d 0d | sition.=.[15.0,.10.0,.5.0,.1.0]. |
| 17da0 | 0a 20 20 20 20 6c 69 67 68 74 41 6d 62 69 65 6e 74 20 20 3d 20 5b 20 30 2e 31 2c 20 20 30 2e 31 | .....lightAmbient..=.[.0.1,..0.1 |
| 17dc0 | 2c 20 30 2e 31 2c 20 31 2e 30 5d 0d 0a 20 20 20 20 6c 69 67 68 74 44 69 66 66 75 73 65 20 20 3d | ,.0.1,.1.0]......lightDiffuse..= |
| 17de0 | 20 5b 20 30 2e 39 2c 20 20 30 2e 39 2c 20 30 2e 39 2c 20 31 2e 30 5d 0d 0a 20 20 20 20 72 65 64 | .[.0.9,..0.9,.0.9,.1.0]......red |
| 17e00 | 4d 61 74 65 72 69 61 6c 20 20 20 3d 20 5b 20 30 2e 30 2c 20 20 30 2e 30 2c 20 31 2e 30 2c 20 31 | Material...=.[.0.0,..0.0,.1.0,.1 |
| 17e20 | 2e 30 5d 0d 0a 20 20 20 20 62 6c 75 65 4d 61 74 65 72 69 61 6c 20 20 3d 20 5b 20 30 2e 30 2c 20 | .0]......blueMaterial..=.[.0.0,. |
| 17e40 | 20 31 2e 30 2c 20 30 2e 30 2c 20 31 2e 30 5d 0d 0a 0d 0a 20 20 20 20 77 69 64 74 68 20 3d 20 40 | .1.0,.0.0,.1.0]........width.=.@ |
| 17e60 | 67 6c 63 61 6e 76 61 73 2e 77 69 64 74 68 2e 74 6f 5f 66 0d 0a 20 20 20 20 68 65 69 67 68 74 20 | glcanvas.width.to_f......height. |
| 17e80 | 3d 20 40 67 6c 63 61 6e 76 61 73 2e 68 65 69 67 68 74 2e 74 6f 5f 66 0d 0a 20 20 20 20 61 73 70 | =.@glcanvas.height.to_f......asp |
| 17ea0 | 65 63 74 20 3d 20 77 69 64 74 68 2f 68 65 69 67 68 74 0d 0a 0d 0a 20 20 20 20 23 20 4d 61 6b 65 | ect.=.width/height........#.Make |
| 17ec0 | 20 63 6f 6e 74 65 78 74 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 40 67 6c 63 61 6e 76 61 73 2e | .context.current......@glcanvas. |
| 17ee0 | 6d 61 6b 65 43 75 72 72 65 6e 74 28 29 0d 0a 0d 0a 20 20 20 20 47 4c 2e 56 69 65 77 70 6f 72 74 | makeCurrent()........GL.Viewport |
| 17f00 | 28 30 2c 20 30 2c 20 40 67 6c 63 61 6e 76 61 73 2e 77 69 64 74 68 2c 20 40 67 6c 63 61 6e 76 61 | (0,.0,.@glcanvas.width,.@glcanva |
| 17f20 | 73 2e 68 65 69 67 68 74 29 0d 0a 0d 0a 20 20 20 20 47 4c 2e 43 6c 65 61 72 43 6f 6c 6f 72 28 31 | s.height)........GL.ClearColor(1 |
| 17f40 | 2e 30 2f 32 35 36 2c 20 30 2e 30 2c 20 35 2e 30 2f 32 35 36 2c 20 31 2e 30 29 0d 0a 20 20 20 20 | .0/256,.0.0,.5.0/256,.1.0)...... |
| 17f60 | 47 4c 2e 43 6c 65 61 72 28 47 4c 3a 3a 43 4f 4c 4f 52 5f 42 55 46 46 45 52 5f 42 49 54 7c 47 4c | GL.Clear(GL::COLOR_BUFFER_BIT|GL |
| 17f80 | 3a 3a 44 45 50 54 48 5f 42 55 46 46 45 52 5f 42 49 54 29 0d 0a 20 20 20 20 47 4c 2e 45 6e 61 62 | ::DEPTH_BUFFER_BIT)......GL.Enab |
| 17fa0 | 6c 65 28 47 4c 3a 3a 44 45 50 54 48 5f 54 45 53 54 29 0d 0a 0d 0a 20 20 20 20 47 4c 2e 44 69 73 | le(GL::DEPTH_TEST)........GL.Dis |
| 17fc0 | 61 62 6c 65 28 47 4c 3a 3a 44 49 54 48 45 52 29 0d 0a 0d 0a 20 20 20 20 47 4c 2e 4d 61 74 72 69 | able(GL::DITHER)........GL.Matri |
| 17fe0 | 78 4d 6f 64 65 28 47 4c 3a 3a 50 52 4f 4a 45 43 54 49 4f 4e 29 0d 0a 20 20 20 20 47 4c 2e 4c 6f | xMode(GL::PROJECTION)......GL.Lo |
| 18000 | 61 64 49 64 65 6e 74 69 74 79 28 29 0d 0a 20 20 20 20 47 4c 55 2e 50 65 72 73 70 65 63 74 69 76 | adIdentity()......GLU.Perspectiv |
| 18020 | 65 28 33 30 2e 30 2c 20 61 73 70 65 63 74 2c 20 31 2e 30 2c 20 31 30 30 2e 30 29 0d 0a 0d 0a 20 | e(30.0,.aspect,.1.0,.100.0)..... |
| 18040 | 20 20 20 47 4c 2e 4d 61 74 72 69 78 4d 6f 64 65 28 47 4c 3a 3a 4d 4f 44 45 4c 56 49 45 57 29 0d | ...GL.MatrixMode(GL::MODELVIEW). |
| 18060 | 0a 20 20 20 20 47 4c 2e 4c 6f 61 64 49 64 65 6e 74 69 74 79 28 29 0d 0a 20 20 20 20 47 4c 55 2e | .....GL.LoadIdentity()......GLU. |
| 18080 | 4c 6f 6f 6b 41 74 28 35 2e 30 2c 20 31 30 2e 30 2c 20 31 35 2e 30 2c 20 30 2e 30 2c 20 30 2e 30 | LookAt(5.0,.10.0,.15.0,.0.0,.0.0 |
| 180a0 | 2c 20 30 2e 30 2c 20 30 2e 30 2c 20 31 2e 30 2c 20 30 2e 30 29 0d 0a 0d 0a 20 20 20 20 47 4c 2e | ,.0.0,.0.0,.1.0,.0.0)........GL. |
| 180c0 | 53 68 61 64 65 4d 6f 64 65 6c 28 47 4c 3a 3a 53 4d 4f 4f 54 48 29 0d 0a 20 20 20 20 47 4c 2e 4c | ShadeModel(GL::SMOOTH)......GL.L |
| 180e0 | 69 67 68 74 28 47 4c 3a 3a 4c 49 47 48 54 30 2c 20 47 4c 3a 3a 50 4f 53 49 54 49 4f 4e 2c 20 6c | ight(GL::LIGHT0,.GL::POSITION,.l |
| 18100 | 69 67 68 74 50 6f 73 69 74 69 6f 6e 29 0d 0a 20 20 20 20 47 4c 2e 4c 69 67 68 74 28 47 4c 3a 3a | ightPosition)......GL.Light(GL:: |
| 18120 | 4c 49 47 48 54 30 2c 20 47 4c 3a 3a 41 4d 42 49 45 4e 54 2c 20 6c 69 67 68 74 41 6d 62 69 65 6e | LIGHT0,.GL::AMBIENT,.lightAmbien |
| 18140 | 74 29 0d 0a 20 20 20 20 47 4c 2e 4c 69 67 68 74 28 47 4c 3a 3a 4c 49 47 48 54 30 2c 20 47 4c 3a | t)......GL.Light(GL::LIGHT0,.GL: |
| 18160 | 3a 44 49 46 46 55 53 45 2c 20 6c 69 67 68 74 44 69 66 66 75 73 65 29 0d 0a 20 20 20 20 47 4c 2e | :DIFFUSE,.lightDiffuse)......GL. |
| 18180 | 45 6e 61 62 6c 65 28 47 4c 3a 3a 4c 49 47 48 54 30 29 0d 0a 20 20 20 20 47 4c 2e 45 6e 61 62 6c | Enable(GL::LIGHT0)......GL.Enabl |
| 181a0 | 65 28 47 4c 3a 3a 4c 49 47 48 54 49 4e 47 29 0d 0a 0d 0a 20 20 20 20 47 4c 2e 52 6f 74 61 74 65 | e(GL::LIGHTING)........GL.Rotate |
| 181c0 | 64 28 30 2e 31 2a 40 61 6e 67 6c 65 2c 20 30 2e 30 2c 20 31 2e 30 2c 20 30 2e 30 29 0d 0a 20 20 | d(0.1*@angle,.0.0,.1.0,.0.0).... |
| 181e0 | 20 20 66 6f 72 20 78 20 69 6e 20 2d 44 5f 4d 41 58 2e 2e 44 5f 4d 41 58 0d 0a 20 20 20 20 20 20 | ..for.x.in.-D_MAX..D_MAX........ |
| 18200 | 66 6f 72 20 79 20 69 6e 20 2d 44 5f 4d 41 58 2e 2e 44 5f 4d 41 58 0d 0a 20 20 20 20 20 20 20 20 | for.y.in.-D_MAX..D_MAX.......... |
| 18220 | 68 31 20 3d 20 28 78 20 2b 20 79 20 2d 20 32 29 2e 61 62 73 0d 0a 20 20 20 20 20 20 20 20 68 32 | h1.=.(x.+.y.-.2).abs..........h2 |
| 18240 | 20 3d 20 28 79 20 2d 20 78 20 2b 20 31 29 2e 61 62 73 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 50 | .=.(y.-.x.+.1).abs..........GL.P |
| 18260 | 75 73 68 4d 61 74 72 69 78 0d 0a 20 20 20 20 20 20 20 20 63 20 3d 20 5b 31 2c 20 30 2c 20 30 2c | ushMatrix..........c.=.[1,.0,.0, |
| 18280 | 20 31 5d 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 4d 61 74 65 72 69 61 6c 28 47 4c 3a 3a 46 52 4f | .1]..........GL.Material(GL::FRO |
| 182a0 | 4e 54 2c 20 47 4c 3a 3a 41 4d 42 49 45 4e 54 2c 20 63 29 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e | NT,.GL::AMBIENT,.c)..........GL. |
| 182c0 | 4d 61 74 65 72 69 61 6c 28 47 4c 3a 3a 46 52 4f 4e 54 2c 20 47 4c 3a 3a 44 49 46 46 55 53 45 2c | Material(GL::FRONT,.GL::DIFFUSE, |
| 182e0 | 20 63 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 54 72 61 6e 73 6c 61 74 65 64 28 0d 0a 20 | .c)............GL.Translated(... |
| 18300 | 20 20 20 20 20 20 20 20 20 79 20 2a 20 53 51 55 41 52 45 5f 44 49 53 54 41 4e 43 45 2c 0d 0a 20 | .........y.*.SQUARE_DISTANCE,... |
| 18320 | 20 20 20 20 20 20 20 20 20 41 4d 50 4c 49 54 55 44 45 20 2a 20 68 31 2c 0d 0a 20 20 20 20 20 20 | .........AMPLITUDE.*.h1,........ |
| 18340 | 20 20 20 20 78 20 2a 20 53 51 55 41 52 45 5f 44 49 53 54 41 4e 43 45 0d 0a 20 20 20 20 20 20 20 | ....x.*.SQUARE_DISTANCE......... |
| 18360 | 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 42 65 67 69 6e 28 47 4c 3a 3a 54 52 49 41 4e | .)............GL.Begin(GL::TRIAN |
| 18380 | 47 4c 45 5f 53 54 52 49 50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 4e 6f 72 6d 61 6c 28 | GLE_STRIP)............GL.Normal( |
| 183a0 | 31 2e 30 2c 20 30 2e 30 2c 20 30 2e 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 | 1.0,.0.0,.0.0)............GL.Ver |
| 183c0 | 74 65 78 28 2d 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 | tex(-SQUARE_SIZE,.+SQUARE_SIZE,. |
| 183e0 | 2d 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 | -SQUARE_SIZE)............GL.Vert |
| 18400 | 65 78 28 2d 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b | ex(-SQUARE_SIZE,.+SQUARE_SIZE,.+ |
| 18420 | 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 65 | SQUARE_SIZE)............GL.Verte |
| 18440 | 78 28 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2d 53 | x(+SQUARE_SIZE,.+SQUARE_SIZE,.-S |
| 18460 | 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 65 78 | QUARE_SIZE)............GL.Vertex |
| 18480 | 28 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 | (+SQUARE_SIZE,.+SQUARE_SIZE,.+SQ |
| 184a0 | 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 45 6e 64 0d 0a 0d 0a 20 20 | UARE_SIZE)..........GL.End...... |
| 184c0 | 20 20 20 20 20 20 47 4c 2e 50 6f 70 4d 61 74 72 69 78 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c | ......GL.PopMatrix............GL |
| 184e0 | 2e 50 75 73 68 4d 61 74 72 69 78 0d 0a 20 20 20 20 20 20 20 20 63 20 3d 20 5b 30 2c 20 30 2c 20 | .PushMatrix..........c.=.[0,.0,. |
| 18500 | 31 2c 20 31 5d 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 4d 61 74 65 72 69 61 6c 28 47 4c 3a 3a 46 | 1,.1]..........GL.Material(GL::F |
| 18520 | 52 4f 4e 54 2c 20 47 4c 3a 3a 41 4d 42 49 45 4e 54 2c 20 63 29 0d 0a 20 20 20 20 20 20 20 20 47 | RONT,.GL::AMBIENT,.c)..........G |
| 18540 | 4c 2e 4d 61 74 65 72 69 61 6c 28 47 4c 3a 3a 46 52 4f 4e 54 2c 20 47 4c 3a 3a 44 49 46 46 55 53 | L.Material(GL::FRONT,.GL::DIFFUS |
| 18560 | 45 2c 20 63 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 54 72 61 6e 73 6c 61 74 65 64 28 0d | E,.c)............GL.Translated(. |
| 18580 | 0a 20 20 20 20 20 20 20 20 20 20 79 20 2a 20 53 51 55 41 52 45 5f 44 49 53 54 41 4e 43 45 2c 0d | ...........y.*.SQUARE_DISTANCE,. |
| 185a0 | 0a 20 20 20 20 20 20 20 20 20 20 41 4d 50 4c 49 54 55 44 45 20 2a 20 68 32 2c 0d 0a 20 20 20 20 | ...........AMPLITUDE.*.h2,...... |
| 185c0 | 20 20 20 20 20 20 78 20 2a 20 53 51 55 41 52 45 5f 44 49 53 54 41 4e 43 45 0d 0a 20 20 20 20 20 | ......x.*.SQUARE_DISTANCE....... |
| 185e0 | 20 20 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 42 65 67 69 6e 28 47 4c 3a 3a 54 52 49 | ...)............GL.Begin(GL::TRI |
| 18600 | 41 4e 47 4c 45 5f 53 54 52 49 50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 4e 6f 72 6d 61 | ANGLE_STRIP)............GL.Norma |
| 18620 | 6c 28 31 2e 30 2c 20 30 2e 30 2c 20 30 2e 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 | l(1.0,.0.0,.0.0)............GL.V |
| 18640 | 65 72 74 65 78 28 2d 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 | ertex(-SQUARE_SIZE,.+SQUARE_SIZE |
| 18660 | 2c 20 2d 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 | ,.-SQUARE_SIZE)............GL.Ve |
| 18680 | 72 74 65 78 28 2d 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c | rtex(-SQUARE_SIZE,.+SQUARE_SIZE, |
| 186a0 | 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 | .+SQUARE_SIZE)............GL.Ver |
| 186c0 | 74 65 78 28 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 | tex(+SQUARE_SIZE,.+SQUARE_SIZE,. |
| 186e0 | 2d 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 | -SQUARE_SIZE)............GL.Vert |
| 18700 | 65 78 28 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b | ex(+SQUARE_SIZE,.+SQUARE_SIZE,.+ |
| 18720 | 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 45 6e 64 0d 0a 0d 0a | SQUARE_SIZE)..........GL.End.... |
| 18740 | 20 20 20 20 20 20 20 20 47 4c 2e 50 6f 70 4d 61 74 72 69 78 0d 0a 0d 0a 20 20 20 20 20 20 20 20 | ........GL.PopMatrix............ |
| 18760 | 47 4c 2e 50 75 73 68 4d 61 74 72 69 78 0d 0a 20 20 20 20 20 20 20 20 63 20 3d 20 5b 30 2e 30 20 | GL.PushMatrix..........c.=.[0.0. |
| 18780 | 2b 20 28 78 2f 31 30 2e 30 29 2c 20 30 2e 30 20 2b 20 28 79 2f 31 30 2e 30 29 2c 20 30 2c 20 31 | +.(x/10.0),.0.0.+.(y/10.0),.0,.1 |
| 187a0 | 5d 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 4d 61 74 65 72 69 61 6c 28 47 4c 3a 3a 46 52 4f 4e 54 | ]..........GL.Material(GL::FRONT |
| 187c0 | 2c 20 47 4c 3a 3a 41 4d 42 49 45 4e 54 2c 20 63 29 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 4d 61 | ,.GL::AMBIENT,.c)..........GL.Ma |
| 187e0 | 74 65 72 69 61 6c 28 47 4c 3a 3a 46 52 4f 4e 54 2c 20 47 4c 3a 3a 44 49 46 46 55 53 45 2c 20 63 | terial(GL::FRONT,.GL::DIFFUSE,.c |
| 18800 | 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 54 72 61 6e 73 6c 61 74 65 64 28 0d 0a 20 20 20 | )............GL.Translated(..... |
| 18820 | 20 20 20 20 20 20 20 79 20 2a 20 53 51 55 41 52 45 5f 44 49 53 54 41 4e 43 45 2c 0d 0a 20 20 20 | .......y.*.SQUARE_DISTANCE,..... |
| 18840 | 20 20 20 20 20 20 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 78 20 2a 20 53 51 55 41 52 45 5f | .......0,............x.*.SQUARE_ |
| 18860 | 44 49 53 54 41 4e 43 45 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 | DISTANCE..........)............G |
| 18880 | 4c 2e 42 65 67 69 6e 28 47 4c 3a 3a 54 52 49 41 4e 47 4c 45 5f 53 54 52 49 50 29 0d 0a 20 20 20 | L.Begin(GL::TRIANGLE_STRIP)..... |
| 188a0 | 20 20 20 20 20 20 20 47 4c 2e 4e 6f 72 6d 61 6c 28 31 2e 30 2c 20 30 2e 30 2c 20 30 2e 30 29 0d | .......GL.Normal(1.0,.0.0,.0.0). |
| 188c0 | 0a 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 65 78 28 2d 53 51 55 41 52 45 5f 53 49 5a | ...........GL.Vertex(-SQUARE_SIZ |
| 188e0 | 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2d 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a | E,.+SQUARE_SIZE,.-SQUARE_SIZE).. |
| 18900 | 20 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 65 78 28 2d 53 51 55 41 52 45 5f 53 49 5a 45 | ..........GL.Vertex(-SQUARE_SIZE |
| 18920 | 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 | ,.+SQUARE_SIZE,.+SQUARE_SIZE)... |
| 18940 | 20 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 65 78 28 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c | .........GL.Vertex(+SQUARE_SIZE, |
| 18960 | 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2d 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 | .+SQUARE_SIZE,.-SQUARE_SIZE).... |
| 18980 | 20 20 20 20 20 20 20 20 47 4c 2e 56 65 72 74 65 78 28 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 | ........GL.Vertex(+SQUARE_SIZE,. |
| 189a0 | 2b 53 51 55 41 52 45 5f 53 49 5a 45 2c 20 2b 53 51 55 41 52 45 5f 53 49 5a 45 29 0d 0a 20 20 20 | +SQUARE_SIZE,.+SQUARE_SIZE)..... |
| 189c0 | 20 20 20 20 20 47 4c 2e 45 6e 64 0d 0a 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 50 6f 70 4d 61 74 | .....GL.End............GL.PopMat |
| 189e0 | 72 69 78 0d 0a 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 | rix........end......end........# |
| 18a00 | 20 53 77 61 70 20 69 66 20 69 74 20 69 73 20 64 6f 75 62 6c 65 2d 62 75 66 66 65 72 65 64 0d 0a | .Swap.if.it.is.double-buffered.. |
| 18a20 | 20 20 20 20 69 66 20 40 67 6c 76 69 73 75 61 6c 2e 69 73 44 6f 75 62 6c 65 42 75 66 66 65 72 0d | ....if.@glvisual.isDoubleBuffer. |
| 18a40 | 0a 20 20 20 20 20 20 40 67 6c 63 61 6e 76 61 73 2e 73 77 61 70 42 75 66 66 65 72 73 0d 0a 20 20 | .......@glcanvas.swapBuffers.... |
| 18a60 | 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 4d 61 6b 65 20 63 6f 6e 74 65 78 74 20 6e 6f 6e 2d | ..end........#.Make.context.non- |
| 18a80 | 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 40 67 6c 63 61 6e 76 61 73 2e 6d 61 6b 65 4e 6f 6e 43 75 | current......@glcanvas.makeNonCu |
| 18aa0 | 72 72 65 6e 74 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 | rrent....end......def.initialize |
| 18ac0 | 28 61 70 70 29 0d 0a 20 20 20 20 23 20 49 6e 76 6f 6b 65 20 74 68 65 20 62 61 73 65 20 63 6c 61 | (app)......#.Invoke.the.base.cla |
| 18ae0 | 73 73 20 69 6e 69 74 69 61 6c 69 7a 65 72 0d 0a 20 20 20 20 73 75 70 65 72 28 61 70 70 2c 20 22 | ss.initializer......super(app,." |
| 18b00 | 4f 70 65 6e 47 4c 20 54 65 73 74 20 41 70 70 6c 69 63 61 74 69 6f 6e 22 2c 20 6e 69 6c 2c 20 6e | OpenGL.Test.Application",.nil,.n |
| 18b20 | 69 6c 2c 20 44 45 43 4f 52 5f 41 4c 4c 2c 20 30 2c 20 30 2c 20 31 30 32 34 2c 20 37 36 38 29 0d | il,.DECOR_ALL,.0,.0,.1024,.768). |
| 18b40 | 0a 0d 0a 20 20 20 20 23 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 6d 61 69 6e 20 77 69 6e 64 | .......#.Construct.the.main.wind |
| 18b60 | 6f 77 20 65 6c 65 6d 65 6e 74 73 0d 0a 20 20 20 20 66 72 61 6d 65 20 3d 20 46 58 48 6f 72 69 7a | ow.elements......frame.=.FXHoriz |
| 18b80 | 6f 6e 74 61 6c 46 72 61 6d 65 2e 6e 65 77 28 73 65 6c 66 2c 20 4c 41 59 4f 55 54 5f 53 49 44 45 | ontalFrame.new(self,.LAYOUT_SIDE |
| 18ba0 | 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 59 | _TOP|LAYOUT_FILL_X|LAYOUT_FILL_Y |
| 18bc0 | 29 0d 0a 20 20 20 20 66 72 61 6d 65 2e 70 61 64 4c 65 66 74 2c 20 66 72 61 6d 65 2e 70 61 64 52 | )......frame.padLeft,.frame.padR |
| 18be0 | 69 67 68 74 20 3d 20 30 2c 20 30 0d 0a 20 20 20 20 66 72 61 6d 65 2e 70 61 64 54 6f 70 2c 20 66 | ight.=.0,.0......frame.padTop,.f |
| 18c00 | 72 61 6d 65 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 30 2c 20 30 0d 0a 0d 0a 20 20 20 20 23 20 4c | rame.padBottom.=.0,.0........#.L |
| 18c20 | 65 66 74 20 70 61 6e 65 20 74 6f 20 63 6f 6e 74 61 69 6e 20 74 68 65 20 67 6c 63 61 6e 76 61 73 | eft.pane.to.contain.the.glcanvas |
| 18c40 | 0d 0a 20 20 20 20 67 6c 63 61 6e 76 61 73 46 72 61 6d 65 20 3d 20 46 58 56 65 72 74 69 63 61 6c | ......glcanvasFrame.=.FXVertical |
| 18c60 | 46 72 61 6d 65 2e 6e 65 77 28 66 72 61 6d 65 2c 0d 0a 20 20 20 20 20 20 4c 41 59 4f 55 54 5f 46 | Frame.new(frame,........LAYOUT_F |
| 18c80 | 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 59 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c | ILL_X|LAYOUT_FILL_Y|LAYOUT_TOP|L |
| 18ca0 | 41 59 4f 55 54 5f 4c 45 46 54 29 0d 0a 20 20 20 20 67 6c 63 61 6e 76 61 73 46 72 61 6d 65 2e 70 | AYOUT_LEFT)......glcanvasFrame.p |
| 18cc0 | 61 64 4c 65 66 74 2c 20 67 6c 63 61 6e 76 61 73 46 72 61 6d 65 2e 70 61 64 52 69 67 68 74 20 3d | adLeft,.glcanvasFrame.padRight.= |
| 18ce0 | 20 31 30 2c 20 31 30 0d 0a 20 20 20 20 67 6c 63 61 6e 76 61 73 46 72 61 6d 65 2e 70 61 64 54 6f | .10,.10......glcanvasFrame.padTo |
| 18d00 | 70 2c 20 67 6c 63 61 6e 76 61 73 46 72 61 6d 65 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 31 30 2c | p,.glcanvasFrame.padBottom.=.10, |
| 18d20 | 20 31 30 0d 0a 0d 0a 20 20 20 20 23 20 4c 61 62 65 6c 20 61 62 6f 76 65 20 74 68 65 20 67 6c 63 | .10........#.Label.above.the.glc |
| 18d40 | 61 6e 76 61 73 0d 0a 20 20 20 20 46 58 4c 61 62 65 6c 2e 6e 65 77 28 67 6c 63 61 6e 76 61 73 46 | anvas......FXLabel.new(glcanvasF |
| 18d60 | 72 61 6d 65 2c 20 22 4f 70 65 6e 47 4c 20 43 61 6e 76 61 73 20 46 72 61 6d 65 22 2c 20 6e 69 6c | rame,."OpenGL.Canvas.Frame",.nil |
| 18d80 | 2c 0d 0a 20 20 20 20 20 20 4a 55 53 54 49 46 59 5f 43 45 4e 54 45 52 5f 58 7c 4c 41 59 4f 55 54 | ,........JUSTIFY_CENTER_X|LAYOUT |
| 18da0 | 5f 46 49 4c 4c 5f 58 29 0d 0a 0d 0a 20 20 20 20 23 20 48 6f 72 69 7a 6f 6e 74 61 6c 20 64 69 76 | _FILL_X)........#.Horizontal.div |
| 18dc0 | 69 64 65 72 20 6c 69 6e 65 0d 0a 20 20 20 20 46 58 48 6f 72 69 7a 6f 6e 74 61 6c 53 65 70 61 72 | ider.line......FXHorizontalSepar |
| 18de0 | 61 74 6f 72 2e 6e 65 77 28 67 6c 63 61 6e 76 61 73 46 72 61 6d 65 2c 20 53 45 50 41 52 41 54 4f | ator.new(glcanvasFrame,.SEPARATO |
| 18e00 | 52 5f 47 52 4f 4f 56 45 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 29 0d 0a 0d 0a 20 20 20 20 23 | R_GROOVE|LAYOUT_FILL_X)........# |
| 18e20 | 20 44 72 61 77 69 6e 67 20 67 6c 63 61 6e 76 61 73 0d 0a 20 20 20 20 67 6c 70 61 6e 65 6c 20 3d | .Drawing.glcanvas......glpanel.= |
| 18e40 | 20 46 58 56 65 72 74 69 63 61 6c 46 72 61 6d 65 2e 6e 65 77 28 67 6c 63 61 6e 76 61 73 46 72 61 | .FXVerticalFrame.new(glcanvasFra |
| 18e60 | 6d 65 2c 20 28 46 52 41 4d 45 5f 53 55 4e 4b 45 4e 7c 46 52 41 4d 45 5f 54 48 49 43 4b 7c 0d 0a | me,.(FRAME_SUNKEN|FRAME_THICK|.. |
| 18e80 | 20 20 20 20 20 20 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f | ......LAYOUT_FILL_X|LAYOUT_FILL_ |
| 18ea0 | 59 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 4c 45 46 54 29 29 0d 0a 20 20 20 20 | Y|LAYOUT_TOP|LAYOUT_LEFT))...... |
| 18ec0 | 67 6c 70 61 6e 65 6c 2e 70 61 64 4c 65 66 74 2c 20 67 6c 70 61 6e 65 6c 2e 70 61 64 52 69 67 68 | glpanel.padLeft,.glpanel.padRigh |
| 18ee0 | 74 20 3d 20 30 2c 20 30 0d 0a 20 20 20 20 67 6c 70 61 6e 65 6c 2e 70 61 64 54 6f 70 2c 20 67 6c | t.=.0,.0......glpanel.padTop,.gl |
| 18f00 | 70 61 6e 65 6c 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 30 2c 20 30 0d 0a 0d 0a 20 20 20 20 23 20 | panel.padBottom.=.0,.0........#. |
| 18f20 | 41 20 76 69 73 75 61 6c 20 74 6f 20 64 72 61 77 20 4f 70 65 6e 47 4c 0d 0a 20 20 20 20 40 67 6c | A.visual.to.draw.OpenGL......@gl |
| 18f40 | 76 69 73 75 61 6c 20 3d 20 46 58 47 4c 56 69 73 75 61 6c 2e 6e 65 77 28 67 65 74 41 70 70 28 29 | visual.=.FXGLVisual.new(getApp() |
| 18f60 | 2c 20 56 49 53 55 41 4c 5f 44 4f 55 42 4c 45 42 55 46 46 45 52 29 0d 0a 0d 0a 20 20 20 20 23 20 | ,.VISUAL_DOUBLEBUFFER)........#. |
| 18f80 | 44 72 61 77 69 6e 67 20 67 6c 63 61 6e 76 61 73 0d 0a 20 20 20 20 40 67 6c 63 61 6e 76 61 73 20 | Drawing.glcanvas......@glcanvas. |
| 18fa0 | 3d 20 46 58 47 4c 43 61 6e 76 61 73 2e 6e 65 77 28 67 6c 70 61 6e 65 6c 2c 20 40 67 6c 76 69 73 | =.FXGLCanvas.new(glpanel,.@glvis |
| 18fc0 | 75 61 6c 2c 20 6e 69 6c 2c 20 30 2c 0d 0a 20 20 20 20 20 20 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f | ual,.nil,.0,........LAYOUT_FILL_ |
| 18fe0 | 58 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 59 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 | X|LAYOUT_FILL_Y|LAYOUT_TOP|LAYOU |
| 19000 | 54 5f 4c 45 46 54 29 0d 0a 20 20 20 20 40 67 6c 63 61 6e 76 61 73 2e 63 6f 6e 6e 65 63 74 28 53 | T_LEFT)......@glcanvas.connect(S |
| 19020 | 45 4c 5f 50 41 49 4e 54 29 20 7b 0d 0a 20 20 20 20 20 20 64 72 61 77 53 63 65 6e 65 0d 0a 20 20 | EL_PAINT).{........drawScene.... |
| 19040 | 20 20 7d 0d 0a 20 20 20 20 40 67 6c 63 61 6e 76 61 73 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 43 | ..}......@glcanvas.connect(SEL_C |
| 19060 | 4f 4e 46 49 47 55 52 45 29 20 7b 0d 0a 20 20 20 20 20 20 69 66 20 40 67 6c 63 61 6e 76 61 73 2e | ONFIGURE).{........if.@glcanvas. |
| 19080 | 6d 61 6b 65 43 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 47 4c 2e 56 69 65 77 70 6f 72 74 | makeCurrent..........GL.Viewport |
| 190a0 | 28 30 2c 20 30 2c 20 40 67 6c 63 61 6e 76 61 73 2e 77 69 64 74 68 2c 20 40 67 6c 63 61 6e 76 61 | (0,.0,.@glcanvas.width,.@glcanva |
| 190c0 | 73 2e 68 65 69 67 68 74 29 0d 0a 20 20 20 20 20 20 20 20 40 67 6c 63 61 6e 76 61 73 2e 6d 61 6b | s.height)..........@glcanvas.mak |
| 190e0 | 65 4e 6f 6e 43 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 7d 0d 0a 0d | eNonCurrent........end......}... |
| 19100 | 0a 20 20 20 20 23 20 52 69 67 68 74 20 70 61 6e 65 20 66 6f 72 20 74 68 65 20 62 75 74 74 6f 6e | .....#.Right.pane.for.the.button |
| 19120 | 73 0d 0a 20 20 20 20 62 75 74 74 6f 6e 46 72 61 6d 65 20 3d 20 46 58 56 65 72 74 69 63 61 6c 46 | s......buttonFrame.=.FXVerticalF |
| 19140 | 72 61 6d 65 2e 6e 65 77 28 66 72 61 6d 65 2c 20 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 59 7c 4c 41 | rame.new(frame,.LAYOUT_FILL_Y|LA |
| 19160 | 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 4c 45 46 54 29 0d 0a 20 20 20 20 62 75 74 74 6f | YOUT_TOP|LAYOUT_LEFT)......butto |
| 19180 | 6e 46 72 61 6d 65 2e 70 61 64 4c 65 66 74 2c 20 62 75 74 74 6f 6e 46 72 61 6d 65 2e 70 61 64 52 | nFrame.padLeft,.buttonFrame.padR |
| 191a0 | 69 67 68 74 20 3d 20 31 30 2c 20 31 30 0d 0a 20 20 20 20 62 75 74 74 6f 6e 46 72 61 6d 65 2e 70 | ight.=.10,.10......buttonFrame.p |
| 191c0 | 61 64 54 6f 70 2c 20 62 75 74 74 6f 6e 46 72 61 6d 65 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 31 | adTop,.buttonFrame.padBottom.=.1 |
| 191e0 | 30 2c 20 31 30 0d 0a 0d 0a 20 20 20 20 23 20 4c 61 62 65 6c 20 61 62 6f 76 65 20 74 68 65 20 62 | 0,.10........#.Label.above.the.b |
| 19200 | 75 74 74 6f 6e 73 0d 0a 20 20 20 20 46 58 4c 61 62 65 6c 2e 6e 65 77 28 62 75 74 74 6f 6e 46 72 | uttons......FXLabel.new(buttonFr |
| 19220 | 61 6d 65 2c 20 22 42 75 74 74 6f 6e 20 46 72 61 6d 65 22 2c 20 6e 69 6c 2c 0d 0a 20 20 20 20 20 | ame,."Button.Frame",.nil,....... |
| 19240 | 20 4a 55 53 54 49 46 59 5f 43 45 4e 54 45 52 5f 58 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 29 | .JUSTIFY_CENTER_X|LAYOUT_FILL_X) |
| 19260 | 0d 0a 0d 0a 20 20 20 20 23 20 48 6f 72 69 7a 6f 6e 74 61 6c 20 64 69 76 69 64 65 72 20 6c 69 6e | ........#.Horizontal.divider.lin |
| 19280 | 65 0d 0a 20 20 20 20 46 58 48 6f 72 69 7a 6f 6e 74 61 6c 53 65 70 61 72 61 74 6f 72 2e 6e 65 77 | e......FXHorizontalSeparator.new |
| 192a0 | 28 62 75 74 74 6f 6e 46 72 61 6d 65 2c 20 53 45 50 41 52 41 54 4f 52 5f 52 49 44 47 45 7c 4c 41 | (buttonFrame,.SEPARATOR_RIDGE|LA |
| 192c0 | 59 4f 55 54 5f 46 49 4c 4c 5f 58 29 0d 0a 0d 0a 20 20 20 20 23 20 53 70 69 6e 20 61 63 63 6f 72 | YOUT_FILL_X)........#.Spin.accor |
| 192e0 | 64 69 6e 67 20 74 6f 20 74 69 6d 65 72 0d 0a 20 20 20 20 73 70 69 6e 54 69 6d 65 72 42 74 6e 20 | ding.to.timer......spinTimerBtn. |
| 19300 | 3d 20 46 58 42 75 74 74 6f 6e 2e 6e 65 77 28 62 75 74 74 6f 6e 46 72 61 6d 65 2c 0d 0a 20 20 20 | =.FXButton.new(buttonFrame,..... |
| 19320 | 20 20 20 22 53 70 69 6e 20 26 54 69 6d 65 72 5c 74 53 70 69 6e 20 75 73 69 6e 67 20 69 6e 74 65 | ..."Spin.&Timer\tSpin.using.inte |
| 19340 | 72 76 61 6c 20 74 69 6d 65 72 73 5c 6e 4e 6f 74 65 20 74 68 65 20 61 70 70 0d 0a 20 20 20 20 20 | rval.timers\nNote.the.app....... |
| 19360 | 20 62 6c 6f 63 6b 73 20 75 6e 74 69 6c 20 74 68 65 20 69 6e 74 65 72 61 6c 20 68 61 73 20 65 6c | .blocks.until.the.interal.has.el |
| 19380 | 61 70 73 65 64 2e 2e 2e 22 2c 20 6e 69 6c 2c 0d 0a 20 20 20 20 20 20 6e 69 6c 2c 20 30 2c 20 46 | apsed...",.nil,........nil,.0,.F |
| 193a0 | 52 41 4d 45 5f 54 48 49 43 4b 7c 46 52 41 4d 45 5f 52 41 49 53 45 44 7c 4c 41 59 4f 55 54 5f 46 | RAME_THICK|FRAME_RAISED|LAYOUT_F |
| 193c0 | 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 4c 45 46 54 29 0d 0a 20 | ILL_X|LAYOUT_TOP|LAYOUT_LEFT)... |
| 193e0 | 20 20 20 73 70 69 6e 54 69 6d 65 72 42 74 6e 2e 70 61 64 4c 65 66 74 2c 20 73 70 69 6e 54 69 6d | ...spinTimerBtn.padLeft,.spinTim |
| 19400 | 65 72 42 74 6e 2e 70 61 64 52 69 67 68 74 20 3d 20 31 30 2c 20 31 30 0d 0a 20 20 20 20 73 70 69 | erBtn.padRight.=.10,.10......spi |
| 19420 | 6e 54 69 6d 65 72 42 74 6e 2e 70 61 64 54 6f 70 2c 20 73 70 69 6e 54 69 6d 65 72 42 74 6e 2e 70 | nTimerBtn.padTop,.spinTimerBtn.p |
| 19440 | 61 64 42 6f 74 74 6f 6d 20 3d 20 35 2c 20 35 0d 0a 20 20 20 20 73 70 69 6e 54 69 6d 65 72 42 74 | adBottom.=.5,.5......spinTimerBt |
| 19460 | 6e 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 43 4f 4d 4d 41 4e 44 29 20 7b 0d 0a 20 20 20 20 20 20 | n.connect(SEL_COMMAND).{........ |
| 19480 | 40 73 70 69 6e 6e 69 6e 67 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 20 20 40 74 69 6d 65 72 20 3d | @spinning.=.true........@timer.= |
| 194a0 | 20 67 65 74 41 70 70 28 29 2e 61 64 64 54 69 6d 65 6f 75 74 28 54 49 4d 45 52 5f 49 4e 54 45 52 | .getApp().addTimeout(TIMER_INTER |
| 194c0 | 56 41 4c 2c 20 6d 65 74 68 6f 64 28 3a 6f 6e 54 69 6d 65 6f 75 74 29 29 0d 0a 20 20 20 20 7d 0d | VAL,.method(:onTimeout))......}. |
| 194e0 | 0a 20 20 20 20 73 70 69 6e 54 69 6d 65 72 42 74 6e 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 55 50 | .....spinTimerBtn.connect(SEL_UP |
| 19500 | 44 41 54 45 29 20 7b 20 7c 73 65 6e 64 65 72 2c 20 73 65 6c 2c 20 70 74 72 7c 0d 0a 20 20 20 20 | DATE).{.|sender,.sel,.ptr|...... |
| 19520 | 20 20 40 73 70 69 6e 6e 69 6e 67 20 3f 20 73 65 6e 64 65 72 2e 64 69 73 61 62 6c 65 20 3a 20 73 | ..@spinning.?.sender.disable.:.s |
| 19540 | 65 6e 64 65 72 2e 65 6e 61 62 6c 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 20 53 70 69 | ender.enable......}........#.Spi |
| 19560 | 6e 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 63 68 6f 72 65 0d 0a 20 20 20 20 73 70 69 6e 43 68 | n.according.to.chore......spinCh |
| 19580 | 6f 72 65 42 74 6e 20 3d 20 46 58 42 75 74 74 6f 6e 2e 6e 65 77 28 62 75 74 74 6f 6e 46 72 61 6d | oreBtn.=.FXButton.new(buttonFram |
| 195a0 | 65 2c 0d 0a 20 20 20 20 20 20 22 53 70 69 6e 20 26 43 68 6f 72 65 5c 74 53 70 69 6e 20 61 73 20 | e,........"Spin.&Chore\tSpin.as. |
| 195c0 | 66 61 73 74 20 61 73 20 70 6f 73 73 69 62 6c 65 20 75 73 69 6e 67 20 63 68 6f 72 65 73 5c 6e 4e | fast.as.possible.using.chores\nN |
| 195e0 | 6f 74 65 20 65 76 65 6e 20 74 68 6f 75 67 68 20 74 68 65 0d 0a 20 20 20 20 20 20 61 70 70 20 69 | ote.even.though.the........app.i |
| 19600 | 73 20 76 65 72 79 20 72 65 73 70 6f 6e 73 69 76 65 2c 20 69 74 20 6e 65 76 65 72 20 62 6c 6f 63 | s.very.responsive,.it.never.bloc |
| 19620 | 6b 73 3b 5c 6e 74 68 65 72 65 20 69 73 20 61 6c 77 61 79 73 20 73 6f 6d 65 74 68 69 6e 67 20 74 | ks;\nthere.is.always.something.t |
| 19640 | 6f 0d 0a 20 20 20 20 20 20 64 6f 2e 2e 2e 22 2c 20 6e 69 6c 2c 0d 0a 20 20 20 20 20 20 6e 69 6c | o........do...",.nil,........nil |
| 19660 | 2c 20 30 2c 20 46 52 41 4d 45 5f 54 48 49 43 4b 7c 46 52 41 4d 45 5f 52 41 49 53 45 44 7c 4c 41 | ,.0,.FRAME_THICK|FRAME_RAISED|LA |
| 19680 | 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 4c 45 | YOUT_FILL_X|LAYOUT_TOP|LAYOUT_LE |
| 196a0 | 46 54 29 0d 0a 20 20 20 20 73 70 69 6e 43 68 6f 72 65 42 74 6e 2e 70 61 64 4c 65 66 74 2c 20 73 | FT)......spinChoreBtn.padLeft,.s |
| 196c0 | 70 69 6e 43 68 6f 72 65 42 74 6e 2e 70 61 64 52 69 67 68 74 20 3d 20 31 30 2c 20 31 30 0d 0a 20 | pinChoreBtn.padRight.=.10,.10... |
| 196e0 | 20 20 20 73 70 69 6e 43 68 6f 72 65 42 74 6e 2e 70 61 64 54 6f 70 2c 20 73 70 69 6e 43 68 6f 72 | ...spinChoreBtn.padTop,.spinChor |
| 19700 | 65 42 74 6e 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 35 2c 20 35 0d 0a 20 20 20 20 73 70 69 6e 43 | eBtn.padBottom.=.5,.5......spinC |
| 19720 | 68 6f 72 65 42 74 6e 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 43 4f 4d 4d 41 4e 44 29 20 7b 0d 0a | horeBtn.connect(SEL_COMMAND).{.. |
| 19740 | 20 20 20 20 20 20 40 73 70 69 6e 6e 69 6e 67 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 20 20 40 63 | ......@spinning.=.true........@c |
| 19760 | 68 6f 72 65 20 3d 20 67 65 74 41 70 70 28 29 2e 61 64 64 43 68 6f 72 65 28 6d 65 74 68 6f 64 28 | hore.=.getApp().addChore(method( |
| 19780 | 3a 6f 6e 43 68 6f 72 65 29 29 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 73 70 69 6e 43 68 6f 72 65 | :onChore))......}......spinChore |
| 197a0 | 42 74 6e 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 55 50 44 41 54 45 29 20 7b 20 7c 73 65 6e 64 65 | Btn.connect(SEL_UPDATE).{.|sende |
| 197c0 | 72 2c 20 73 65 6c 2c 20 70 74 72 7c 0d 0a 20 20 20 20 20 20 40 73 70 69 6e 6e 69 6e 67 20 3f 20 | r,.sel,.ptr|........@spinning.?. |
| 197e0 | 73 65 6e 64 65 72 2e 64 69 73 61 62 6c 65 20 3a 20 73 65 6e 64 65 72 2e 65 6e 61 62 6c 65 0d 0a | sender.disable.:.sender.enable.. |
| 19800 | 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 23 20 53 74 6f 70 20 73 70 69 6e 6e 69 6e 67 0d 0a 20 20 | ....}........#.Stop.spinning.... |
| 19820 | 20 20 73 74 6f 70 42 74 6e 20 3d 20 46 58 42 75 74 74 6f 6e 2e 6e 65 77 28 62 75 74 74 6f 6e 46 | ..stopBtn.=.FXButton.new(buttonF |
| 19840 | 72 61 6d 65 2c 0d 0a 20 20 20 20 20 20 22 26 53 74 6f 70 20 53 70 69 6e 5c 74 53 74 6f 70 20 74 | rame,........"&Stop.Spin\tStop.t |
| 19860 | 68 69 73 20 6d 61 64 20 73 70 69 6e 6e 69 6e 67 2c 20 49 27 6d 20 67 65 74 74 69 6e 67 20 64 69 | his.mad.spinning,.I'm.getting.di |
| 19880 | 7a 7a 79 22 2c 20 6e 69 6c 2c 0d 0a 20 20 20 20 20 20 6e 69 6c 2c 20 30 2c 20 46 52 41 4d 45 5f | zzy",.nil,........nil,.0,.FRAME_ |
| 198a0 | 54 48 49 43 4b 7c 46 52 41 4d 45 5f 52 41 49 53 45 44 7c 4c 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 | THICK|FRAME_RAISED|LAYOUT_FILL_X |
| 198c0 | 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 4c 45 46 54 29 0d 0a 20 20 20 20 73 74 | |LAYOUT_TOP|LAYOUT_LEFT)......st |
| 198e0 | 6f 70 42 74 6e 2e 70 61 64 4c 65 66 74 2c 20 73 74 6f 70 42 74 6e 2e 70 61 64 52 69 67 68 74 20 | opBtn.padLeft,.stopBtn.padRight. |
| 19900 | 3d 20 31 30 2c 20 31 30 0d 0a 20 20 20 20 73 74 6f 70 42 74 6e 2e 70 61 64 54 6f 70 2c 20 73 74 | =.10,.10......stopBtn.padTop,.st |
| 19920 | 6f 70 42 74 6e 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 35 2c 20 35 0d 0a 20 20 20 20 73 74 6f 70 | opBtn.padBottom.=.5,.5......stop |
| 19940 | 42 74 6e 2e 63 6f 6e 6e 65 63 74 28 53 45 4c 5f 43 4f 4d 4d 41 4e 44 29 20 7b 0d 0a 20 20 20 20 | Btn.connect(SEL_COMMAND).{...... |
| 19960 | 20 20 40 73 70 69 6e 6e 69 6e 67 20 3d 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 69 66 20 40 74 | ..@spinning.=.false........if.@t |
| 19980 | 69 6d 65 72 0d 0a 20 20 20 20 20 20 20 20 67 65 74 41 70 70 28 29 2e 72 65 6d 6f 76 65 54 69 6d | imer..........getApp().removeTim |
| 199a0 | 65 6f 75 74 28 40 74 69 6d 65 72 29 0d 0a 20 20 20 20 20 20 20 20 40 74 69 6d 65 72 20 3d 20 6e | eout(@timer)..........@timer.=.n |
| 199c0 | 69 6c 0d 0a 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 69 66 20 40 63 68 6f 72 65 0d 0a | il........end........if.@chore.. |
| 199e0 | 20 20 20 20 20 20 20 20 67 65 74 41 70 70 28 29 2e 72 65 6d 6f 76 65 43 68 6f 72 65 28 40 63 68 | ........getApp().removeChore(@ch |
| 19a00 | 6f 72 65 29 0d 0a 20 20 20 20 20 20 20 20 40 63 68 6f 72 65 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 | ore)..........@chore.=.nil...... |
| 19a20 | 20 20 65 6e 64 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 73 74 6f 70 42 74 6e 2e 63 6f 6e 6e 65 63 | ..end......}......stopBtn.connec |
| 19a40 | 74 28 53 45 4c 5f 55 50 44 41 54 45 29 20 7b 20 7c 73 65 6e 64 65 72 2c 20 73 65 6c 2c 20 70 74 | t(SEL_UPDATE).{.|sender,.sel,.pt |
| 19a60 | 72 7c 0d 0a 20 20 20 20 20 20 40 73 70 69 6e 6e 69 6e 67 20 3f 20 73 65 6e 64 65 72 2e 65 6e 61 | r|........@spinning.?.sender.ena |
| 19a80 | 62 6c 65 20 3a 20 73 65 6e 64 65 72 2e 64 69 73 61 62 6c 65 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 | ble.:.sender.disable......}..... |
| 19aa0 | 20 20 20 23 20 45 78 69 74 20 62 75 74 74 6f 6e 0d 0a 20 20 20 20 65 78 69 74 42 74 6e 20 3d 20 | ...#.Exit.button......exitBtn.=. |
| 19ac0 | 46 58 42 75 74 74 6f 6e 2e 6e 65 77 28 62 75 74 74 6f 6e 46 72 61 6d 65 2c 20 22 26 45 78 69 74 | FXButton.new(buttonFrame,."&Exit |
| 19ae0 | 5c 74 45 78 69 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 22 2c 20 6e 69 6c 2c 0d 0a 20 | \tExit.the.application",.nil,... |
| 19b00 | 20 20 20 20 20 67 65 74 41 70 70 28 29 2c 20 46 58 41 70 70 3a 3a 49 44 5f 51 55 49 54 2c 0d 0a | .....getApp(),.FXApp::ID_QUIT,.. |
| 19b20 | 20 20 20 20 20 20 46 52 41 4d 45 5f 54 48 49 43 4b 7c 46 52 41 4d 45 5f 52 41 49 53 45 44 7c 4c | ......FRAME_THICK|FRAME_RAISED|L |
| 19b40 | 41 59 4f 55 54 5f 46 49 4c 4c 5f 58 7c 4c 41 59 4f 55 54 5f 54 4f 50 7c 4c 41 59 4f 55 54 5f 4c | AYOUT_FILL_X|LAYOUT_TOP|LAYOUT_L |
| 19b60 | 45 46 54 29 0d 0a 20 20 20 20 65 78 69 74 42 74 6e 2e 70 61 64 4c 65 66 74 2c 20 65 78 69 74 42 | EFT)......exitBtn.padLeft,.exitB |
| 19b80 | 74 6e 2e 70 61 64 52 69 67 68 74 20 3d 20 31 30 2c 20 31 30 0d 0a 20 20 20 20 65 78 69 74 42 74 | tn.padRight.=.10,.10......exitBt |
| 19ba0 | 6e 2e 70 61 64 54 6f 70 2c 20 65 78 69 74 42 74 6e 2e 70 61 64 42 6f 74 74 6f 6d 20 3d 20 35 2c | n.padTop,.exitBtn.padBottom.=.5, |
| 19bc0 | 20 35 0d 0a 0d 0a 20 20 20 20 23 20 4d 61 6b 65 20 61 20 74 6f 6f 6c 74 69 70 0d 0a 20 20 20 20 | .5........#.Make.a.tooltip...... |
| 19be0 | 46 58 54 6f 6f 6c 74 69 70 2e 6e 65 77 28 67 65 74 41 70 70 28 29 29 0d 0a 0d 0a 20 20 20 20 23 | FXTooltip.new(getApp())........# |
| 19c00 | 20 49 6e 69 74 69 61 6c 69 7a 65 20 70 72 69 76 61 74 65 20 76 61 72 69 61 62 6c 65 73 0d 0a 20 | .Initialize.private.variables... |
| 19c20 | 20 20 20 40 73 70 69 6e 6e 69 6e 67 20 3d 20 66 61 6c 73 65 0d 0a 20 20 20 20 40 63 68 6f 72 65 | ...@spinning.=.false......@chore |
| 19c40 | 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 40 74 69 6d 65 72 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 40 61 | .=.nil......@timer.=.nil......@a |
| 19c60 | 6e 67 6c 65 20 3d 20 30 2e 30 0d 0a 20 20 20 20 40 73 69 7a 65 20 3d 20 30 2e 35 0d 0a 20 20 65 | ngle.=.0.0......@size.=.0.5....e |
| 19c80 | 6e 64 0d 0a 0d 0a 20 20 23 20 43 72 65 61 74 65 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 0d | nd......#.Create.and.initialize. |
| 19ca0 | 0a 20 20 64 65 66 20 63 72 65 61 74 65 0d 0a 20 20 20 20 73 75 70 65 72 0d 0a 20 20 20 20 73 68 | ...def.create......super......sh |
| 19cc0 | 6f 77 28 50 4c 41 43 45 4d 45 4e 54 5f 53 43 52 45 45 4e 29 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 | ow(PLACEMENT_SCREEN)....end..end |
| 19ce0 | 0d 0a 0d 0a 69 66 20 5f 5f 46 49 4c 45 5f 5f 20 3d 3d 20 24 30 0d 0a 20 20 23 20 43 6f 6e 73 74 | ....if.__FILE__.==.$0....#.Const |
| 19d00 | 72 75 63 74 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 61 70 70 6c 69 63 61 74 | ruct.the.application....applicat |
| 19d20 | 69 6f 6e 20 3d 20 46 58 41 70 70 2e 6e 65 77 28 22 47 4c 54 65 73 74 22 2c 20 22 46 6f 78 54 65 | ion.=.FXApp.new("GLTest",."FoxTe |
| 19d40 | 73 74 22 29 0d 0a 0d 0a 20 20 23 20 54 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 74 68 65 20 63 | st")......#.To.ensure.that.the.c |
| 19d60 | 68 6f 72 65 73 2d 62 61 73 65 64 20 73 70 69 6e 20 77 69 6c 6c 20 72 75 6e 20 61 73 20 66 61 73 | hores-based.spin.will.run.as.fas |
| 19d80 | 74 20 61 73 20 70 6f 73 73 69 62 6c 65 2c 0d 0a 20 20 23 20 77 65 20 63 61 6e 20 64 69 73 61 62 | t.as.possible,....#.we.can.disab |
| 19da0 | 6c 65 20 74 68 65 20 63 68 6f 72 65 20 69 6e 20 46 58 52 75 62 79 27 73 20 65 76 65 6e 74 20 6c | le.the.chore.in.FXRuby's.event.l |
| 19dc0 | 6f 6f 70 20 74 68 61 74 20 74 72 69 65 73 20 74 6f 20 73 63 68 65 64 75 6c 65 0d 0a 20 20 23 20 | oop.that.tries.to.schedule....#. |
| 19de0 | 6f 74 68 65 72 20 74 68 72 65 61 64 73 2e 20 54 68 69 73 20 69 73 20 4f 4b 20 66 6f 72 20 74 68 | other.threads..This.is.OK.for.th |
| 19e00 | 69 73 20 70 72 6f 67 72 61 6d 20 62 65 63 61 75 73 65 20 74 68 65 72 65 20 61 72 65 6e 27 74 20 | is.program.because.there.aren't. |
| 19e20 | 61 6e 79 0d 0a 20 20 23 20 6f 74 68 65 72 20 52 75 62 79 20 74 68 72 65 61 64 73 20 72 75 6e 6e | any....#.other.Ruby.threads.runn |
| 19e40 | 69 6e 67 2e 0d 0a 0d 0a 20 20 23 61 70 70 6c 69 63 61 74 69 6f 6e 2e 64 69 73 61 62 6c 65 54 68 | ing.......#application.disableTh |
| 19e60 | 72 65 61 64 73 0d 0a 0d 0a 20 20 23 20 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 6d 61 69 6e 20 | reads......#.Construct.the.main. |
| 19e80 | 77 69 6e 64 6f 77 0d 0a 20 20 47 4c 54 65 73 74 57 69 6e 64 6f 77 2e 6e 65 77 28 61 70 70 6c 69 | window....GLTestWindow.new(appli |
| 19ea0 | 63 61 74 69 6f 6e 29 0d 0a 0d 0a 20 20 23 20 43 72 65 61 74 65 20 74 68 65 20 61 70 70 27 73 20 | cation)......#.Create.the.app's. |
| 19ec0 | 77 69 6e 64 6f 77 73 0d 0a 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e 63 72 65 61 74 65 0d 0a 0d | windows....application.create... |
| 19ee0 | 0a 20 20 23 20 52 75 6e 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 20 20 61 70 70 6c | ...#.Run.the.application....appl |
| 19f00 | 69 63 61 74 69 6f 6e 2e 72 75 6e 0d 0a 65 6e 64 0d 0a 0d 0a 63 6c 61 73 73 20 46 61 63 65 6c 65 | ication.run..end....class.Facele |
| 19f20 | 74 0d 0a 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 63 6f 6c 6f 72 0d 0a 20 20 64 65 66 | t....attr_accessor.:color....def |
| 19f40 | 20 69 6e 69 74 69 61 6c 69 7a 65 28 63 6f 6c 6f 72 29 0d 0a 20 20 20 20 40 63 6f 6c 6f 72 20 3d | .initialize(color)......@color.= |
| 19f60 | 20 63 6f 6c 6f 72 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 74 6f 5f 73 0d 0a 20 20 20 | .color....end......def.to_s..... |
| 19f80 | 20 40 63 6f 6c 6f 72 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 63 6c 61 73 73 20 45 64 67 | .@color....end..end....class.Edg |
| 19fa0 | 65 0d 0a 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 66 61 63 65 6c 65 74 73 2c 20 3a 63 | e....attr_accessor.:facelets,.:c |
| 19fc0 | 6f 6c 6f 72 73 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 66 61 63 65 6c 65 | olors......def.initialize(facele |
| 19fe0 | 74 73 29 0d 0a 20 20 20 20 40 66 61 63 65 6c 65 74 73 20 3d 20 66 61 63 65 6c 65 74 73 0d 0a 20 | ts)......@facelets.=.facelets... |
| 1a000 | 20 20 20 40 63 6f 6c 6f 72 73 20 3d 20 40 66 61 63 65 6c 65 74 73 2e 6d 61 70 20 7b 20 7c 66 6c | ...@colors.=.@facelets.map.{.|fl |
| 1a020 | 7c 20 66 6c 2e 63 6f 6c 6f 72 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 61 70 70 | |.fl.color.}....end......def.app |
| 1a040 | 6c 79 28 65 64 67 65 29 0d 0a 20 20 20 20 40 66 61 63 65 6c 65 74 73 2e 65 61 63 68 5f 77 69 74 | ly(edge)......@facelets.each_wit |
| 1a060 | 68 5f 69 6e 64 65 78 20 7b 20 7c 66 6c 2c 20 69 7c 0d 0a 20 20 20 20 20 20 66 6c 2e 63 6f 6c 6f | h_index.{.|fl,.i|........fl.colo |
| 1a080 | 72 20 3d 20 65 64 67 65 2e 63 6f 6c 6f 72 73 5b 69 5d 0d 0a 20 20 20 20 7d 0d 0a 20 20 65 6e 64 | r.=.edge.colors[i]......}....end |
| 1a0a0 | 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 73 70 65 63 74 0d 0a 20 20 20 20 22 5c 6e 25 73 20 25 73 5c | ......def.inspect......"\n%s.%s\ |
| 1a0c0 | 6e 25 73 20 25 73 20 25 73 22 20 25 20 66 61 63 65 6c 65 74 73 0d 0a 20 20 65 6e 64 0d 0a 65 6e | n%s.%s.%s".%.facelets....end..en |
| 1a0e0 | 64 0d 0a 0d 0a 63 6c 61 73 73 20 53 69 64 65 0d 0a 20 20 61 74 74 72 5f 72 65 61 64 65 72 20 3a | d....class.Side....attr_reader.: |
| 1a100 | 6e 75 6d 2c 20 3a 66 61 63 65 6c 65 74 73 0d 0a 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 | num,.:facelets....attr_accessor. |
| 1a120 | 3a 73 69 64 65 73 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 6e 75 6d 29 0d | :sides......def.initialize(num). |
| 1a140 | 0a 20 20 20 20 40 6e 75 6d 20 3d 20 6e 75 6d 0d 0a 20 20 20 20 40 73 69 64 65 73 20 3d 20 5b 5d | .....@num.=.num......@sides.=.[] |
| 1a160 | 0d 0a 20 20 20 20 40 66 61 63 65 6c 65 74 73 20 3d 20 5b 5d 0d 0a 20 20 20 20 40 66 6c 5f 62 79 | ......@facelets.=.[]......@fl_by |
| 1a180 | 5f 73 69 64 65 20 3d 20 7b 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 23 20 66 61 63 65 6c 65 74 | _side.=.{}....end......#.facelet |
| 1a1a0 | 73 20 26 20 73 69 64 65 73 0d 0a 20 20 23 20 20 20 20 20 30 0d 0a 20 20 23 20 20 20 30 20 31 20 | s.&.sides....#.....0....#...0.1. |
| 1a1c0 | 32 0d 0a 20 20 23 20 33 20 33 20 34 20 35 20 31 0d 0a 20 20 23 20 20 20 36 20 37 20 38 0d 0a 20 | 2....#.3.3.4.5.1....#...6.7.8... |
| 1a1e0 | 20 23 20 20 20 20 20 32 0d 0a 0d 0a 20 20 64 65 66 20 66 61 63 65 6c 65 74 73 3d 28 66 61 63 65 | .#.....2......def.facelets=(face |
| 1a200 | 6c 65 74 73 29 0d 0a 20 20 20 20 40 66 61 63 65 6c 65 74 73 20 3d 20 66 61 63 65 6c 65 74 73 2e | lets)......@facelets.=.facelets. |
| 1a220 | 6d 61 70 20 7b 20 7c 63 7c 20 46 61 63 65 6c 65 74 2e 6e 65 77 28 63 29 20 7d 0d 0a 20 20 20 20 | map.{.|c|.Facelet.new(c).}...... |
| 1a240 | 69 6e 69 74 5f 66 61 63 65 6c 65 74 20 30 2c 20 33 2c 30 0d 0a 20 20 20 20 69 6e 69 74 5f 66 61 | init_facelet.0,.3,0......init_fa |
| 1a260 | 63 65 6c 65 74 20 31 2c 20 30 0d 0a 20 20 20 20 69 6e 69 74 5f 66 61 63 65 6c 65 74 20 32 2c 20 | celet.1,.0......init_facelet.2,. |
| 1a280 | 30 2c 31 0d 0a 20 20 20 20 69 6e 69 74 5f 66 61 63 65 6c 65 74 20 33 2c 20 33 0d 0a 20 20 20 20 | 0,1......init_facelet.3,.3...... |
| 1a2a0 | 69 6e 69 74 5f 66 61 63 65 6c 65 74 20 35 2c 20 31 0d 0a 20 20 20 20 69 6e 69 74 5f 66 61 63 65 | init_facelet.5,.1......init_face |
| 1a2c0 | 6c 65 74 20 36 2c 20 32 2c 33 0d 0a 20 20 20 20 69 6e 69 74 5f 66 61 63 65 6c 65 74 20 37 2c 20 | let.6,.2,3......init_facelet.7,. |
| 1a2e0 | 32 0d 0a 20 20 20 20 69 6e 69 74 5f 66 61 63 65 6c 65 74 20 38 2c 20 31 2c 32 0d 0a 20 20 65 6e | 2......init_facelet.8,.1,2....en |
| 1a300 | 64 0d 0a 0d 0a 20 20 64 65 66 20 3c 3d 3e 28 73 69 64 65 29 0d 0a 20 20 20 20 73 65 6c 66 2e 6e | d......def.<=>(side)......self.n |
| 1a320 | 75 6d 20 3c 3d 3e 20 73 69 64 65 2e 6e 75 6d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 | um.<=>.side.num....end......def. |
| 1a340 | 69 6e 69 74 5f 66 61 63 65 6c 65 74 28 70 6f 73 2c 20 2a 73 69 64 65 5f 6e 75 6d 73 29 0d 0a 20 | init_facelet(pos,.*side_nums)... |
| 1a360 | 20 20 20 73 69 64 65 73 20 3d 20 73 69 64 65 5f 6e 75 6d 73 2e 6d 61 70 20 7b 20 7c 6e 75 6d 7c | ...sides.=.side_nums.map.{.|num| |
| 1a380 | 20 40 73 69 64 65 73 5b 6e 75 6d 5d 20 7d 2e 73 6f 72 74 0d 0a 20 20 20 20 40 66 6c 5f 62 79 5f | .@sides[num].}.sort......@fl_by_ |
| 1a3a0 | 73 69 64 65 5b 73 69 64 65 73 5d 20 3d 20 70 6f 73 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 | side[sides].=.pos....end......de |
| 1a3c0 | 66 20 5b 5d 3d 28 63 6f 6c 6f 72 2c 20 2a 73 69 64 65 73 29 0d 0a 20 20 20 20 40 66 61 63 65 6c | f.[]=(color,.*sides)......@facel |
| 1a3e0 | 65 74 73 5b 40 66 6c 5f 62 79 5f 73 69 64 65 5b 73 69 64 65 73 2e 73 6f 72 74 5d 5d 2e 63 6f 6c | ets[@fl_by_side[sides.sort]].col |
| 1a400 | 6f 72 20 3d 20 63 6f 6c 6f 72 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 76 61 6c 75 65 | or.=.color....end......def.value |
| 1a420 | 73 5f 61 74 28 2a 73 69 64 65 73 29 0d 0a 20 20 20 20 73 69 64 65 73 2e 6d 61 70 20 7b 20 7c 73 | s_at(*sides)......sides.map.{.|s |
| 1a440 | 69 64 65 73 7c 20 40 66 61 63 65 6c 65 74 73 5b 40 66 6c 5f 62 79 5f 73 69 64 65 5b 73 69 64 65 | ides|.@facelets[@fl_by_side[side |
| 1a460 | 73 2e 73 6f 72 74 5d 5d 20 7d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 73 70 65 | s.sort]].}....end......def.inspe |
| 1a480 | 63 74 28 72 61 6e 67 65 3d 6e 69 6c 29 0d 0a 20 20 20 20 69 66 20 72 61 6e 67 65 0d 0a 20 20 20 | ct(range=nil)......if.range..... |
| 1a4a0 | 20 20 20 40 66 61 63 65 6c 65 74 73 2e 76 61 6c 75 65 73 5f 61 74 28 2a 28 72 61 6e 67 65 2e 74 | ...@facelets.values_at(*(range.t |
| 1a4c0 | 6f 5f 61 29 29 2e 6a 6f 69 6e 28 27 20 27 29 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 | o_a)).join('.')......else....... |
| 1a4e0 | 20 3c 3c 2d 45 4f 53 2e 67 73 75 62 28 2f 5c 64 2f 29 20 7b 20 7c 6e 75 6d 7c 20 40 66 61 63 65 | .<<-EOS.gsub(/\d/).{.|num|.@face |
| 1a500 | 6c 65 74 73 5b 6e 75 6d 2e 74 6f 5f 69 5d 20 7d 2e 67 73 75 62 28 2f 5b 41 42 43 44 5d 2f 29 20 | lets[num.to_i].}.gsub(/[ABCD]/). |
| 1a520 | 7b 20 7c 73 69 64 65 7c 20 40 73 69 64 65 73 5b 73 69 64 65 5b 30 5d 2d 3f 41 5d 2e 6e 75 6d 2e | {.|side|.@sides[side[0]-?A].num. |
| 1a540 | 74 6f 5f 73 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 41 0d 0a 20 20 20 20 20 20 20 20 20 30 | to_s.}.............A...........0 |
| 1a560 | 20 31 20 32 0d 0a 20 20 20 20 20 20 20 44 20 33 20 34 20 35 20 42 0d 0a 20 20 20 20 20 20 20 20 | .1.2.........D.3.4.5.B.......... |
| 1a580 | 20 36 20 37 20 38 0d 0a 20 20 20 20 20 20 20 20 20 20 20 43 0d 0a 20 20 20 20 20 20 45 4f 53 0d | .6.7.8.............C........EOS. |
| 1a5a0 | 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 67 65 74 5f 65 64 67 | .....end....end......def.get_edg |
| 1a5c0 | 65 28 73 69 64 65 29 0d 0a 20 20 20 20 74 72 69 6f 20 3d 20 28 2d 31 2e 2e 31 29 2e 6d 61 70 20 | e(side)......trio.=.(-1..1).map. |
| 1a5e0 | 7b 20 7c 78 7c 20 28 73 69 64 65 20 2b 20 78 29 20 25 20 34 20 7d 0d 0a 20 20 20 20 70 72 65 76 | {.|x|.(side.+.x).%.4.}......prev |
| 1a600 | 5f 73 69 64 65 2c 20 74 68 69 73 5f 73 69 64 65 2c 20 6e 65 78 74 5f 73 69 64 65 20 3d 20 40 73 | _side,.this_side,.next_side.=.@s |
| 1a620 | 69 64 65 73 2e 76 61 6c 75 65 73 5f 61 74 28 2a 74 72 69 6f 29 0d 0a 20 20 20 20 65 20 3d 20 45 | ides.values_at(*trio)......e.=.E |
| 1a640 | 64 67 65 2e 6e 65 77 28 0d 0a 20 20 20 20 20 20 73 65 6c 66 20 20 20 20 20 2e 76 61 6c 75 65 73 | dge.new(........self......values |
| 1a660 | 5f 61 74 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 74 68 69 73 5f 73 69 | _at(....................[this_si |
| 1a680 | 64 65 5d 2c 20 5b 74 68 69 73 5f 73 69 64 65 2c 20 6e 65 78 74 5f 73 69 64 65 5d 20 29 20 2b 0d | de],.[this_side,.next_side].).+. |
| 1a6a0 | 0a 20 20 20 20 20 20 74 68 69 73 5f 73 69 64 65 2e 76 61 6c 75 65 73 5f 61 74 28 20 5b 73 65 6c | .......this_side.values_at(.[sel |
| 1a6c0 | 66 2c 20 70 72 65 76 5f 73 69 64 65 5d 2c 20 5b 73 65 6c 66 20 20 20 20 20 5d 2c 20 5b 73 65 6c | f,.prev_side],.[self.....],.[sel |
| 1a6e0 | 66 2c 20 20 20 20 20 20 6e 65 78 74 5f 73 69 64 65 5d 20 29 0d 0a 20 20 20 20 29 0d 0a 20 20 20 | f,......next_side].)......)..... |
| 1a700 | 20 23 70 75 74 73 20 27 45 64 67 65 20 63 72 65 61 74 65 64 20 66 6f 72 20 73 69 64 65 20 25 64 | .#puts.'Edge.created.for.side.%d |
| 1a720 | 3a 20 27 20 25 20 73 69 64 65 20 2b 20 65 2e 69 6e 73 70 65 63 74 0d 0a 20 20 20 20 65 0d 0a 20 | :.'.%.side.+.e.inspect......e... |
| 1a740 | 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 74 75 72 6e 28 64 69 72 29 0d 0a 20 20 20 20 23 70 20 | .end......def.turn(dir)......#p. |
| 1a760 | 27 74 75 72 6e 20 73 69 64 65 20 25 64 20 69 6e 20 25 64 27 20 25 20 5b 6e 75 6d 2c 20 64 69 72 | 'turn.side.%d.in.%d'.%.[num,.dir |
| 1a780 | 5d 0d 0a 20 20 20 20 65 64 67 65 73 20 3d 20 28 30 2e 2e 33 29 2e 6d 61 70 20 7b 20 7c 6e 7c 20 | ]......edges.=.(0..3).map.{.|n|. |
| 1a7a0 | 67 65 74 5f 65 64 67 65 20 6e 20 7d 0d 0a 20 20 20 20 66 6f 72 20 69 20 69 6e 20 30 2e 2e 33 0d | get_edge.n.}......for.i.in.0..3. |
| 1a7c0 | 0a 20 20 20 20 20 20 65 64 67 65 73 5b 69 5d 2e 61 70 70 6c 79 20 65 64 67 65 73 5b 28 69 2d 64 | .......edges[i].apply.edges[(i-d |
| 1a7e0 | 69 72 29 20 25 20 34 5d 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d | ir).%.4]......end....end..end... |
| 1a800 | 0a 63 6c 61 73 73 20 43 75 62 65 0d 0a 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 0d 0a 20 | .class.Cube....def.initialize... |
| 1a820 | 20 20 20 40 73 69 64 65 73 20 3d 20 5b 5d 0d 0a 20 20 20 20 25 77 28 6c 65 66 74 20 66 72 6f 6e | ...@sides.=.[]......%w(left.fron |
| 1a840 | 74 20 72 69 67 68 74 20 62 61 63 6b 20 74 6f 70 20 62 6f 74 74 6f 6d 29 2e 65 61 63 68 5f 77 69 | t.right.back.top.bottom).each_wi |
| 1a860 | 74 68 5f 69 6e 64 65 78 20 7b 20 7c 73 69 64 65 2c 20 69 7c 0d 0a 20 20 20 20 20 20 65 76 61 6c | th_index.{.|side,.i|........eval |
| 1a880 | 28 22 40 73 69 64 65 73 5b 23 7b 69 7d 5d 20 3d 20 40 23 7b 73 69 64 65 7d 20 3d 20 53 69 64 65 | ("@sides[#{i}].=.@#{side}.=.Side |
| 1a8a0 | 2e 6e 65 77 28 23 7b 69 7d 29 22 29 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 40 6c 65 66 74 2e 73 | .new(#{i})")......}......@left.s |
| 1a8c0 | 69 64 65 73 20 3d 20 5b 40 74 6f 70 2c 20 40 66 72 6f 6e 74 2c 20 40 62 6f 74 74 6f 6d 2c 20 40 | ides.=.[@top,.@front,.@bottom,.@ |
| 1a8e0 | 62 61 63 6b 5d 0d 0a 20 20 20 20 40 66 72 6f 6e 74 2e 73 69 64 65 73 20 3d 20 5b 40 74 6f 70 2c | back]......@front.sides.=.[@top, |
| 1a900 | 20 40 72 69 67 68 74 2c 20 40 62 6f 74 74 6f 6d 2c 20 40 6c 65 66 74 5d 0d 0a 20 20 20 20 40 72 | .@right,.@bottom,.@left]......@r |
| 1a920 | 69 67 68 74 2e 73 69 64 65 73 20 3d 20 5b 40 74 6f 70 2c 20 40 62 61 63 6b 2c 20 40 62 6f 74 74 | ight.sides.=.[@top,.@back,.@bott |
| 1a940 | 6f 6d 2c 20 40 66 72 6f 6e 74 5d 0d 0a 20 20 20 20 40 62 61 63 6b 2e 73 69 64 65 73 20 3d 20 5b | om,.@front]......@back.sides.=.[ |
| 1a960 | 40 74 6f 70 2c 20 40 6c 65 66 74 2c 20 40 62 6f 74 74 6f 6d 2c 20 40 72 69 67 68 74 5d 0d 0a 20 | @top,.@left,.@bottom,.@right]... |
| 1a980 | 20 20 20 40 74 6f 70 2e 73 69 64 65 73 20 3d 20 5b 40 62 61 63 6b 2c 20 40 72 69 67 68 74 2c 20 | ...@top.sides.=.[@back,.@right,. |
| 1a9a0 | 40 66 72 6f 6e 74 2c 20 40 6c 65 66 74 5d 0d 0a 20 20 20 20 40 62 6f 74 74 6f 6d 2e 73 69 64 65 | @front,.@left]......@bottom.side |
| 1a9c0 | 73 20 3d 20 5b 40 66 72 6f 6e 74 2c 20 40 72 69 67 68 74 2c 20 40 62 61 63 6b 2c 20 40 6c 65 66 | s.=.[@front,.@right,.@back,.@lef |
| 1a9e0 | 74 5d 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 72 65 61 64 5f 66 61 63 65 6c 65 74 73 | t]....end......def.read_facelets |
| 1aa00 | 28 66 73 29 0d 0a 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 52 65 67 65 78 70 2e 6e 65 77 28 3c | (fs)......pattern.=.Regexp.new(< |
| 1aa20 | 3c 2d 45 4f 50 2e 67 73 75 62 28 2f 5c 77 2f 2c 20 27 5c 77 27 29 2e 67 73 75 62 28 2f 5c 73 2b | <-EOP.gsub(/\w/,.'\w').gsub(/\s+ |
| 1aa40 | 2f 2c 20 27 5c 73 2a 27 29 29 0d 0a 20 20 20 20 20 20 20 20 28 77 20 77 20 77 29 0d 0a 20 20 20 | /,.'\s*'))..........(w.w.w)..... |
| 1aa60 | 20 20 20 20 20 28 77 20 77 20 77 29 0d 0a 20 20 20 20 20 20 20 20 28 77 20 77 20 77 29 0d 0a 28 | .....(w.w.w)..........(w.w.w)..( |
| 1aa80 | 72 20 72 20 72 29 20 28 67 20 67 20 67 29 20 28 62 20 62 20 62 29 20 28 6f 20 6f 20 6f 29 0d 0a | r.r.r).(g.g.g).(b.b.b).(o.o.o).. |
| 1aaa0 | 28 72 20 72 20 72 29 20 28 67 20 67 20 67 29 20 28 62 20 62 20 62 29 20 28 6f 20 6f 20 6f 29 0d | (r.r.r).(g.g.g).(b.b.b).(o.o.o). |
| 1aac0 | 0a 28 72 20 72 20 72 29 20 28 67 20 67 20 67 29 20 28 62 20 62 20 62 29 20 28 6f 20 6f 20 6f 29 | .(r.r.r).(g.g.g).(b.b.b).(o.o.o) |
| 1aae0 | 0d 0a 20 20 20 20 20 20 20 20 28 79 20 79 20 79 29 0d 0a 20 20 20 20 20 20 20 20 28 79 20 79 20 | ..........(y.y.y)..........(y.y. |
| 1ab00 | 79 29 0d 0a 20 20 20 20 20 20 20 20 28 79 20 79 20 79 29 0d 0a 20 20 20 20 45 4f 50 0d 0a 20 20 | y)..........(y.y.y)......EOP.... |
| 1ab20 | 20 20 6d 64 20 3d 20 70 61 74 74 65 72 6e 2e 6d 61 74 63 68 28 66 73 29 2e 74 6f 5f 61 0d 0a 0d | ..md.=.pattern.match(fs).to_a... |
| 1ab40 | 0a 20 20 20 20 40 74 6f 70 2e 66 61 63 65 6c 65 74 73 20 3d 20 70 61 72 73 65 5f 66 61 63 65 6c | .....@top.facelets.=.parse_facel |
| 1ab60 | 65 74 73 28 6d 64 2e 76 61 6c 75 65 73 5f 61 74 28 31 2c 32 2c 33 29 29 0d 0a 20 20 20 20 40 6c | ets(md.values_at(1,2,3))......@l |
| 1ab80 | 65 66 74 2e 66 61 63 65 6c 65 74 73 20 3d 20 70 61 72 73 65 5f 66 61 63 65 6c 65 74 73 28 6d 64 | eft.facelets.=.parse_facelets(md |
| 1aba0 | 2e 76 61 6c 75 65 73 5f 61 74 28 34 2c 38 2c 31 32 29 29 0d 0a 20 20 20 20 40 66 72 6f 6e 74 2e | .values_at(4,8,12))......@front. |
| 1abc0 | 66 61 63 65 6c 65 74 73 20 3d 20 70 61 72 73 65 5f 66 61 63 65 6c 65 74 73 28 6d 64 2e 76 61 6c | facelets.=.parse_facelets(md.val |
| 1abe0 | 75 65 73 5f 61 74 28 35 2c 39 2c 31 33 29 29 0d 0a 20 20 20 20 40 72 69 67 68 74 2e 66 61 63 65 | ues_at(5,9,13))......@right.face |
| 1ac00 | 6c 65 74 73 20 3d 20 70 61 72 73 65 5f 66 61 63 65 6c 65 74 73 28 6d 64 2e 76 61 6c 75 65 73 5f | lets.=.parse_facelets(md.values_ |
| 1ac20 | 61 74 28 36 2c 31 30 2c 31 34 29 29 0d 0a 20 20 20 20 40 62 61 63 6b 2e 66 61 63 65 6c 65 74 73 | at(6,10,14))......@back.facelets |
| 1ac40 | 20 3d 20 70 61 72 73 65 5f 66 61 63 65 6c 65 74 73 28 6d 64 2e 76 61 6c 75 65 73 5f 61 74 28 37 | .=.parse_facelets(md.values_at(7 |
| 1ac60 | 2c 31 31 2c 31 35 29 29 0d 0a 20 20 20 20 40 62 6f 74 74 6f 6d 2e 66 61 63 65 6c 65 74 73 20 3d | ,11,15))......@bottom.facelets.= |
| 1ac80 | 20 70 61 72 73 65 5f 66 61 63 65 6c 65 74 73 28 6d 64 2e 76 61 6c 75 65 73 5f 61 74 28 31 36 2c | .parse_facelets(md.values_at(16, |
| 1aca0 | 31 37 2c 31 38 29 29 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 74 75 72 6e 28 73 69 64 | 17,18))....end......def.turn(sid |
| 1acc0 | 65 2c 20 64 69 72 29 0d 0a 20 20 20 20 23 70 20 27 74 75 72 6e 20 25 64 20 69 6e 20 25 64 27 20 | e,.dir)......#p.'turn.%d.in.%d'. |
| 1ace0 | 25 20 5b 73 69 64 65 2c 20 64 69 72 5d 0d 0a 20 20 20 20 40 73 69 64 65 73 5b 73 69 64 65 5d 2e | %.[side,.dir]......@sides[side]. |
| 1ad00 | 74 75 72 6e 28 64 69 72 29 0d 0a 20 20 20 20 23 70 75 74 73 20 69 6e 73 70 65 63 74 0d 0a 20 20 | turn(dir)......#puts.inspect.... |
| 1ad20 | 65 6e 64 0d 0a 0d 0a 20 20 64 65 66 20 69 6e 73 70 65 63 74 0d 0a 20 20 20 20 3c 3c 2d 45 4f 46 | end......def.inspect......<<-EOF |
| 1ad40 | 2e 67 73 75 62 28 2f 28 5c 64 29 3a 28 5c 64 29 2d 28 5c 64 29 2f 29 20 7b 20 40 73 69 64 65 73 | .gsub(/(\d):(\d)-(\d)/).{.@sides |
| 1ad60 | 5b 24 31 2e 74 6f 5f 69 5d 2e 69 6e 73 70 65 63 74 28 52 61 6e 67 65 2e 6e 65 77 28 24 32 2e 74 | [$1.to_i].inspect(Range.new($2.t |
| 1ad80 | 6f 5f 69 2c 20 24 33 2e 74 6f 5f 69 29 29 20 7d 0d 0a 20 20 20 20 20 20 34 3a 30 2d 32 0d 0a 20 | o_i,.$3.to_i)).}........4:0-2... |
| 1ada0 | 20 20 20 20 20 34 3a 33 2d 35 0d 0a 20 20 20 20 20 20 34 3a 36 2d 38 0d 0a 30 3a 30 2d 32 20 31 | .....4:3-5........4:6-8..0:0-2.1 |
| 1adc0 | 3a 30 2d 32 20 32 3a 30 2d 32 20 33 3a 30 2d 32 0d 0a 30 3a 33 2d 35 20 31 3a 33 2d 35 20 32 3a | :0-2.2:0-2.3:0-2..0:3-5.1:3-5.2: |
| 1ade0 | 33 2d 35 20 33 3a 33 2d 35 0d 0a 30 3a 36 2d 38 20 31 3a 36 2d 38 20 32 3a 36 2d 38 20 33 3a 36 | 3-5.3:3-5..0:6-8.1:6-8.2:6-8.3:6 |
| 1ae00 | 2d 38 0d 0a 20 20 20 20 20 20 35 3a 30 2d 32 0d 0a 20 20 20 20 20 20 35 3a 33 2d 35 0d 0a 20 20 | -8........5:0-2........5:3-5.... |
| 1ae20 | 20 20 20 20 35 3a 36 2d 38 0d 0a 20 20 20 20 45 4f 46 0d 0a 20 20 65 6e 64 0d 0a 0d 0a 70 72 69 | ....5:6-8......EOF....end....pri |
| 1ae40 | 76 61 74 65 0d 0a 20 20 64 65 66 20 70 61 72 73 65 5f 66 61 63 65 6c 65 74 73 28 72 6f 77 73 29 | vate....def.parse_facelets(rows) |
| 1ae60 | 0d 0a 20 20 20 20 72 6f 77 73 2e 6a 6f 69 6e 2e 64 65 6c 65 74 65 28 27 20 27 29 2e 73 70 6c 69 | ......rows.join.delete('.').spli |
| 1ae80 | 74 28 2f 2f 29 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 24 73 74 64 69 6e 20 3d 20 44 | t(//)....end..end....#$stdin.=.D |
| 1aea0 | 41 54 41 0d 0a 0d 0a 67 65 74 73 2e 74 6f 5f 69 2e 74 69 6d 65 73 20 64 6f 20 7c 69 7c 0d 0a 20 | ATA....gets.to_i.times.do.|i|... |
| 1aec0 | 20 70 75 74 73 20 22 53 63 65 6e 61 72 69 6f 20 23 23 7b 69 2b 31 7d 3a 22 0d 0a 20 20 66 73 20 | .puts."Scenario.##{i+1}:"....fs. |
| 1aee0 | 3d 20 27 27 0d 0a 20 20 39 2e 74 69 6d 65 73 20 7b 20 66 73 20 3c 3c 20 67 65 74 73 20 7d 0d 0a | =.''....9.times.{.fs.<<.gets.}.. |
| 1af00 | 20 20 63 75 62 65 20 3d 20 43 75 62 65 2e 6e 65 77 0d 0a 20 20 63 75 62 65 2e 72 65 61 64 5f 66 | ..cube.=.Cube.new....cube.read_f |
| 1af20 | 61 63 65 6c 65 74 73 20 66 73 0d 0a 20 20 67 65 74 73 2e 74 6f 5f 69 2e 74 69 6d 65 73 20 64 6f | acelets.fs....gets.to_i.times.do |
| 1af40 | 20 7c 74 7c 0d 0a 20 20 20 20 73 69 64 65 2c 20 64 69 72 20 3d 20 67 65 74 73 2e 73 70 6c 69 74 | .|t|......side,.dir.=.gets.split |
| 1af60 | 2e 6d 61 70 20 7b 7c 73 7c 20 73 2e 74 6f 5f 69 7d 0d 0a 20 20 20 20 63 75 62 65 2e 74 75 72 6e | .map.{|s|.s.to_i}......cube.turn |
| 1af80 | 28 73 69 64 65 2c 20 64 69 72 29 0d 0a 20 20 65 6e 64 0d 0a 20 20 70 75 74 73 20 63 75 62 65 2e | (side,.dir)....end....puts.cube. |
| 1afa0 | 69 6e 73 70 65 63 74 0d 0a 20 20 70 75 74 73 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 32 30 30 34 20 62 | inspect....puts..end....#.2004.b |
| 1afc0 | 79 20 6d 75 72 70 68 79 20 3c 6b 6f 72 6e 79 40 63 59 63 6e 75 73 2e 64 65 3e 0d 0a 23 20 47 50 | y.murphy.<korny@cYcnus.de>..#.GP |
| 1afe0 | 4c 0d 0a 63 6c 61 73 73 20 53 63 65 6e 61 72 69 6f 0d 0a 09 63 6c 61 73 73 20 54 69 6d 65 50 6f | L..class.Scenario...class.TimePo |
| 1b000 | 69 6e 74 0d 0a 09 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 64 61 74 61 0d 0a 09 09 64 65 66 20 | int....attr_reader.:data....def. |
| 1b020 | 69 6e 69 74 69 61 6c 69 7a 65 20 2a 64 61 74 61 0d 0a 09 09 09 40 64 61 74 61 20 3d 20 64 61 74 | initialize.*data.....@data.=.dat |
| 1b040 | 61 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 64 65 66 20 5b 5d 20 69 0d 0a 09 09 09 40 64 61 74 61 | a....end......def.[].i.....@data |
| 1b060 | 5b 69 5d 20 6f 72 20 30 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 69 6e 63 6c 75 64 65 20 43 6f 6d | [i].or.0....end......include.Com |
| 1b080 | 70 61 72 61 62 6c 65 0d 0a 09 09 64 65 66 20 3c 3d 3e 20 74 70 0d 0a 09 09 09 72 20 3d 20 30 0d | parable....def.<=>.tp.....r.=.0. |
| 1b0a0 | 0a 09 09 09 5b 40 64 61 74 61 2e 73 69 7a 65 2c 20 74 70 2e 64 61 74 61 2e 73 69 7a 65 5d 2e 6d | ....[@data.size,.tp.data.size].m |
| 1b0c0 | 61 78 2e 74 69 6d 65 73 20 64 6f 20 7c 69 7c 0d 0a 09 09 09 09 72 20 3d 20 73 65 6c 66 5b 69 5d | ax.times.do.|i|......r.=.self[i] |
| 1b0e0 | 20 3c 3d 3e 20 74 70 5b 69 5d 0d 0a 09 09 09 09 72 65 74 75 72 6e 20 72 20 69 66 20 72 2e 6e 6f | .<=>.tp[i]......return.r.if.r.no |
| 1b100 | 6e 7a 65 72 6f 3f 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 30 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 | nzero?.....end.....0....end..... |
| 1b120 | 09 64 65 66 20 2d 20 74 70 0d 0a 09 09 09 72 20 3d 20 5b 5d 0d 0a 09 09 09 5b 40 64 61 74 61 2e | .def.-.tp.....r.=.[].....[@data. |
| 1b140 | 73 69 7a 65 2c 20 74 70 2e 64 61 74 61 2e 73 69 7a 65 5d 2e 6d 61 78 2e 74 69 6d 65 73 20 64 6f | size,.tp.data.size].max.times.do |
| 1b160 | 20 7c 69 7c 0d 0a 09 09 09 09 72 20 3c 3c 20 73 65 6c 66 5b 69 5d 20 2d 20 74 70 5b 69 5d 0d 0a | .|i|......r.<<.self[i].-.tp[i].. |
| 1b180 | 09 09 09 65 6e 64 0d 0a 09 09 09 72 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 64 65 66 20 69 6e 73 | ...end.....r....end......def.ins |
| 1b1a0 | 70 65 63 74 0d 0a 09 09 09 23 20 30 31 2f 30 31 2f 31 38 30 30 20 30 30 3a 30 30 3a 30 30 0d 0a | pect.....#.01/01/1800.00:00:00.. |
| 1b1c0 | 09 09 09 27 25 30 32 64 2f 25 30 32 64 2f 25 30 34 64 20 25 30 32 64 3a 25 30 32 64 3a 25 30 32 | ...'%02d/%02d/%04d.%02d:%02d:%02 |
| 1b1e0 | 64 27 20 25 20 40 64 61 74 61 2e 76 61 6c 75 65 73 5f 61 74 28 31 2c 20 32 2c 20 30 2c 20 33 2c | d'.%.@data.values_at(1,.2,.0,.3, |
| 1b200 | 20 34 2c 20 35 29 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 4f 4e 45 5f 48 4f 55 52 | .4,.5)....end...end.....ONE_HOUR |
| 1b220 | 20 3d 20 54 69 6d 65 50 6f 69 6e 74 2e 6e 65 77 20 30 2c 20 30 2c 20 30 2c 20 31 2c 20 30 2c 20 | .=.TimePoint.new.0,.0,.0,.1,.0,. |
| 1b240 | 30 0d 0a 0d 0a 09 41 50 50 4f 49 4e 54 4d 45 4e 54 5f 50 41 54 54 45 52 4e 20 3d 20 2f 0d 0a 09 | 0.....APPOINTMENT_PATTERN.=./... |
| 1b260 | 09 28 20 5c 64 7b 34 7d 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d 20 29 20 5c 73 20 28 20 5c 64 7b | .(.\d{4}.).\s.(.\d{2}.).\s.(.\d{ |
| 1b280 | 32 7d 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d 20 29 20 5c | 2}.).\s.(.\d{2}.).\s.(.\d{2}.).\ |
| 1b2a0 | 73 20 28 20 5c 64 7b 32 7d 20 29 20 5c 73 0d 0a 09 09 28 20 5c 64 7b 34 7d 20 29 20 5c 73 20 28 | s.(.\d{2}.).\s....(.\d{4}.).\s.( |
| 1b2c0 | 20 5c 64 7b 32 7d 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d | .\d{2}.).\s.(.\d{2}.).\s.(.\d{2} |
| 1b2e0 | 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d 20 29 20 5c 73 20 28 20 5c 64 7b 32 7d 20 29 0d 0a 09 2f | .).\s.(.\d{2}.).\s.(.\d{2}.).../ |
| 1b300 | 78 0d 0a 0d 0a 09 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 20 69 6f 0d 0a 09 09 40 74 65 61 6d | x.....def.initialize.io....@team |
| 1b320 | 5f 73 69 7a 65 20 3d 20 69 6f 2e 67 65 74 73 2e 74 6f 5f 69 0d 0a 09 09 40 64 61 74 61 20 3d 20 | _size.=.io.gets.to_i....@data.=. |
| 1b340 | 5b 20 5b 54 69 6d 65 50 6f 69 6e 74 2e 6e 65 77 28 31 38 30 30 2c 20 30 31 2c 20 30 31 2c 20 30 | [.[TimePoint.new(1800,.01,.01,.0 |
| 1b360 | 30 2c 20 30 30 2c 20 30 30 29 2c 20 40 74 65 61 6d 5f 73 69 7a 65 5d 20 5d 0d 0a 09 09 40 74 65 | 0,.00,.00),.@team_size].]....@te |
| 1b380 | 61 6d 5f 73 69 7a 65 2e 74 69 6d 65 73 20 64 6f 20 20 23 20 65 61 63 68 20 74 65 61 6d 20 6d 65 | am_size.times.do..#.each.team.me |
| 1b3a0 | 6d 62 65 72 0d 0a 09 09 09 69 6f 2e 67 65 74 73 2e 74 6f 5f 69 2e 74 69 6d 65 73 20 64 6f 20 20 | mber.....io.gets.to_i.times.do.. |
| 1b3c0 | 23 20 65 61 63 68 20 61 70 70 6f 69 6e 74 6d 65 6e 74 0d 0a 09 09 09 09 6d 20 3d 20 41 50 50 4f | #.each.appointment......m.=.APPO |
| 1b3e0 | 49 4e 54 4d 45 4e 54 5f 50 41 54 54 45 52 4e 2e 6d 61 74 63 68 20 69 6f 2e 67 65 74 73 0d 0a 09 | INTMENT_PATTERN.match.io.gets... |
| 1b400 | 09 09 09 40 64 61 74 61 20 3c 3c 20 5b 54 69 6d 65 50 6f 69 6e 74 2e 6e 65 77 28 2a 6d 2e 63 61 | ...@data.<<.[TimePoint.new(*m.ca |
| 1b420 | 70 74 75 72 65 73 5b 30 2c 36 5d 2e 6d 61 70 20 7b 20 7c 78 7c 20 78 2e 74 6f 5f 69 20 7d 29 2c | ptures[0,6].map.{.|x|.x.to_i.}), |
| 1b440 | 20 2d 31 5d 0d 0a 09 09 09 09 40 64 61 74 61 20 3c 3c 20 5b 54 69 6d 65 50 6f 69 6e 74 2e 6e 65 | .-1]......@data.<<.[TimePoint.ne |
| 1b460 | 77 28 2a 6d 2e 63 61 70 74 75 72 65 73 5b 36 2c 36 5d 2e 6d 61 70 20 7b 20 7c 78 7c 20 78 2e 74 | w(*m.captures[6,6].map.{.|x|.x.t |
| 1b480 | 6f 5f 69 20 7d 29 2c 20 2b 31 5d 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 09 40 64 | o_i.}),.+1].....end....end....@d |
| 1b4a0 | 61 74 61 20 3c 3c 20 5b 54 69 6d 65 50 6f 69 6e 74 2e 6e 65 77 28 32 32 30 30 2c 20 30 31 2c 20 | ata.<<.[TimePoint.new(2200,.01,. |
| 1b4c0 | 30 31 2c 20 30 30 2c 20 30 30 2c 20 30 30 29 2c 20 2d 40 74 65 61 6d 5f 73 69 7a 65 5d 0d 0a 09 | 01,.00,.00,.00),.-@team_size]... |
| 1b4e0 | 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 70 72 69 6e 74 5f 74 69 6d 65 5f 70 6c 61 6e 0d 0a 09 09 6e | end.....def.print_time_plan....n |
| 1b500 | 20 3d 20 30 0d 0a 09 09 61 70 70 6f 69 6e 74 6d 65 6e 74 20 3d 20 6e 69 6c 0d 0a 09 09 6e 6f 5f | .=.0....appointment.=.nil....no_ |
| 1b520 | 61 70 70 6f 69 6e 74 6d 65 6e 74 20 3d 20 74 72 75 65 0d 0a 09 09 40 64 61 74 61 2e 73 6f 72 74 | appointment.=.true....@data.sort |
| 1b540 | 5f 62 79 20 7b 20 7c 78 7c 20 78 5b 30 5d 20 7d 2e 65 61 63 68 20 64 6f 20 7c 78 7c 0d 0a 09 09 | _by.{.|x|.x[0].}.each.do.|x|.... |
| 1b560 | 09 74 70 2c 20 61 63 74 69 6f 6e 20 3d 20 2a 78 0d 0a 09 09 09 6e 20 2b 3d 20 61 63 74 69 6f 6e | .tp,.action.=.*x.....n.+=.action |
| 1b580 | 0d 0a 09 09 09 23 20 61 74 20 61 6e 79 20 74 69 6d 65 20 64 75 72 69 6e 67 20 74 68 65 20 6d 65 | .....#.at.any.time.during.the.me |
| 1b5a0 | 65 74 69 6e 67 2c 20 61 74 20 6c 65 61 73 74 20 74 77 6f 20 74 65 61 6d 20 6d 65 6d 62 65 72 73 | eting,.at.least.two.team.members |
| 1b5c0 | 20 6e 65 65 64 20 74 6f 20 62 65 20 74 68 65 72 65 0d 0a 09 09 09 23 20 61 6e 64 20 61 74 20 6d | .need.to.be.there.....#.and.at.m |
| 1b5e0 | 6f 73 74 20 6f 6e 65 20 74 65 61 6d 20 6d 65 6d 62 65 72 20 69 73 20 61 6c 6c 6f 77 65 64 20 74 | ost.one.team.member.is.allowed.t |
| 1b600 | 6f 20 62 65 20 61 62 73 65 6e 74 0d 0a 09 09 09 69 66 20 6e 20 3e 3d 20 32 20 61 6e 64 20 28 40 | o.be.absent.....if.n.>=.2.and.(@ |
| 1b620 | 74 65 61 6d 5f 73 69 7a 65 20 2d 20 6e 29 20 3c 3d 20 31 0d 0a 09 09 09 09 61 70 70 6f 69 6e 74 | team_size.-.n).<=.1......appoint |
| 1b640 | 6d 65 6e 74 20 7c 7c 3d 20 74 70 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 69 66 20 61 70 70 | ment.||=.tp.....else......if.app |
| 1b660 | 6f 69 6e 74 6d 65 6e 74 0d 0a 09 09 09 09 09 23 20 74 68 65 20 6d 65 65 74 69 6e 67 20 73 68 6f | ointment.......#.the.meeting.sho |
| 1b680 | 75 6c 64 20 62 65 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 68 6f 75 72 20 69 6e 20 6c 65 6e 67 | uld.be.at.least.one.hour.in.leng |
| 1b6a0 | 74 68 0d 0a 09 09 09 09 09 69 66 20 54 69 6d 65 50 6f 69 6e 74 2e 6e 65 77 28 2a 28 74 70 20 2d | th.......if.TimePoint.new(*(tp.- |
| 1b6c0 | 20 61 70 70 6f 69 6e 74 6d 65 6e 74 29 29 20 3e 3d 20 4f 4e 45 5f 48 4f 55 52 0d 0a 09 09 09 09 | .appointment)).>=.ONE_HOUR...... |
| 1b6e0 | 09 09 70 75 74 73 20 27 61 70 70 6f 69 6e 74 6d 65 6e 74 20 70 6f 73 73 69 62 6c 65 20 66 72 6f | ..puts.'appointment.possible.fro |
| 1b700 | 6d 20 25 70 20 74 6f 20 25 70 27 20 25 20 5b 61 70 70 6f 69 6e 74 6d 65 6e 74 2c 20 74 70 5d 0d | m.%p.to.%p'.%.[appointment,.tp]. |
| 1b720 | 0a 09 09 09 09 09 09 6e 6f 5f 61 70 70 6f 69 6e 74 6d 65 6e 74 20 3d 20 66 61 6c 73 65 0d 0a 09 | .......no_appointment.=.false... |
| 1b740 | 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 09 61 70 70 6f 69 6e 74 6d 65 6e 74 20 3d 20 66 61 6c 73 | ....end.......appointment.=.fals |
| 1b760 | 65 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 0d 0a 09 09 70 75 74 | e......end.....end....end....put |
| 1b780 | 73 20 27 6e 6f 20 61 70 70 6f 69 6e 74 6d 65 6e 74 20 70 6f 73 73 69 62 6c 65 27 20 69 66 20 6e | s.'no.appointment.possible'.if.n |
| 1b7a0 | 6f 5f 61 70 70 6f 69 6e 74 6d 65 6e 74 0d 0a 09 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 72 65 | o_appointment...end..end....#.re |
| 1b7c0 | 61 64 20 74 68 65 20 64 61 74 61 0d 0a 44 41 54 41 2e 67 65 74 73 2e 74 6f 5f 69 2e 74 69 6d 65 | ad.the.data..DATA.gets.to_i.time |
| 1b7e0 | 73 20 64 6f 20 7c 73 69 7c 20 23 20 65 61 63 68 20 73 63 65 6e 61 72 69 6f 0d 0a 09 70 75 74 73 | s.do.|si|.#.each.scenario...puts |
| 1b800 | 20 27 53 63 65 6e 61 72 69 6f 20 23 25 64 3a 27 20 25 20 28 73 69 20 2b 20 31 29 0d 0a 09 73 63 | .'Scenario.#%d:'.%.(si.+.1)...sc |
| 1b820 | 20 3d 20 53 63 65 6e 61 72 69 6f 2e 6e 65 77 20 44 41 54 41 0d 0a 09 73 63 2e 70 72 69 6e 74 5f | .=.Scenario.new.DATA...sc.print_ |
| 1b840 | 74 69 6d 65 5f 70 6c 61 6e 0d 0a 09 70 75 74 73 0d 0a 65 6e 64 0d 0a 0d 0a 23 5f 5f 45 4e 44 5f | time_plan...puts..end....#__END_ |
| 1b860 | 5f 0d 0a 32 0d 0a 33 0d 0a 33 0d 0a 32 30 30 32 20 30 36 20 32 38 20 31 35 20 30 30 20 30 30 20 | _..2..3..3..2002.06.28.15.00.00. |
| 1b880 | 32 30 30 32 20 30 36 20 32 38 20 31 38 20 30 30 20 30 30 20 54 55 44 20 43 6f 6e 74 65 73 74 20 | 2002.06.28.18.00.00.TUD.Contest. |
| 1b8a0 | 50 72 61 63 74 69 63 65 20 53 65 73 73 69 6f 6e 0d 0a 32 30 30 32 20 30 36 20 32 39 20 31 30 20 | Practice.Session..2002.06.29.10. |
| 1b8c0 | 30 30 20 30 30 20 32 30 30 32 20 30 36 20 32 39 20 31 35 20 30 30 20 30 30 20 54 55 44 20 43 6f | 00.00.2002.06.29.15.00.00.TUD.Co |
| 1b8e0 | 6e 74 65 73 74 0d 0a 32 30 30 32 20 31 31 20 31 35 20 31 35 20 30 30 20 30 30 20 32 30 30 32 20 | ntest..2002.11.15.15.00.00.2002. |
| 1b900 | 31 31 20 31 37 20 32 33 20 30 30 20 30 30 20 4e 57 45 52 43 20 44 65 6c 66 74 0d 0a 34 0d 0a 32 | 11.17.23.00.00.NWERC.Delft..4..2 |
| 1b920 | 30 30 32 20 30 36 20 32 35 20 31 33 20 33 30 20 30 30 20 32 30 30 32 20 30 36 20 32 35 20 31 35 | 002.06.25.13.30.00.2002.06.25.15 |
| 1b940 | 20 33 30 20 30 30 20 46 49 46 41 20 57 6f 72 6c 64 20 43 75 70 20 53 65 6d 69 66 69 6e 61 6c 20 | .30.00.FIFA.World.Cup.Semifinal. |
| 1b960 | 49 0d 0a 32 30 30 32 20 30 36 20 32 36 20 31 33 20 33 30 20 30 30 20 32 30 30 32 20 30 36 20 32 | I..2002.06.26.13.30.00.2002.06.2 |
| 1b980 | 36 20 31 35 20 33 30 20 30 30 20 46 49 46 41 20 57 6f 72 6c 64 20 43 75 70 20 53 65 6d 69 66 69 | 6.15.30.00.FIFA.World.Cup.Semifi |
| 1b9a0 | 6e 61 6c 20 49 49 0d 0a 32 30 30 32 20 30 36 20 32 39 20 31 33 20 30 30 20 30 30 20 32 30 30 32 | nal.II..2002.06.29.13.00.00.2002 |
| 1b9c0 | 20 30 36 20 32 39 20 31 35 20 30 30 20 30 30 20 46 49 46 41 20 57 6f 72 6c 64 20 43 75 70 20 54 | .06.29.15.00.00.FIFA.World.Cup.T |
| 1b9e0 | 68 69 72 64 20 50 6c 61 63 65 0d 0a 32 30 30 32 20 30 36 20 33 30 20 31 33 20 30 30 20 30 30 20 | hird.Place..2002.06.30.13.00.00. |
| 1ba00 | 32 30 30 32 20 30 36 20 33 30 20 31 35 20 30 30 20 30 30 20 46 49 46 41 20 57 6f 72 6c 64 20 43 | 2002.06.30.15.00.00.FIFA.World.C |
| 1ba20 | 75 70 20 46 69 6e 61 6c 0d 0a 31 0d 0a 32 30 30 32 20 30 36 20 30 31 20 30 30 20 30 30 20 30 30 | up.Final..1..2002.06.01.00.00.00 |
| 1ba40 | 20 32 30 30 32 20 30 36 20 32 39 20 31 38 20 30 30 20 30 30 20 50 72 65 70 61 72 61 74 69 6f 6e | .2002.06.29.18.00.00.Preparation |
| 1ba60 | 20 6f 66 20 50 72 6f 62 6c 65 6d 20 53 65 74 0d 0a 32 0d 0a 31 0d 0a 31 38 30 30 20 30 31 20 30 | .of.Problem.Set..2..1..1800.01.0 |
| 1ba80 | 31 20 30 30 20 30 30 20 30 30 20 32 32 30 30 20 30 31 20 30 31 20 30 30 20 30 30 20 30 30 20 53 | 1.00.00.00.2200.01.01.00.00.00.S |
| 1baa0 | 6f 6c 76 69 6e 67 20 50 72 6f 62 6c 65 6d 20 38 0d 0a 30 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 | olving.Problem.8..0....require.' |
| 1bac0 | 74 6f 6b 65 6e 5f 63 6f 6e 73 74 73 27 0d 0a 72 65 71 75 69 72 65 20 27 73 79 6d 62 6f 6c 27 0d | token_consts'..require.'symbol'. |
| 1bae0 | 0a 72 65 71 75 69 72 65 20 27 63 74 79 70 65 27 0d 0a 72 65 71 75 69 72 65 20 27 65 72 72 6f 72 | .require.'ctype'..require.'error |
| 1bb00 | 27 0d 0a 0d 0a 63 6c 61 73 73 20 46 69 78 6e 75 6d 0d 0a 09 23 20 54 72 65 61 74 20 63 68 61 72 | '....class.Fixnum...#.Treat.char |
| 1bb20 | 20 61 73 20 61 20 64 69 67 69 74 20 61 6e 64 20 72 65 74 75 72 6e 20 69 74 27 73 20 76 61 6c 75 | .as.a.digit.and.return.it's.valu |
| 1bb40 | 65 20 61 73 20 46 69 78 6e 75 6d 2e 0d 0a 09 23 20 52 65 74 75 72 6e 73 20 6e 6f 6e 73 65 6e 73 | e.as.Fixnum....#.Returns.nonsens |
| 1bb60 | 65 20 66 6f 72 20 6e 6f 6e 2d 64 69 67 69 74 73 2e 0d 0a 09 23 20 45 78 61 6d 70 6c 65 73 3a 0d | e.for.non-digits....#.Examples:. |
| 1bb80 | 0a 09 23 20 3c 63 6f 64 65 3e 0d 0a 09 23 20 52 55 42 59 5f 56 45 52 53 49 4f 4e 5b 30 5d 2e 64 | ..#.<code>...#.RUBY_VERSION[0].d |
| 1bba0 | 69 67 69 74 20 3d 3d 20 27 31 2e 38 2e 32 27 5b 30 5d 2e 64 69 67 69 74 20 3d 3d 20 31 0d 0a 09 | igit.==.'1.8.2'[0].digit.==.1... |
| 1bbc0 | 23 20 3c 2f 63 6f 64 65 3e 0d 0a 09 23 0d 0a 09 23 20 3c 63 6f 64 65 3e 0d 0a 09 23 20 3f 36 2e | #.</code>...#...#.<code>...#.?6. |
| 1bbe0 | 64 69 67 69 74 20 3d 3d 20 36 0d 0a 09 23 20 3c 2f 63 6f 64 65 3e 0d 0a 09 23 0d 0a 09 23 20 3c | digit.==.6...#.</code>...#...#.< |
| 1bc00 | 63 6f 64 65 3e 0d 0a 09 23 20 3f 41 2e 64 69 67 69 74 20 3d 3d 20 31 37 0d 0a 09 23 20 3c 2f 63 | code>...#.?A.digit.==.17...#.</c |
| 1bc20 | 6f 64 65 3e 0d 0a 09 64 65 66 20 64 69 67 69 74 0d 0a 09 09 73 65 6c 66 20 2d 20 3f 30 0d 0a 09 | ode>...def.digit....self.-.?0... |
| 1bc40 | 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 23 0d 0a 23 20 53 74 65 6c 6c 74 20 65 69 6e 65 6e 20 65 | end..end....##..#.Stellt.einen.e |
| 1bc60 | 69 6e 66 61 63 68 65 6e 20 53 63 61 6e 6e 65 72 20 66 fc 72 20 64 69 65 20 6c 65 78 69 6b 61 6c | infachen.Scanner.f.r.die.lexikal |
| 1bc80 | 69 73 63 68 65 20 41 6e 61 6c 79 73 65 20 64 65 72 20 53 70 72 61 63 68 65 20 50 61 73 2d 30 20 | ische.Analyse.der.Sprache.Pas-0. |
| 1bca0 | 64 61 72 2e 0d 0a 23 0d 0a 23 20 40 61 75 74 68 6f 72 20 41 6e 64 72 65 61 73 20 4b 75 6e 65 72 | dar...#..#.@author.Andreas.Kuner |
| 1bcc0 | 74 0d 0a 23 20 52 75 62 79 20 70 6f 72 74 20 62 79 20 6d 75 72 70 68 79 0d 0a 63 6c 61 73 73 20 | t..#.Ruby.port.by.murphy..class. |
| 1bce0 | 53 63 61 6e 6e 65 72 0d 0a 0d 0a 09 69 6e 63 6c 75 64 65 20 54 6f 6b 65 6e 43 6f 6e 73 74 73 0d | Scanner.....include.TokenConsts. |
| 1bd00 | 0a 0d 0a 09 61 74 74 72 5f 72 65 61 64 65 72 20 3a 6c 69 6e 65 2c 20 3a 70 6f 73 0d 0a 0d 0a 09 | ....attr_reader.:line,.:pos..... |
| 1bd20 | 23 20 54 6f 20 61 6c 6c 6f 77 20 53 63 61 6e 6e 65 72 2e 6e 65 77 20 77 69 74 68 6f 75 74 20 70 | #.To.allow.Scanner.new.without.p |
| 1bd40 | 61 72 61 6d 65 74 65 72 73 2e 0d 0a 09 44 55 4d 4d 59 5f 49 4e 50 55 54 20 3d 20 27 64 75 6d 6d | arameters....DUMMY_INPUT.=.'dumm |
| 1bd60 | 79 20 66 69 6c 65 27 0d 0a 09 64 65 66 20 44 55 4d 4d 59 5f 49 4e 50 55 54 2e 67 65 74 63 0d 0a | y.file'...def.DUMMY_INPUT.getc.. |
| 1bd80 | 09 09 6e 69 6c 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 23 0d 0a 09 23 20 45 72 7a 65 75 67 74 20 65 | ..nil...end.....##...#.Erzeugt.e |
| 1bda0 | 69 6e 65 6e 20 53 63 61 6e 6e 65 72 2c 20 64 65 72 20 61 6c 73 20 45 69 6e 67 61 62 65 20 64 61 | inen.Scanner,.der.als.Eingabe.da |
| 1bdc0 | 73 20 fc 62 65 72 67 65 62 65 6e 65 20 49 4f 20 62 65 6e 75 74 7a 74 2e 0d 0a 09 64 65 66 20 69 | s..bergebene.IO.benutzt....def.i |
| 1bde0 | 6e 69 74 69 61 6c 69 7a 65 20 69 6e 70 75 74 20 3d 20 44 55 4d 4d 59 5f 49 4e 50 55 54 0d 0a 09 | nitialize.input.=.DUMMY_INPUT... |
| 1be00 | 09 40 6c 69 6e 65 20 3d 20 31 0d 0a 09 09 40 70 6f 73 20 3d 20 30 0d 0a 0d 0a 09 09 62 65 67 69 | .@line.=.1....@pos.=.0......begi |
| 1be20 | 6e 0d 0a 09 09 09 40 69 6e 70 75 74 20 3d 20 69 6e 70 75 74 0d 0a 09 09 09 40 6e 65 78 74 5f 63 | n.....@input.=.input.....@next_c |
| 1be40 | 68 61 72 20 3d 20 40 69 6e 70 75 74 2e 67 65 74 63 0d 0a 09 09 72 65 73 63 75 65 20 49 4f 45 72 | har.=.@input.getc....rescue.IOEr |
| 1be60 | 72 6f 72 20 20 23 20 54 4f 44 4f 20 73 68 6f 77 20 74 68 65 20 72 65 61 73 6f 6e 21 0d 0a 09 09 | ror..#.TODO.show.the.reason!.... |
| 1be80 | 09 45 72 72 6f 72 2e 69 6f 45 72 72 6f 72 0d 0a 09 09 09 72 61 69 73 65 0d 0a 09 09 65 6e 64 0d | .Error.ioError.....raise....end. |
| 1bea0 | 0a 09 65 6e 64 0d 0a 0d 0a 09 23 23 0d 0a 09 23 20 4c 69 65 73 74 20 64 61 73 20 6e 00 63 68 73 | ..end.....##...#.Liest.das.n.chs |
| 1bec0 | 74 65 20 5a 65 69 63 68 65 6e 20 76 6f 6e 20 64 65 72 20 45 69 6e 67 61 62 65 2e 0d 0a 09 64 65 | te.Zeichen.von.der.Eingabe....de |
| 1bee0 | 66 20 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 62 65 67 69 6e 0d 0a 09 09 09 40 70 | f.read_next_char....begin.....@p |
| 1bf00 | 6f 73 20 2b 3d 20 31 0d 0a 09 09 09 40 63 75 72 72 65 6e 74 5f 63 68 61 72 20 3d 20 40 6e 65 78 | os.+=.1.....@current_char.=.@nex |
| 1bf20 | 74 5f 63 68 61 72 0d 0a 09 09 09 40 6e 65 78 74 5f 63 68 61 72 20 3d 20 40 69 6e 70 75 74 2e 67 | t_char.....@next_char.=.@input.g |
| 1bf40 | 65 74 63 0d 0a 09 09 72 65 73 63 75 65 20 49 4f 45 72 72 6f 72 0d 0a 09 09 09 45 72 72 6f 72 2e | etc....rescue.IOError.....Error. |
| 1bf60 | 69 6f 45 72 72 6f 72 0d 0a 09 09 09 72 61 69 73 65 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a | ioError.....raise....end...end.. |
| 1bf80 | 0d 0a 09 23 23 0d 0a 09 23 20 53 75 63 68 74 20 64 61 73 20 6e e4 63 68 73 74 65 20 53 79 6d 62 | ...##...#.Sucht.das.n.chste.Symb |
| 1bfa0 | 6f 6c 2c 20 69 64 65 6e 74 69 66 69 7a 69 65 72 74 20 65 73 2c 20 69 6e 73 74 61 6e 74 69 69 65 | ol,.identifiziert.es,.instantiie |
| 1bfc0 | 72 74 20 65 69 6e 20 65 6e 74 73 70 72 65 63 68 65 6e 64 65 73 0d 0a 09 23 20 50 61 73 63 61 6c | rt.ein.entsprechendes...#.Pascal |
| 1bfe0 | 53 79 6d 62 6f 6c 2d 4f 62 6a 65 6b 74 20 75 6e 64 20 67 69 62 74 20 65 73 20 7a 75 72 fc 63 6b | Symbol-Objekt.und.gibt.es.zur.ck |
| 1c000 | 2e 0d 0a 09 23 20 40 73 65 65 20 53 79 6d 62 6f 6c 0d 0a 09 23 20 40 72 65 74 75 72 6e 20 64 61 | ....#.@see.Symbol...#.@return.da |
| 1c020 | 73 20 67 65 66 75 6e 64 65 6e 65 20 53 79 6d 62 6f 6c 20 61 6c 73 20 50 61 73 63 61 6c 53 79 6d | s.gefundene.Symbol.als.PascalSym |
| 1c040 | 62 6f 6c 2d 4f 62 6a 65 6b 74 0d 0a 09 64 65 66 20 67 65 74 5f 73 79 6d 62 6f 6c 0d 0a 09 09 63 | bol-Objekt...def.get_symbol....c |
| 1c060 | 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 6e 69 6c 0d 0a 09 09 75 6e 74 69 6c 20 63 75 72 | urrent_symbol.=.nil....until.cur |
| 1c080 | 72 65 6e 74 5f 73 79 6d 62 6f 6c 0d 0a 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a | rent_symbol.....read_next_char.. |
| 1c0a0 | 0d 0a 09 09 09 69 66 20 40 63 75 72 72 65 6e 74 5f 63 68 61 72 2e 61 6c 70 68 61 3f 0d 0a 09 09 | .....if.@current_char.alpha?.... |
| 1c0c0 | 09 09 69 64 65 6e 74 69 66 69 65 72 20 3d 20 40 63 75 72 72 65 6e 74 5f 63 68 61 72 2e 63 68 72 | ..identifier.=.@current_char.chr |
| 1c0e0 | 0d 0a 09 09 09 09 77 68 69 6c 65 20 40 6e 65 78 74 5f 63 68 61 72 2e 61 6c 70 68 61 3f 20 6f 72 | ......while.@next_char.alpha?.or |
| 1c100 | 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 74 3f 0d 0a 09 09 09 09 09 69 64 65 6e 74 69 66 | .@next_char.digit?.......identif |
| 1c120 | 69 65 72 20 3c 3c 20 40 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 09 09 72 65 61 64 5f 6e 65 78 | ier.<<.@next_char.......read_nex |
| 1c140 | 74 5f 63 68 61 72 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 6d | t_char......end......current_sym |
| 1c160 | 62 6f 6c 20 3d 20 68 61 6e 64 6c 65 5f 69 64 65 6e 74 69 66 69 65 72 28 69 64 65 6e 74 69 66 69 | bol.=.handle_identifier(identifi |
| 1c180 | 65 72 2e 75 70 63 61 73 65 29 0d 0a 09 09 09 65 6c 73 69 66 20 40 63 75 72 72 65 6e 74 5f 63 68 | er.upcase).....elsif.@current_ch |
| 1c1a0 | 61 72 2e 64 69 67 69 74 3f 0d 0a 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 | ar.digit?......current_symbol.=. |
| 1c1c0 | 6e 75 6d 62 65 72 0d 0a 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 63 61 73 65 20 40 63 75 72 72 65 | number.....else......case.@curre |
| 1c1e0 | 6e 74 5f 63 68 61 72 0d 0a 09 09 09 09 77 68 65 6e 20 3f 5c 73 0d 0a 09 09 09 09 09 23 20 69 67 | nt_char......when.?\s.......#.ig |
| 1c200 | 6e 6f 72 65 0d 0a 09 09 09 09 77 68 65 6e 20 3f 5c 6e 0d 0a 09 09 09 09 09 6e 65 77 5f 6c 69 6e | nore......when.?\n.......new_lin |
| 1c220 | 65 0d 0a 09 09 09 09 77 68 65 6e 20 6e 69 6c 0d 0a 09 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 | e......when.nil.......current_sy |
| 1c240 | 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 45 4f 50 0d 0a 09 09 09 | mbol.=.PascalSymbol.new.EOP..... |
| 1c260 | 09 77 68 65 6e 20 3f 7b 0d 0a 09 09 09 09 09 63 6f 6d 6d 65 6e 74 0d 0a 0d 0a 09 09 09 09 77 68 | .when.?{.......comment........wh |
| 1c280 | 65 6e 20 3f 3a 0d 0a 09 09 09 09 09 69 66 20 40 6e 65 78 74 5f 63 68 61 72 20 3d 3d 20 3f 3d 0d | en.?:.......if.@next_char.==.?=. |
| 1c2a0 | 0a 09 09 09 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 09 09 09 63 75 72 | .......read_next_char........cur |
| 1c2c0 | 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 42 | rent_symbol.=.PascalSymbol.new.B |
| 1c2e0 | 45 43 4f 4d 45 53 0d 0a 09 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 09 63 75 72 72 65 6e 74 | ECOMES.......else........current |
| 1c300 | 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 43 4f 4c 4f 4e | _symbol.=.PascalSymbol.new.COLON |
| 1c320 | 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 09 77 68 65 6e 20 3f 3c 0d 0a 09 09 09 09 09 | .......end........when.?<....... |
| 1c340 | 69 66 20 28 40 6e 65 78 74 5f 63 68 61 72 20 3d 3d 20 3f 3d 29 0d 0a 09 09 09 09 09 09 72 65 61 | if.(@next_char.==.?=)........rea |
| 1c360 | 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f | d_next_char........current_symbo |
| 1c380 | 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 4c 45 51 53 59 0d 0a 09 09 09 09 | l.=.PascalSymbol.new.LEQSY...... |
| 1c3a0 | 09 65 6c 73 69 66 20 28 40 6e 65 78 74 5f 63 68 61 72 20 3d 3d 20 3f 3e 29 0d 0a 09 09 09 09 09 | .elsif.(@next_char.==.?>)....... |
| 1c3c0 | 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 09 09 09 63 75 72 72 65 6e 74 5f 73 | .read_next_char........current_s |
| 1c3e0 | 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 4e 45 51 53 59 0d 0a | ymbol.=.PascalSymbol.new.NEQSY.. |
| 1c400 | 09 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 | .....else........current_symbol. |
| 1c420 | 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 4c 53 53 53 59 0d 0a 09 09 09 09 09 65 | =.PascalSymbol.new.LSSSY.......e |
| 1c440 | 6e 64 0d 0a 0d 0a 09 09 09 09 77 68 65 6e 20 3f 3e 0d 0a 09 09 09 09 09 69 66 20 28 40 6e 65 78 | nd........when.?>.......if.(@nex |
| 1c460 | 74 5f 63 68 61 72 20 3d 3d 20 3f 3d 29 0d 0a 09 09 09 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 | t_char.==.?=)........read_next_c |
| 1c480 | 68 61 72 0d 0a 09 09 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 | har........current_symbol.=.Pasc |
| 1c4a0 | 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 47 45 51 53 59 0d 0a 09 09 09 09 09 65 6c 73 65 0d 0a 09 | alSymbol.new.GEQSY.......else... |
| 1c4c0 | 09 09 09 09 09 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 | .....current_symbol.=.PascalSymb |
| 1c4e0 | 6f 6c 2e 6e 65 77 20 47 52 54 53 59 0d 0a 09 09 09 09 09 65 6e 64 0d 0a 0d 0a 09 09 09 09 77 68 | ol.new.GRTSY.......end........wh |
| 1c500 | 65 6e 20 3f 2e 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 | en.?..then.current_symbol.=.Pasc |
| 1c520 | 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 50 45 52 49 4f 44 0d 0a 09 09 09 09 77 68 65 6e 20 3f 28 | alSymbol.new.PERIOD......when.?( |
| 1c540 | 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d | .then.current_symbol.=.PascalSym |
| 1c560 | 62 6f 6c 2e 6e 65 77 20 4c 50 41 52 45 4e 54 0d 0a 09 09 09 09 77 68 65 6e 20 3f 2c 20 74 68 65 | bol.new.LPARENT......when.?,.the |
| 1c580 | 6e 20 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e | n.current_symbol.=.PascalSymbol. |
| 1c5a0 | 6e 65 77 20 43 4f 4d 4d 41 0d 0a 09 09 09 09 77 68 65 6e 20 3f 2a 20 74 68 65 6e 20 63 75 72 72 | new.COMMA......when.?*.then.curr |
| 1c5c0 | 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 54 49 | ent_symbol.=.PascalSymbol.new.TI |
| 1c5e0 | 4d 45 53 0d 0a 09 09 09 09 77 68 65 6e 20 3f 2f 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 73 79 | MES......when.?/.then.current_sy |
| 1c600 | 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 53 4c 41 53 48 0d 0a 09 | mbol.=.PascalSymbol.new.SLASH... |
| 1c620 | 09 09 09 77 68 65 6e 20 3f 2b 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d | ...when.?+.then.current_symbol.= |
| 1c640 | 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 50 4c 55 53 0d 0a 09 09 09 09 77 68 65 6e | .PascalSymbol.new.PLUS......when |
| 1c660 | 20 3f 2d 20 74 68 65 6e 20 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c | .?-.then.current_symbol.=.Pascal |
| 1c680 | 53 79 6d 62 6f 6c 2e 6e 65 77 20 4d 49 4e 55 53 0d 0a 09 09 09 09 77 68 65 6e 20 3f 3d 20 74 68 | Symbol.new.MINUS......when.?=.th |
| 1c6a0 | 65 6e 20 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c | en.current_symbol.=.PascalSymbol |
| 1c6c0 | 2e 6e 65 77 20 45 51 4c 53 59 0d 0a 09 09 09 09 77 68 65 6e 20 3f 29 20 74 68 65 6e 20 63 75 72 | .new.EQLSY......when.?).then.cur |
| 1c6e0 | 72 65 6e 74 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 52 | rent_symbol.=.PascalSymbol.new.R |
| 1c700 | 50 41 52 45 4e 54 0d 0a 09 09 09 09 77 68 65 6e 20 3f 3b 20 74 68 65 6e 20 63 75 72 72 65 6e 74 | PARENT......when.?;.then.current |
| 1c720 | 5f 73 79 6d 62 6f 6c 20 3d 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 53 45 4d 49 43 | _symbol.=.PascalSymbol.new.SEMIC |
| 1c740 | 4f 4c 4f 4e 0d 0a 09 09 09 09 65 6c 73 65 0d 0a 09 09 09 09 09 45 72 72 6f 72 2e 65 72 72 6f 72 | OLON......else.......Error.error |
| 1c760 | 28 31 30 30 2c 20 40 6c 69 6e 65 2c 20 40 70 6f 73 29 20 69 66 20 40 63 75 72 72 65 6e 74 5f 63 | (100,.@line,.@pos).if.@current_c |
| 1c780 | 68 61 72 20 3e 20 3f 5c 73 0d 0a 09 09 09 09 65 6e 64 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e | har.>.?\s......end.....end....en |
| 1c7a0 | 64 0d 0a 09 09 63 75 72 72 65 6e 74 5f 73 79 6d 62 6f 6c 0d 0a 09 65 6e 64 0d 0a 0d 0a 70 72 69 | d....current_symbol...end....pri |
| 1c7c0 | 76 61 74 65 0d 0a 09 23 23 0d 0a 09 23 20 56 65 72 73 75 63 68 74 2c 20 69 6e 20 64 65 6d 20 67 | vate...##...#.Versucht,.in.dem.g |
| 1c7e0 | 65 67 65 62 65 6e 65 6e 20 53 74 72 69 6e 67 20 65 69 6e 20 53 63 68 6c fc 73 73 65 6c 77 6f 72 | egebenen.String.ein.Schl.sselwor |
| 1c800 | 74 20 7a 75 20 65 72 6b 65 6e 6e 65 6e 2e 0d 0a 09 23 20 53 6f 6c 6c 74 65 20 64 61 62 65 69 20 | t.zu.erkennen....#.Sollte.dabei. |
| 1c820 | 65 69 6e 20 4b 65 79 77 6f 72 64 20 67 65 66 75 6e 64 65 6e 20 77 65 72 64 65 6e 2c 20 73 6f 20 | ein.Keyword.gefunden.werden,.so. |
| 1c840 | 67 69 62 74 20 65 72 20 65 69 6e 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2d 4f 62 6a 65 6b 74 20 | gibt.er.ein.PascalSymbol-Objekt. |
| 1c860 | 7a 75 72 fc 63 6b 2c 20 64 61 73 0d 0a 09 23 20 64 61 73 20 65 6e 74 73 70 72 65 63 68 65 6e 64 | zur.ck,.das...#.das.entsprechend |
| 1c880 | 65 20 4b 65 79 77 6f 72 64 20 72 65 70 72 e4 73 65 6e 74 69 65 72 74 2e 20 41 6e 73 6f 6e 73 74 | e.Keyword.repr.sentiert..Ansonst |
| 1c8a0 | 65 6e 20 62 65 73 74 65 68 74 20 64 69 65 20 52 fc 63 6b 67 61 62 65 20 61 75 73 0d 0a 09 23 20 | en.besteht.die.R.ckgabe.aus...#. |
| 1c8c0 | 65 69 6e 65 6d 20 53 79 6d 62 6f 6c 49 64 65 6e 74 2d 4f 62 6a 65 6b 74 20 28 61 62 67 65 6c 65 | einem.SymbolIdent-Objekt.(abgele |
| 1c8e0 | 69 74 65 74 20 76 6f 6e 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 29 2c 20 64 61 73 20 64 65 6e 20 | itet.von.PascalSymbol),.das.den. |
| 1c900 | 53 74 72 69 6e 67 20 31 3a 31 20 65 6e 74 68 e4 6c 74 0d 0a 09 23 20 40 73 65 65 20 73 79 6d 62 | String.1:1.enth.lt...#.@see.symb |
| 1c920 | 6f 6c 0d 0a 09 23 20 40 72 65 74 75 72 6e 20 66 61 6c 6c 73 20 4b 65 79 77 6f 72 64 20 67 65 66 | ol...#.@return.falls.Keyword.gef |
| 1c940 | 75 6e 64 65 6e 2c 20 7a 75 67 65 68 f6 72 69 67 65 73 20 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2c | unden,.zugeh.riges.PascalSymbol, |
| 1c960 | 20 73 6f 6e 73 74 20 53 79 6d 62 6f 6c 49 64 65 6e 74 0d 0a 09 64 65 66 20 68 61 6e 64 6c 65 5f | .sonst.SymbolIdent...def.handle_ |
| 1c980 | 69 64 65 6e 74 69 66 69 65 72 20 69 64 65 6e 74 69 66 69 65 72 0d 0a 09 09 69 66 20 73 79 6d 20 | identifier.identifier....if.sym. |
| 1c9a0 | 3d 20 4b 45 59 57 4f 52 44 5f 53 59 4d 42 4f 4c 53 5b 69 64 65 6e 74 69 66 69 65 72 5d 0d 0a 09 | =.KEYWORD_SYMBOLS[identifier]... |
| 1c9c0 | 09 09 50 61 73 63 61 6c 53 79 6d 62 6f 6c 2e 6e 65 77 20 73 79 6d 0d 0a 09 09 65 6c 73 65 0d 0a | ..PascalSymbol.new.sym....else.. |
| 1c9e0 | 09 09 09 53 79 6d 62 6f 6c 49 64 65 6e 74 2e 6e 65 77 20 69 64 65 6e 74 69 66 69 65 72 0d 0a 09 | ...SymbolIdent.new.identifier... |
| 1ca00 | 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 4d 41 58 49 4e 54 20 3d 20 32 2a 2a 33 31 20 2d 20 | .end...end.....MAXINT.=.2**31.-. |
| 1ca20 | 31 0d 0a 09 4d 41 58 49 4e 54 5f 44 49 56 5f 31 30 20 20 3d 20 4d 41 58 49 4e 54 20 2f 20 31 30 | 1...MAXINT_DIV_10..=.MAXINT./.10 |
| 1ca40 | 0d 0a 09 4d 41 58 49 4e 54 5f 4d 4f 44 5f 31 30 20 20 3d 20 4d 41 58 49 4e 54 20 25 20 31 30 0d | ...MAXINT_MOD_10..=.MAXINT.%.10. |
| 1ca60 | 0a 09 23 23 0d 0a 09 23 20 56 65 72 73 75 63 68 74 2c 20 61 75 73 20 64 65 6d 20 67 65 67 65 62 | ..##...#.Versucht,.aus.dem.gegeb |
| 1ca80 | 65 6e 65 6e 20 5a 65 69 63 68 65 6e 20 75 6e 64 20 64 65 6e 20 66 6f 6c 67 65 6e 64 65 6e 20 65 | enen.Zeichen.und.den.folgenden.e |
| 1caa0 | 69 6e 65 20 5a 61 68 6c 20 7a 75 73 61 6d 6d 65 6e 7a 75 73 65 74 7a 65 6e 2e 0d 0a 09 23 20 44 | ine.Zahl.zusammenzusetzen....#.D |
| 1cac0 | 61 62 65 69 20 77 69 72 64 20 64 65 72 20 72 65 6c 61 74 69 76 20 69 6e 74 75 69 74 69 76 65 20 | abei.wird.der.relativ.intuitive. |
| 1cae0 | 41 6c 67 6f 72 69 74 68 6d 75 73 20 62 65 6e 75 74 7a 74 2c 20 64 69 65 20 65 6e 64 67 fc 6c 74 | Algorithmus.benutzt,.die.endg.lt |
| 1cb00 | 69 67 65 20 5a 61 68 6c 20 62 65 69 0d 0a 09 23 20 6a 65 64 65 72 20 77 65 69 74 65 72 65 6e 20 | ige.Zahl.bei...#.jeder.weiteren. |
| 1cb20 | 5a 69 66 66 65 72 20 6d 69 74 20 31 30 20 7a 75 20 6d 75 6c 74 69 70 6c 69 7a 69 65 72 65 6e 20 | Ziffer.mit.10.zu.multiplizieren. |
| 1cb40 | 75 6e 64 20 64 69 65 73 65 20 64 61 6e 6e 20 6d 69 74 20 64 65 72 20 5a 69 66 66 65 72 20 7a 75 | und.diese.dann.mit.der.Ziffer.zu |
| 1cb60 | 0d 0a 09 23 20 61 64 64 69 65 72 65 6e 2e 20 53 6f 6e 64 65 72 66 e4 6c 6c 65 20 62 65 73 74 65 | ...#.addieren..Sonderf.lle.beste |
| 1cb80 | 68 65 6e 20 64 61 6e 6e 20 6e 75 72 20 6e 6f 63 68 20 69 6e 20 64 65 72 20 42 65 68 61 6e 64 6c | hen.dann.nur.noch.in.der.Behandl |
| 1cba0 | 75 6e 67 20 76 6f 6e 20 72 65 65 6c 6c 65 6e 20 5a 61 68 6c 65 6e 2e 0d 0a 09 23 20 3c 42 52 3e | ung.von.reellen.Zahlen....#.<BR> |
| 1cbc0 | 0d 0a 09 23 20 54 72 65 74 65 6e 20 64 61 62 65 69 20 6b 65 69 6e 20 50 75 6e 6b 74 20 6f 64 65 | ...#.Treten.dabei.kein.Punkt.ode |
| 1cbe0 | 72 20 65 69 6e 20 45 20 61 75 66 2c 20 73 6f 20 67 69 62 74 20 64 69 65 73 65 20 4d 65 74 68 6f | r.ein.E.auf,.so.gibt.diese.Metho |
| 1cc00 | 64 65 20 65 69 6e 20 53 79 6d 62 6f 6c 49 6e 74 43 6f 6e 2d 4f 62 6a 65 6b 74 0d 0a 09 23 20 7a | de.ein.SymbolIntCon-Objekt...#.z |
| 1cc20 | 75 72 fc 63 6b 2c 20 61 6e 73 6f 6e 73 74 65 6e 20 28 72 65 65 6c 6c 65 20 5a 61 68 6c 29 20 65 | ur.ck,.ansonsten.(reelle.Zahl).e |
| 1cc40 | 69 6e 20 53 79 6d 62 6f 6c 52 65 61 6c 43 6f 6e 2d 4f 62 6a 65 6b 74 2e 20 42 65 69 64 65 20 53 | in.SymbolRealCon-Objekt..Beide.S |
| 1cc60 | 79 6d 62 6f 6c 65 20 65 6e 74 68 61 6c 74 65 6e 0d 0a 09 23 20 6a 65 77 65 69 6c 73 20 64 69 65 | ymbole.enthalten...#.jeweils.die |
| 1cc80 | 20 5a 61 68 6c 77 65 72 74 65 2e 0d 0a 09 23 20 3c 42 52 3e 0d 0a 09 23 20 41 6e 6d 65 72 6b 75 | .Zahlwerte....#.<BR>...#.Anmerku |
| 1cca0 | 6e 67 3a 20 44 69 65 73 65 20 46 75 6e 6b 74 69 6f 6e 20 69 73 74 20 6d 69 74 20 48 69 6c 66 65 | ng:.Diese.Funktion.ist.mit.Hilfe |
| 1ccc0 | 20 64 65 72 20 4a 61 76 61 2f 52 75 62 79 2d 41 50 49 20 64 65 75 74 6c 69 63 68 20 6c 65 69 63 | .der.Java/Ruby-API.deutlich.leic |
| 1cce0 | 68 74 65 72 20 7a 75 20 72 65 61 6c 69 73 69 65 72 65 6e 2e 0d 0a 09 23 20 53 69 65 20 77 75 72 | hter.zu.realisieren....#.Sie.wur |
| 1cd00 | 64 65 20 64 65 6e 6e 6f 63 68 20 73 6f 20 69 6d 70 6c 65 6d 65 6e 74 69 65 72 74 2c 20 75 6d 20 | de.dennoch.so.implementiert,.um. |
| 1cd20 | 64 65 6e 20 41 6c 67 6f 72 69 74 68 6d 75 73 20 7a 75 20 64 65 6d 6f 6e 73 74 72 69 65 72 65 6e | den.Algorithmus.zu.demonstrieren |
| 1cd40 | 0d 0a 09 23 20 40 73 65 65 20 73 79 6d 62 6f 6c 0d 0a 09 23 20 40 72 65 74 75 72 6e 20 53 79 6d | ...#.@see.symbol...#.@return.Sym |
| 1cd60 | 62 6f 6c 49 6e 74 63 6f 6e 2d 20 6f 64 65 72 20 53 79 6d 62 6f 6c 52 65 61 6c 63 6f 6e 2d 4f 62 | bolIntcon-.oder.SymbolRealcon-Ob |
| 1cd80 | 6a 65 6b 74 2c 20 64 61 73 20 64 65 6e 20 5a 61 68 6c 77 65 72 74 20 65 6e 74 68 e4 6c 74 0d 0a | jekt,.das.den.Zahlwert.enth.lt.. |
| 1cda0 | 09 64 65 66 20 6e 75 6d 62 65 72 0d 0a 09 09 69 73 5f 69 6e 74 65 67 65 72 20 3d 20 74 72 75 65 | .def.number....is_integer.=.true |
| 1cdc0 | 0d 0a 09 09 69 6e 74 65 67 65 72 5f 74 6f 6f 5f 6c 6f 6e 67 20 3d 20 66 61 6c 73 65 0d 0a 09 09 | ....integer_too_long.=.false.... |
| 1cde0 | 65 78 70 6f 6e 65 6e 74 20 3d 20 30 0d 0a 09 09 65 78 70 5f 63 6f 75 6e 74 65 72 20 3d 20 2d 31 | exponent.=.0....exp_counter.=.-1 |
| 1ce00 | 0d 0a 09 09 65 78 70 5f 73 69 67 6e 20 3d 20 31 0d 0a 0d 0a 09 09 69 6e 74 65 67 65 72 5f 6d 61 | ....exp_sign.=.1......integer_ma |
| 1ce20 | 6e 74 69 73 73 65 20 3d 20 40 63 75 72 72 65 6e 74 5f 63 68 61 72 2e 64 69 67 69 74 0d 0a 0d 0a | ntisse.=.@current_char.digit.... |
| 1ce40 | 09 09 77 68 69 6c 65 20 28 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 74 3f 20 61 6e 64 20 69 | ..while.(@next_char.digit?.and.i |
| 1ce60 | 6e 74 65 67 65 72 5f 6d 61 6e 74 69 73 73 65 20 3c 20 4d 41 58 49 4e 54 5f 44 49 56 5f 31 30 29 | nteger_mantisse.<.MAXINT_DIV_10) |
| 1ce80 | 20 6f 72 0d 0a 09 09 20 28 69 6e 74 65 67 65 72 5f 6d 61 6e 74 69 73 73 65 20 3d 3d 20 4d 41 58 | .or.....(integer_mantisse.==.MAX |
| 1cea0 | 49 4e 54 5f 44 49 56 5f 31 30 20 61 6e 64 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 74 20 | INT_DIV_10.and.@next_char.digit. |
| 1cec0 | 3c 3d 20 4d 41 58 49 4e 54 5f 4d 4f 44 5f 31 30 29 0d 0a 09 09 09 69 6e 74 65 67 65 72 5f 6d 61 | <=.MAXINT_MOD_10).....integer_ma |
| 1cee0 | 6e 74 69 73 73 65 20 2a 3d 20 31 30 0d 0a 09 09 09 69 6e 74 65 67 65 72 5f 6d 61 6e 74 69 73 73 | ntisse.*=.10.....integer_mantiss |
| 1cf00 | 65 20 2b 3d 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 74 0d 0a 09 09 09 72 65 61 64 5f 6e | e.+=.@next_char.digit.....read_n |
| 1cf20 | 65 78 74 5f 63 68 61 72 0d 0a 09 09 65 6e 64 0d 0a 0d 0a 09 09 72 65 61 6c 5f 6d 61 6e 74 69 73 | ext_char....end......real_mantis |
| 1cf40 | 73 65 20 3d 20 69 6e 74 65 67 65 72 5f 6d 61 6e 74 69 73 73 65 0d 0a 0d 0a 09 09 77 68 69 6c 65 | se.=.integer_mantisse......while |
| 1cf60 | 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 74 3f 0d 0a 09 09 09 69 6e 74 65 67 65 72 5f 74 | .@next_char.digit?.....integer_t |
| 1cf80 | 6f 6f 5f 6c 6f 6e 67 20 3d 20 74 72 75 65 0d 0a 09 09 09 72 65 61 6c 5f 6d 61 6e 74 69 73 73 65 | oo_long.=.true.....real_mantisse |
| 1cfa0 | 20 2a 3d 20 31 30 0d 0a 09 09 09 72 65 61 6c 5f 6d 61 6e 74 69 73 73 65 20 2b 3d 20 40 6e 65 78 | .*=.10.....real_mantisse.+=.@nex |
| 1cfc0 | 74 5f 63 68 61 72 2e 64 69 67 69 74 0d 0a 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d | t_char.digit.....read_next_char. |
| 1cfe0 | 0a 09 09 65 6e 64 0d 0a 09 09 69 66 20 40 6e 65 78 74 5f 63 68 61 72 20 3d 3d 20 3f 2e 0d 0a 09 | ...end....if.@next_char.==.?.... |
| 1d000 | 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 69 73 5f 69 6e 74 65 67 65 72 20 | ..read_next_char.....is_integer. |
| 1d020 | 3d 20 66 61 6c 73 65 0d 0a 09 09 09 75 6e 6c 65 73 73 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 | =.false.....unless.@next_char.di |
| 1d040 | 67 69 74 3f 0d 0a 09 09 09 09 45 72 72 6f 72 2e 65 72 72 6f 72 20 31 30 31 2c 20 40 6c 69 6e 65 | git?......Error.error.101,.@line |
| 1d060 | 2c 20 40 70 6f 73 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 77 68 69 6c 65 20 40 6e 65 78 74 5f 63 | ,.@pos.....end.....while.@next_c |
| 1d080 | 68 61 72 2e 64 69 67 69 74 3f 0d 0a 09 09 09 09 72 65 61 6c 5f 6d 61 6e 74 69 73 73 65 20 2b 3d | har.digit?......real_mantisse.+= |
| 1d0a0 | 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 74 20 2a 20 28 31 30 20 2a 2a 20 65 78 70 5f 63 | .@next_char.digit.*.(10.**.exp_c |
| 1d0c0 | 6f 75 6e 74 65 72 29 0d 0a 09 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 | ounter)......read_next_char..... |
| 1d0e0 | 09 65 78 70 5f 63 6f 75 6e 74 65 72 20 2d 3d 20 31 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 65 6e 64 | .exp_counter.-=.1.....end....end |
| 1d100 | 0d 0a 09 09 69 66 20 40 6e 65 78 74 5f 63 68 61 72 20 3d 3d 20 3f 45 0d 0a 09 09 09 69 73 5f 69 | ....if.@next_char.==.?E.....is_i |
| 1d120 | 6e 74 65 67 65 72 20 3d 20 66 61 6c 73 65 0d 0a 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 | nteger.=.false.....read_next_cha |
| 1d140 | 72 0d 0a 09 09 09 69 66 20 40 6e 65 78 74 5f 63 68 61 72 20 3d 3d 20 3f 2d 0d 0a 09 09 09 09 65 | r.....if.@next_char.==.?-......e |
| 1d160 | 78 70 5f 73 69 67 6e 20 3d 20 2d 31 0d 0a 09 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 | xp_sign.=.-1......read_next_char |
| 1d180 | 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 75 6e 6c 65 73 73 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 | .....end.....unless.@next_char.d |
| 1d1a0 | 69 67 69 74 3f 0d 0a 09 09 09 09 45 72 72 6f 72 2e 65 72 72 6f 72 20 31 30 31 2c 20 40 6c 69 6e | igit?......Error.error.101,.@lin |
| 1d1c0 | 65 2c 20 40 70 6f 73 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 77 68 69 6c 65 20 40 6e 65 78 74 5f | e,.@pos.....end.....while.@next_ |
| 1d1e0 | 63 68 61 72 2e 64 69 67 69 74 3f 0d 0a 09 09 09 09 65 78 70 6f 6e 65 6e 74 20 2a 3d 20 31 30 0d | char.digit?......exponent.*=.10. |
| 1d200 | 0a 09 09 09 09 65 78 70 6f 6e 65 6e 74 20 2b 3d 20 40 6e 65 78 74 5f 63 68 61 72 2e 64 69 67 69 | .....exponent.+=.@next_char.digi |
| 1d220 | 74 0d 0a 09 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 72 0d 0a 09 09 09 65 6e 64 0d 0a 09 | t......read_next_char.....end... |
| 1d240 | 09 65 6e 64 0d 0a 0d 0a 09 09 69 66 20 69 73 5f 69 6e 74 65 67 65 72 0d 0a 09 09 09 69 66 20 69 | .end......if.is_integer.....if.i |
| 1d260 | 6e 74 65 67 65 72 5f 74 6f 6f 5f 6c 6f 6e 67 0d 0a 09 09 09 09 45 72 72 6f 72 2e 65 72 72 6f 72 | nteger_too_long......Error.error |
| 1d280 | 20 31 30 32 2c 20 40 6c 69 6e 65 2c 20 40 70 6f 73 0d 0a 09 09 09 65 6e 64 0d 0a 09 09 09 53 79 | .102,.@line,.@pos.....end.....Sy |
| 1d2a0 | 6d 62 6f 6c 49 6e 74 63 6f 6e 2e 6e 65 77 20 69 6e 74 65 67 65 72 5f 6d 61 6e 74 69 73 73 65 0d | mbolIntcon.new.integer_mantisse. |
| 1d2c0 | 0a 09 09 65 6c 73 65 0d 0a 09 09 09 53 79 6d 62 6f 6c 52 65 61 6c 63 6f 6e 2e 6e 65 77 20 72 65 | ...else.....SymbolRealcon.new.re |
| 1d2e0 | 61 6c 5f 6d 61 6e 74 69 73 73 65 20 2a 20 28 31 30 20 2a 2a 20 28 65 78 70 5f 73 69 67 6e 20 2a | al_mantisse.*.(10.**.(exp_sign.* |
| 1d300 | 20 65 78 70 6f 6e 65 6e 74 29 29 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 23 23 0d | .exponent))....end...end.....##. |
| 1d320 | 0a 09 23 20 53 6f 72 67 74 20 66 fc 72 20 65 69 6e 20 dc 62 65 72 6c 65 73 65 6e 20 76 6f 6e 20 | ..#.Sorgt.f.r.ein..berlesen.von. |
| 1d340 | 4b 6f 6d 6d 65 6e 74 61 72 65 6e 2e 0d 0a 09 23 20 45 73 20 77 65 72 64 65 6e 20 65 69 6e 66 61 | Kommentaren....#.Es.werden.einfa |
| 1d360 | 63 68 20 61 6c 6c 65 20 5a 65 69 63 68 65 6e 20 62 69 73 20 7a 75 20 65 69 6e 65 72 20 73 63 68 | ch.alle.Zeichen.bis.zu.einer.sch |
| 1d380 | 6c 69 65 df 65 6e 64 65 6e 20 4b 6c 61 6d 6d 65 72 20 65 69 6e 67 65 6c 65 73 65 6e 0d 0a 09 23 | lie.enden.Klammer.eingelesen...# |
| 1d3a0 | 20 75 6e 64 20 76 65 72 77 6f 72 66 65 6e 2e 0d 0a 09 64 65 66 20 63 6f 6d 6d 65 6e 74 0d 0a 09 | .und.verworfen....def.comment... |
| 1d3c0 | 09 77 68 69 6c 65 20 40 63 75 72 72 65 6e 74 5f 63 68 61 72 20 21 3d 20 3f 7d 0d 0a 09 09 09 66 | .while.@current_char.!=.?}.....f |
| 1d3e0 | 6f 72 62 69 64 5f 65 6f 70 0d 0a 09 09 09 6e 65 77 5f 6c 69 6e 65 20 69 66 20 40 63 75 72 72 65 | orbid_eop.....new_line.if.@curre |
| 1d400 | 6e 74 5f 63 68 61 72 20 3d 3d 20 3f 5c 6e 0d 0a 09 09 09 72 65 61 64 5f 6e 65 78 74 5f 63 68 61 | nt_char.==.?\n.....read_next_cha |
| 1d420 | 72 0d 0a 09 09 65 6e 64 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 6e 65 77 5f 6c 69 6e 65 0d | r....end...end.....def.new_line. |
| 1d440 | 0a 09 09 40 6c 69 6e 65 20 2b 3d 20 31 0d 0a 09 09 40 70 6f 73 20 3d 20 30 0d 0a 09 65 6e 64 0d | ...@line.+=.1....@pos.=.0...end. |
| 1d460 | 0a 0d 0a 09 64 65 66 20 66 6f 72 62 69 64 5f 65 6f 70 0d 0a 09 09 69 66 20 65 6f 70 3f 0d 0a 09 | ....def.forbid_eop....if.eop?... |
| 1d480 | 09 09 45 72 72 6f 72 2e 65 72 72 6f 72 20 31 30 33 2c 20 40 6c 69 6e 65 2c 20 40 70 6f 73 0d 0a | ..Error.error.103,.@line,.@pos.. |
| 1d4a0 | 09 09 65 6e 64 0d 0a 09 09 65 78 69 74 0d 0a 09 65 6e 64 0d 0a 0d 0a 09 64 65 66 20 65 6f 70 3f | ..end....exit...end.....def.eop? |
| 1d4c0 | 0d 0a 09 09 40 63 75 72 72 65 6e 74 5f 63 68 61 72 2e 6e 69 6c 3f 0d 0a 09 65 6e 64 0d 0a 65 6e | ....@current_char.nil?...end..en |
| 1d4e0 | 64 0d 0a 0d 0a 23 23 0d 0a 23 20 4c e4 df 74 20 65 69 6e 20 54 65 73 74 70 72 6f 67 72 61 6d 6d | d....##..#.L..t.ein.Testprogramm |
| 1d500 | 20 61 62 6c 61 75 66 65 6e 2e 0d 0a 23 20 44 69 65 73 65 73 20 65 72 7a 65 75 67 74 20 73 69 63 | .ablaufen...#.Dieses.erzeugt.sic |
| 1d520 | 68 20 65 69 6e 20 53 63 61 6e 6e 65 72 2d 4f 62 6a 65 6b 74 20 75 6e 64 20 72 75 66 74 20 61 6e | h.ein.Scanner-Objekt.und.ruft.an |
| 1d540 | 20 64 69 65 73 65 6d 20 6b 6f 6e 74 69 6e 75 69 65 72 6c 69 63 68 20 62 69 73 20 7a 75 6d 20 44 | .diesem.kontinuierlich.bis.zum.D |
| 1d560 | 61 74 65 69 65 6e 64 65 0d 0a 23 20 67 65 74 5f 73 79 6d 62 6f 6c 20 61 75 66 2e 0d 0a 69 66 20 | ateiende..#.get_symbol.auf...if. |
| 1d580 | 24 30 20 3d 3d 20 5f 5f 46 49 4c 45 5f 5f 0d 0a 09 73 63 61 6e 20 3d 20 53 63 61 6e 6e 65 72 2e | $0.==.__FILE__...scan.=.Scanner. |
| 1d5a0 | 6e 65 77 28 46 69 6c 65 2e 6e 65 77 28 41 52 47 56 5b 30 5d 20 7c 7c 20 27 74 65 73 74 2e 70 61 | new(File.new(ARGV[0].||.'test.pa |
| 1d5c0 | 73 27 29 29 0d 0a 09 6c 6f 6f 70 20 64 6f 0d 0a 09 09 63 20 3d 20 73 63 61 6e 2e 67 65 74 5f 73 | s'))...loop.do....c.=.scan.get_s |
| 1d5e0 | 79 6d 62 6f 6c 0d 0a 09 09 70 75 74 73 20 63 0d 0a 09 09 62 72 65 61 6b 20 69 66 20 63 2e 74 79 | ymbol....puts.c....break.if.c.ty |
| 1d600 | 70 20 3d 3d 20 54 6f 6b 65 6e 43 6f 6e 73 74 73 3a 3a 45 4f 50 0d 0a 09 65 6e 64 0d 0a 65 6e 64 | p.==.TokenConsts::EOP...end..end |
| 1d620 | 0d 0a 23 20 2d 2a 2d 20 72 75 62 79 20 2d 2a 2d 0d 0a 0d 0a 23 20 4c 6f 63 61 6c 20 76 61 72 69 | ..#.-*-.ruby.-*-....#.Local.vari |
| 1d640 | 61 62 6c 65 73 3a 0d 0a 23 20 20 69 6e 64 65 6e 74 2d 74 61 62 73 2d 6d 6f 64 65 3a 20 6e 69 6c | ables:..#..indent-tabs-mode:.nil |
| 1d660 | 0d 0a 23 20 20 72 75 62 79 2d 69 6e 64 65 6e 74 2d 6c 65 76 65 6c 3a 20 34 0d 0a 23 20 45 6e 64 | ..#..ruby-indent-level:.4..#.End |
| 1d680 | 3a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 4e 41 4d 45 0d 0a 23 20 40 40 53 4b 49 50 40 | :....#.@@PLEAC@@_NAME..#.@@SKIP@ |
| 1d6a0 | 40 20 52 75 62 79 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 57 45 42 0d 0a 23 20 40 40 53 | @.Ruby....#.@@PLEAC@@_WEB..#.@@S |
| 1d6c0 | 4b 49 50 40 40 20 68 74 74 70 3a 2f 2f 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 0d 0a | KIP@@.http://www.ruby-lang.org.. |
| 1d6e0 | 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 30 0d 0a 73 74 72 69 6e 67 20 3d 20 27 5c | ....#.@@PLEAC@@_1.0..string.=.'\ |
| 1d700 | 6e 27 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 77 6f 20 63 68 61 | n'.....................#.two.cha |
| 1d720 | 72 61 63 74 65 72 73 2c 20 5c 20 61 6e 64 20 61 6e 20 6e 0d 0a 73 74 72 69 6e 67 20 3d 20 27 4a | racters,.\.and.an.n..string.=.'J |
| 1d740 | 6f 6e 20 5c 27 4d 61 64 64 6f 67 5c 27 20 4f 72 77 61 6e 74 27 20 20 23 20 6c 69 74 65 72 61 6c | on.\'Maddog\'.Orwant'..#.literal |
| 1d760 | 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d 20 22 5c 6e 22 20 | .single.quotes....string.=."\n". |
| 1d780 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 20 22 6e 65 77 6c 69 6e 65 | ....................#.a."newline |
| 1d7a0 | 22 20 63 68 61 72 61 63 74 65 72 0d 0a 73 74 72 69 6e 67 20 3d 20 22 4a 6f 6e 20 5c 22 4d 61 64 | ".character..string.=."Jon.\"Mad |
| 1d7c0 | 64 6f 67 5c 22 20 4f 72 77 61 6e 74 22 20 20 23 20 6c 69 74 65 72 61 6c 20 64 6f 75 62 6c 65 20 | dog\".Orwant"..#.literal.double. |
| 1d7e0 | 71 75 6f 74 65 73 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d 20 25 71 2f 4a 6f 6e 20 27 4d 61 64 64 6f | quotes....string.=.%q/Jon.'Maddo |
| 1d800 | 67 27 20 4f 72 77 61 6e 74 2f 20 20 23 20 6c 69 74 65 72 61 6c 20 73 69 6e 67 6c 65 20 71 75 6f | g'.Orwant/..#.literal.single.quo |
| 1d820 | 74 65 73 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d 20 25 71 5b 4a 6f 6e 20 27 4d 61 64 64 6f 67 27 20 | tes....string.=.%q[Jon.'Maddog'. |
| 1d840 | 4f 72 77 61 6e 74 5d 20 20 23 20 6c 69 74 65 72 61 6c 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 | Orwant]..#.literal.single.quotes |
| 1d860 | 0d 0a 73 74 72 69 6e 67 20 3d 20 25 71 7b 4a 6f 6e 20 27 4d 61 64 64 6f 67 27 20 4f 72 77 61 6e | ..string.=.%q{Jon.'Maddog'.Orwan |
| 1d880 | 74 7d 20 20 23 20 6c 69 74 65 72 61 6c 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 0d 0a 73 74 72 | t}..#.literal.single.quotes..str |
| 1d8a0 | 69 6e 67 20 3d 20 25 71 28 4a 6f 6e 20 27 4d 61 64 64 6f 67 27 20 4f 72 77 61 6e 74 29 20 20 23 | ing.=.%q(Jon.'Maddog'.Orwant)..# |
| 1d8c0 | 20 6c 69 74 65 72 61 6c 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 0d 0a 73 74 72 69 6e 67 20 3d | .literal.single.quotes..string.= |
| 1d8e0 | 20 25 71 3c 4a 6f 6e 20 27 4d 61 64 64 6f 67 27 20 4f 72 77 61 6e 74 3e 20 20 23 20 6c 69 74 65 | .%q<Jon.'Maddog'.Orwant>..#.lite |
| 1d900 | 72 61 6c 20 73 69 6e 67 6c 65 20 71 75 6f 74 65 73 0d 0a 0d 0a 61 20 3d 20 3c 3c 22 45 4f 46 22 | ral.single.quotes....a.=.<<"EOF" |
| 1d920 | 0d 0a 54 68 69 73 20 69 73 20 61 20 6d 75 6c 74 69 6c 69 6e 65 20 68 65 72 65 20 64 6f 63 75 6d | ..This.is.a.multiline.here.docum |
| 1d940 | 65 6e 74 0d 0a 74 65 72 6d 69 6e 61 74 65 64 20 62 79 20 45 4f 46 20 6f 6e 20 61 20 6c 69 6e 65 | ent..terminated.by.EOF.on.a.line |
| 1d960 | 20 62 79 20 69 74 73 65 6c 66 0d 0a 45 4f 46 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | .by.itself..EOF......#.@@PLEAC@@ |
| 1d980 | 5f 31 2e 31 0d 0a 76 61 6c 75 65 20 3d 20 73 74 72 69 6e 67 5b 6f 66 66 73 65 74 2c 63 6f 75 6e | _1.1..value.=.string[offset,coun |
| 1d9a0 | 74 5d 0d 0a 76 61 6c 75 65 20 3d 20 73 74 72 69 6e 67 5b 6f 66 66 73 65 74 2e 2e 2d 31 5d 0d 0a | t]..value.=.string[offset..-1].. |
| 1d9c0 | 0d 0a 73 74 72 69 6e 67 5b 6f 66 66 73 65 74 2c 63 6f 75 6e 74 5d 20 3d 20 6e 65 77 73 74 72 69 | ..string[offset,count].=.newstri |
| 1d9e0 | 6e 67 0d 0a 73 74 72 69 6e 67 5b 6f 66 66 73 65 74 2e 2e 2d 31 5d 20 20 20 3d 20 6e 65 77 74 61 | ng..string[offset..-1]...=.newta |
| 1da00 | 69 6c 0d 0a 0d 0a 23 20 69 6e 20 52 75 62 79 20 77 65 20 63 61 6e 20 61 6c 73 6f 20 73 70 65 63 | il....#.in.Ruby.we.can.also.spec |
| 1da20 | 69 66 79 20 69 6e 74 65 72 76 61 6c 73 20 62 79 20 74 68 65 69 72 20 74 77 6f 20 6f 66 66 73 65 | ify.intervals.by.their.two.offse |
| 1da40 | 74 73 0d 0a 76 61 6c 75 65 20 3d 20 73 74 72 69 6e 67 5b 6f 66 66 73 65 74 2e 2e 6f 66 66 73 32 | ts..value.=.string[offset..offs2 |
| 1da60 | 5d 0d 0a 73 74 72 69 6e 67 5b 6f 66 66 73 65 74 2e 2e 6f 66 66 73 32 5d 20 3d 20 6e 65 77 73 74 | ]..string[offset..offs2].=.newst |
| 1da80 | 72 69 6e 67 0d 0a 0d 0a 6c 65 61 64 69 6e 67 2c 20 73 31 2c 20 73 32 2c 20 74 72 61 69 6c 69 6e | ring....leading,.s1,.s2,.trailin |
| 1daa0 | 67 20 3d 20 64 61 74 61 2e 75 6e 70 61 63 6b 28 22 41 35 20 78 33 20 41 38 20 41 38 20 41 2a 22 | g.=.data.unpack("A5.x3.A8.A8.A*" |
| 1dac0 | 29 0d 0a 0d 0a 66 69 76 65 72 73 20 3d 20 73 74 72 69 6e 67 2e 75 6e 70 61 63 6b 28 22 41 35 22 | )....fivers.=.string.unpack("A5" |
| 1dae0 | 20 2a 20 28 73 74 72 69 6e 67 2e 6c 65 6e 67 74 68 2f 35 29 29 0d 0a 0d 0a 63 68 61 72 73 20 3d | .*.(string.length/5))....chars.= |
| 1db00 | 20 73 74 72 69 6e 67 2e 75 6e 70 61 63 6b 28 22 41 31 22 20 2a 20 73 74 72 69 6e 67 2e 6c 65 6e | .string.unpack("A1".*.string.len |
| 1db20 | 67 74 68 29 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d 20 22 54 68 69 73 20 69 73 20 77 68 61 74 20 79 | gth)....string.=."This.is.what.y |
| 1db40 | 6f 75 20 68 61 76 65 22 0d 0a 23 20 20 20 20 20 20 20 20 2b 30 31 32 33 34 35 36 37 38 39 30 31 | ou.have"..#........+012345678901 |
| 1db60 | 32 33 34 35 36 37 38 39 30 20 20 49 6e 64 65 78 69 6e 67 20 66 6f 72 77 61 72 64 73 20 20 28 6c | 234567890..Indexing.forwards..(l |
| 1db80 | 65 66 74 20 74 6f 20 72 69 67 68 74 29 0d 0a 23 20 20 20 20 20 20 20 20 20 31 30 39 38 37 36 35 | eft.to.right)..#.........1098765 |
| 1dba0 | 34 33 32 31 30 39 38 37 36 35 34 33 32 31 2d 20 49 6e 64 65 78 69 6e 67 20 62 61 63 6b 77 61 72 | 43210987654321-.Indexing.backwar |
| 1dbc0 | 64 73 20 28 72 69 67 68 74 20 74 6f 20 6c 65 66 74 29 0d 0a 23 20 20 20 20 20 20 20 20 20 20 6e | ds.(right.to.left)..#..........n |
| 1dbe0 | 6f 74 65 20 74 68 61 74 20 30 20 6d 65 61 6e 73 20 31 30 20 6f 72 20 32 30 2c 20 65 74 63 2e 20 | ote.that.0.means.10.or.20,.etc.. |
| 1dc00 | 61 62 6f 76 65 0d 0a 0d 0a 66 69 72 73 74 20 20 3d 20 73 74 72 69 6e 67 5b 30 2c 20 31 5d 20 20 | above....first..=.string[0,.1].. |
| 1dc20 | 20 20 20 20 20 23 20 22 54 22 0d 0a 73 74 61 72 74 20 20 3d 20 73 74 72 69 6e 67 5b 35 2c 20 32 | .....#."T"..start..=.string[5,.2 |
| 1dc40 | 5d 20 20 20 20 20 20 20 23 20 22 69 73 22 0d 0a 72 65 73 74 20 20 20 3d 20 73 74 72 69 6e 67 5b | ].......#."is"..rest...=.string[ |
| 1dc60 | 31 33 2e 2e 2d 31 5d 20 20 20 20 20 23 20 22 79 6f 75 20 68 61 76 65 22 0d 0a 6c 61 73 74 20 20 | 13..-1].....#."you.have"..last.. |
| 1dc80 | 20 3d 20 73 74 72 69 6e 67 5b 2d 31 2c 20 31 5d 20 20 20 20 20 20 23 20 22 65 22 0d 0a 65 6e 64 | .=.string[-1,.1]......#."e"..end |
| 1dca0 | 5f 20 20 20 3d 20 73 74 72 69 6e 67 5b 2d 34 2e 2e 2d 31 5d 20 20 20 20 20 23 20 22 68 61 76 65 | _...=.string[-4..-1].....#."have |
| 1dcc0 | 22 0d 0a 70 69 65 63 65 20 20 3d 20 73 74 72 69 6e 67 5b 2d 38 2c 20 33 5d 20 20 20 20 20 20 23 | "..piece..=.string[-8,.3]......# |
| 1dce0 | 20 22 79 6f 75 22 0d 0a 0d 0a 73 74 72 69 6e 67 5b 35 2c 20 32 5d 20 3d 20 22 77 61 73 6e 27 74 | ."you"....string[5,.2].=."wasn't |
| 1dd00 | 22 20 20 20 20 20 23 20 63 68 61 6e 67 65 20 22 69 73 22 20 74 6f 20 22 77 61 73 6e 27 74 22 0d | ".....#.change."is".to."wasn't". |
| 1dd20 | 0a 73 74 72 69 6e 67 5b 2d 31 32 2e 2e 2d 31 5d 20 3d 20 22 6f 6e 64 72 6f 75 73 22 20 23 20 22 | .string[-12..-1].=."ondrous".#." |
| 1dd40 | 54 68 69 73 20 77 61 73 6e 27 74 20 77 6f 6e 64 72 6f 75 73 22 0d 0a 73 74 72 69 6e 67 5b 30 2c | This.wasn't.wondrous"..string[0, |
| 1dd60 | 20 31 5d 20 3d 20 22 22 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 6c 65 74 65 20 66 69 72 73 | .1].=.""...........#.delete.firs |
| 1dd80 | 74 20 63 68 61 72 61 63 74 65 72 0d 0a 73 74 72 69 6e 67 5b 2d 31 30 2e 2e 2d 31 5d 20 20 3d 20 | t.character..string[-10..-1]..=. |
| 1dda0 | 22 22 20 20 20 20 20 20 20 23 20 64 65 6c 65 74 65 20 6c 61 73 74 20 31 30 20 63 68 61 72 61 63 | "".......#.delete.last.10.charac |
| 1ddc0 | 74 65 72 73 0d 0a 0d 0a 69 66 20 73 74 72 69 6e 67 5b 2d 31 30 2e 2e 2d 31 5d 20 3d 7e 20 2f 70 | ters....if.string[-10..-1].=~./p |
| 1dde0 | 61 74 74 65 72 6e 2f 0d 0a 20 20 20 20 70 75 74 73 20 22 50 61 74 74 65 72 6e 20 6d 61 74 63 68 | attern/......puts."Pattern.match |
| 1de00 | 65 73 20 69 6e 20 6c 61 73 74 20 31 30 20 63 68 61 72 61 63 74 65 72 73 22 0d 0a 65 6e 64 0d 0a | es.in.last.10.characters"..end.. |
| 1de20 | 0d 0a 73 74 72 69 6e 67 5b 30 2c 20 35 5d 2e 67 73 75 62 21 28 2f 69 73 2f 2c 20 27 61 74 27 29 | ..string[0,.5].gsub!(/is/,.'at') |
| 1de40 | 0d 0a 0d 0a 61 20 3d 20 22 6d 61 6b 65 20 61 20 68 61 74 22 0d 0a 61 5b 30 2c 20 31 5d 2c 20 61 | ....a.=."make.a.hat"..a[0,.1],.a |
| 1de60 | 5b 2d 31 2c 20 31 5d 20 3d 20 61 5b 2d 31 2c 20 31 5d 2c 20 61 5b 30 2c 20 31 5d 0d 0a 0d 0a 61 | [-1,.1].=.a[-1,.1],.a[0,.1]....a |
| 1de80 | 20 3d 20 22 54 6f 20 62 65 20 6f 72 20 6e 6f 74 20 74 6f 20 62 65 22 0d 0a 62 20 3d 20 61 2e 75 | .=."To.be.or.not.to.be"..b.=.a.u |
| 1dea0 | 6e 70 61 63 6b 28 22 78 36 20 41 36 22 29 0d 0a 0d 0a 62 2c 20 63 20 3d 20 61 2e 75 6e 70 61 63 | npack("x6.A6")....b,.c.=.a.unpac |
| 1dec0 | 6b 28 22 78 36 20 41 32 20 58 35 20 41 32 22 29 0d 0a 70 75 74 73 20 22 23 7b 62 7d 5c 6e 23 7b | k("x6.A2.X5.A2")..puts."#{b}\n#{ |
| 1dee0 | 63 7d 5c 6e 22 0d 0a 0d 0a 64 65 66 20 63 75 74 32 66 6d 74 28 2a 61 72 67 73 29 0d 0a 20 20 20 | c}\n"....def.cut2fmt(*args)..... |
| 1df00 | 20 74 65 6d 70 6c 61 74 65 20 3d 20 27 27 0d 0a 20 20 20 20 6c 61 73 74 70 6f 73 20 20 3d 20 31 | .template.=.''......lastpos..=.1 |
| 1df20 | 0d 0a 20 20 20 20 66 6f 72 20 70 6c 61 63 65 20 69 6e 20 61 72 67 73 0d 0a 20 20 20 20 20 20 20 | ......for.place.in.args......... |
| 1df40 | 20 74 65 6d 70 6c 61 74 65 20 2b 3d 20 22 41 22 20 2b 20 28 70 6c 61 63 65 20 2d 20 6c 61 73 74 | .template.+=."A".+.(place.-.last |
| 1df60 | 70 6f 73 29 2e 74 6f 5f 73 20 2b 20 22 20 22 0d 0a 20 20 20 20 20 20 20 20 6c 61 73 74 70 6f 73 | pos).to_s.+."."..........lastpos |
| 1df80 | 20 20 20 3d 20 70 6c 61 63 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 74 65 6d 70 6c 61 74 | ...=.place......end......templat |
| 1dfa0 | 65 20 2b 3d 20 22 41 2a 22 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 74 65 6d 70 6c 61 74 65 0d 0a | e.+=."A*"......return.template.. |
| 1dfc0 | 65 6e 64 0d 0a 0d 0a 66 6d 74 20 3d 20 63 75 74 32 66 6d 74 28 38 2c 20 31 34 2c 20 32 30 2c 20 | end....fmt.=.cut2fmt(8,.14,.20,. |
| 1dfe0 | 32 36 2c 20 33 30 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 32 0d 0a 23 20 | 26,.30)......#.@@PLEAC@@_1.2..#. |
| 1e000 | 63 61 72 65 66 75 6c 21 20 22 62 20 69 73 20 74 72 75 65 22 20 64 6f 65 73 6e 27 74 20 6d 65 61 | careful!."b.is.true".doesn't.mea |
| 1e020 | 6e 20 22 62 20 21 3d 20 30 22 20 28 30 20 69 73 20 74 72 75 65 20 69 6e 20 52 75 62 79 29 0d 0a | n."b.!=.0".(0.is.true.in.Ruby).. |
| 1e040 | 23 20 74 68 75 73 20 6e 6f 20 70 72 6f 62 6c 65 6d 20 6f 66 20 22 64 65 66 69 6e 65 64 22 20 6c | #.thus.no.problem.of."defined".l |
| 1e060 | 61 74 65 72 20 73 69 6e 63 65 20 6f 6e 6c 79 20 6e 69 6c 20 69 73 20 66 61 6c 73 65 0d 0a 23 20 | ater.since.only.nil.is.false..#. |
| 1e080 | 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 73 65 74 73 20 74 6f 20 60 63 27 20 69 66 20 60 62 27 | the.following.sets.to.`c'.if.`b' |
| 1e0a0 | 20 69 73 20 6e 69 6c 20 6f 72 20 66 61 6c 73 65 0d 0a 61 20 3d 20 62 20 7c 7c 20 63 0d 0a 0d 0a | .is.nil.or.false..a.=.b.||.c.... |
| 1e0c0 | 23 20 69 66 20 79 6f 75 20 6e 65 65 64 20 50 65 72 6c 27 73 20 62 65 68 61 76 69 6f 75 72 20 28 | #.if.you.need.Perl's.behaviour.( |
| 1e0e0 | 73 65 74 74 69 6e 67 20 74 6f 20 60 63 27 20 69 66 20 60 62 27 20 69 73 20 30 29 20 74 68 65 20 | setting.to.`c'.if.`b'.is.0).the. |
| 1e100 | 6d 6f 73 74 0d 0a 23 20 65 66 66 65 63 74 69 76 65 20 77 61 79 20 69 73 20 74 6f 20 75 73 65 20 | most..#.effective.way.is.to.use. |
| 1e120 | 4e 75 6d 65 72 69 63 23 6e 6f 6e 7a 65 72 6f 3f 20 28 74 68 61 6e 6b 73 20 74 6f 20 44 61 76 65 | Numeric#nonzero?.(thanks.to.Dave |
| 1e140 | 20 54 68 6f 6d 61 73 21 29 0d 0a 61 20 3d 20 62 2e 6e 6f 6e 7a 65 72 6f 3f 20 7c 7c 20 63 0d 0a | .Thomas!)..a.=.b.nonzero?.||.c.. |
| 1e160 | 0d 0a 23 20 79 6f 75 20 77 69 6c 6c 20 73 74 69 6c 6c 20 77 61 6e 74 20 74 6f 20 75 73 65 20 64 | ..#.you.will.still.want.to.use.d |
| 1e180 | 65 66 69 6e 65 64 3f 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 74 65 73 74 0d 0a 23 20 66 6f 72 20 | efined?.in.order.to.test..#.for. |
| 1e1a0 | 73 63 6f 70 65 20 65 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 67 69 76 65 6e 20 6f 62 6a 65 63 | scope.existence.of.a.given.objec |
| 1e1c0 | 74 0d 0a 61 20 3d 20 64 65 66 69 6e 65 64 3f 28 62 29 20 3f 20 62 20 3a 20 63 0d 0a 0d 0a 64 69 | t..a.=.defined?(b).?.b.:.c....di |
| 1e1e0 | 72 20 3d 20 41 52 47 56 2e 73 68 69 66 74 20 7c 7c 20 22 2f 74 6d 70 22 0d 0a 0d 0a 0d 0a 23 20 | r.=.ARGV.shift.||."/tmp"......#. |
| 1e200 | 40 40 50 4c 45 41 43 40 40 5f 31 2e 33 0d 0a 76 31 2c 20 76 32 20 3d 20 76 32 2c 20 76 31 0d 0a | @@PLEAC@@_1.3..v1,.v2.=.v2,.v1.. |
| 1e220 | 0d 0a 61 6c 70 68 61 2c 20 62 65 74 61 2c 20 70 72 6f 64 75 63 74 69 6f 6e 20 3d 20 25 77 28 4a | ..alpha,.beta,.production.=.%w(J |
| 1e240 | 61 6e 75 61 72 79 20 4d 61 72 63 68 20 41 75 67 75 73 74 29 0d 0a 61 6c 70 68 61 2c 20 62 65 74 | anuary.March.August)..alpha,.bet |
| 1e260 | 61 2c 20 70 72 6f 64 75 63 74 69 6f 6e 20 3d 20 62 65 74 61 2c 20 70 72 6f 64 75 63 74 69 6f 6e | a,.production.=.beta,.production |
| 1e280 | 2c 20 61 6c 70 68 61 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 34 0d 0a 6e 75 | ,.alpha......#.@@PLEAC@@_1.4..nu |
| 1e2a0 | 6d 20 3d 20 63 68 61 72 5b 30 5d 0d 0a 63 68 61 72 20 3d 20 6e 75 6d 2e 63 68 72 0d 0a 0d 0a 23 | m.=.char[0]..char.=.num.chr....# |
| 1e2c0 | 20 52 75 62 79 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 68 61 76 69 6e 67 20 61 20 63 68 61 | .Ruby.also.supports.having.a.cha |
| 1e2e0 | 72 20 66 72 6f 6d 20 63 68 61 72 61 63 74 65 72 20 63 6f 6e 73 74 61 6e 74 0d 0a 6e 75 6d 20 3d | r.from.character.constant..num.= |
| 1e300 | 20 3f 72 0d 0a 0d 0a 63 68 61 72 20 3d 20 73 70 72 69 6e 74 66 28 22 25 63 22 2c 20 6e 75 6d 29 | .?r....char.=.sprintf("%c",.num) |
| 1e320 | 0d 0a 70 72 69 6e 74 66 28 22 4e 75 6d 62 65 72 20 25 64 20 69 73 20 63 68 61 72 61 63 74 65 72 | ..printf("Number.%d.is.character |
| 1e340 | 20 25 63 5c 6e 22 2c 20 6e 75 6d 2c 20 6e 75 6d 29 0d 0a 0d 0a 61 73 63 69 69 20 3d 20 73 74 72 | .%c\n",.num,.num)....ascii.=.str |
| 1e360 | 69 6e 67 2e 75 6e 70 61 63 6b 28 22 43 2a 22 29 0d 0a 73 74 72 69 6e 67 20 3d 20 61 73 63 69 69 | ing.unpack("C*")..string.=.ascii |
| 1e380 | 2e 70 61 63 6b 28 22 43 2a 22 29 0d 0a 0d 0a 68 61 6c 20 3d 20 22 48 41 4c 22 0d 0a 61 73 63 69 | .pack("C*")....hal.=."HAL"..asci |
| 1e3a0 | 69 20 3d 20 68 61 6c 2e 75 6e 70 61 63 6b 28 22 43 2a 22 29 0d 0a 23 20 57 65 20 63 61 6e 27 74 | i.=.hal.unpack("C*")..#.We.can't |
| 1e3c0 | 20 75 73 65 20 41 72 72 61 79 23 65 61 63 68 20 73 69 6e 63 65 20 77 65 20 63 61 6e 27 74 20 6d | .use.Array#each.since.we.can't.m |
| 1e3e0 | 75 74 61 74 65 20 61 20 46 69 78 6e 75 6d 0d 0a 61 73 63 69 69 2e 63 6f 6c 6c 65 63 74 21 20 7b | utate.a.Fixnum..ascii.collect!.{ |
| 1e400 | 20 7c 69 7c 0d 0a 20 20 20 20 69 20 2b 20 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .|i|......i.+.1................. |
| 1e420 | 20 20 20 20 20 20 20 20 23 20 61 64 64 20 6f 6e 65 20 74 6f 20 65 61 63 68 20 41 53 43 49 49 20 | ........#.add.one.to.each.ASCII. |
| 1e440 | 76 61 6c 75 65 0d 0a 7d 0d 0a 69 62 6d 20 3d 20 61 73 63 69 69 2e 70 61 63 6b 28 22 43 2a 22 29 | value..}..ibm.=.ascii.pack("C*") |
| 1e460 | 0d 0a 70 75 74 73 20 69 62 6d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 35 0d | ..puts.ibm......#.@@PLEAC@@_1.5. |
| 1e480 | 0a 61 72 72 61 79 20 3d 20 73 74 72 69 6e 67 2e 73 70 6c 69 74 28 27 27 29 0d 0a 0d 0a 61 72 72 | .array.=.string.split('')....arr |
| 1e4a0 | 61 79 20 3d 20 73 74 72 69 6e 67 2e 75 6e 70 61 63 6b 28 22 43 2a 22 29 0d 0a 0d 0a 73 74 72 69 | ay.=.string.unpack("C*")....stri |
| 1e4c0 | 6e 67 2e 73 63 61 6e 28 2f 2e 2f 29 20 7b 20 7c 62 7c 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d | ng.scan(/./).{.|b|......#.do.som |
| 1e4e0 | 65 74 68 69 6e 67 20 77 69 74 68 20 62 0d 0a 7d 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d 20 22 61 6e | ething.with.b..}....string.=."an |
| 1e500 | 20 61 70 70 6c 65 20 61 20 64 61 79 22 0d 0a 70 72 69 6e 74 20 22 75 6e 69 71 75 65 20 63 68 61 | .apple.a.day"..print."unique.cha |
| 1e520 | 72 73 20 61 72 65 3a 20 22 2c 20 73 74 72 69 6e 67 2e 73 70 6c 69 74 28 27 27 29 2e 75 6e 69 71 | rs.are:.",.string.split('').uniq |
| 1e540 | 2e 73 6f 72 74 2c 20 22 5c 6e 22 0d 0a 0d 0a 73 75 6d 20 3d 20 30 0d 0a 66 6f 72 20 61 73 63 76 | .sort,."\n"....sum.=.0..for.ascv |
| 1e560 | 61 6c 20 69 6e 20 73 74 72 69 6e 67 2e 75 6e 70 61 63 6b 28 22 43 2a 22 29 20 23 20 6f 72 20 75 | al.in.string.unpack("C*").#.or.u |
| 1e580 | 73 65 20 41 72 72 61 79 23 65 61 63 68 20 66 6f 72 20 61 20 70 75 72 65 20 4f 4f 20 73 74 79 6c | se.Array#each.for.a.pure.OO.styl |
| 1e5a0 | 65 20 3a 29 0d 0a 20 20 20 20 73 75 6d 20 2b 3d 20 61 73 63 76 61 6c 0d 0a 65 6e 64 0d 0a 70 75 | e.:)......sum.+=.ascval..end..pu |
| 1e5c0 | 74 73 20 22 73 75 6d 20 69 73 20 23 7b 73 75 6d 20 26 20 30 78 66 66 66 66 66 66 66 66 7d 22 20 | ts."sum.is.#{sum.&.0xffffffff}". |
| 1e5e0 | 23 20 73 69 6e 63 65 20 52 75 62 79 20 77 69 6c 6c 20 67 6f 20 42 69 67 6e 75 6d 20 69 66 20 6e | #.since.Ruby.will.go.Bignum.if.n |
| 1e600 | 65 63 65 73 73 61 72 79 0d 0a 0d 0a 23 20 40 40 49 4e 43 4c 55 44 45 40 40 20 69 6e 63 6c 75 64 | ecessary....#.@@INCLUDE@@.includ |
| 1e620 | 65 2f 72 75 62 79 2f 73 6c 6f 77 63 61 74 2e 72 62 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | e/ruby/slowcat.rb......#.@@PLEAC |
| 1e640 | 40 40 5f 31 2e 36 0d 0a 72 65 76 62 79 74 65 73 20 3d 20 73 74 72 69 6e 67 2e 72 65 76 65 72 73 | @@_1.6..revbytes.=.string.revers |
| 1e660 | 65 0d 0a 0d 0a 72 65 76 77 6f 72 64 73 20 3d 20 73 74 72 69 6e 67 2e 73 70 6c 69 74 28 22 20 22 | e....revwords.=.string.split("." |
| 1e680 | 29 2e 72 65 76 65 72 73 65 2e 6a 6f 69 6e 28 22 20 22 29 0d 0a 0d 0a 72 65 76 77 6f 72 64 73 20 | ).reverse.join(".")....revwords. |
| 1e6a0 | 3d 20 73 74 72 69 6e 67 2e 73 70 6c 69 74 28 2f 28 5c 73 2b 29 2f 29 2e 72 65 76 65 72 73 65 2e | =.string.split(/(\s+)/).reverse. |
| 1e6c0 | 6a 6f 69 6e 0d 0a 0d 0a 23 20 75 73 69 6e 67 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 49 4f | join....#.using.the.fact.that.IO |
| 1e6e0 | 20 69 73 20 45 6e 75 6d 65 72 61 62 6c 65 2c 20 79 6f 75 20 63 61 6e 20 64 69 72 65 63 74 6c 79 | .is.Enumerable,.you.can.directly |
| 1e700 | 20 22 73 65 6c 65 63 74 22 20 69 74 0d 0a 6c 6f 6e 67 5f 70 61 6c 69 6e 64 72 6f 6d 65 73 20 3d | ."select".it..long_palindromes.= |
| 1e720 | 20 46 69 6c 65 2e 6f 70 65 6e 28 22 2f 75 73 72 2f 73 68 61 72 65 2f 64 69 63 74 2f 77 6f 72 64 | .File.open("/usr/share/dict/word |
| 1e740 | 73 22 29 2e 0d 0a 20 20 20 20 73 65 6c 65 63 74 20 7b 20 7c 77 7c 20 77 2e 63 68 6f 6d 70 21 3b | s").......select.{.|w|.w.chomp!; |
| 1e760 | 20 77 2e 72 65 76 65 72 73 65 20 3d 3d 20 77 20 26 26 20 77 2e 6c 65 6e 67 74 68 20 3e 20 35 20 | .w.reverse.==.w.&&.w.length.>.5. |
| 1e780 | 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 37 0d 0a 77 68 69 6c 65 20 73 74 | }......#.@@PLEAC@@_1.7..while.st |
| 1e7a0 | 72 69 6e 67 2e 73 75 62 21 28 22 5c 74 2b 22 29 20 7b 20 27 20 27 20 2a 20 28 24 26 2e 6c 65 6e | ring.sub!("\t+").{.'.'.*.($&.len |
| 1e7c0 | 67 74 68 20 2a 20 38 20 2d 20 24 60 2e 6c 65 6e 67 74 68 20 25 20 38 29 20 7d 0d 0a 65 6e 64 0d | gth.*.8.-.$`.length.%.8).}..end. |
| 1e7e0 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 38 0d 0a 27 59 6f 75 20 6f 77 65 20 23 | .....#.@@PLEAC@@_1.8..'You.owe.# |
| 1e800 | 7b 64 65 62 74 7d 20 74 6f 20 6d 65 27 2e 67 73 75 62 28 2f 5c 23 7b 28 5c 77 2b 29 7d 2f 29 20 | {debt}.to.me'.gsub(/\#{(\w+)}/). |
| 1e820 | 7b 20 65 76 61 6c 28 24 31 29 20 7d 0d 0a 0d 0a 72 6f 77 73 2c 20 63 6f 6c 73 20 3d 20 32 34 2c | {.eval($1).}....rows,.cols.=.24, |
| 1e840 | 20 38 30 0d 0a 74 65 78 74 20 3d 20 25 71 28 49 20 61 6d 20 23 7b 72 6f 77 73 7d 20 68 69 67 68 | .80..text.=.%q(I.am.#{rows}.high |
| 1e860 | 20 61 6e 64 20 23 7b 63 6f 6c 73 7d 20 6c 6f 6e 67 29 0d 0a 74 65 78 74 2e 67 73 75 62 21 28 2f | .and.#{cols}.long)..text.gsub!(/ |
| 1e880 | 5c 23 7b 28 5c 77 2b 29 7d 2f 29 20 7b 20 65 76 61 6c 28 22 23 7b 24 31 7d 22 29 20 7d 0d 0a 70 | \#{(\w+)}/).{.eval("#{$1}").}..p |
| 1e8a0 | 75 74 73 20 74 65 78 74 0d 0a 0d 0a 27 49 20 61 6d 20 31 37 20 79 65 61 72 73 20 6f 6c 64 27 2e | uts.text....'I.am.17.years.old'. |
| 1e8c0 | 67 73 75 62 28 2f 5c 64 2b 2f 29 20 7b 20 32 20 2a 20 24 26 2e 74 6f 5f 69 20 7d 0d 0a 0d 0a 0d | gsub(/\d+/).{.2.*.$&.to_i.}..... |
| 1e8e0 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 39 0d 0a 65 20 3d 20 22 62 6f 20 70 65 65 70 22 2e | .#.@@PLEAC@@_1.9..e.=."bo.peep". |
| 1e900 | 75 70 63 61 73 65 0d 0a 65 2e 64 6f 77 6e 63 61 73 65 21 0d 0a 65 2e 63 61 70 69 74 61 6c 69 7a | upcase..e.downcase!..e.capitaliz |
| 1e920 | 65 21 0d 0a 0d 0a 22 74 68 49 53 20 69 73 20 61 20 6c 6f 4e 47 20 6c 69 4e 45 22 2e 67 73 75 62 | e!...."thIS.is.a.loNG.liNE".gsub |
| 1e940 | 21 28 2f 5c 77 2b 2f 29 20 7b 20 24 26 2e 63 61 70 69 74 61 6c 69 7a 65 20 7d 0d 0a 0d 0a 0d 0a | !(/\w+/).{.$&.capitalize.}...... |
| 1e960 | 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 30 0d 0a 22 49 20 68 61 76 65 20 23 7b 6e 2b 31 7d | #.@@PLEAC@@_1.10.."I.have.#{n+1} |
| 1e980 | 20 67 75 61 6e 61 63 6f 73 2e 22 0d 0a 70 72 69 6e 74 20 22 49 20 68 61 76 65 20 22 2c 20 6e 2b | .guanacos."..print."I.have.",.n+ |
| 1e9a0 | 31 2c 20 22 20 67 75 61 6e 61 63 6f 73 2e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | 1,.".guanacos."......#.@@PLEAC@@ |
| 1e9c0 | 5f 31 2e 31 31 0d 0a 76 61 72 20 3d 20 3c 3c 27 45 4f 46 27 2e 67 73 75 62 28 2f 5e 5c 73 2b 2f | _1.11..var.=.<<'EOF'.gsub(/^\s+/ |
| 1e9e0 | 2c 20 27 27 29 0d 0a 20 20 20 20 79 6f 75 72 20 74 65 78 74 0d 0a 20 20 20 20 67 6f 65 73 20 68 | ,.'')......your.text......goes.h |
| 1ea00 | 65 72 65 0d 0a 45 4f 46 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 32 0d 0a | ere..EOF......#.@@PLEAC@@_1.12.. |
| 1ea20 | 73 74 72 69 6e 67 20 3d 20 22 46 6f 6c 64 69 6e 67 20 61 6e 64 20 73 70 6c 69 63 69 6e 67 20 69 | string.=."Folding.and.splicing.i |
| 1ea40 | 73 20 74 68 65 20 77 6f 72 6b 20 6f 66 20 61 6e 20 65 64 69 74 6f 72 2c 5c 6e 22 2b 0d 0a 20 20 | s.the.work.of.an.editor,\n"+.... |
| 1ea60 | 20 20 22 6e 6f 74 20 61 20 6d 65 72 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 20 73 69 6c 69 | .."not.a.mere.collection.of.sili |
| 1ea80 | 63 6f 6e 5c 6e 22 2b 0d 0a 20 20 20 20 22 61 6e 64 5c 6e 22 2b 0d 0a 20 20 20 20 22 6d 6f 62 69 | con\n"+......"and\n"+......"mobi |
| 1eaa0 | 6c 65 20 65 6c 65 63 74 72 6f 6e 73 21 22 0d 0a 0d 0a 64 65 66 20 77 72 61 70 28 73 74 72 2c 20 | le.electrons!"....def.wrap(str,. |
| 1eac0 | 6d 61 78 5f 73 69 7a 65 29 0d 0a 20 20 20 20 61 6c 6c 20 3d 20 5b 5d 0d 0a 20 20 20 20 6c 69 6e | max_size)......all.=.[]......lin |
| 1eae0 | 65 20 3d 20 27 27 0d 0a 20 20 20 20 66 6f 72 20 6c 20 69 6e 20 73 74 72 2e 73 70 6c 69 74 0d 0a | e.=.''......for.l.in.str.split.. |
| 1eb00 | 20 20 20 20 20 20 20 20 69 66 20 28 6c 69 6e 65 2b 6c 29 2e 6c 65 6e 67 74 68 20 3e 3d 20 6d 61 | ........if.(line+l).length.>=.ma |
| 1eb20 | 78 5f 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 6c 2e 70 75 73 68 28 6c 69 6e | x_size..............all.push(lin |
| 1eb40 | 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 27 27 0d 0a 20 20 20 20 20 | e)..............line.=.''....... |
| 1eb60 | 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 20 2b 3d 20 6c 69 6e 65 20 3d 3d 20 | ...end..........line.+=.line.==. |
| 1eb80 | 27 27 20 3f 20 6c 20 3a 20 27 20 27 20 2b 20 6c 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 61 | ''.?.l.:.'.'.+.l......end......a |
| 1eba0 | 6c 6c 2e 70 75 73 68 28 6c 69 6e 65 29 2e 6a 6f 69 6e 28 22 5c 6e 22 29 0d 0a 65 6e 64 0d 0a 0d | ll.push(line).join("\n")..end... |
| 1ebc0 | 0a 70 72 69 6e 74 20 77 72 61 70 28 73 74 72 69 6e 67 2c 20 32 30 29 0d 0a 23 3d 3e 20 46 6f 6c | .print.wrap(string,.20)..#=>.Fol |
| 1ebe0 | 64 69 6e 67 20 61 6e 64 0d 0a 23 3d 3e 20 73 70 6c 69 63 69 6e 67 20 69 73 20 74 68 65 0d 0a 23 | ding.and..#=>.splicing.is.the..# |
| 1ec00 | 3d 3e 20 77 6f 72 6b 20 6f 66 20 61 6e 20 65 64 69 74 6f 72 2c 0d 0a 23 3d 3e 20 6e 6f 74 20 61 | =>.work.of.an.editor,..#=>.not.a |
| 1ec20 | 20 6d 65 72 65 0d 0a 23 3d 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 20 6f 66 0d 0a 23 3d 3e 20 73 69 | .mere..#=>.collection.of..#=>.si |
| 1ec40 | 6c 69 63 6f 6e 20 61 6e 64 20 6d 6f 62 69 6c 65 0d 0a 23 3d 3e 20 65 6c 65 63 74 72 6f 6e 73 21 | licon.and.mobile..#=>.electrons! |
| 1ec60 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 33 0d 0a 73 74 72 69 6e 67 20 3d | ......#.@@PLEAC@@_1.13..string.= |
| 1ec80 | 20 25 71 28 4d 6f 6d 20 73 61 69 64 2c 20 22 44 6f 6e 27 74 20 64 6f 20 74 68 61 74 2e 22 29 0d | .%q(Mom.said,."Don't.do.that."). |
| 1eca0 | 0a 73 74 72 69 6e 67 2e 67 73 75 62 28 2f 5b 27 22 5d 2f 29 20 7b 20 27 5c 5c 27 2b 24 26 20 7d | .string.gsub(/['"]/).{.'\\'+$&.} |
| 1ecc0 | 0d 0a 73 74 72 69 6e 67 2e 67 73 75 62 28 2f 5b 27 22 5d 2f 2c 20 27 5c 26 5c 26 27 29 0d 0a 73 | ..string.gsub(/['"]/,.'\&\&')..s |
| 1ece0 | 74 72 69 6e 67 2e 67 73 75 62 28 2f 5b 5e 41 2d 5a 5d 2f 29 20 7b 20 27 5c 5c 27 2b 24 26 20 7d | tring.gsub(/[^A-Z]/).{.'\\'+$&.} |
| 1ed00 | 0d 0a 22 69 73 20 61 20 74 65 73 74 21 22 2e 67 73 75 62 28 2f 5c 57 2f 29 20 7b 20 27 5c 5c 27 | .."is.a.test!".gsub(/\W/).{.'\\' |
| 1ed20 | 2b 24 26 20 7d 20 20 23 20 6e 6f 20 66 75 6e 63 74 69 6f 6e 20 6c 69 6b 65 20 71 75 6f 74 65 6d | +$&.}..#.no.function.like.quotem |
| 1ed40 | 65 74 61 3f 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 34 0d 0a 73 74 72 69 | eta?......#.@@PLEAC@@_1.14..stri |
| 1ed60 | 6e 67 2e 73 74 72 69 70 21 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 35 0d | ng.strip!......#.@@PLEAC@@_1.15. |
| 1ed80 | 0a 64 65 66 20 70 61 72 73 65 5f 63 73 76 28 74 65 78 74 29 0d 0a 20 20 20 20 6e 65 77 20 3d 20 | .def.parse_csv(text)......new.=. |
| 1eda0 | 74 65 78 74 2e 73 63 61 6e 28 2f 22 28 5b 5e 5c 22 5c 5c 5d 2a 28 3f 3a 5c 5c 2e 5b 5e 5c 22 5c | text.scan(/"([^\"\\]*(?:\\.[^\"\ |
| 1edc0 | 5c 5d 2a 29 2a 29 22 2c 3f 7c 28 5b 5e 2c 5d 2b 29 2c 3f 7c 2c 2f 29 0d 0a 20 20 20 20 6e 65 77 | \]*)*)",?|([^,]+),?|,/)......new |
| 1ede0 | 20 3c 3c 20 6e 69 6c 20 69 66 20 74 65 78 74 5b 2d 31 5d 20 3d 3d 20 3f 2c 0d 0a 20 20 20 20 6e | .<<.nil.if.text[-1].==.?,......n |
| 1ee00 | 65 77 2e 66 6c 61 74 74 65 6e 2e 63 6f 6d 70 61 63 74 0d 0a 65 6e 64 0d 0a 0d 0a 6c 69 6e 65 20 | ew.flatten.compact..end....line. |
| 1ee20 | 3d 20 25 71 3c 58 59 5a 5a 59 2c 22 22 2c 22 4f 27 52 65 69 6c 6c 79 2c 20 49 6e 63 22 2c 22 57 | =.%q<XYZZY,"","O'Reilly,.Inc","W |
| 1ee40 | 61 6c 6c 2c 20 4c 61 72 72 79 22 2c 22 61 20 5c 22 67 6c 75 67 5c 22 20 62 69 74 2c 22 2c 35 2c | all,.Larry","a.\"glug\".bit,",5, |
| 1ee60 | 22 45 72 72 6f 72 2c 20 43 6f 72 65 20 44 75 6d 70 65 64 22 3e 0d 0a 66 69 65 6c 64 73 20 3d 20 | "Error,.Core.Dumped">..fields.=. |
| 1ee80 | 70 61 72 73 65 5f 63 73 76 28 6c 69 6e 65 29 0d 0a 66 69 65 6c 64 73 2e 65 61 63 68 5f 77 69 74 | parse_csv(line)..fields.each_wit |
| 1eea0 | 68 5f 69 6e 64 65 78 20 7b 20 7c 76 2c 69 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 23 7b 69 7d | h_index.{.|v,i|......print."#{i} |
| 1eec0 | 20 3a 20 23 7b 76 7d 5c 6e 22 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f | .:.#{v}\n";..}......#.@@PLEAC@@_ |
| 1eee0 | 31 2e 31 36 0d 0a 23 20 55 73 65 20 74 68 65 20 73 6f 75 6e 64 65 78 2e 72 62 20 4c 69 62 72 61 | 1.16..#.Use.the.soundex.rb.Libra |
| 1ef00 | 72 79 20 66 72 6f 6d 20 4d 69 63 68 61 65 6c 20 4e 65 75 6d 61 6e 6e 2e 0d 0a 23 20 68 74 74 70 | ry.from.Michael.Neumann...#.http |
| 1ef20 | 3a 2f 2f 77 77 77 2e 73 2d 64 69 72 65 6b 74 6e 65 74 2e 64 65 2f 68 6f 6d 65 70 61 67 65 73 2f | ://www.s-direktnet.de/homepages/ |
| 1ef40 | 6e 65 75 6d 61 6e 6e 2f 72 62 5f 70 72 67 73 2f 53 6f 75 6e 64 65 78 2e 72 62 0d 0a 72 65 71 75 | neumann/rb_prgs/Soundex.rb..requ |
| 1ef60 | 69 72 65 20 27 53 6f 75 6e 64 65 78 27 0d 0a 0d 0a 63 6f 64 65 20 3d 20 54 65 78 74 3a 3a 53 6f | ire.'Soundex'....code.=.Text::So |
| 1ef80 | 75 6e 64 65 78 2e 73 6f 75 6e 64 65 78 28 73 74 72 69 6e 67 29 0d 0a 63 6f 64 65 73 20 3d 20 54 | undex.soundex(string)..codes.=.T |
| 1efa0 | 65 78 74 3a 3a 53 6f 75 6e 64 65 78 2e 73 6f 75 6e 64 65 78 28 61 72 72 61 79 29 0d 0a 0d 0a 23 | ext::Soundex.soundex(array)....# |
| 1efc0 | 20 73 75 62 73 74 69 74 75 74 69 6f 6e 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 67 65 74 70 77 | .substitution.function.for.getpw |
| 1efe0 | 65 6e 74 28 29 3a 0d 0a 23 20 72 65 74 75 72 6e 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 75 73 | ent():..#.returns.an.array.of.us |
| 1f000 | 65 72 20 65 6e 74 72 69 65 73 2c 0d 0a 23 20 65 61 63 68 20 65 6e 74 72 79 20 63 6f 6e 74 61 69 | er.entries,..#.each.entry.contai |
| 1f020 | 6e 73 20 74 68 65 20 75 73 65 72 6e 61 6d 65 20 61 6e 64 20 74 68 65 20 66 75 6c 6c 20 6e 61 6d | ns.the.username.and.the.full.nam |
| 1f040 | 65 0d 0a 64 65 66 20 6c 6f 67 69 6e 5f 6e 61 6d 65 73 0d 0a 20 20 20 20 72 65 73 75 6c 74 20 3d | e..def.login_names......result.= |
| 1f060 | 20 5b 5d 0d 0a 20 20 20 20 46 69 6c 65 2e 6f 70 65 6e 28 22 2f 65 74 63 2f 70 61 73 73 77 64 22 | .[]......File.open("/etc/passwd" |
| 1f080 | 29 20 7b 20 7c 66 69 6c 65 7c 0d 0a 20 20 20 20 20 20 20 20 66 69 6c 65 2e 65 61 63 68 5f 6c 69 | ).{.|file|..........file.each_li |
| 1f0a0 | 6e 65 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 20 69 66 | ne.{.|line|..............next.if |
| 1f0c0 | 20 6c 69 6e 65 2e 6d 61 74 63 68 28 2f 5e 23 2f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 | .line.match(/^#/)..............c |
| 1f0e0 | 6f 6c 73 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 29 0d 0a 20 20 20 20 20 20 20 20 20 | ols.=.line.split(":")........... |
| 1f100 | 20 20 20 72 65 73 75 6c 74 2e 70 75 73 68 28 5b 63 6f 6c 73 5b 30 5d 2c 20 63 6f 6c 73 5b 34 5d | ...result.push([cols[0],.cols[4] |
| 1f120 | 5d 29 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 72 65 73 75 6c 74 | ])..........}......}......result |
| 1f140 | 0d 0a 65 6e 64 0d 0a 0d 0a 70 75 74 73 20 22 4c 6f 6f 6b 75 70 20 75 73 65 72 3a 20 22 0d 0a 75 | ..end....puts."Lookup.user:."..u |
| 1f160 | 73 65 72 20 3d 20 53 54 44 49 4e 2e 67 65 74 73 0d 0a 75 73 65 72 2e 63 68 6f 6d 70 21 0d 0a 65 | ser.=.STDIN.gets..user.chomp!..e |
| 1f180 | 78 69 74 20 75 6e 6c 65 73 73 20 75 73 65 72 0d 0a 6e 61 6d 65 5f 63 6f 64 65 20 3d 20 54 65 78 | xit.unless.user..name_code.=.Tex |
| 1f1a0 | 74 3a 3a 53 6f 75 6e 64 65 78 2e 73 6f 75 6e 64 65 78 28 75 73 65 72 29 0d 0a 0d 0a 73 70 6c 69 | t::Soundex.soundex(user)....spli |
| 1f1c0 | 74 74 65 72 20 3d 20 52 65 67 65 78 70 2e 6e 65 77 28 27 28 5c 77 2b 29 5b 5e 2c 5d 2a 5c 62 28 | tter.=.Regexp.new('(\w+)[^,]*\b( |
| 1f1e0 | 5c 77 2b 29 27 29 0d 0a 66 6f 72 20 75 73 65 72 6e 61 6d 65 2c 20 66 75 6c 6c 6e 61 6d 65 20 69 | \w+)')..for.username,.fullname.i |
| 1f200 | 6e 20 6c 6f 67 69 6e 5f 6e 61 6d 65 73 20 64 6f 0d 0a 20 20 20 20 66 69 72 73 74 6e 61 6d 65 2c | n.login_names.do......firstname, |
| 1f220 | 20 6c 61 73 74 6e 61 6d 65 20 3d 20 73 70 6c 69 74 74 65 72 2e 6d 61 74 63 68 28 66 75 6c 6c 6e | .lastname.=.splitter.match(fulln |
| 1f240 | 61 6d 65 29 5b 31 2c 32 5d 0d 0a 20 20 20 20 69 66 20 6e 61 6d 65 5f 63 6f 64 65 20 3d 3d 20 54 | ame)[1,2]......if.name_code.==.T |
| 1f260 | 65 78 74 3a 3a 53 6f 75 6e 64 65 78 2e 73 6f 75 6e 64 65 78 28 75 73 65 72 6e 61 6d 65 29 0d 0a | ext::Soundex.soundex(username).. |
| 1f280 | 20 20 20 20 20 20 20 20 7c 7c 20 6e 61 6d 65 5f 63 6f 64 65 20 3d 3d 20 54 65 78 74 3a 3a 53 6f | ........||.name_code.==.Text::So |
| 1f2a0 | 75 6e 64 65 78 2e 73 6f 75 6e 64 65 78 28 66 69 72 73 74 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 | undex.soundex(firstname)........ |
| 1f2c0 | 20 20 7c 7c 20 6e 61 6d 65 5f 63 6f 64 65 20 3d 3d 20 54 65 78 74 3a 3a 53 6f 75 6e 64 65 78 2e | ..||.name_code.==.Text::Soundex. |
| 1f2e0 | 73 6f 75 6e 64 65 78 28 6c 61 73 74 6e 61 6d 65 29 0d 0a 20 20 20 20 74 68 65 6e 0d 0a 20 20 20 | soundex(lastname)......then..... |
| 1f300 | 20 20 20 20 20 70 75 74 73 20 22 23 7b 75 73 65 72 6e 61 6d 65 7d 3a 20 23 7b 66 69 72 73 74 6e | .....puts."#{username}:.#{firstn |
| 1f320 | 61 6d 65 7d 20 23 7b 6c 61 73 74 6e 61 6d 65 7d 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d | ame}.#{lastname}"......end..end. |
| 1f340 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 37 0d 0a 23 20 40 40 49 4e 43 4c 55 | .....#.@@PLEAC@@_1.17..#.@@INCLU |
| 1f360 | 44 45 40 40 20 69 6e 63 6c 75 64 65 2f 72 75 62 79 2f 66 69 78 73 74 79 6c 65 2e 72 62 0d 0a 0d | DE@@.include/ruby/fixstyle.rb... |
| 1f380 | 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 2e 31 38 0d 0a 23 20 40 40 49 4e 43 4c 55 44 45 | ...#.@@PLEAC@@_1.18..#.@@INCLUDE |
| 1f3a0 | 40 40 20 69 6e 63 6c 75 64 65 2f 72 75 62 79 2f 70 73 67 72 65 70 2e 72 62 0d 0a 0d 0a 0d 0a 23 | @@.include/ruby/psgrep.rb......# |
| 1f3c0 | 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 0d 0a 23 20 4d 61 74 7a 20 74 65 6c 6c 73 20 74 68 61 | .@@PLEAC@@_2.1..#.Matz.tells.tha |
| 1f3e0 | 74 20 79 6f 75 20 63 61 6e 20 75 73 65 20 49 6e 74 65 67 65 72 28 29 20 66 6f 72 20 73 74 72 69 | t.you.can.use.Integer().for.stri |
| 1f400 | 63 74 20 63 68 65 63 6b 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 2e 0d 0a 49 6e 74 65 67 65 72 28 | ct.checked.conversion...Integer( |
| 1f420 | 22 61 62 63 22 29 0d 0a 23 3d 3e 20 60 49 6e 74 65 67 65 72 27 3a 20 69 6e 76 61 6c 69 64 20 76 | "abc")..#=>.`Integer':.invalid.v |
| 1f440 | 61 6c 75 65 20 66 6f 72 20 49 6e 74 65 67 65 72 3a 20 22 61 62 63 22 20 28 41 72 67 75 6d 65 6e | alue.for.Integer:."abc".(Argumen |
| 1f460 | 74 45 72 72 6f 72 29 0d 0a 49 6e 74 65 67 65 72 28 22 35 36 37 22 29 0d 0a 23 3d 3e 20 35 36 37 | tError)..Integer("567")..#=>.567 |
| 1f480 | 0d 0a 0d 0a 23 20 59 6f 75 20 6d 61 79 20 75 73 65 20 46 6c 6f 61 74 28 29 20 66 6f 72 20 66 6c | ....#.You.may.use.Float().for.fl |
| 1f4a0 | 6f 61 74 69 6e 67 20 70 6f 69 6e 74 20 73 74 75 66 66 0d 0a 49 6e 74 65 67 65 72 28 22 35 36 2e | oating.point.stuff..Integer("56. |
| 1f4c0 | 37 22 29 0d 0a 23 3d 3e 20 60 49 6e 74 65 67 65 72 27 3a 20 69 6e 76 61 6c 69 64 20 76 61 6c 75 | 7")..#=>.`Integer':.invalid.valu |
| 1f4e0 | 65 20 66 6f 72 20 49 6e 74 65 67 65 72 3a 20 22 35 36 2e 37 22 20 28 41 72 67 75 6d 65 6e 74 45 | e.for.Integer:."56.7".(ArgumentE |
| 1f500 | 72 72 6f 72 29 0d 0a 46 6c 6f 61 74 28 22 35 36 2e 37 22 29 0d 0a 23 3d 3e 20 35 36 2e 37 0d 0a | rror)..Float("56.7")..#=>.56.7.. |
| 1f520 | 0d 0a 23 20 59 6f 75 20 6d 61 79 20 61 6c 73 6f 20 75 73 65 20 61 20 72 65 67 65 78 70 20 66 6f | ..#.You.may.also.use.a.regexp.fo |
| 1f540 | 72 20 74 68 61 74 0d 0a 69 66 20 73 74 72 69 6e 67 20 3d 7e 20 2f 5e 5b 2b 2d 5d 3f 5c 64 2b 24 | r.that..if.string.=~./^[+-]?\d+$ |
| 1f560 | 2f 0d 0a 20 20 20 20 70 20 27 69 73 20 61 6e 20 69 6e 74 65 67 65 72 27 0d 0a 65 6c 73 65 0d 0a | /......p.'is.an.integer'..else.. |
| 1f580 | 20 20 20 20 70 20 27 69 73 20 6e 6f 74 27 0d 0a 65 6e 64 0d 0a 0d 0a 69 66 20 73 74 72 69 6e 67 | ....p.'is.not'..end....if.string |
| 1f5a0 | 20 3d 7e 20 2f 5e 2d 3f 28 3f 3a 5c 64 2b 28 3f 3a 5c 2e 5c 64 2a 29 3f 7c 5c 2e 5c 64 2b 29 24 | .=~./^-?(?:\d+(?:\.\d*)?|\.\d+)$ |
| 1f5c0 | 2f 0d 0a 20 20 20 20 70 20 27 69 73 20 61 20 64 65 63 69 6d 61 6c 20 6e 75 6d 62 65 72 27 0d 0a | /......p.'is.a.decimal.number'.. |
| 1f5e0 | 65 6c 73 65 0d 0a 20 20 20 20 70 20 27 69 73 20 6e 6f 74 27 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 | else......p.'is.not'..end......# |
| 1f600 | 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 32 0d 0a 23 20 65 71 75 61 6c 28 6e 75 6d 31 2c 20 6e 75 | .@@PLEAC@@_2.2..#.equal(num1,.nu |
| 1f620 | 6d 32 2c 20 61 63 63 75 72 61 63 79 29 20 3a 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 | m2,.accuracy).:.returns.true.if. |
| 1f640 | 6e 75 6d 31 20 61 6e 64 20 6e 75 6d 32 20 61 72 65 0d 0a 23 20 20 20 65 71 75 61 6c 20 74 6f 20 | num1.and.num2.are..#...equal.to. |
| 1f660 | 61 63 63 75 72 61 63 79 20 6e 75 6d 62 65 72 20 6f 66 20 64 65 63 69 6d 61 6c 20 70 6c 61 63 65 | accuracy.number.of.decimal.place |
| 1f680 | 73 0d 0a 64 65 66 20 65 71 75 61 6c 28 69 2c 20 6a 2c 20 61 29 0d 0a 20 20 20 20 73 70 72 69 6e | s..def.equal(i,.j,.a)......sprin |
| 1f6a0 | 74 66 28 22 25 2e 23 7b 61 7d 67 22 2c 20 69 29 20 3d 3d 20 73 70 72 69 6e 74 66 28 22 25 2e 23 | tf("%.#{a}g",.i).==.sprintf("%.# |
| 1f6c0 | 7b 61 7d 67 22 2c 20 6a 29 0d 0a 65 6e 64 0d 0a 0d 0a 77 61 67 65 20 3d 20 35 33 36 20 20 20 20 | {a}g",.j)..end....wage.=.536.... |
| 1f6e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 24 35 2e 33 36 2f 68 6f 75 72 | ....................#.$5.36/hour |
| 1f700 | 0d 0a 77 65 65 6b 20 3d 20 34 30 20 2a 20 77 61 67 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..week.=.40.*.wage.............. |
| 1f720 | 20 20 20 20 23 20 24 32 31 34 2e 34 30 0d 0a 70 72 69 6e 74 66 28 22 4f 6e 65 20 77 65 65 6b 27 | ....#.$214.40..printf("One.week' |
| 1f740 | 73 20 77 61 67 65 20 69 73 3a 20 5c 24 25 2e 32 66 5c 6e 22 2c 20 77 65 65 6b 2f 31 30 30 2e 30 | s.wage.is:.\$%.2f\n",.week/100.0 |
| 1f760 | 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 33 0d 0a 6e 75 6d 2e 72 6f 75 6e | )......#.@@PLEAC@@_2.3..num.roun |
| 1f780 | 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 6f 75 6e | d.........................#.roun |
| 1f7a0 | 64 73 20 74 6f 20 69 6e 74 65 67 65 72 0d 0a 0d 0a 61 20 3d 20 30 2e 32 35 35 0d 0a 62 20 3d 20 | ds.to.integer....a.=.0.255..b.=. |
| 1f7c0 | 73 70 72 69 6e 74 66 28 22 25 2e 32 66 22 2c 20 61 29 0d 0a 70 72 69 6e 74 20 20 22 55 6e 72 6f | sprintf("%.2f",.a)..print.."Unro |
| 1f7e0 | 75 6e 64 65 64 3a 20 23 7b 61 7d 5c 6e 52 6f 75 6e 64 65 64 3a 20 23 7b 62 7d 5c 6e 22 0d 0a 70 | unded:.#{a}\nRounded:.#{b}\n"..p |
| 1f800 | 72 69 6e 74 66 20 22 55 6e 72 6f 75 6e 64 65 64 3a 20 23 7b 61 7d 5c 6e 52 6f 75 6e 64 65 64 3a | rintf."Unrounded:.#{a}\nRounded: |
| 1f820 | 20 25 2e 32 66 5c 6e 22 2c 20 61 0d 0a 0d 0a 70 72 69 6e 74 20 22 6e 75 6d 62 65 72 5c 74 69 6e | .%.2f\n",.a....print."number\tin |
| 1f840 | 74 5c 74 66 6c 6f 6f 72 5c 74 63 65 69 6c 5c 6e 22 0d 0a 61 20 3d 20 5b 20 33 2e 33 20 2c 20 33 | t\tfloor\tceil\n"..a.=.[.3.3.,.3 |
| 1f860 | 2e 35 20 2c 20 33 2e 37 2c 20 2d 33 2e 33 20 5d 0d 0a 66 6f 72 20 6e 20 69 6e 20 61 0d 0a 20 20 | .5.,.3.7,.-3.3.]..for.n.in.a.... |
| 1f880 | 20 20 70 72 69 6e 74 66 28 22 25 20 2e 31 66 5c 74 25 20 2e 31 66 5c 74 25 20 2e 31 66 5c 74 25 | ..printf("%..1f\t%..1f\t%..1f\t% |
| 1f8a0 | 20 2e 31 66 5c 6e 22 2c 20 20 23 20 61 74 20 6c 65 61 73 74 20 49 20 64 6f 6e 27 74 20 66 61 6b | ..1f\n",..#.at.least.I.don't.fak |
| 1f8c0 | 65 20 6d 79 20 6f 75 74 70 75 74 20 3a 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 6e 2c 20 6e 2e | e.my.output.:).............n,.n. |
| 1f8e0 | 74 6f 5f 69 2c 20 6e 2e 66 6c 6f 6f 72 2c 20 6e 2e 63 65 69 6c 29 0d 0a 65 6e 64 0d 0a 0d 0a 0d | to_i,.n.floor,.n.ceil)..end..... |
| 1f900 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 34 0d 0a 64 65 66 20 64 65 63 32 62 69 6e 28 6e 29 | .#.@@PLEAC@@_2.4..def.dec2bin(n) |
| 1f920 | 0d 0a 20 20 20 20 5b 6e 5d 2e 70 61 63 6b 28 22 4e 22 29 2e 75 6e 70 61 63 6b 28 22 42 33 32 22 | ......[n].pack("N").unpack("B32" |
| 1f940 | 29 5b 30 5d 2e 73 75 62 28 2f 5e 30 2b 28 3f 3d 5c 64 29 2f 2c 20 27 27 29 0d 0a 65 6e 64 0d 0a | )[0].sub(/^0+(?=\d)/,.'')..end.. |
| 1f960 | 0d 0a 64 65 66 20 62 69 6e 32 64 65 63 28 6e 29 0d 0a 20 20 20 20 5b 28 22 30 22 2a 33 32 2b 6e | ..def.bin2dec(n)......[("0"*32+n |
| 1f980 | 2e 74 6f 5f 73 29 5b 2d 33 32 2e 2e 2d 31 5d 5d 2e 70 61 63 6b 28 22 42 33 32 22 29 2e 75 6e 70 | .to_s)[-32..-1]].pack("B32").unp |
| 1f9a0 | 61 63 6b 28 22 4e 22 29 5b 30 5d 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 | ack("N")[0]..end......#.@@PLEAC@ |
| 1f9c0 | 40 5f 32 2e 35 0d 0a 66 6f 72 20 69 20 69 6e 20 78 20 2e 2e 20 79 0d 0a 20 20 20 20 23 20 69 20 | @_2.5..for.i.in.x....y......#.i. |
| 1f9e0 | 69 73 20 73 65 74 20 74 6f 20 65 76 65 72 79 20 69 6e 74 65 67 65 72 20 66 72 6f 6d 20 78 20 74 | is.set.to.every.integer.from.x.t |
| 1fa00 | 6f 20 79 2c 20 69 6e 63 6c 75 73 69 76 65 0d 0a 65 6e 64 0d 0a 0d 0a 78 2e 73 74 65 70 28 79 2c | o.y,.inclusive..end....x.step(y, |
| 1fa20 | 37 29 20 7b 20 7c 69 7c 0d 0a 20 20 20 20 23 20 69 20 69 73 20 73 65 74 20 74 6f 20 65 76 65 72 | 7).{.|i|......#.i.is.set.to.ever |
| 1fa40 | 79 20 69 6e 74 65 67 65 72 20 66 72 6f 6d 20 78 20 74 6f 20 79 2c 20 73 74 65 70 73 69 7a 65 20 | y.integer.from.x.to.y,.stepsize. |
| 1fa60 | 3d 20 37 0d 0a 7d 0d 0a 0d 0a 70 72 69 6e 74 20 22 49 6e 66 61 6e 63 79 20 69 73 3a 20 22 0d 0a | =.7..}....print."Infancy.is:.".. |
| 1fa80 | 28 30 2e 2e 32 29 2e 65 61 63 68 20 7b 20 7c 69 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 69 2c 20 | (0..2).each.{.|i|......print.i,. |
| 1faa0 | 22 20 22 0d 0a 7d 0d 0a 70 72 69 6e 74 20 22 5c 6e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 | "."..}..print."\n"......#.@@PLEA |
| 1fac0 | 43 40 40 5f 32 2e 36 0d 0a 23 20 57 65 20 63 61 6e 20 61 64 64 20 63 6f 6e 76 65 72 73 69 6f 6e | C@@_2.6..#.We.can.add.conversion |
| 1fae0 | 20 6d 65 74 68 6f 64 73 20 74 6f 20 74 68 65 20 49 6e 74 65 67 65 72 20 63 6c 61 73 73 2c 0d 0a | .methods.to.the.Integer.class,.. |
| 1fb00 | 23 20 74 68 69 73 20 6d 61 6b 65 73 20 61 20 72 6f 6d 61 6e 20 6e 75 6d 62 65 72 20 6a 75 73 74 | #.this.makes.a.roman.number.just |
| 1fb20 | 20 61 20 72 65 70 72 65 73 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 6e 6f 72 6d 61 6c 20 6e 75 6d | .a.representation.for.normal.num |
| 1fb40 | 62 65 72 73 2e 0d 0a 63 6c 61 73 73 20 49 6e 74 65 67 65 72 0d 0a 0d 0a 20 20 20 20 40 40 72 6f | bers...class.Integer........@@ro |
| 1fb60 | 6d 61 6e 6c 69 73 74 20 3d 20 5b 5b 22 4d 22 2c 20 31 30 30 30 5d 2c 0d 0a 20 20 20 20 20 20 20 | manlist.=.[["M",.1000],......... |
| 1fb80 | 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 43 4d 22 2c 20 39 30 30 5d 2c 0d 0a 20 20 20 20 20 20 | ............["CM",.900],........ |
| 1fba0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 44 22 2c 20 20 35 30 30 5d 2c 0d 0a 20 20 20 20 20 | .............["D",..500],....... |
| 1fbc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 43 44 22 2c 20 34 30 30 5d 2c 0d 0a 20 20 20 20 | ..............["CD",.400],...... |
| 1fbe0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 43 22 2c 20 20 31 30 30 5d 2c 0d 0a 20 20 20 | ...............["C",..100],..... |
| 1fc00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 58 43 22 2c 20 20 39 30 5d 2c 0d 0a 20 20 | ................["XC",..90],.... |
| 1fc20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 4c 22 2c 20 20 20 35 30 5d 2c 0d 0a 20 | .................["L",...50],... |
| 1fc40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 58 4c 22 2c 20 20 34 30 5d 2c 0d 0a | ..................["XL",..40],.. |
| 1fc60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 58 22 2c 20 20 20 31 30 5d 2c 0d | ...................["X",...10],. |
| 1fc80 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 49 58 22 2c 20 20 20 39 5d 2c | ....................["IX",...9], |
| 1fca0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 56 22 2c 20 20 20 20 35 5d | .....................["V",....5] |
| 1fcc0 | 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 49 56 22 2c 20 20 20 34 | ,.....................["IV",...4 |
| 1fce0 | 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 22 49 22 2c 20 20 20 20 | ],.....................["I",.... |
| 1fd00 | 31 5d 5d 0d 0a 0d 0a 20 20 20 20 64 65 66 20 74 6f 5f 72 6f 6d 61 6e 0d 0a 20 20 20 20 20 20 20 | 1]]........def.to_roman......... |
| 1fd20 | 20 72 65 6d 61 69 6e 73 20 3d 20 73 65 6c 66 0d 0a 20 20 20 20 20 20 20 20 72 6f 6d 61 6e 20 3d | .remains.=.self..........roman.= |
| 1fd40 | 20 22 22 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 73 79 6d 2c 20 6e 75 6d 20 69 6e 20 40 40 72 | .""..........for.sym,.num.in.@@r |
| 1fd60 | 6f 6d 61 6e 6c 69 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 72 65 6d 61 | omanlist..............while.rema |
| 1fd80 | 69 6e 73 20 3e 3d 20 6e 75 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6d 61 | ins.>=.num..................rema |
| 1fda0 | 69 6e 73 20 2d 3d 20 6e 75 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6d 61 | ins.-=.num..................roma |
| 1fdc0 | 6e 20 3c 3c 20 73 79 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 | n.<<.sym..............end....... |
| 1fde0 | 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 72 6f 6d 61 6e 0d 0a 20 20 20 20 65 6e 64 0d 0a | ...end..........roman......end.. |
| 1fe00 | 0d 0a 20 20 20 20 64 65 66 20 49 6e 74 65 67 65 72 2e 66 72 6f 6d 5f 72 6f 6d 61 6e 28 72 6f 6d | ......def.Integer.from_roman(rom |
| 1fe20 | 61 6e 29 0d 0a 20 20 20 20 20 20 20 20 75 73 74 72 20 3d 20 72 6f 6d 61 6e 2e 75 70 63 61 73 65 | an)..........ustr.=.roman.upcase |
| 1fe40 | 0d 0a 20 20 20 20 20 20 20 20 73 75 6d 20 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 65 | ..........sum.=.0..........for.e |
| 1fe60 | 6e 74 72 79 20 69 6e 20 40 40 72 6f 6d 61 6e 6c 69 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | ntry.in.@@romanlist............. |
| 1fe80 | 20 73 79 6d 2c 20 6e 75 6d 20 3d 20 65 6e 74 72 79 5b 30 5d 2c 20 65 6e 74 72 79 5b 31 5d 0d 0a | .sym,.num.=.entry[0],.entry[1].. |
| 1fea0 | 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 73 79 6d 20 3d 3d 20 75 73 74 72 5b 30 2c | ............while.sym.==.ustr[0, |
| 1fec0 | 20 73 79 6d 2e 6c 65 6e 67 74 68 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 | .sym.length]..................su |
| 1fee0 | 6d 20 2b 3d 20 6e 75 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 74 72 2e 73 | m.+=.num..................ustr.s |
| 1ff00 | 6c 69 63 65 21 28 30 2c 20 73 79 6d 2e 6c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | lice!(0,.sym.length)............ |
| 1ff20 | 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 73 75 6d 0d | ..end..........end..........sum. |
| 1ff40 | 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 72 6f 6d 61 6e 5f 66 69 66 74 65 | .....end....end......roman_fifte |
| 1ff60 | 65 6e 20 3d 20 31 35 2e 74 6f 5f 72 6f 6d 61 6e 0d 0a 70 75 74 73 20 22 52 6f 6d 61 6e 20 66 6f | en.=.15.to_roman..puts."Roman.fo |
| 1ff80 | 72 20 66 69 66 74 65 65 6e 20 69 73 20 23 7b 72 6f 6d 61 6e 5f 66 69 66 74 65 65 6e 7d 22 0d 0a | r.fifteen.is.#{roman_fifteen}".. |
| 1ffa0 | 69 20 3d 20 49 6e 74 65 67 65 72 2e 66 72 6f 6d 5f 72 6f 6d 61 6e 28 72 6f 6d 61 6e 5f 66 69 66 | i.=.Integer.from_roman(roman_fif |
| 1ffc0 | 74 65 65 6e 29 0d 0a 70 75 74 73 20 22 43 6f 6e 76 65 72 74 65 64 20 62 61 63 6b 2c 20 23 7b 72 | teen)..puts."Converted.back,.#{r |
| 1ffe0 | 6f 6d 61 6e 5f 66 69 66 74 65 65 6e 7d 20 69 73 20 23 7b 69 7d 22 0d 0a 0d 0a 23 20 63 68 65 63 | oman_fifteen}.is.#{i}"....#.chec |
| 20000 | 6b 0d 0a 66 6f 72 20 69 20 69 6e 20 28 31 2e 2e 33 39 30 30 29 0d 0a 20 20 20 20 72 20 3d 20 69 | k..for.i.in.(1..3900)......r.=.i |
| 20020 | 2e 74 6f 5f 72 6f 6d 61 6e 0d 0a 20 20 20 20 6a 20 3d 20 49 6e 74 65 67 65 72 2e 66 72 6f 6d 5f | .to_roman......j.=.Integer.from_ |
| 20040 | 72 6f 6d 61 6e 28 72 29 0d 0a 20 20 20 20 69 66 20 69 20 21 3d 20 6a 0d 0a 20 20 20 20 20 20 20 | roman(r)......if.i.!=.j......... |
| 20060 | 20 70 75 74 73 20 22 65 72 72 6f 72 3a 20 23 7b 69 7d 20 3a 20 23 7b 72 7d 20 2d 20 23 7b 6a 7d | .puts."error:.#{i}.:.#{r}.-.#{j} |
| 20080 | 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | "......end..end......#.@@PLEAC@@ |
| 200a0 | 5f 32 2e 37 0d 0a 72 61 6e 64 6f 6d 20 3d 20 72 61 6e 64 28 79 2d 78 2b 31 29 2b 78 0d 0a 0d 0a | _2.7..random.=.rand(y-x+1)+x.... |
| 200c0 | 63 68 61 72 73 20 3d 20 5b 22 41 22 2e 2e 22 5a 22 2c 22 61 22 2e 2e 22 7a 22 2c 22 30 22 2e 2e | chars.=.["A".."Z","a".."z","0".. |
| 200e0 | 22 39 22 5d 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 72 7c 20 72 2e 74 6f 5f 61 20 7d 2e 6a 6f 69 6e | "9"].collect.{.|r|.r.to_a.}.join |
| 20100 | 20 2b 20 25 71 28 21 40 24 25 5e 26 2a 29 0d 0a 70 61 73 73 77 6f 72 64 20 3d 20 28 31 2e 2e 38 | .+.%q(!@$%^&*)..password.=.(1..8 |
| 20120 | 29 2e 63 6f 6c 6c 65 63 74 20 7b 20 63 68 61 72 73 5b 72 61 6e 64 28 63 68 61 72 73 2e 73 69 7a | ).collect.{.chars[rand(chars.siz |
| 20140 | 65 29 5d 20 7d 2e 70 61 63 6b 28 22 43 2a 22 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 | e)].}.pack("C*")......#.@@PLEAC@ |
| 20160 | 40 5f 32 2e 38 0d 0a 73 72 61 6e 64 20 20 20 20 20 20 20 20 23 20 75 73 65 73 20 61 20 63 6f 6d | @_2.8..srand........#.uses.a.com |
| 20180 | 62 69 6e 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 74 69 6d 65 2c 20 74 68 65 20 70 72 6f 63 65 73 | bination.of.the.time,.the.proces |
| 201a0 | 73 20 69 64 2c 20 61 6e 64 20 61 20 73 65 71 75 65 6e 63 65 20 6e 75 6d 62 65 72 0d 0a 73 72 61 | s.id,.and.a.sequence.number..sra |
| 201c0 | 6e 64 28 76 61 6c 29 20 20 20 23 20 66 6f 72 20 72 65 70 65 61 74 61 62 6c 65 20 62 65 68 61 76 | nd(val)...#.for.repeatable.behav |
| 201e0 | 69 6f 75 72 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 39 0d 0a 23 20 66 72 6f | iour......#.@@PLEAC@@_2.9..#.fro |
| 20200 | 6d 20 74 68 65 20 72 61 6e 64 6f 6d 72 20 6c 69 62 3a 0d 0a 23 20 68 74 74 70 3a 2f 2f 72 61 61 | m.the.randomr.lib:..#.http://raa |
| 20220 | 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f 70 72 6f 6a 65 63 74 2f 72 61 6e 64 6f 6d 72 2f 0d | .ruby-lang.org/project/randomr/. |
| 20240 | 0a 2d 2d 2d 2d 3e 20 68 74 74 70 3a 2f 2f 72 61 61 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f | .---->.http://raa.ruby-lang.org/ |
| 20260 | 70 72 6f 6a 65 63 74 2f 72 61 6e 64 6f 6d 72 2f 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 72 61 6e | project/randomr/....require.'ran |
| 20280 | 64 6f 6d 2f 6d 65 72 73 65 6e 6e 65 5f 74 77 69 73 74 65 72 27 0d 0a 6d 65 72 73 20 3d 20 52 61 | dom/mersenne_twister'..mers.=.Ra |
| 202a0 | 6e 64 6f 6d 3a 3a 4d 65 72 73 65 6e 6e 65 54 77 69 73 74 65 72 2e 6e 65 77 20 31 32 33 34 35 36 | ndom::MersenneTwister.new.123456 |
| 202c0 | 37 38 39 0d 0a 70 75 74 73 20 6d 65 72 73 2e 72 61 6e 64 28 30 29 20 20 20 20 23 20 30 2e 35 35 | 789..puts.mers.rand(0)....#.0.55 |
| 202e0 | 30 33 32 31 39 33 32 35 34 34 35 34 31 0d 0a 70 75 74 73 20 6d 65 72 73 2e 72 61 6e 64 28 31 30 | 0321932544541..puts.mers.rand(10 |
| 20300 | 29 20 20 20 23 20 32 0d 0a 0d 0a 23 20 75 73 69 6e 67 20 6f 6e 6c 69 6e 65 20 73 6f 75 72 63 65 | )...#.2....#.using.online.source |
| 20320 | 73 20 6f 66 20 72 61 6e 64 6f 6d 20 64 61 74 61 20 76 69 61 20 74 68 65 20 72 65 61 6c 72 61 6e | s.of.random.data.via.the.realran |
| 20340 | 64 20 70 61 63 6b 61 67 65 3a 0d 0a 23 20 68 74 74 70 3a 2f 2f 72 61 61 2e 72 75 62 79 2d 6c 61 | d.package:..#.http://raa.ruby-la |
| 20360 | 6e 67 2e 6f 72 67 2f 70 72 6f 6a 65 63 74 2f 72 65 61 6c 72 61 6e 64 2f 0d 0a 23 20 2a 2a 4e 6f | ng.org/project/realrand/..#.**No |
| 20380 | 74 65 2a 2a 0d 0a 23 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6f 6e 6c 69 6e 65 20 73 65 72 | te**..#.The.following.online.ser |
| 203a0 | 76 69 63 65 73 20 61 72 65 20 75 73 65 64 20 69 6e 20 74 68 69 73 20 70 61 63 6b 61 67 65 3a 0d | vices.are.used.in.this.package:. |
| 203c0 | 0a 23 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e 72 61 6e 64 6f 6d 2e 6f 72 67 20 2d 20 73 6f 75 | .#...http://www.random.org.-.sou |
| 203e0 | 72 63 65 3a 20 61 74 6d 6f 73 70 68 65 72 69 63 20 6e 6f 69 73 65 0d 0a 23 20 20 20 68 74 74 70 | rce:.atmospheric.noise..#...http |
| 20400 | 3a 2f 2f 77 77 77 2e 66 6f 75 72 6d 69 6c 61 62 2e 63 68 2f 68 6f 74 62 69 74 73 20 2d 20 73 6f | ://www.fourmilab.ch/hotbits.-.so |
| 20420 | 75 72 63 65 3a 20 72 61 64 69 6f 61 63 74 69 76 65 20 64 65 63 61 79 20 74 69 6d 69 6e 67 73 0d | urce:.radioactive.decay.timings. |
| 20440 | 0a 23 20 20 20 68 74 74 70 3a 2f 2f 72 61 6e 64 6f 6d 2e 68 64 2e 6f 72 67 20 2d 20 73 6f 75 72 | .#...http://random.hd.org.-.sour |
| 20460 | 63 65 3a 20 65 6e 74 72 6f 70 79 20 66 72 6f 6d 20 6c 6f 63 61 6c 20 61 6e 64 20 6e 65 74 77 6f | ce:.entropy.from.local.and.netwo |
| 20480 | 72 6b 20 6e 6f 69 73 65 0d 0a 23 20 50 6c 65 61 73 65 20 76 69 73 69 74 20 74 68 65 20 73 69 74 | rk.noise..#.Please.visit.the.sit |
| 204a0 | 65 73 20 61 6e 64 20 72 65 73 70 65 63 74 20 74 68 65 20 72 75 6c 65 73 20 6f 66 20 65 61 63 68 | es.and.respect.the.rules.of.each |
| 204c0 | 20 73 65 72 76 69 63 65 2e 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 72 61 6e 64 6f 6d 2f 6f 6e 6c | .service.....require.'random/onl |
| 204e0 | 69 6e 65 27 0d 0a 0d 0a 67 65 6e 65 72 61 74 6f 72 31 20 3d 20 52 61 6e 64 6f 6d 3a 3a 52 61 6e | ine'....generator1.=.Random::Ran |
| 20500 | 64 6f 6d 4f 72 67 2e 6e 65 77 0d 0a 70 75 74 73 20 67 65 6e 65 72 61 74 6f 72 31 2e 72 61 6e 64 | domOrg.new..puts.generator1.rand |
| 20520 | 62 79 74 65 28 35 29 2e 6a 6f 69 6e 28 22 2c 22 29 0d 0a 70 75 74 73 20 67 65 6e 65 72 61 74 6f | byte(5).join(",")..puts.generato |
| 20540 | 72 31 2e 72 61 6e 64 6e 75 6d 28 31 30 2c 20 31 2c 20 36 29 2e 6a 6f 69 6e 28 22 2c 22 29 20 20 | r1.randnum(10,.1,.6).join(",").. |
| 20560 | 23 20 52 6f 6c 6c 20 64 69 63 65 20 31 30 20 74 69 6d 65 73 2e 0d 0a 0d 0a 67 65 6e 65 72 61 74 | #.Roll.dice.10.times.....generat |
| 20580 | 6f 72 32 20 3d 20 52 61 6e 64 6f 6d 3a 3a 46 6f 75 72 6d 69 4c 61 62 2e 6e 65 77 0d 0a 70 75 74 | or2.=.Random::FourmiLab.new..put |
| 205a0 | 73 20 67 65 6e 65 72 61 74 6f 72 32 2e 72 61 6e 64 62 79 74 65 28 35 29 2e 6a 6f 69 6e 28 22 2c | s.generator2.randbyte(5).join(", |
| 205c0 | 22 29 0d 0a 23 20 72 61 6e 64 6e 75 6d 20 69 73 20 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 2e 0d | ")..#.randnum.is.not.supported.. |
| 205e0 | 0a 0d 0a 67 65 6e 65 72 61 74 6f 72 33 20 3d 20 52 61 6e 64 6f 6d 3a 3a 45 6e 74 72 6f 70 79 50 | ...generator3.=.Random::EntropyP |
| 20600 | 6f 6f 6c 2e 6e 65 77 0d 0a 70 75 74 73 20 67 65 6e 65 72 61 74 6f 72 33 2e 72 61 6e 64 62 79 74 | ool.new..puts.generator3.randbyt |
| 20620 | 65 28 35 29 2e 6a 6f 69 6e 28 22 2c 22 29 0d 0a 23 20 72 61 6e 64 6e 75 6d 20 69 73 20 6e 6f 74 | e(5).join(",")..#.randnum.is.not |
| 20640 | 20 73 75 70 70 6f 72 74 65 64 2e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 | .supported.......#.@@PLEAC@@_2.1 |
| 20660 | 30 0d 0a 64 65 66 20 67 61 75 73 73 69 61 6e 5f 72 61 6e 64 0d 0a 20 20 20 20 62 65 67 69 6e 0d | 0..def.gaussian_rand......begin. |
| 20680 | 0a 20 20 20 20 20 20 20 20 75 31 20 3d 20 32 20 2a 20 72 61 6e 64 28 29 20 2d 20 31 0d 0a 20 20 | .........u1.=.2.*.rand().-.1.... |
| 206a0 | 20 20 20 20 20 20 75 32 20 3d 20 32 20 2a 20 72 61 6e 64 28 29 20 2d 20 31 0d 0a 20 20 20 20 20 | ......u2.=.2.*.rand().-.1....... |
| 206c0 | 20 20 20 77 20 3d 20 75 31 2a 75 31 20 2b 20 75 32 2a 75 32 0d 0a 20 20 20 20 65 6e 64 20 77 68 | ...w.=.u1*u1.+.u2*u2......end.wh |
| 206e0 | 69 6c 65 20 28 77 20 3e 3d 20 31 29 0d 0a 20 20 20 20 77 20 3d 20 4d 61 74 68 2e 73 71 72 74 28 | ile.(w.>=.1)......w.=.Math.sqrt( |
| 20700 | 28 2d 32 2a 4d 61 74 68 2e 6c 6f 67 28 77 29 29 2f 77 29 0d 0a 20 20 20 20 5b 20 75 32 2a 77 2c | (-2*Math.log(w))/w)......[.u2*w, |
| 20720 | 20 75 31 2a 77 20 5d 0d 0a 65 6e 64 0d 0a 0d 0a 6d 65 61 6e 20 3d 20 32 35 0d 0a 73 64 65 76 20 | .u1*w.]..end....mean.=.25..sdev. |
| 20740 | 3d 20 32 0d 0a 73 61 6c 61 72 79 20 3d 20 67 61 75 73 73 69 61 6e 5f 72 61 6e 64 5b 30 5d 20 2a | =.2..salary.=.gaussian_rand[0].* |
| 20760 | 20 73 64 65 76 20 2b 20 6d 65 61 6e 0d 0a 70 72 69 6e 74 66 28 22 59 6f 75 20 68 61 76 65 20 62 | .sdev.+.mean..printf("You.have.b |
| 20780 | 65 65 6e 20 68 69 72 65 64 20 61 74 20 5c 24 25 2e 32 66 5c 6e 22 2c 20 73 61 6c 61 72 79 29 0d | een.hired.at.\$%.2f\n",.salary). |
| 207a0 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 31 0d 0a 64 65 66 20 64 65 67 32 72 | .....#.@@PLEAC@@_2.11..def.deg2r |
| 207c0 | 61 64 28 64 29 0d 0a 20 20 20 20 28 64 2f 31 38 30 2e 30 29 2a 4d 61 74 68 3a 3a 50 49 0d 0a 65 | ad(d)......(d/180.0)*Math::PI..e |
| 207e0 | 6e 64 0d 0a 0d 0a 64 65 66 20 72 61 64 32 64 65 67 28 72 29 0d 0a 20 20 20 20 28 72 2f 4d 61 74 | nd....def.rad2deg(r)......(r/Mat |
| 20800 | 68 3a 3a 50 49 29 2a 31 38 30 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | h::PI)*180..end......#.@@PLEAC@@ |
| 20820 | 5f 32 2e 31 32 0d 0a 73 69 6e 5f 76 61 6c 20 3d 20 4d 61 74 68 2e 73 69 6e 28 61 6e 67 6c 65 29 | _2.12..sin_val.=.Math.sin(angle) |
| 20840 | 0d 0a 63 6f 73 5f 76 61 6c 20 3d 20 4d 61 74 68 2e 63 6f 73 28 61 6e 67 6c 65 29 0d 0a 74 61 6e | ..cos_val.=.Math.cos(angle)..tan |
| 20860 | 5f 76 61 6c 20 3d 20 4d 61 74 68 2e 74 61 6e 28 61 6e 67 6c 65 29 0d 0a 0d 0a 23 20 41 46 41 49 | _val.=.Math.tan(angle)....#.AFAI |
| 20880 | 4b 20 52 75 62 79 27 73 20 4d 61 74 68 20 6d 6f 64 75 6c 65 20 64 6f 65 73 6e 27 74 20 70 72 6f | K.Ruby's.Math.module.doesn't.pro |
| 208a0 | 76 69 64 65 20 61 63 6f 73 2f 61 73 69 6e 0d 0a 23 20 57 68 69 6c 65 20 77 65 27 72 65 20 61 74 | vide.acos/asin..#.While.we're.at |
| 208c0 | 20 69 74 2c 20 6c 65 74 27 73 20 61 6c 73 6f 20 64 65 66 69 6e 65 20 6d 69 73 73 69 6e 67 20 68 | .it,.let's.also.define.missing.h |
| 208e0 | 79 70 65 72 62 6f 6c 69 63 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 6d 6f 64 75 6c 65 20 4d 61 74 68 | yperbolic.functions..module.Math |
| 20900 | 0d 0a 20 20 20 20 64 65 66 20 4d 61 74 68 2e 61 73 69 6e 28 78 29 0d 0a 20 20 20 20 20 20 20 20 | ......def.Math.asin(x).......... |
| 20920 | 61 74 61 6e 32 28 78 2c 20 73 71 72 74 28 31 20 2d 20 78 2a 2a 32 29 29 0d 0a 20 20 20 20 65 6e | atan2(x,.sqrt(1.-.x**2))......en |
| 20940 | 64 0d 0a 20 20 20 20 64 65 66 20 4d 61 74 68 2e 61 63 6f 73 28 78 29 0d 0a 20 20 20 20 20 20 20 | d......def.Math.acos(x)......... |
| 20960 | 20 61 74 61 6e 32 28 73 71 72 74 28 31 20 2d 20 78 2a 2a 32 29 2c 20 78 29 0d 0a 20 20 20 20 65 | .atan2(sqrt(1.-.x**2),.x)......e |
| 20980 | 6e 64 0d 0a 20 20 20 20 64 65 66 20 4d 61 74 68 2e 61 74 61 6e 28 78 29 0d 0a 20 20 20 20 20 20 | nd......def.Math.atan(x)........ |
| 209a0 | 20 20 61 74 61 6e 32 28 78 2c 20 31 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 | ..atan2(x,.1)......end......def. |
| 209c0 | 4d 61 74 68 2e 73 69 6e 68 28 78 29 0d 0a 20 20 20 20 20 20 20 20 28 65 78 70 28 78 29 20 2d 20 | Math.sinh(x)..........(exp(x).-. |
| 209e0 | 65 78 70 28 2d 78 29 29 20 2f 20 32 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 4d | exp(-x))./.2......end......def.M |
| 20a00 | 61 74 68 2e 63 6f 73 68 28 78 29 0d 0a 20 20 20 20 20 20 20 20 28 65 78 70 28 78 29 20 2b 20 65 | ath.cosh(x)..........(exp(x).+.e |
| 20a20 | 78 70 28 2d 78 29 29 20 2f 20 32 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 4d 61 | xp(-x))./.2......end......def.Ma |
| 20a40 | 74 68 2e 74 61 6e 68 28 78 29 0d 0a 20 20 20 20 20 20 20 20 73 69 6e 68 28 78 29 20 2f 20 63 6f | th.tanh(x)..........sinh(x)./.co |
| 20a60 | 73 68 28 78 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 68 65 20 73 75 70 | sh(x)......end..end....#.The.sup |
| 20a80 | 70 6f 72 74 20 66 6f 72 20 43 6f 6d 70 6c 65 78 20 6e 75 6d 62 65 72 73 20 69 73 20 6e 6f 74 20 | port.for.Complex.numbers.is.not. |
| 20aa0 | 62 75 69 6c 74 2d 69 6e 0d 0a 79 20 3d 20 4d 61 74 68 2e 61 63 6f 73 28 33 2e 37 29 0d 0a 23 3d | built-in..y.=.Math.acos(3.7)..#= |
| 20ac0 | 3e 20 69 6e 20 60 73 71 72 74 27 3a 20 73 71 75 61 72 65 20 72 6f 6f 74 20 66 6f 72 20 6e 65 67 | >.in.`sqrt':.square.root.for.neg |
| 20ae0 | 61 74 69 76 65 20 6e 75 6d 62 65 72 20 28 41 72 67 75 6d 65 6e 74 45 72 72 6f 72 29 0d 0a 0d 0a | ative.number.(ArgumentError).... |
| 20b00 | 23 20 54 68 65 72 65 20 69 73 20 61 6e 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 | #.There.is.an.implementation.of. |
| 20b20 | 43 6f 6d 70 6c 65 78 20 6e 75 6d 62 65 72 73 20 69 6e 20 27 63 6f 6d 70 6c 65 78 2e 72 62 27 20 | Complex.numbers.in.'complex.rb'. |
| 20b40 | 69 6e 20 63 75 72 72 65 6e 74 0d 0a 23 20 52 75 62 79 20 64 69 73 74 72 6f 2c 20 62 75 74 20 69 | in.current..#.Ruby.distro,.but.i |
| 20b60 | 74 20 64 6f 65 73 6e 27 74 20 73 75 70 70 6f 72 74 20 61 74 61 6e 32 20 77 69 74 68 20 63 6f 6d | t.doesn't.support.atan2.with.com |
| 20b80 | 70 6c 65 78 20 61 72 67 73 2c 20 73 6f 20 69 74 20 64 6f 65 73 6e 27 74 0d 0a 23 20 73 6f 6c 76 | plex.args,.so.it.doesn't..#.solv |
| 20ba0 | 65 20 74 68 69 73 20 70 72 6f 62 6c 65 6d 2e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | e.this.problem.......#.@@PLEAC@@ |
| 20bc0 | 5f 32 2e 31 33 0d 0a 6c 6f 67 5f 65 20 3d 20 4d 61 74 68 2e 6c 6f 67 28 76 61 6c 29 0d 0a 6c 6f | _2.13..log_e.=.Math.log(val)..lo |
| 20be0 | 67 5f 31 30 20 3d 20 4d 61 74 68 2e 6c 6f 67 31 30 28 76 61 6c 29 0d 0a 0d 0a 64 65 66 20 6c 6f | g_10.=.Math.log10(val)....def.lo |
| 20c00 | 67 5f 62 61 73 65 28 62 61 73 65 2c 20 76 61 6c 29 0d 0a 20 20 20 20 4d 61 74 68 2e 6c 6f 67 28 | g_base(base,.val)......Math.log( |
| 20c20 | 76 61 6c 29 2f 4d 61 74 68 2e 6c 6f 67 28 62 61 73 65 29 0d 0a 65 6e 64 0d 0a 0d 0a 61 6e 73 77 | val)/Math.log(base)..end....answ |
| 20c40 | 65 72 20 3d 20 6c 6f 67 5f 62 61 73 65 28 31 30 2c 20 31 30 5f 30 30 30 29 0d 0a 70 75 74 73 20 | er.=.log_base(10,.10_000)..puts. |
| 20c60 | 22 6c 6f 67 31 30 28 31 30 2c 30 30 30 29 20 3d 20 23 7b 61 6e 73 77 65 72 7d 22 0d 0a 0d 0a 0d | "log10(10,000).=.#{answer}"..... |
| 20c80 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 34 0d 0a 72 65 71 75 69 72 65 20 27 6d 61 74 72 | .#.@@PLEAC@@_2.14..require.'matr |
| 20ca0 | 69 78 2e 72 62 27 0d 0a 0d 0a 61 20 3d 20 4d 61 74 72 69 78 5b 5b 33 2c 20 32 2c 20 33 5d 2c 20 | ix.rb'....a.=.Matrix[[3,.2,.3],. |
| 20cc0 | 5b 35 2c 20 39 2c 20 38 5d 5d 0d 0a 62 20 3d 20 4d 61 74 72 69 78 5b 5b 34 2c 20 37 5d 2c 20 5b | [5,.9,.8]]..b.=.Matrix[[4,.7],.[ |
| 20ce0 | 39 2c 20 33 5d 2c 20 5b 38 2c 20 31 5d 5d 0d 0a 63 20 3d 20 61 20 2a 20 62 0d 0a 0d 0a 61 2e 72 | 9,.3],.[8,.1]]..c.=.a.*.b....a.r |
| 20d00 | 6f 77 5f 73 69 7a 65 0d 0a 61 2e 63 6f 6c 75 6d 6e 5f 73 69 7a 65 0d 0a 0d 0a 63 2e 64 65 74 0d | ow_size..a.column_size....c.det. |
| 20d20 | 0a 61 2e 74 72 61 6e 73 70 6f 73 65 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e | .a.transpose......#.@@PLEAC@@_2. |
| 20d40 | 31 35 0d 0a 72 65 71 75 69 72 65 20 27 63 6f 6d 70 6c 65 78 2e 72 62 27 0d 0a 72 65 71 75 69 72 | 15..require.'complex.rb'..requir |
| 20d60 | 65 20 27 72 61 74 69 6f 6e 61 6c 2e 72 62 27 0d 0a 0d 0a 61 20 3d 20 43 6f 6d 70 6c 65 78 28 33 | e.'rational.rb'....a.=.Complex(3 |
| 20d80 | 2c 20 35 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 33 20 2b 20 35 69 0d 0a 62 20 3d 20 | ,.5)..............#.3.+.5i..b.=. |
| 20da0 | 43 6f 6d 70 6c 65 78 28 32 2c 20 2d 32 29 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 32 20 2d | Complex(2,.-2).............#.2.- |
| 20dc0 | 20 32 69 0d 0a 70 75 74 73 20 22 63 20 3d 20 23 7b 61 2a 62 7d 22 0d 0a 0d 0a 63 20 3d 20 61 20 | .2i..puts."c.=.#{a*b}"....c.=.a. |
| 20de0 | 2a 20 62 0d 0a 64 20 3d 20 33 20 2b 20 34 2a 43 6f 6d 70 6c 65 78 3a 3a 49 0d 0a 0d 0a 70 72 69 | *.b..d.=.3.+.4*Complex::I....pri |
| 20e00 | 6e 74 66 20 22 73 71 72 74 28 23 7b 64 7d 29 20 3d 20 25 73 5c 6e 22 2c 20 4d 61 74 68 2e 73 71 | ntf."sqrt(#{d}).=.%s\n",.Math.sq |
| 20e20 | 72 74 28 64 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 36 0d 0a 6e 75 6d | rt(d)......#.@@PLEAC@@_2.16..num |
| 20e40 | 62 65 72 20 3d 20 68 65 78 61 64 65 63 69 6d 61 6c 2e 68 65 78 0d 0a 6e 75 6d 62 65 72 20 3d 20 | ber.=.hexadecimal.hex..number.=. |
| 20e60 | 6f 63 74 61 6c 2e 6f 63 74 0d 0a 0d 0a 70 72 69 6e 74 20 22 47 69 6d 6d 65 20 61 20 6e 75 6d 62 | octal.oct....print."Gimme.a.numb |
| 20e80 | 65 72 20 69 6e 20 64 65 63 69 6d 61 6c 2c 20 6f 63 74 61 6c 2c 20 6f 72 20 68 65 78 3a 20 22 0d | er.in.decimal,.octal,.or.hex:.". |
| 20ea0 | 0a 6e 75 6d 20 3d 20 67 65 74 73 2e 63 68 6f 6d 70 0d 0a 65 78 69 74 20 75 6e 6c 65 73 73 20 64 | .num.=.gets.chomp..exit.unless.d |
| 20ec0 | 65 66 69 6e 65 64 3f 28 6e 75 6d 29 0d 0a 6e 75 6d 20 3d 20 6e 75 6d 2e 6f 63 74 20 69 66 20 6e | efined?(num)..num.=.num.oct.if.n |
| 20ee0 | 75 6d 20 3d 7e 20 2f 5e 30 2f 20 20 23 20 64 6f 65 73 20 62 6f 74 68 20 6f 63 74 20 61 6e 64 20 | um.=~./^0/..#.does.both.oct.and. |
| 20f00 | 68 65 78 0d 0a 70 72 69 6e 74 66 20 22 25 64 20 25 78 20 25 6f 5c 6e 22 2c 20 6e 75 6d 2c 20 6e | hex..printf."%d.%x.%o\n",.num,.n |
| 20f20 | 75 6d 2c 20 6e 75 6d 0d 0a 0d 0a 70 72 69 6e 74 20 22 45 6e 74 65 72 20 66 69 6c 65 20 70 65 72 | um,.num....print."Enter.file.per |
| 20f40 | 6d 69 73 73 69 6f 6e 20 69 6e 20 6f 63 74 61 6c 3a 20 22 0d 0a 70 65 72 6d 69 73 73 69 6f 6e 73 | mission.in.octal:."..permissions |
| 20f60 | 20 3d 20 67 65 74 73 2e 63 68 6f 6d 70 0d 0a 72 61 69 73 65 20 22 45 78 69 74 69 6e 67 20 2e 2e | .=.gets.chomp..raise."Exiting... |
| 20f80 | 2e 5c 6e 22 20 75 6e 6c 65 73 73 20 64 65 66 69 6e 65 64 3f 28 70 65 72 6d 69 73 73 69 6f 6e 73 | .\n".unless.defined?(permissions |
| 20fa0 | 29 0d 0a 70 75 74 73 20 22 54 68 65 20 64 65 63 69 6d 61 6c 20 76 61 6c 75 65 20 69 73 20 23 7b | )..puts."The.decimal.value.is.#{ |
| 20fc0 | 70 65 72 6d 69 73 73 69 6f 6e 73 2e 6f 63 74 7d 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | permissions.oct}"......#.@@PLEAC |
| 20fe0 | 40 40 5f 32 2e 31 37 0d 0a 64 65 66 20 63 6f 6d 6d 69 66 79 28 6e 29 0d 0a 20 20 20 20 6e 2e 74 | @@_2.17..def.commify(n)......n.t |
| 21000 | 6f 5f 73 20 3d 7e 20 2f 28 5b 5e 5c 2e 5d 2a 29 28 5c 2e 2e 2a 29 3f 2f 0d 0a 20 20 20 20 69 6e | o_s.=~./([^\.]*)(\..*)?/......in |
| 21020 | 74 2c 20 64 65 63 20 3d 20 24 31 2e 72 65 76 65 72 73 65 2c 20 24 32 20 3f 20 24 32 20 3a 20 22 | t,.dec.=.$1.reverse,.$2.?.$2.:." |
| 21040 | 22 0d 0a 20 20 20 20 77 68 69 6c 65 20 69 6e 74 2e 67 73 75 62 21 28 2f 28 2c 7c 5c 2e 7c 5e 29 | "......while.int.gsub!(/(,|\.|^) |
| 21060 | 28 5c 64 7b 33 7d 29 28 5c 64 29 2f 2c 20 27 5c 31 5c 32 2c 5c 33 27 29 0d 0a 20 20 20 20 65 6e | (\d{3})(\d)/,.'\1\2,\3')......en |
| 21080 | 64 0d 0a 20 20 20 20 69 6e 74 2e 72 65 76 65 72 73 65 20 2b 20 64 65 63 0d 0a 65 6e 64 0d 0a 0d | d......int.reverse.+.dec..end... |
| 210a0 | 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 38 0d 0a 70 72 69 6e 74 66 20 22 49 74 20 | ...#.@@PLEAC@@_2.18..printf."It. |
| 210c0 | 74 6f 6f 6b 20 25 64 20 68 6f 75 72 25 73 5c 6e 22 2c 20 74 69 6d 65 2c 20 74 69 6d 65 20 3d 3d | took.%d.hour%s\n",.time,.time.== |
| 210e0 | 20 31 20 3f 20 22 22 20 3a 20 22 73 22 0d 0a 0d 0a 23 20 64 75 6e 6e 6f 20 69 66 20 61 6e 20 65 | .1.?."".:."s"....#.dunno.if.an.e |
| 21100 | 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 4c 69 6e 67 75 61 3a 3a 45 4e 3a 3a 49 6e 66 6c 65 63 74 | quivalent.to.Lingua::EN::Inflect |
| 21120 | 20 65 78 69 73 74 73 2e 2e 2e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 2e 31 39 | .exists.........#.@@PLEAC@@_2.19 |
| 21140 | 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#----------------------------- |
| 21160 | 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 0d 0a 23 20 62 69 67 66 61 63 74 20 2d 20 63 | ..#!/usr/bin/ruby..#.bigfact.-.c |
| 21180 | 61 6c 63 75 6c 61 74 69 6e 67 20 70 72 69 6d 65 20 66 61 63 74 6f 72 73 0d 0a 64 65 66 20 66 61 | alculating.prime.factors..def.fa |
| 211a0 | 63 74 6f 72 69 7a 65 28 6f 72 69 67 29 0d 0a 20 20 20 20 66 61 63 74 6f 72 73 20 3d 20 7b 7d 0d | ctorize(orig)......factors.=.{}. |
| 211c0 | 0a 20 20 20 20 66 61 63 74 6f 72 73 2e 64 65 66 61 75 6c 74 20 3d 20 30 20 20 20 20 20 23 20 72 | .....factors.default.=.0.....#.r |
| 211e0 | 65 74 75 72 6e 20 30 20 69 6e 73 74 65 61 64 20 6e 69 6c 20 69 66 20 6b 65 79 20 6e 6f 74 20 66 | eturn.0.instead.nil.if.key.not.f |
| 21200 | 6f 75 6e 64 20 69 6e 20 68 61 73 68 0d 0a 20 20 20 20 6e 20 3d 20 6f 72 69 67 0d 0a 20 20 20 20 | ound.in.hash......n.=.orig...... |
| 21220 | 69 20 3d 20 32 0d 0a 20 20 20 20 73 71 69 20 3d 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | i.=.2......sqi.=.4.............. |
| 21240 | 20 20 20 23 20 73 71 75 61 72 65 20 6f 66 20 69 0d 0a 20 20 20 20 77 68 69 6c 65 20 73 71 69 20 | ...#.square.of.i......while.sqi. |
| 21260 | 3c 3d 20 6e 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 6e 2e 6d 6f 64 75 6c 6f 28 | <=.n.do..........while.n.modulo( |
| 21280 | 69 29 20 3d 3d 20 30 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 20 2f 3d 20 69 0d 0a | i).==.0.do..............n./=.i.. |
| 212a0 | 20 20 20 20 20 20 20 20 20 20 20 20 66 61 63 74 6f 72 73 5b 69 5d 20 2b 3d 20 31 0d 0a 20 20 20 | ............factors[i].+=.1..... |
| 212c0 | 20 20 20 20 20 20 20 20 20 23 20 70 75 74 73 20 22 46 6f 75 6e 64 20 66 61 63 74 6f 72 20 23 7b | .........#.puts."Found.factor.#{ |
| 212e0 | 69 7d 22 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 23 20 77 65 20 74 | i}"..........end..........#.we.t |
| 21300 | 61 6b 65 20 61 64 76 61 6e 74 61 67 65 20 6f 66 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 28 | ake.advantage.of.the.fact.that.( |
| 21320 | 69 20 2b 31 29 2a 2a 32 20 3d 20 69 2a 2a 32 20 2b 20 32 2a 69 20 2b 31 0d 0a 20 20 20 20 20 20 | i.+1)**2.=.i**2.+.2*i.+1........ |
| 21340 | 20 20 73 71 69 20 2b 3d 20 32 20 2a 20 69 20 2b 20 31 0d 0a 20 20 20 20 20 20 20 20 69 20 2b 3d | ..sqi.+=.2.*.i.+.1..........i.+= |
| 21360 | 20 31 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 69 66 20 28 6e 20 21 3d 20 31 29 20 26 | .1......end........if.(n.!=.1).& |
| 21380 | 26 20 28 6e 20 21 3d 20 6f 72 69 67 29 0d 0a 20 20 20 20 20 20 20 20 66 61 63 74 6f 72 73 5b 6e | &.(n.!=.orig)..........factors[n |
| 213a0 | 5d 20 2b 3d 20 31 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 66 61 63 74 6f 72 73 0d 0a 65 6e | ].+=.1......end......factors..en |
| 213c0 | 64 0d 0a 0d 0a 64 65 66 20 70 72 69 6e 74 66 61 63 74 6f 72 68 61 73 68 28 6f 72 69 67 2c 20 66 | d....def.printfactorhash(orig,.f |
| 213e0 | 61 63 74 6f 72 63 6f 75 6e 74 29 0d 0a 20 20 20 20 70 72 69 6e 74 20 66 6f 72 6d 61 74 28 22 25 | actorcount)......print.format("% |
| 21400 | 2d 31 30 64 20 22 2c 20 6f 72 69 67 29 0d 0a 20 20 20 20 69 66 20 66 61 63 74 6f 72 63 6f 75 6e | -10d.",.orig)......if.factorcoun |
| 21420 | 74 2e 6c 65 6e 67 74 68 20 3d 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 50 52 | t.length.==.0..........print."PR |
| 21440 | 49 4d 45 22 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 23 20 73 6f 72 74 73 20 | IME"......else..........#.sorts. |
| 21460 | 61 66 74 65 72 20 6e 75 6d 62 65 72 2c 20 62 65 63 61 75 73 65 20 74 68 65 20 68 61 73 68 20 6b | after.number,.because.the.hash.k |
| 21480 | 65 79 73 20 61 72 65 20 6e 75 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 66 61 63 74 6f 72 63 | eys.are.numbers..........factorc |
| 214a0 | 6f 75 6e 74 2e 73 6f 72 74 2e 65 61 63 68 20 7b 20 7c 66 61 63 74 6f 72 2c 65 78 70 6f 6e 65 6e | ount.sort.each.{.|factor,exponen |
| 214c0 | 74 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 66 61 63 74 6f 72 0d 0a 20 20 | t|..............print.factor.... |
| 214e0 | 20 20 20 20 20 20 20 20 20 20 69 66 20 65 78 70 6f 6e 65 6e 74 20 3e 20 31 0d 0a 20 20 20 20 20 | ..........if.exponent.>.1....... |
| 21500 | 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 2a 2a 22 2c 20 65 78 70 6f 6e 65 6e 74 0d | ...........print."**",.exponent. |
| 21520 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 | .............end..............pr |
| 21540 | 69 6e 74 20 22 20 22 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 | int."."..........}......end..... |
| 21560 | 20 70 75 74 73 0d 0a 65 6e 64 0d 0a 0d 0a 66 6f 72 20 61 72 67 20 69 6e 20 41 52 47 56 0d 0a 20 | .puts..end....for.arg.in.ARGV... |
| 21580 | 20 20 20 6e 20 3d 20 61 72 67 2e 74 6f 5f 69 0d 0a 20 20 20 20 6d 66 61 63 74 6f 72 73 20 3d 20 | ...n.=.arg.to_i......mfactors.=. |
| 215a0 | 66 61 63 74 6f 72 69 7a 65 28 6e 29 0d 0a 20 20 20 20 70 72 69 6e 74 66 61 63 74 6f 72 68 61 73 | factorize(n)......printfactorhas |
| 215c0 | 68 28 6e 2c 20 6d 66 61 63 74 6f 72 73 29 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | h(n,.mfactors)..end..#---------- |
| 215e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | -------------------......#.@@PLE |
| 21600 | 41 43 40 40 5f 33 2e 30 0d 0a 70 75 74 73 20 54 69 6d 65 2e 6e 6f 77 0d 0a 0d 0a 70 72 69 6e 74 | AC@@_3.0..puts.Time.now....print |
| 21620 | 20 22 54 6f 64 61 79 20 69 73 20 64 61 79 20 22 2c 20 54 69 6d 65 2e 6e 6f 77 2e 79 64 61 79 2c | ."Today.is.day.",.Time.now.yday, |
| 21640 | 20 22 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 79 65 61 72 2e 5c 6e 22 0d 0a 70 72 69 6e | .".of.the.current.year.\n"..prin |
| 21660 | 74 20 22 54 6f 64 61 79 20 69 73 20 64 61 79 20 22 2c 20 54 69 6d 65 2e 6e 6f 77 2e 64 61 79 2c | t."Today.is.day.",.Time.now.day, |
| 21680 | 20 22 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 6d 6f 6e 74 68 2e 5c 6e 22 0d 0a 0d 0a 0d | .".of.the.current.month.\n"..... |
| 216a0 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e 31 0d 0a 64 61 79 2c 20 6d 6f 6e 74 68 2c 20 79 65 | .#.@@PLEAC@@_3.1..day,.month,.ye |
| 216c0 | 61 72 20 3d 20 54 69 6d 65 2e 6e 6f 77 2e 64 61 79 2c 20 54 69 6d 65 2e 6e 6f 77 2e 6d 6f 6e 74 | ar.=.Time.now.day,.Time.now.mont |
| 216e0 | 68 2c 20 54 69 6d 65 2e 6e 6f 77 2e 79 65 61 72 0d 0a 23 20 6f 72 0d 0a 64 61 79 2c 20 6d 6f 6e | h,.Time.now.year..#.or..day,.mon |
| 21700 | 74 68 2c 20 79 65 61 72 20 3d 20 54 69 6d 65 2e 6e 6f 77 2e 74 6f 5f 61 5b 33 2e 2e 35 5d 0d 0a | th,.year.=.Time.now.to_a[3..5].. |
| 21720 | 0d 0a 74 6c 20 3d 20 54 69 6d 65 2e 6e 6f 77 2e 6c 6f 63 61 6c 74 69 6d 65 0d 0a 70 72 69 6e 74 | ..tl.=.Time.now.localtime..print |
| 21740 | 66 28 22 54 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 65 20 69 73 20 25 30 34 64 20 25 30 32 64 | f("The.current.date.is.%04d.%02d |
| 21760 | 20 25 30 32 64 5c 6e 22 2c 20 74 6c 2e 79 65 61 72 2c 20 74 6c 2e 6d 6f 6e 74 68 2c 20 74 6c 2e | .%02d\n",.tl.year,.tl.month,.tl. |
| 21780 | 64 61 79 29 0d 0a 0d 0a 54 69 6d 65 2e 6e 6f 77 2e 6c 6f 63 61 6c 74 69 6d 65 2e 73 74 72 66 74 | day)....Time.now.localtime.strft |
| 217a0 | 69 6d 65 28 22 25 59 2d 25 6d 2d 25 64 22 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | ime("%Y-%m-%d")......#.@@PLEAC@@ |
| 217c0 | 5f 33 2e 32 0d 0a 54 69 6d 65 2e 6c 6f 63 61 6c 28 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 | _3.2..Time.local(year,.month,.da |
| 217e0 | 79 2c 20 68 6f 75 72 2c 20 6d 69 6e 75 74 65 2c 20 73 65 63 6f 6e 64 29 2e 74 76 5f 73 65 63 0d | y,.hour,.minute,.second).tv_sec. |
| 21800 | 0a 54 69 6d 65 2e 67 6d 28 79 65 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 79 2c 20 68 6f 75 72 2c | .Time.gm(year,.month,.day,.hour, |
| 21820 | 20 6d 69 6e 75 74 65 2c 20 73 65 63 6f 6e 64 29 2e 74 76 5f 73 65 63 0d 0a 0d 0a 0d 0a 23 20 40 | .minute,.second).tv_sec......#.@ |
| 21840 | 40 50 4c 45 41 43 40 40 5f 33 2e 33 0d 0a 73 65 63 2c 20 6d 69 6e 2c 20 68 6f 75 72 2c 20 64 61 | @PLEAC@@_3.3..sec,.min,.hour,.da |
| 21860 | 79 2c 20 6d 6f 6e 74 68 2c 20 79 65 61 72 2c 20 77 64 61 79 2c 20 79 64 61 79 2c 20 69 73 64 73 | y,.month,.year,.wday,.yday,.isds |
| 21880 | 74 2c 20 7a 6f 6e 65 20 3d 20 54 69 6d 65 2e 61 74 28 65 70 6f 63 68 5f 73 65 63 73 29 2e 74 6f | t,.zone.=.Time.at(epoch_secs).to |
| 218a0 | 5f 61 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e 34 0d 0a 77 68 65 6e 5f 20 3d | _a......#.@@PLEAC@@_3.4..when_.= |
| 218c0 | 20 6e 6f 77 20 2b 20 64 69 66 66 65 72 65 6e 63 65 20 20 20 20 20 20 20 20 20 23 20 6e 6f 77 20 | .now.+.difference.........#.now. |
| 218e0 | 2d 3e 20 54 69 6d 65 20 3b 20 64 69 66 66 65 72 65 6e 63 65 20 2d 3e 20 4e 75 6d 65 72 69 63 20 | ->.Time.;.difference.->.Numeric. |
| 21900 | 28 64 65 6c 74 61 20 69 6e 20 73 65 63 6f 6e 64 73 29 0d 0a 74 68 65 6e 5f 20 3d 20 6e 6f 77 20 | (delta.in.seconds)..then_.=.now. |
| 21920 | 2d 20 64 69 66 66 65 72 65 6e 63 65 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e | -.difference......#.@@PLEAC@@_3. |
| 21940 | 35 0d 0a 62 72 65 65 20 3d 20 33 36 31 35 33 35 37 32 35 0d 0a 6e 61 74 20 20 3d 20 20 39 36 32 | 5..bree.=.361535725..nat..=..962 |
| 21960 | 30 31 39 35 30 0d 0a 0d 0a 64 69 66 66 65 72 65 6e 63 65 20 3d 20 62 72 65 65 20 2d 20 6e 61 74 | 01950....difference.=.bree.-.nat |
| 21980 | 0d 0a 70 75 74 73 20 22 54 68 65 72 65 20 77 65 72 65 20 23 7b 64 69 66 66 65 72 65 6e 63 65 7d | ..puts."There.were.#{difference} |
| 219a0 | 20 73 65 63 6f 6e 64 73 20 62 65 74 77 65 65 6e 20 4e 61 74 20 61 6e 64 20 42 72 65 65 22 0d 0a | .seconds.between.Nat.and.Bree".. |
| 219c0 | 0d 0a 73 65 63 6f 6e 64 73 20 20 20 20 3d 20 20 64 69 66 66 65 72 65 6e 63 65 20 25 20 36 30 0d | ..seconds....=..difference.%.60. |
| 219e0 | 0a 64 69 66 66 65 72 65 6e 63 65 20 3d 20 28 64 69 66 66 65 72 65 6e 63 65 20 2d 20 73 65 63 6f | .difference.=.(difference.-.seco |
| 21a00 | 6e 64 73 29 20 2f 20 36 30 0d 0a 6d 69 6e 75 74 65 73 20 20 20 20 3d 20 20 64 69 66 66 65 72 65 | nds)./.60..minutes....=..differe |
| 21a20 | 6e 63 65 20 25 20 36 30 0d 0a 64 69 66 66 65 72 65 6e 63 65 20 3d 20 28 64 69 66 66 65 72 65 6e | nce.%.60..difference.=.(differen |
| 21a40 | 63 65 20 2d 20 6d 69 6e 75 74 65 73 29 20 2f 20 36 30 0d 0a 68 6f 75 72 73 20 20 20 20 20 20 3d | ce.-.minutes)./.60..hours......= |
| 21a60 | 20 20 64 69 66 66 65 72 65 6e 63 65 20 25 20 32 34 0d 0a 64 69 66 66 65 72 65 6e 63 65 20 3d 20 | ..difference.%.24..difference.=. |
| 21a80 | 28 64 69 66 66 65 72 65 6e 63 65 20 2d 20 68 6f 75 72 73 29 20 20 20 2f 20 32 34 0d 0a 64 61 79 | (difference.-.hours).../.24..day |
| 21aa0 | 73 20 20 20 20 20 20 20 3d 20 20 64 69 66 66 65 72 65 6e 63 65 20 25 20 37 0d 0a 77 65 65 6b 73 | s.......=..difference.%.7..weeks |
| 21ac0 | 20 20 20 20 20 20 3d 20 28 64 69 66 66 65 72 65 6e 63 65 20 2d 20 64 61 79 73 29 20 20 20 20 2f | ......=.(difference.-.days)..../ |
| 21ae0 | 20 20 37 0d 0a 0d 0a 70 75 74 73 20 22 28 23 7b 77 65 65 6b 73 7d 20 77 65 65 6b 73 2c 20 23 7b | ..7....puts."(#{weeks}.weeks,.#{ |
| 21b00 | 64 61 79 73 7d 20 64 61 79 73 2c 20 23 7b 68 6f 75 72 73 7d 3a 23 7b 6d 69 6e 75 74 65 73 7d 3a | days}.days,.#{hours}:#{minutes}: |
| 21b20 | 23 7b 73 65 63 6f 6e 64 73 7d 29 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e | #{seconds})"......#.@@PLEAC@@_3. |
| 21b40 | 36 0d 0a 6d 6f 6e 74 68 64 61 79 2c 20 77 65 65 6b 64 61 79 2c 20 79 65 61 72 64 61 79 20 3d 20 | 6..monthday,.weekday,.yearday.=. |
| 21b60 | 64 61 74 65 2e 6d 64 61 79 2c 20 64 61 74 65 2e 77 64 61 79 2c 20 64 61 74 65 2e 79 64 61 79 0d | date.mday,.date.wday,.date.yday. |
| 21b80 | 0a 0d 0a 23 20 41 46 41 49 4b 20 74 68 65 20 77 65 65 6b 20 6e 75 6d 62 65 72 20 69 73 20 6e 6f | ...#.AFAIK.the.week.number.is.no |
| 21ba0 | 74 20 6a 75 73 74 20 61 20 64 69 76 69 73 69 6f 6e 20 73 69 6e 63 65 20 77 65 65 6b 20 62 6f 75 | t.just.a.division.since.week.bou |
| 21bc0 | 6e 64 61 72 69 65 73 20 61 72 65 20 6f 6e 20 73 75 6e 64 61 79 73 0d 0a 77 65 65 6b 6e 75 6d 20 | ndaries.are.on.sundays..weeknum. |
| 21be0 | 3d 20 64 2e 73 74 72 66 74 69 6d 65 28 22 25 55 22 29 2e 74 6f 5f 69 20 2b 20 31 0d 0a 0d 0a 79 | =.d.strftime("%U").to_i.+.1....y |
| 21c00 | 65 61 72 20 20 3d 20 31 39 38 31 0d 0a 6d 6f 6e 74 68 20 3d 20 22 6a 75 6e 22 20 20 20 20 20 20 | ear..=.1981..month.=."jun"...... |
| 21c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6f 72 20 60 36 27 20 69 66 20 79 6f 75 20 77 | ...............#.or.`6'.if.you.w |
| 21c40 | 61 6e 74 20 74 6f 20 65 6d 75 6c 61 74 65 20 61 20 62 72 6f 6b 65 6e 20 6c 61 6e 67 75 61 67 65 | ant.to.emulate.a.broken.language |
| 21c60 | 0d 0a 64 61 79 20 20 20 3d 20 31 36 0d 0a 74 20 3d 20 54 69 6d 65 2e 6d 6b 74 69 6d 65 28 79 65 | ..day...=.16..t.=.Time.mktime(ye |
| 21c80 | 61 72 2c 20 6d 6f 6e 74 68 2c 20 64 61 79 29 0d 0a 70 72 69 6e 74 20 22 23 7b 6d 6f 6e 74 68 7d | ar,.month,.day)..print."#{month} |
| 21ca0 | 2f 23 7b 64 61 79 7d 2f 23 7b 79 65 61 72 7d 20 77 61 73 20 61 20 22 2c 20 74 2e 73 74 72 66 74 | /#{day}/#{year}.was.a.",.t.strft |
| 21cc0 | 69 6d 65 28 22 25 41 22 29 2c 20 22 5c 6e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | ime("%A"),."\n"......#.@@PLEAC@@ |
| 21ce0 | 5f 33 2e 37 0d 0a 79 79 79 79 2c 20 6d 6d 2c 20 64 64 20 3d 20 24 31 2c 20 24 32 2c 20 24 33 20 | _3.7..yyyy,.mm,.dd.=.$1,.$2,.$3. |
| 21d00 | 69 66 20 22 31 39 39 38 2d 30 36 2d 32 35 22 20 3d 7e 20 2f 28 5c 64 2b 29 2d 28 5c 64 2b 29 2d | if."1998-06-25".=~./(\d+)-(\d+)- |
| 21d20 | 28 5c 64 2b 29 2f 0d 0a 0d 0a 65 70 6f 63 68 5f 73 65 63 6f 6e 64 73 20 3d 20 54 69 6d 65 2e 6d | (\d+)/....epoch_seconds.=.Time.m |
| 21d40 | 6b 74 69 6d 65 28 79 79 79 79 2c 20 6d 6d 2c 20 64 64 29 2e 74 76 5f 73 65 63 0d 0a 0d 0a 23 20 | ktime(yyyy,.mm,.dd).tv_sec....#. |
| 21d60 | 64 75 6e 6e 6f 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 44 61 74 65 3a 3a 4d 61 6e | dunno.an.equivalent.to.Date::Man |
| 21d80 | 69 70 23 50 61 72 73 65 44 61 74 65 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e | ip#ParseDate......#.@@PLEAC@@_3. |
| 21da0 | 38 0d 0a 73 74 72 69 6e 67 20 3d 20 54 69 6d 65 2e 61 74 28 65 70 6f 63 68 5f 73 65 63 73 29 0d | 8..string.=.Time.at(epoch_secs). |
| 21dc0 | 0a 54 69 6d 65 2e 61 74 28 31 32 33 34 35 36 37 38 39 30 29 2e 67 6d 74 69 6d 65 20 20 20 20 20 | .Time.at(1234567890).gmtime..... |
| 21de0 | 20 20 20 23 20 67 69 76 65 73 3a 20 46 72 69 20 46 65 62 20 31 33 20 32 33 3a 33 31 3a 33 30 20 | ...#.gives:.Fri.Feb.13.23:31:30. |
| 21e00 | 55 54 43 20 32 30 30 39 0d 0a 0d 0a 74 69 6d 65 20 3d 20 54 69 6d 65 2e 6d 6b 74 69 6d 65 28 31 | UTC.2009....time.=.Time.mktime(1 |
| 21e20 | 39 37 33 2c 20 22 6a 61 6e 22 2c 20 31 38 2c 20 33 2c 20 34 35 2c 20 35 30 29 0d 0a 70 72 69 6e | 973,."jan",.18,.3,.45,.50)..prin |
| 21e40 | 74 20 22 49 6e 20 6c 6f 63 61 6c 74 69 6d 65 20 69 74 20 67 69 76 65 73 3a 20 22 2c 20 74 69 6d | t."In.localtime.it.gives:.",.tim |
| 21e60 | 65 2e 6c 6f 63 61 6c 74 69 6d 65 2c 20 22 5c 6e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | e.localtime,."\n"......#.@@PLEAC |
| 21e80 | 40 40 5f 33 2e 39 0d 0a 23 20 52 75 62 79 20 70 72 6f 76 69 64 65 73 20 6d 69 63 72 6f 2d 73 65 | @@_3.9..#.Ruby.provides.micro-se |
| 21ea0 | 63 6f 6e 64 73 20 69 6e 20 54 69 6d 65 20 6f 62 6a 65 63 74 0d 0a 54 69 6d 65 2e 6e 6f 77 2e 75 | conds.in.Time.object..Time.now.u |
| 21ec0 | 73 65 63 0d 0a 0d 0a 23 20 52 75 62 79 20 67 69 76 65 73 20 74 68 65 20 73 65 63 6f 6e 64 73 20 | sec....#.Ruby.gives.the.seconds. |
| 21ee0 | 69 6e 20 66 6c 6f 61 74 69 6e 67 20 66 6f 72 6d 61 74 20 77 68 65 6e 20 73 75 62 73 74 72 61 63 | in.floating.format.when.substrac |
| 21f00 | 74 69 6e 67 20 74 77 6f 20 54 69 6d 65 20 6f 62 6a 65 63 74 73 0d 0a 62 65 66 6f 72 65 20 3d 20 | ting.two.Time.objects..before.=. |
| 21f20 | 54 69 6d 65 2e 6e 6f 77 0d 0a 6c 69 6e 65 20 3d 20 67 65 74 73 0d 0a 65 6c 61 70 73 65 64 20 3d | Time.now..line.=.gets..elapsed.= |
| 21f40 | 20 54 69 6d 65 2e 6e 6f 77 20 2d 20 62 65 66 6f 72 65 0d 0a 70 75 74 73 20 22 59 6f 75 20 74 6f | .Time.now.-.before..puts."You.to |
| 21f60 | 6f 6b 20 23 7b 65 6c 61 70 73 65 64 7d 20 73 65 63 6f 6e 64 73 2e 22 0d 0a 0d 0a 23 20 4f 6e 20 | ok.#{elapsed}.seconds."....#.On. |
| 21f80 | 6d 79 20 43 65 6c 65 72 6f 6e 2d 34 30 30 20 77 69 74 68 20 4c 69 6e 75 78 2d 32 2e 32 2e 31 39 | my.Celeron-400.with.Linux-2.2.19 |
| 21fa0 | 2d 31 34 6d 64 6b 2c 20 61 76 65 72 61 67 65 20 66 6f 72 20 74 68 72 65 65 20 65 78 65 63 73 20 | -14mdk,.average.for.three.execs. |
| 21fc0 | 61 72 65 3a 0d 0a 23 20 20 20 54 68 69 73 20 52 75 62 79 20 76 65 72 73 69 6f 6e 3a 20 20 20 20 | are:..#...This.Ruby.version:.... |
| 21fe0 | 20 20 20 61 76 65 72 61 67 65 20 30 2e 30 30 33 32 31 20 73 65 63 0d 0a 23 20 20 20 43 6f 6f 6b | ...average.0.00321.sec..#...Cook |
| 22000 | 62 6f 6f 6b 27 73 20 50 65 72 6c 20 76 65 72 73 69 6f 6e 3a 20 61 76 65 72 61 67 65 20 30 2e 30 | book's.Perl.version:.average.0.0 |
| 22020 | 30 39 38 31 20 73 65 63 0d 0a 73 69 7a 65 20 3d 20 35 30 30 0d 0a 6e 75 6d 62 65 72 5f 6f 66 5f | 0981.sec..size.=.500..number_of_ |
| 22040 | 74 69 6d 65 73 20 3d 20 31 30 30 0d 0a 74 6f 74 61 6c 5f 74 69 6d 65 20 3d 20 30 0d 0a 6e 75 6d | times.=.100..total_time.=.0..num |
| 22060 | 62 65 72 5f 6f 66 5f 74 69 6d 65 73 2e 74 69 6d 65 73 20 7b 0d 0a 20 20 20 20 23 20 70 6f 70 75 | ber_of_times.times.{......#.popu |
| 22080 | 6c 61 74 65 20 61 72 72 61 79 0d 0a 20 20 20 20 61 72 72 61 79 20 3d 20 5b 5d 0d 0a 20 20 20 20 | late.array......array.=.[]...... |
| 220a0 | 73 69 7a 65 2e 74 69 6d 65 73 20 7b 20 61 72 72 61 79 20 3c 3c 20 72 61 6e 64 20 7d 0d 0a 20 20 | size.times.{.array.<<.rand.}.... |
| 220c0 | 20 20 23 20 73 6f 72 74 20 69 74 0d 0a 20 20 20 20 62 65 67 69 6e 5f 20 3d 20 54 69 6d 65 2e 6e | ..#.sort.it......begin_.=.Time.n |
| 220e0 | 6f 77 0d 0a 20 20 20 20 61 72 72 61 79 2e 73 6f 72 74 21 0d 0a 20 20 20 20 74 69 6d 65 20 3d 20 | ow......array.sort!......time.=. |
| 22100 | 54 69 6d 65 2e 6e 6f 77 20 2d 20 62 65 67 69 6e 5f 0d 0a 20 20 20 20 74 6f 74 61 6c 5f 74 69 6d | Time.now.-.begin_......total_tim |
| 22120 | 65 20 2b 3d 20 74 69 6d 65 0d 0a 7d 0d 0a 70 72 69 6e 74 66 20 22 4f 6e 20 61 76 65 72 61 67 65 | e.+=.time..}..printf."On.average |
| 22140 | 2c 20 73 6f 72 74 69 6e 67 20 25 64 20 72 61 6e 64 6f 6d 20 6e 75 6d 62 65 72 73 20 74 61 6b 65 | ,.sorting.%d.random.numbers.take |
| 22160 | 73 20 25 2e 35 66 20 73 65 63 6f 6e 64 73 5c 6e 22 2c 0d 0a 20 20 20 20 73 69 7a 65 2c 20 28 74 | s.%.5f.seconds\n",......size,.(t |
| 22180 | 6f 74 61 6c 5f 74 69 6d 65 2f 46 6c 6f 61 74 28 6e 75 6d 62 65 72 5f 6f 66 5f 74 69 6d 65 73 29 | otal_time/Float(number_of_times) |
| 221a0 | 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e 31 30 0d 0a 73 6c 65 65 70 28 30 | )......#.@@PLEAC@@_3.10..sleep(0 |
| 221c0 | 2e 30 30 35 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 52 75 62 | .005)......................#.Rub |
| 221e0 | 79 20 69 73 20 64 65 66 69 6e 69 74 65 6c 79 20 6e 6f 74 20 61 73 20 62 72 6f 6b 65 6e 20 61 73 | y.is.definitely.not.as.broken.as |
| 22200 | 20 50 65 72 6c 20 3a 29 0d 0a 23 20 28 6d 61 79 20 62 65 20 69 6e 74 65 72 72 75 70 74 65 64 20 | .Perl.:)..#.(may.be.interrupted. |
| 22220 | 62 79 20 73 65 6e 64 69 6e 67 20 74 68 65 20 70 72 6f 63 65 73 73 20 61 20 53 49 47 41 4c 52 4d | by.sending.the.process.a.SIGALRM |
| 22240 | 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 33 2e 31 31 0d 0a 23 21 2f 75 73 72 2f | )......#.@@PLEAC@@_3.11..#!/usr/ |
| 22260 | 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 68 6f 70 64 65 6c 74 61 20 2d 20 66 65 65 64 20 6d | bin/ruby.-w..#.hopdelta.-.feed.m |
| 22280 | 61 69 6c 20 68 65 61 64 65 72 2c 20 70 72 6f 64 75 63 65 20 6c 69 6e 65 73 0d 0a 23 20 20 20 20 | ail.header,.produce.lines..#.... |
| 222a0 | 20 20 20 20 20 20 20 20 73 68 6f 77 69 6e 67 20 64 65 6c 61 79 20 61 74 20 65 61 63 68 20 68 6f | ........showing.delay.at.each.ho |
| 222c0 | 70 2e 0d 0a 72 65 71 75 69 72 65 20 27 74 69 6d 65 27 0d 0a 63 6c 61 73 73 20 4d 61 69 6c 48 6f | p...require.'time'..class.MailHo |
| 222e0 | 70 44 65 6c 74 61 0d 0a 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 6d 61 69 | pDelta........def.initialize(mai |
| 22300 | 6c 29 0d 0a 20 20 20 20 20 20 20 20 40 68 65 61 64 20 3d 20 6d 61 69 6c 2e 67 73 75 62 28 2f 5c | l)..........@head.=.mail.gsub(/\ |
| 22320 | 6e 5c 73 2b 2f 2c 27 20 27 29 0d 0a 20 20 20 20 20 20 20 20 40 74 6f 70 6c 69 6e 65 20 3d 20 25 | n\s+/,'.')..........@topline.=.% |
| 22340 | 77 2d 53 65 6e 64 65 72 20 52 65 63 69 70 69 65 6e 74 20 54 69 6d 65 20 44 65 6c 74 61 2d 0d 0a | w-Sender.Recipient.Time.Delta-.. |
| 22360 | 20 20 20 20 20 20 20 20 40 73 74 61 72 74 5f 66 72 6f 6d 20 3d 20 6d 61 69 6c 2e 6d 61 74 63 68 | ........@start_from.=.mail.match |
| 22380 | 28 2f 5e 46 72 6f 6d 2e 2a 5c 40 28 5b 5e 5c 73 3e 5d 2a 29 2f 29 5b 31 5d 0d 0a 20 20 20 20 20 | (/^From.*\@([^\s>]*)/)[1]....... |
| 223a0 | 20 20 20 40 64 61 74 65 20 3d 20 54 69 6d 65 2e 70 61 72 73 65 28 6d 61 69 6c 2e 6d 61 74 63 68 | ...@date.=.Time.parse(mail.match |
| 223c0 | 28 2f 5e 44 61 74 65 3a 5c 73 2b 28 2e 2a 29 2f 29 5b 31 5d 29 0d 0a 20 20 20 20 65 6e 64 0d 0a | (/^Date:\s+(.*)/)[1])......end.. |
| 223e0 | 0d 0a 20 20 20 20 64 65 66 20 6f 75 74 28 6c 69 6e 65 29 0d 0a 20 20 20 20 20 20 20 20 20 22 25 | ......def.out(line)..........."% |
| 22400 | 2d 32 30 2e 32 30 73 20 25 2d 32 30 2e 32 30 73 20 25 2d 32 30 2e 32 30 73 20 20 25 73 22 20 25 | -20.20s.%-20.20s.%-20.20s..%s".% |
| 22420 | 20 6c 69 6e 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 68 6f 70 5f 64 61 | .line......end........def.hop_da |
| 22440 | 74 65 28 64 61 79 29 0d 0a 20 20 20 20 20 20 20 20 64 61 79 2e 73 74 72 66 74 69 6d 65 28 22 25 | te(day)..........day.strftime("% |
| 22460 | 49 3a 25 4d 3a 25 53 20 25 59 2f 25 6d 2f 25 64 22 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 | I:%M:%S.%Y/%m/%d")......end..... |
| 22480 | 20 20 20 64 65 66 20 70 75 74 73 5f 68 6f 70 73 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 6f | ...def.puts_hops..........puts.o |
| 224a0 | 75 74 28 40 74 6f 70 6c 69 6e 65 29 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 6f 75 74 28 5b | ut(@topline)..........puts.out([ |
| 224c0 | 27 53 74 61 72 74 27 2c 20 40 73 74 61 72 74 5f 66 72 6f 6d 2c 20 68 6f 70 5f 64 61 74 65 28 40 | 'Start',.@start_from,.hop_date(@ |
| 224e0 | 64 61 74 65 29 2c 27 27 5d 29 0d 0a 20 20 20 20 20 20 20 20 40 68 65 61 64 2e 73 70 6c 69 74 28 | date),''])..........@head.split( |
| 22500 | 2f 5c 6e 2f 29 2e 72 65 76 65 72 73 65 2e 67 72 65 70 28 2f 5e 52 65 63 65 69 76 65 64 3a 2f 29 | /\n/).reverse.grep(/^Received:/) |
| 22520 | 2e 65 61 63 68 20 64 6f 20 7c 68 6f 70 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 70 2e | .each.do.|hop|..............hop. |
| 22540 | 67 73 75 62 21 28 2f 5c 62 6f 6e 20 28 2e 2a 3f 29 20 28 69 64 2e 2a 29 2f 2c 27 3b 20 5c 31 27 | gsub!(/\bon.(.*?).(id.*)/,';.\1' |
| 22560 | 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 68 65 6e 63 65 20 3d 20 68 6f 70 2e 6d 61 74 63 | )..............whence.=.hop.matc |
| 22580 | 68 28 2f 3b 5c 73 2b 28 2e 2a 29 24 2f 29 5b 31 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 | h(/;\s+(.*)$/)[1]..............u |
| 225a0 | 6e 6c 65 73 73 20 77 68 65 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 61 | nless.whence..................wa |
| 225c0 | 72 6e 20 22 42 61 64 20 72 65 63 65 69 76 65 64 20 6c 69 6e 65 3a 20 23 7b 68 6f 70 7d 22 0d 0a | rn."Bad.received.line:.#{hop}".. |
| 225e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 20 20 20 20 | ................next............ |
| 22600 | 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 72 6f 6d 20 3d 20 24 2b 20 69 66 20 | ..end..............from.=.$+.if. |
| 22620 | 68 6f 70 20 3d 7e 20 2f 66 72 6f 6d 5c 73 2b 28 5c 53 2b 29 7c 5c 28 28 2e 2a 3f 29 5c 29 2f 0d | hop.=~./from\s+(\S+)|\((.*?)\)/. |
| 22640 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 79 20 20 20 3d 20 24 31 20 69 66 20 68 6f 70 20 3d 7e | .............by...=.$1.if.hop.=~ |
| 22660 | 20 2f 62 79 5c 73 2b 28 5c 53 2b 5c 2e 5c 53 2b 29 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ./by\s+(\S+\.\S+)/.............. |
| 22680 | 6e 65 78 74 20 75 6e 6c 65 73 73 20 6e 6f 77 20 3d 20 54 69 6d 65 2e 70 61 72 73 65 28 77 68 65 | next.unless.now.=.Time.parse(whe |
| 226a0 | 6e 63 65 29 2e 6c 6f 63 61 6c 74 69 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 6c 74 | nce).localtime..............delt |
| 226c0 | 61 20 3d 20 6e 6f 77 20 2d 20 40 64 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 | a.=.now.-.@date..............put |
| 226e0 | 73 20 6f 75 74 28 5b 66 72 6f 6d 2c 20 62 79 2c 20 68 6f 70 5f 64 61 74 65 28 6e 6f 77 29 2c 20 | s.out([from,.by,.hop_date(now),. |
| 22700 | 68 6f 70 5f 74 69 6d 65 28 64 65 6c 74 61 29 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 | hop_time(delta)])..............@ |
| 22720 | 64 61 74 65 20 3d 20 6e 6f 77 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 | date.=.now..........end......end |
| 22740 | 0d 0a 0d 0a 20 20 20 20 64 65 66 20 68 6f 70 5f 74 69 6d 65 28 73 65 63 73 29 0d 0a 20 20 20 20 | ........def.hop_time(secs)...... |
| 22760 | 20 20 20 20 73 69 67 6e 20 3d 20 73 65 63 73 20 3c 20 30 20 3f 20 2d 31 20 3a 20 31 0d 0a 20 20 | ....sign.=.secs.<.0.?.-1.:.1.... |
| 22780 | 20 20 20 20 20 20 64 61 79 73 2c 20 73 65 63 73 20 3d 20 73 65 63 73 2e 61 62 73 2e 64 69 76 6d | ......days,.secs.=.secs.abs.divm |
| 227a0 | 6f 64 28 36 30 20 2a 20 36 30 20 2a 20 32 34 29 0d 0a 20 20 20 20 20 20 20 20 68 6f 75 72 73 2c | od(60.*.60.*.24)..........hours, |
| 227c0 | 73 65 63 73 20 3d 20 73 65 63 73 2e 61 62 73 2e 64 69 76 6d 6f 64 28 36 30 20 2a 20 36 30 29 0d | secs.=.secs.abs.divmod(60.*.60). |
| 227e0 | 0a 20 20 20 20 20 20 20 20 6d 69 6e 73 2c 20 73 65 63 73 20 3d 20 73 65 63 73 2e 61 62 73 2e 64 | .........mins,.secs.=.secs.abs.d |
| 22800 | 69 76 6d 6f 64 28 36 30 29 0d 0a 20 20 20 20 20 20 20 20 72 74 6e 20 3d 20 20 22 25 33 64 73 22 | ivmod(60)..........rtn.=.."%3ds" |
| 22820 | 20 25 20 5b 73 65 63 73 20 20 2a 20 73 69 67 6e 5d 0d 0a 20 20 20 20 20 20 20 20 72 74 6e 20 3c | .%.[secs..*.sign]..........rtn.< |
| 22840 | 3c 20 22 25 33 64 6d 22 20 25 20 5b 6d 69 6e 73 20 20 2a 20 73 69 67 6e 5d 20 69 66 20 6d 69 6e | <."%3dm".%.[mins..*.sign].if.min |
| 22860 | 73 20 20 21 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 72 74 6e 20 3c 3c 20 22 25 33 64 68 22 20 25 | s..!=.0..........rtn.<<."%3dh".% |
| 22880 | 20 5b 68 6f 75 72 73 20 2a 20 73 69 67 6e 5d 20 69 66 20 68 6f 75 72 73 20 21 3d 20 30 0d 0a 20 | .[hours.*.sign].if.hours.!=.0... |
| 228a0 | 20 20 20 20 20 20 20 72 74 6e 20 3c 3c 20 22 25 33 64 64 22 20 25 20 5b 64 61 79 73 20 20 2a 20 | .......rtn.<<."%3dd".%.[days..*. |
| 228c0 | 73 69 67 6e 5d 20 69 66 20 64 61 79 73 20 20 21 3d 20 30 0d 0a 20 20 20 20 20 20 20 20 72 74 6e | sign].if.days..!=.0..........rtn |
| 228e0 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 24 2f 20 3d 20 22 22 0d 0a 6d 61 69 6c 20 | ......end..end....$/.=.""..mail. |
| 22900 | 3d 20 4d 61 69 6c 48 6f 70 44 65 6c 74 61 2e 6e 65 77 28 41 52 47 46 2e 67 65 74 73 29 2e 70 75 | =.MailHopDelta.new(ARGF.gets).pu |
| 22920 | 74 73 5f 68 6f 70 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 30 0d 0a 73 69 | ts_hops......#.@@PLEAC@@_4.0..si |
| 22940 | 6e 67 6c 65 5f 6c 65 76 65 6c 20 3d 20 5b 20 22 74 68 69 73 22 2c 20 22 74 68 61 74 22 2c 20 22 | ngle_level.=.[."this",."that",." |
| 22960 | 74 68 65 22 2c 20 22 6f 74 68 65 72 22 20 5d 0d 0a 0d 0a 23 20 52 75 62 79 20 64 69 72 65 63 74 | the",."other".]....#.Ruby.direct |
| 22980 | 6c 79 20 73 75 70 70 6f 72 74 73 20 6e 65 73 74 65 64 20 61 72 72 61 79 73 0d 0a 64 6f 75 62 6c | ly.supports.nested.arrays..doubl |
| 229a0 | 65 5f 6c 65 76 65 6c 20 3d 20 5b 20 22 74 68 69 73 22 2c 20 22 74 68 61 74 22 2c 20 5b 20 22 74 | e_level.=.[."this",."that",.[."t |
| 229c0 | 68 65 22 2c 20 22 6f 74 68 65 72 22 20 5d 20 5d 0d 0a 73 74 69 6c 6c 5f 73 69 6e 67 6c 65 5f 6c | he",."other".].]..still_single_l |
| 229e0 | 65 76 65 6c 20 3d 20 5b 20 22 74 68 69 73 22 2c 20 22 74 68 61 74 22 2c 20 5b 20 22 74 68 65 22 | evel.=.[."this",."that",.[."the" |
| 22a00 | 2c 20 22 6f 74 68 65 72 22 20 5d 20 5d 2e 66 6c 61 74 74 65 6e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 | ,."other".].].flatten......#.@@P |
| 22a20 | 4c 45 41 43 40 40 5f 34 2e 31 0d 0a 61 20 3d 20 5b 20 22 71 75 69 63 6b 22 2c 20 22 62 72 6f 77 | LEAC@@_4.1..a.=.[."quick",."brow |
| 22a40 | 6e 22 2c 20 22 66 6f 78 22 20 5d 0d 0a 61 20 3d 20 25 77 28 57 68 79 20 61 72 65 20 79 6f 75 20 | n",."fox".]..a.=.%w(Why.are.you. |
| 22a60 | 74 65 61 73 69 6e 67 20 6d 65 3f 29 0d 0a 0d 0a 6c 69 6e 65 73 20 3d 20 3c 3c 22 45 4e 44 5f 4f | teasing.me?)....lines.=.<<"END_O |
| 22a80 | 46 5f 48 45 52 45 5f 44 4f 43 22 2e 67 73 75 62 28 2f 5e 5c 73 2a 28 2e 2b 29 2f 2c 20 27 5c 31 | F_HERE_DOC".gsub(/^\s*(.+)/,.'\1 |
| 22aa0 | 27 29 0d 0a 20 20 20 20 54 68 65 20 62 6f 79 20 73 74 6f 6f 64 20 6f 6e 20 74 68 65 20 62 75 72 | ')......The.boy.stood.on.the.bur |
| 22ac0 | 6e 69 6e 67 20 64 65 63 6b 2c 0d 0a 20 20 20 20 49 74 20 77 61 73 20 61 73 20 68 6f 74 20 61 73 | ning.deck,......It.was.as.hot.as |
| 22ae0 | 20 67 6c 61 73 73 2e 0d 0a 45 4e 44 5f 4f 46 5f 48 45 52 45 5f 44 4f 43 0d 0a 0d 0a 62 69 67 61 | .glass...END_OF_HERE_DOC....biga |
| 22b00 | 72 72 61 79 20 3d 20 49 4f 2e 72 65 61 64 6c 69 6e 65 73 28 22 6d 79 64 61 74 61 66 69 6c 65 22 | rray.=.IO.readlines("mydatafile" |
| 22b20 | 29 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 6c 7c 20 6c 2e 63 68 6f 6d 70 20 7d 0d 0a 0d 0a 6e 61 6d | ).collect.{.|l|.l.chomp.}....nam |
| 22b40 | 65 20 3d 20 22 47 61 6e 64 61 6c 66 22 0d 0a 62 61 6e 6e 65 72 20 3d 20 25 51 28 53 70 65 61 6b | e.=."Gandalf"..banner.=.%Q(Speak |
| 22b60 | 2c 20 23 7b 6e 61 6d 65 7d 2c 20 61 6e 64 20 77 65 6c 63 6f 6d 65 21 29 0d 0a 0d 0a 68 6f 73 74 | ,.#{name},.and.welcome!)....host |
| 22b80 | 5f 69 6e 66 6f 20 20 3d 20 60 68 6f 73 74 20 23 7b 68 69 73 5f 68 6f 73 74 7d 60 0d 0a 0d 0a 25 | _info..=.`host.#{his_host}`....% |
| 22ba0 | 78 28 70 73 20 23 7b 24 24 7d 29 0d 0a 0d 0a 62 61 6e 6e 65 72 20 3d 20 27 43 6f 73 74 73 20 6f | x(ps.#{$$})....banner.=.'Costs.o |
| 22bc0 | 6e 6c 79 20 24 34 2e 39 35 27 2e 73 70 6c 69 74 28 27 20 27 29 0d 0a 0d 0a 72 61 78 20 3d 20 25 | nly.$4.95'.split('.')....rax.=.% |
| 22be0 | 77 21 20 28 20 29 20 3c 20 3e 20 7b 20 7d 20 5b 20 5d 20 21 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c | w!.(.).<.>.{.}.[.].!......#.@@PL |
| 22c00 | 45 41 43 40 40 5f 34 2e 32 0d 0a 64 65 66 20 63 6f 6d 6d 69 66 79 5f 73 65 72 69 65 73 28 61 29 | EAC@@_4.2..def.commify_series(a) |
| 22c20 | 0d 0a 20 20 20 20 61 2e 73 69 7a 65 20 3d 3d 20 30 20 3f 20 27 27 20 3a 0d 0a 20 20 20 20 20 20 | ......a.size.==.0.?.''.:........ |
| 22c40 | 20 20 61 2e 73 69 7a 65 20 3d 3d 20 31 20 3f 20 61 5b 30 5d 20 3a 0d 0a 20 20 20 20 20 20 20 20 | ..a.size.==.1.?.a[0].:.......... |
| 22c60 | 61 2e 73 69 7a 65 20 3d 3d 20 32 20 3f 20 61 2e 6a 6f 69 6e 28 27 20 61 6e 64 20 27 29 20 3a 0d | a.size.==.2.?.a.join('.and.').:. |
| 22c80 | 0a 20 20 20 20 20 20 20 20 61 5b 30 2e 2e 2d 32 5d 2e 6a 6f 69 6e 28 27 2c 20 27 29 20 2b 20 27 | .........a[0..-2].join(',.').+.' |
| 22ca0 | 2c 20 61 6e 64 20 27 20 2b 20 61 5b 2d 31 5d 0d 0a 65 6e 64 0d 0a 0d 0a 61 72 72 61 79 20 3d 20 | ,.and.'.+.a[-1]..end....array.=. |
| 22cc0 | 5b 20 22 72 65 64 22 2c 20 22 79 65 6c 6c 6f 77 22 2c 20 22 67 72 65 65 6e 22 20 5d 0d 0a 0d 0a | [."red",."yellow",."green".].... |
| 22ce0 | 70 72 69 6e 74 20 22 49 20 68 61 76 65 20 22 2c 20 61 72 72 61 79 2c 20 22 20 6d 61 72 62 6c 65 | print."I.have.",.array,.".marble |
| 22d00 | 73 5c 6e 22 0d 0a 23 20 2d 3e 20 49 20 68 61 76 65 20 72 65 64 79 65 6c 6c 6f 77 67 72 65 65 6e | s\n"..#.->.I.have.redyellowgreen |
| 22d20 | 20 6d 61 72 62 6c 65 73 0d 0a 0d 0a 23 20 42 75 74 20 75 6e 6c 69 6b 65 20 50 65 72 6c 3a 0d 0a | .marbles....#.But.unlike.Perl:.. |
| 22d40 | 70 72 69 6e 74 20 22 49 20 68 61 76 65 20 23 7b 61 72 72 61 79 7d 20 6d 61 72 62 6c 65 73 5c 6e | print."I.have.#{array}.marbles\n |
| 22d60 | 22 0d 0a 23 20 2d 3e 20 49 20 68 61 76 65 20 72 65 64 79 65 6c 6c 6f 77 67 72 65 65 6e 20 6d 61 | "..#.->.I.have.redyellowgreen.ma |
| 22d80 | 72 62 6c 65 73 0d 0a 23 20 53 6f 2c 20 6e 65 65 64 73 3a 0d 0a 70 72 69 6e 74 20 22 49 20 68 61 | rbles..#.So,.needs:..print."I.ha |
| 22da0 | 76 65 20 23 7b 61 72 72 61 79 2e 6a 6f 69 6e 28 27 20 27 29 7d 20 6d 61 72 62 6c 65 73 5c 6e 22 | ve.#{array.join('.')}.marbles\n" |
| 22dc0 | 0d 0a 23 20 2d 3e 20 49 20 68 61 76 65 20 72 65 64 20 79 65 6c 6c 6f 77 20 67 72 65 65 6e 20 6d | ..#.->.I.have.red.yellow.green.m |
| 22de0 | 61 72 62 6c 65 73 0d 0a 0d 0a 64 65 66 20 63 6f 6d 6d 69 66 79 5f 73 65 72 69 65 73 28 61 29 0d | arbles....def.commify_series(a). |
| 22e00 | 0a 20 20 20 20 73 65 70 63 68 61 72 20 3d 20 61 2e 73 65 6c 65 63 74 20 7b 20 7c 70 7c 20 70 20 | .....sepchar.=.a.select.{.|p|.p. |
| 22e20 | 3d 7e 20 2f 2c 2f 20 7d 20 21 3d 20 5b 5d 20 3f 20 27 3b 20 27 20 3a 20 27 2c 20 27 0d 0a 20 20 | =~./,/.}.!=.[].?.';.'.:.',.'.... |
| 22e40 | 20 20 61 2e 73 69 7a 65 20 3d 3d 20 30 20 3f 20 27 27 20 3a 0d 0a 20 20 20 20 20 20 20 20 61 2e | ..a.size.==.0.?.''.:..........a. |
| 22e60 | 73 69 7a 65 20 3d 3d 20 31 20 3f 20 61 5b 30 5d 20 3a 0d 0a 20 20 20 20 20 20 20 20 61 2e 73 69 | size.==.1.?.a[0].:..........a.si |
| 22e80 | 7a 65 20 3d 3d 20 32 20 3f 20 61 2e 6a 6f 69 6e 28 27 20 61 6e 64 20 27 29 20 3a 0d 0a 20 20 20 | ze.==.2.?.a.join('.and.').:..... |
| 22ea0 | 20 20 20 20 20 61 5b 30 2e 2e 2d 32 5d 2e 6a 6f 69 6e 28 73 65 70 63 68 61 72 29 20 2b 20 73 65 | .....a[0..-2].join(sepchar).+.se |
| 22ec0 | 70 63 68 61 72 20 2b 20 27 61 6e 64 20 27 20 2b 20 61 5b 2d 31 5d 0d 0a 65 6e 64 0d 0a 0d 0a 0d | pchar.+.'and.'.+.a[-1]..end..... |
| 22ee0 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 33 0d 0a 23 20 20 20 28 6e 6f 74 65 3a 20 41 46 41 | .#.@@PLEAC@@_4.3..#...(note:.AFA |
| 22f00 | 49 4b 20 52 75 62 79 20 64 6f 65 73 6e 27 74 20 61 6c 6c 6f 77 20 67 6f 72 79 20 63 68 61 6e 67 | IK.Ruby.doesn't.allow.gory.chang |
| 22f20 | 65 20 6f 66 20 41 72 72 61 79 20 6c 65 6e 67 74 68 29 0d 0a 23 20 67 72 6f 77 20 74 68 65 20 61 | e.of.Array.length)..#.grow.the.a |
| 22f40 | 72 72 61 79 20 62 79 20 61 73 73 69 67 6e 69 6e 67 20 6e 69 6c 20 74 6f 20 70 61 73 74 20 74 68 | rray.by.assigning.nil.to.past.th |
| 22f60 | 65 20 65 6e 64 20 6f 66 20 61 72 72 61 79 0d 0a 61 72 79 5b 6e 65 77 5f 73 69 7a 65 2d 31 5d 20 | e.end.of.array..ary[new_size-1]. |
| 22f80 | 3d 20 6e 69 6c 0d 0a 23 20 73 68 72 69 6e 6b 20 74 68 65 20 61 72 72 61 79 20 62 79 20 73 6c 69 | =.nil..#.shrink.the.array.by.sli |
| 22fa0 | 63 69 6e 67 20 69 74 20 64 6f 77 6e 0d 0a 61 72 79 2e 73 6c 69 63 65 21 28 6e 65 77 5f 73 69 7a | cing.it.down..ary.slice!(new_siz |
| 22fc0 | 65 2e 2e 2d 31 29 0d 0a 23 20 69 6e 69 74 20 74 68 65 20 61 72 72 61 79 20 77 69 74 68 20 67 69 | e..-1)..#.init.the.array.with.gi |
| 22fe0 | 76 65 6e 20 73 69 7a 65 0d 0a 41 72 72 61 79 2e 6e 65 77 28 6e 75 6d 62 65 72 5f 6f 66 5f 65 6c | ven.size..Array.new(number_of_el |
| 23000 | 65 6d 73 29 0d 0a 23 20 61 73 73 69 67 6e 20 74 6f 20 61 6e 20 65 6c 65 6d 65 6e 74 20 70 61 73 | ems)..#.assign.to.an.element.pas |
| 23020 | 74 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 65 6e 64 20 65 6e 6c 61 72 67 65 73 20 74 68 65 20 | t.the.original.end.enlarges.the. |
| 23040 | 61 72 72 61 79 0d 0a 61 72 79 5b 69 6e 64 65 78 5f 6e 65 77 5f 6c 61 73 74 5f 65 6c 65 6d 5d 20 | array..ary[index_new_last_elem]. |
| 23060 | 3d 20 76 61 6c 75 65 0d 0a 0d 0a 64 65 66 20 77 68 61 74 5f 61 62 6f 75 74 5f 74 68 61 74 5f 61 | =.value....def.what_about_that_a |
| 23080 | 72 72 61 79 28 61 29 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 54 68 65 20 61 72 72 61 79 20 6e 6f | rray(a)......print."The.array.no |
| 230a0 | 77 20 68 61 73 20 22 2c 20 61 2e 73 69 7a 65 2c 20 22 20 65 6c 65 6d 65 6e 74 73 2e 5c 6e 22 0d | w.has.",.a.size,.".elements.\n". |
| 230c0 | 0a 20 20 20 20 23 20 49 6e 64 65 78 20 6f 66 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 20 69 73 20 | .....#.Index.of.last.element.is. |
| 230e0 | 6e 6f 74 20 72 65 61 6c 6c 79 20 69 6e 74 65 72 65 73 74 69 6e 67 20 69 6e 20 52 75 62 79 0d 0a | not.really.interesting.in.Ruby.. |
| 23100 | 20 20 20 20 70 72 69 6e 74 20 22 45 6c 65 6d 65 6e 74 20 23 33 20 69 73 20 60 23 7b 61 5b 33 5d | ....print."Element.#3.is.`#{a[3] |
| 23120 | 7d 27 2e 5c 6e 22 0d 0a 65 6e 64 0d 0a 70 65 6f 70 6c 65 20 3d 20 25 77 28 43 72 6f 73 62 79 20 | }'.\n"..end..people.=.%w(Crosby. |
| 23140 | 53 74 69 6c 6c 73 20 4e 61 73 68 20 59 6f 75 6e 67 29 0d 0a 77 68 61 74 5f 61 62 6f 75 74 5f 74 | Stills.Nash.Young)..what_about_t |
| 23160 | 68 61 74 5f 61 72 72 61 79 28 70 65 6f 70 6c 65 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | hat_array(people)......#.@@PLEAC |
| 23180 | 40 40 5f 34 2e 34 0d 0a 23 20 4f 4f 20 73 74 79 6c 65 0d 0a 62 61 64 5f 75 73 65 72 73 2e 65 61 | @@_4.4..#.OO.style..bad_users.ea |
| 231a0 | 63 68 20 7b 20 7c 75 73 65 72 7c 0d 0a 20 20 20 20 63 6f 6d 70 6c 61 69 6e 28 75 73 65 72 29 0d | ch.{.|user|......complain(user). |
| 231c0 | 0a 7d 0d 0a 23 20 6f 72 2c 20 66 75 6e 63 74 69 6f 6e 61 6c 20 73 74 79 6c 65 0d 0a 66 6f 72 20 | .}..#.or,.functional.style..for. |
| 231e0 | 75 73 65 72 20 69 6e 20 62 61 64 5f 75 73 65 72 73 0d 0a 20 20 20 20 63 6f 6d 70 6c 61 69 6e 28 | user.in.bad_users......complain( |
| 23200 | 75 73 65 72 29 0d 0a 65 6e 64 0d 0a 0d 0a 66 6f 72 20 76 61 72 20 69 6e 20 45 4e 56 2e 6b 65 79 | user)..end....for.var.in.ENV.key |
| 23220 | 73 2e 73 6f 72 74 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 76 61 72 7d 3d 23 7b 45 4e 56 5b 76 | s.sort......puts."#{var}=#{ENV[v |
| 23240 | 61 72 5d 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 66 6f 72 20 75 73 65 72 20 69 6e 20 61 6c 6c 5f 75 73 | ar]}"..end....for.user.in.all_us |
| 23260 | 65 72 73 0d 0a 20 20 20 20 64 69 73 6b 5f 73 70 61 63 65 20 3d 20 67 65 74 5f 75 73 61 67 65 28 | ers......disk_space.=.get_usage( |
| 23280 | 75 73 65 72 29 0d 0a 20 20 20 20 69 66 20 28 64 69 73 6b 5f 73 70 61 63 65 20 3e 20 4d 41 58 5f | user)......if.(disk_space.>.MAX_ |
| 232a0 | 51 55 4f 54 41 29 0d 0a 20 20 20 20 20 20 20 20 63 6f 6d 70 6c 61 69 6e 28 75 73 65 72 29 0d 0a | QUOTA)..........complain(user).. |
| 232c0 | 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 66 6f 72 20 6c 20 69 6e 20 49 4f 2e 70 6f 70 65 | ....end..end....for.l.in.IO.pope |
| 232e0 | 6e 28 22 77 68 6f 22 29 2e 72 65 61 64 6c 69 6e 65 73 0d 0a 20 20 20 20 70 72 69 6e 74 20 6c 20 | n("who").readlines......print.l. |
| 23300 | 69 66 20 6c 20 3d 7e 20 2f 5e 67 63 2f 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 77 65 20 63 61 6e 20 6d | if.l.=~./^gc/..end....#.we.can.m |
| 23320 | 69 6d 69 63 20 74 68 65 20 6f 62 66 75 73 63 61 74 65 64 20 50 65 72 6c 20 77 61 79 0d 0a 77 68 | imic.the.obfuscated.Perl.way..wh |
| 23340 | 69 6c 65 20 66 68 2e 67 65 74 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 24 5f 20 69 | ile.fh.gets...............#.$_.i |
| 23360 | 73 20 73 65 74 20 74 6f 20 74 68 65 20 6c 69 6e 65 20 6a 75 73 74 20 72 65 61 64 0d 0a 20 20 20 | s.set.to.the.line.just.read..... |
| 23380 | 20 63 68 6f 6d 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 24 5f 20 68 61 | .chomp...................#.$_.ha |
| 233a0 | 73 20 61 20 74 72 61 69 6c 69 6e 67 20 5c 6e 20 72 65 6d 6f 76 65 64 2c 20 69 66 20 69 74 20 68 | s.a.trailing.\n.removed,.if.it.h |
| 233c0 | 61 64 20 6f 6e 65 0d 0a 20 20 20 20 73 70 6c 69 74 2e 65 61 63 68 20 7b 20 7c 77 7c 20 20 20 20 | ad.one......split.each.{.|w|.... |
| 233e0 | 20 20 20 20 23 20 24 5f 20 69 73 20 73 70 6c 69 74 20 6f 6e 20 77 68 69 74 65 73 70 61 63 65 0d | ....#.$_.is.split.on.whitespace. |
| 23400 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 62 | .............................#.b |
| 23420 | 75 74 20 24 5f 20 69 73 20 6e 6f 74 20 73 65 74 20 74 6f 20 65 61 63 68 20 63 68 75 6e 6b 20 61 | ut.$_.is.not.set.to.each.chunk.a |
| 23440 | 73 20 69 6e 20 50 65 72 6c 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 77 2e 72 65 76 65 72 | s.in.Perl..........print.w.rever |
| 23460 | 73 65 0d 0a 20 20 20 20 7d 0d 0a 65 6e 64 0d 0a 23 20 2e 2e 2e 6f 72 20 75 73 65 20 61 20 63 6c | se......}..end..#....or.use.a.cl |
| 23480 | 65 61 6e 65 72 20 77 61 79 0d 0a 66 6f 72 20 6c 20 69 6e 20 66 68 2e 72 65 61 64 6c 69 6e 65 73 | eaner.way..for.l.in.fh.readlines |
| 234a0 | 0d 0a 20 20 20 20 6c 2e 63 68 6f 6d 70 2e 73 70 6c 69 74 2e 65 61 63 68 20 7b 20 7c 77 7c 20 70 | ......l.chomp.split.each.{.|w|.p |
| 234c0 | 72 69 6e 74 20 77 2e 72 65 76 65 72 73 65 20 7d 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 73 61 6d 65 20 | rint.w.reverse.}..end....#.same. |
| 234e0 | 64 72 61 77 62 61 63 6b 20 61 73 20 69 6e 20 70 72 6f 62 6c 65 6d 20 31 2e 34 2c 20 77 65 20 63 | drawback.as.in.problem.1.4,.we.c |
| 23500 | 61 6e 27 74 20 6d 75 74 61 74 65 20 61 20 4e 75 6d 65 72 69 63 2e 2e 2e 0d 0a 61 72 72 61 79 2e | an't.mutate.a.Numeric.....array. |
| 23520 | 63 6f 6c 6c 65 63 74 21 20 7b 20 7c 76 7c 20 76 20 2d 20 31 20 7d 0d 0a 0d 0a 61 20 3d 20 5b 20 | collect!.{.|v|.v.-.1.}....a.=.[. |
| 23540 | 2e 35 2c 20 33 20 5d 3b 20 62 20 3d 20 5b 20 30 2c 20 31 20 5d 0d 0a 66 6f 72 20 61 72 79 20 69 | .5,.3.];.b.=.[.0,.1.]..for.ary.i |
| 23560 | 6e 20 5b 20 61 2c 20 62 20 5d 0d 0a 20 20 20 20 61 72 79 2e 63 6f 6c 6c 65 63 74 21 20 7b 20 7c | n.[.a,.b.]......ary.collect!.{.| |
| 23580 | 76 7c 20 76 20 2a 20 37 20 7d 0d 0a 65 6e 64 0d 0a 70 75 74 73 20 22 23 7b 61 2e 6a 6f 69 6e 28 | v|.v.*.7.}..end..puts."#{a.join( |
| 235a0 | 27 20 27 29 7d 20 23 7b 62 2e 6a 6f 69 6e 28 27 20 27 29 7d 22 0d 0a 0d 0a 23 20 77 65 20 63 61 | '.')}.#{b.join('.')}"....#.we.ca |
| 235c0 | 6e 20 6d 75 74 61 74 65 20 53 74 72 69 6e 67 73 2c 20 63 6f 6f 6c 3b 20 77 65 20 6e 65 65 64 20 | n.mutate.Strings,.cool;.we.need. |
| 235e0 | 61 20 74 72 69 63 6b 20 66 6f 72 20 74 68 65 20 73 63 61 6c 61 72 0d 0a 66 6f 72 20 61 72 79 20 | a.trick.for.the.scalar..for.ary. |
| 23600 | 69 6e 20 5b 20 5b 20 73 63 61 6c 61 72 20 5d 2c 20 61 72 72 61 79 2c 20 68 61 73 68 2e 76 61 6c | in.[.[.scalar.],.array,.hash.val |
| 23620 | 75 65 73 20 5d 0d 0a 20 20 20 20 61 72 79 2e 65 61 63 68 20 7b 20 7c 76 7c 20 76 2e 73 74 72 69 | ues.]......ary.each.{.|v|.v.stri |
| 23640 | 70 21 20 7d 20 20 20 20 20 23 20 53 74 72 69 6e 67 23 73 74 72 69 70 20 72 75 6c 65 73 20 3a 29 | p!.}.....#.String#strip.rules.:) |
| 23660 | 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 35 0d 0a 23 20 6e 6f | ..end......#.@@PLEAC@@_4.5..#.no |
| 23680 | 74 20 72 65 6c 65 76 61 6e 74 20 69 6e 20 52 75 62 79 20 73 69 6e 63 65 20 77 65 20 68 61 76 65 | t.relevant.in.Ruby.since.we.have |
| 236a0 | 20 61 6c 77 61 79 73 20 72 65 66 65 72 65 6e 63 65 73 0d 0a 66 6f 72 20 69 74 65 6d 20 69 6e 20 | .always.references..for.item.in. |
| 236c0 | 61 72 72 61 79 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 68 20 77 69 74 68 20 | array......#.do.somethingh.with. |
| 236e0 | 69 74 65 6d 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 36 0d 0a | item..end......#.@@PLEAC@@_4.6.. |
| 23700 | 75 6e 69 71 75 65 20 3d 20 6c 69 73 74 2e 75 6e 69 71 0d 0a 0d 0a 23 20 67 65 6e 65 72 61 74 65 | unique.=.list.uniq....#.generate |
| 23720 | 20 61 20 6c 69 73 74 20 6f 66 20 75 73 65 72 73 20 6c 6f 67 67 65 64 20 69 6e 2c 20 72 65 6d 6f | .a.list.of.users.logged.in,.remo |
| 23740 | 76 69 6e 67 20 64 75 70 6c 69 63 61 74 65 73 0d 0a 75 73 65 72 73 20 3d 20 60 77 68 6f 60 2e 63 | ving.duplicates..users.=.`who`.c |
| 23760 | 6f 6c 6c 65 63 74 20 7b 20 7c 6c 7c 20 6c 20 3d 7e 20 2f 28 5c 77 2b 29 2f 3b 20 24 31 20 7d 2e | ollect.{.|l|.l.=~./(\w+)/;.$1.}. |
| 23780 | 73 6f 72 74 2e 75 6e 69 71 0d 0a 70 75 74 73 28 22 75 73 65 72 73 20 6c 6f 67 67 65 64 20 69 6e | sort.uniq..puts("users.logged.in |
| 237a0 | 3a 20 23 7b 63 6f 6d 6d 69 66 79 5f 73 65 72 69 65 73 28 75 73 65 72 73 29 7d 22 29 20 20 23 20 | :.#{commify_series(users)}")..#. |
| 237c0 | 73 65 65 20 34 2e 32 20 66 6f 72 20 63 6f 6d 6d 69 66 79 5f 73 65 72 69 65 73 0d 0a 0d 0a 0d 0a | see.4.2.for.commify_series...... |
| 237e0 | 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 37 0d 0a 61 20 2d 20 62 0d 0a 23 20 5b 20 31 2c 20 31 | #.@@PLEAC@@_4.7..a.-.b..#.[.1,.1 |
| 23800 | 2c 20 32 2c 20 32 2c 20 33 2c 20 33 2c 20 33 2c 20 34 2c 20 35 20 5d 20 2d 20 5b 20 31 2c 20 32 | ,.2,.2,.3,.3,.3,.4,.5.].-.[.1,.2 |
| 23820 | 2c 20 34 20 5d 20 20 2d 3e 20 20 5b 33 2c 20 35 5d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | ,.4.]..->..[3,.5]......#.@@PLEAC |
| 23840 | 40 40 5f 34 2e 38 0d 0a 75 6e 69 6f 6e 20 3d 20 61 20 7c 20 62 0d 0a 69 6e 74 65 72 73 65 63 74 | @@_4.8..union.=.a.|.b..intersect |
| 23860 | 69 6f 6e 20 3d 20 61 20 26 20 62 0d 0a 64 69 66 66 65 72 65 6e 63 65 20 3d 20 61 20 2d 20 62 0d | ion.=.a.&.b..difference.=.a.-.b. |
| 23880 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 39 0d 0a 61 72 72 61 79 31 2e 63 6f 6e | .....#.@@PLEAC@@_4.9..array1.con |
| 238a0 | 63 61 74 28 61 72 72 61 79 32 29 0d 0a 23 20 69 66 20 79 6f 75 20 77 69 6c 6c 20 61 73 73 69 67 | cat(array2)..#.if.you.will.assig |
| 238c0 | 6e 20 74 6f 20 61 6e 6f 74 68 65 72 20 6f 62 6a 65 63 74 2c 20 62 65 74 74 65 72 20 75 73 65 3a | n.to.another.object,.better.use: |
| 238e0 | 0d 0a 6e 65 77 5f 61 72 79 20 3d 20 61 72 72 61 79 31 20 2b 20 61 72 72 61 79 32 0d 0a 0d 0a 6d | ..new_ary.=.array1.+.array2....m |
| 23900 | 65 6d 62 65 72 73 20 3d 20 5b 20 22 54 69 6d 65 22 2c 20 22 46 6c 69 65 73 22 20 5d 0d 0a 69 6e | embers.=.[."Time",."Flies".]..in |
| 23920 | 69 74 69 61 74 65 73 20 3d 20 20 5b 20 22 41 6e 22 2c 20 22 41 72 72 6f 77 22 20 5d 0d 0a 6d 65 | itiates.=..[."An",."Arrow".]..me |
| 23940 | 6d 62 65 72 73 20 2b 3d 20 69 6e 69 74 69 61 74 65 73 0d 0a 0d 0a 6d 65 6d 62 65 72 73 20 3d 20 | mbers.+=.initiates....members.=. |
| 23960 | 5b 20 22 54 69 6d 65 22 2c 20 22 46 6c 69 65 73 22 20 5d 0d 0a 69 6e 69 74 69 61 74 65 73 20 3d | [."Time",."Flies".]..initiates.= |
| 23980 | 20 5b 20 22 41 6e 22 2c 20 22 41 72 72 6f 77 22 20 5d 0d 0a 6d 65 6d 62 65 72 73 5b 32 2c 30 5d | .[."An",."Arrow".]..members[2,0] |
| 239a0 | 20 3d 20 5b 20 22 4c 69 6b 65 22 2c 20 69 6e 69 74 69 61 74 65 73 20 5d 2e 66 6c 61 74 74 65 6e | .=.[."Like",.initiates.].flatten |
| 239c0 | 0d 0a 0d 0a 6d 65 6d 62 65 72 73 5b 30 5d 20 3d 20 22 46 72 75 69 74 22 0d 0a 6d 65 6d 62 65 72 | ....members[0].=."Fruit"..member |
| 239e0 | 73 5b 33 2c 32 5d 20 3d 20 22 41 22 2c 20 22 42 61 6e 61 6e 61 22 0d 0a 0d 0a 0d 0a 23 20 40 40 | s[3,2].=."A",."Banana"......#.@@ |
| 23a00 | 50 4c 45 41 43 40 40 5f 34 2e 31 30 0d 0a 72 65 76 65 72 73 65 64 20 3d 20 61 72 79 2e 72 65 76 | PLEAC@@_4.10..reversed.=.ary.rev |
| 23a20 | 65 72 73 65 0d 0a 0d 0a 61 72 79 2e 72 65 76 65 72 73 65 5f 65 61 63 68 20 7b 20 7c 65 7c 0d 0a | erse....ary.reverse_each.{.|e|.. |
| 23a40 | 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 65 0d 0a 7d 0d 0a 0d 0a | ....#.do.something.with.e..}.... |
| 23a60 | 64 65 73 63 65 6e 64 69 6e 67 20 3d 20 61 72 79 2e 73 6f 72 74 2e 72 65 76 65 72 73 65 0d 0a 64 | descending.=.ary.sort.reverse..d |
| 23a80 | 65 73 63 65 6e 64 69 6e 67 20 3d 20 61 72 79 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 62 20 3c | escending.=.ary.sort.{.|a,b|.b.< |
| 23aa0 | 3d 3e 20 61 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 31 31 0d 0a 23 20 | =>.a.}......#.@@PLEAC@@_4.11..#. |
| 23ac0 | 72 65 6d 6f 76 65 20 6e 20 65 6c 65 6d 65 6e 74 73 20 66 72 6f 6d 20 66 72 6f 6e 74 20 6f 66 20 | remove.n.elements.from.front.of. |
| 23ae0 | 61 72 79 20 28 73 68 69 66 74 20 6e 29 0d 0a 66 72 6f 6e 74 20 3d 20 61 72 79 2e 73 6c 69 63 65 | ary.(shift.n)..front.=.ary.slice |
| 23b00 | 21 28 30 2c 20 6e 29 0d 0a 0d 0a 23 20 72 65 6d 6f 76 65 20 6e 20 65 6c 65 6d 65 6e 74 73 20 66 | !(0,.n)....#.remove.n.elements.f |
| 23b20 | 72 6f 6d 20 74 68 65 20 65 6e 64 20 6f 66 20 61 72 79 20 28 70 6f 70 20 6e 29 0d 0a 65 6e 64 5f | rom.the.end.of.ary.(pop.n)..end_ |
| 23b40 | 20 3d 20 61 72 79 2e 73 6c 69 63 65 21 28 2d 6e 20 2e 2e 20 2d 31 29 0d 0a 0d 0a 23 20 6c 65 74 | .=.ary.slice!(-n....-1)....#.let |
| 23b60 | 27 73 20 65 78 74 65 6e 64 20 74 68 65 20 41 72 72 61 79 20 63 6c 61 73 73 2c 20 74 6f 20 6d 61 | 's.extend.the.Array.class,.to.ma |
| 23b80 | 6b 65 20 74 68 61 74 20 75 73 65 66 75 6c 0d 0a 63 6c 61 73 73 20 41 72 72 61 79 0d 0a 20 20 20 | ke.that.useful..class.Array..... |
| 23ba0 | 20 64 65 66 20 73 68 69 66 74 32 28 29 0d 0a 20 20 20 20 20 20 20 20 73 6c 69 63 65 21 28 30 20 | .def.shift2()..........slice!(0. |
| 23bc0 | 2e 2e 20 31 29 20 20 20 20 20 23 20 6d 6f 72 65 20 73 79 6d 65 74 72 69 63 20 77 69 74 68 20 70 | ...1).....#.more.symetric.with.p |
| 23be0 | 6f 70 32 2e 2e 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 70 6f 70 32 28 29 0d | op2.........end......def.pop2(). |
| 23c00 | 0a 20 20 20 20 20 20 20 20 73 6c 69 63 65 21 28 2d 32 20 2e 2e 20 2d 31 29 0d 0a 20 20 20 20 65 | .........slice!(-2....-1)......e |
| 23c20 | 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 66 72 69 65 6e 64 73 20 3d 20 25 77 28 50 65 74 65 72 20 50 61 | nd..end....friends.=.%w(Peter.Pa |
| 23c40 | 75 6c 20 4d 61 72 79 20 4a 69 6d 20 54 69 6d 29 0d 0a 74 68 69 73 2c 20 74 68 61 74 20 3d 20 66 | ul.Mary.Jim.Tim)..this,.that.=.f |
| 23c60 | 72 69 65 6e 64 73 2e 73 68 69 66 74 32 0d 0a 0d 0a 62 65 76 65 72 61 67 65 73 20 3d 20 25 77 28 | riends.shift2....beverages.=.%w( |
| 23c80 | 44 65 77 20 4a 6f 6c 74 20 43 6f 6c 61 20 53 70 72 69 74 65 20 46 72 65 73 63 61 29 0d 0a 70 61 | Dew.Jolt.Cola.Sprite.Fresca)..pa |
| 23ca0 | 69 72 20 3d 20 62 65 76 65 72 61 67 65 73 2e 70 6f 70 32 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | ir.=.beverages.pop2......#.@@PLE |
| 23cc0 | 41 43 40 40 5f 34 2e 31 32 0d 0a 23 20 75 73 65 20 45 6e 75 6d 65 72 61 62 6c 65 23 64 65 74 65 | AC@@_4.12..#.use.Enumerable#dete |
| 23ce0 | 63 74 20 28 6f 72 20 74 68 65 20 73 79 6e 6f 6e 79 6d 20 45 6e 75 6d 65 72 61 62 6c 65 23 66 69 | ct.(or.the.synonym.Enumerable#fi |
| 23d00 | 6e 64 29 0d 0a 68 69 67 68 65 73 74 5f 65 6e 67 20 3d 20 65 6d 70 6c 6f 79 65 65 73 2e 64 65 74 | nd)..highest_eng.=.employees.det |
| 23d20 | 65 63 74 20 7b 20 7c 65 6d 70 7c 20 65 6d 70 2e 63 61 74 65 67 6f 72 79 20 3d 3d 20 27 65 6e 67 | ect.{.|emp|.emp.category.==.'eng |
| 23d40 | 69 6e 65 65 72 27 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 31 33 0d 0a | ineer'.}......#.@@PLEAC@@_4.13.. |
| 23d60 | 23 20 75 73 65 20 45 6e 75 6d 65 72 61 62 6c 65 23 73 65 6c 65 63 74 20 28 6f 72 20 74 68 65 20 | #.use.Enumerable#select.(or.the. |
| 23d80 | 73 79 6e 6f 6e 79 6d 20 45 6e 75 6d 65 72 61 62 6c 65 23 66 69 6e 64 5f 61 6c 6c 29 0d 0a 62 69 | synonym.Enumerable#find_all)..bi |
| 23da0 | 67 73 20 3d 20 6e 75 6d 73 2e 73 65 6c 65 63 74 20 7b 20 7c 69 7c 20 69 20 3e 20 31 5f 30 30 30 | gs.=.nums.select.{.|i|.i.>.1_000 |
| 23dc0 | 5f 30 30 30 20 7d 0d 0a 70 69 67 73 20 3d 20 75 73 65 72 73 2e 6b 65 79 73 2e 73 65 6c 65 63 74 | _000.}..pigs.=.users.keys.select |
| 23de0 | 20 7b 20 7c 6b 7c 20 75 73 65 72 73 5b 6b 5d 20 3e 20 31 65 37 20 7d 0d 0a 0d 0a 6d 61 74 63 68 | .{.|k|.users[k].>.1e7.}....match |
| 23e00 | 69 6e 67 20 3d 20 60 77 68 6f 60 2e 73 65 6c 65 63 74 20 7b 20 7c 75 7c 20 75 20 3d 7e 20 2f 5e | ing.=.`who`.select.{.|u|.u.=~./^ |
| 23e20 | 67 6e 61 74 20 2f 20 7d 0d 0a 0d 0a 65 6e 67 69 6e 65 65 72 73 20 3d 20 65 6d 70 6c 6f 79 65 65 | gnat./.}....engineers.=.employee |
| 23e40 | 73 2e 73 65 6c 65 63 74 20 7b 20 7c 65 7c 20 65 2e 70 6f 73 69 74 69 6f 6e 20 3d 3d 20 27 45 6e | s.select.{.|e|.e.position.==.'En |
| 23e60 | 67 69 6e 65 65 72 27 20 7d 0d 0a 0d 0a 73 65 63 6f 6e 64 61 72 79 5f 61 73 73 69 73 74 61 6e 63 | gineer'.}....secondary_assistanc |
| 23e80 | 65 20 3d 20 61 70 70 6c 69 63 61 6e 74 73 2e 73 65 6c 65 63 74 20 7b 20 7c 61 7c 0d 0a 20 20 20 | e.=.applicants.select.{.|a|..... |
| 23ea0 | 20 61 2e 69 6e 63 6f 6d 65 20 3e 3d 20 32 36 5f 30 30 30 20 26 26 20 61 2e 69 6e 63 6f 6d 65 20 | .a.income.>=.26_000.&&.a.income. |
| 23ec0 | 3c 20 33 30 5f 30 30 30 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 31 | <.30_000..}......#.@@PLEAC@@_4.1 |
| 23ee0 | 34 0d 0a 23 20 6e 6f 72 6d 61 6c 6c 79 20 79 6f 75 20 77 6f 75 6c 64 20 68 61 76 65 20 61 6e 20 | 4..#.normally.you.would.have.an. |
| 23f00 | 61 72 72 61 79 20 6f 66 20 4e 75 6d 65 72 69 63 20 28 46 6c 6f 61 74 20 6f 72 0d 0a 23 20 46 69 | array.of.Numeric.(Float.or..#.Fi |
| 23f20 | 78 6e 75 6d 20 6f 72 20 42 69 67 6e 75 6d 29 2c 20 73 6f 20 79 6f 75 20 77 6f 75 6c 64 20 75 73 | xnum.or.Bignum),.so.you.would.us |
| 23f40 | 65 3a 0d 0a 73 6f 72 74 65 64 20 3d 20 75 6e 73 6f 72 74 65 64 2e 73 6f 72 74 0d 0a 23 20 69 66 | e:..sorted.=.unsorted.sort..#.if |
| 23f60 | 20 79 6f 75 20 68 61 76 65 20 73 74 72 69 6e 67 73 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 49 | .you.have.strings.representing.I |
| 23f80 | 6e 74 65 67 65 72 73 20 6f 72 20 46 6c 6f 61 74 73 0d 0a 23 20 79 6f 75 20 6d 61 79 20 73 70 65 | ntegers.or.Floats..#.you.may.spe |
| 23fa0 | 63 69 66 79 20 61 6e 6f 74 68 65 72 20 73 6f 72 74 20 6d 65 74 68 6f 64 3a 0d 0a 73 6f 72 74 65 | cify.another.sort.method:..sorte |
| 23fc0 | 64 20 3d 20 75 6e 73 6f 72 74 65 64 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 61 2e 74 6f 5f 66 | d.=.unsorted.sort.{.|a,b|.a.to_f |
| 23fe0 | 20 3c 3d 3e 20 62 2e 74 6f 5f 66 20 7d 0d 0a 0d 0a 23 20 6c 65 74 27 73 20 75 73 65 20 74 68 65 | .<=>.b.to_f.}....#.let's.use.the |
| 24000 | 20 6c 69 73 74 20 6f 66 20 6d 79 20 6f 77 6e 20 50 49 44 27 73 0d 0a 60 70 73 20 75 78 60 2e 73 | .list.of.my.own.PID's..`ps.ux`.s |
| 24020 | 70 6c 69 74 28 22 5c 6e 22 29 5b 31 2e 2e 2d 31 5d 2e 0d 0a 20 20 20 20 73 65 6c 65 63 74 20 7b | plit("\n")[1..-1].......select.{ |
| 24040 | 20 7c 69 7c 20 69 20 3d 7e 20 2f 5e 23 7b 45 4e 56 5b 27 55 53 45 52 27 5d 7d 2f 20 7d 2e 0d 0a | .|i|.i.=~./^#{ENV['USER']}/.}... |
| 24060 | 20 20 20 20 63 6f 6c 6c 65 63 74 20 7b 20 7c 69 7c 20 69 2e 73 70 6c 69 74 5b 31 5d 20 7d 2e 0d | ....collect.{.|i|.i.split[1].}.. |
| 24080 | 0a 20 20 20 20 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 61 2e 74 6f 5f 69 20 3c 3d 3e 20 62 2e 74 | .....sort.{.|a,b|.a.to_i.<=>.b.t |
| 240a0 | 6f 5f 69 20 7d 2e 65 61 63 68 20 7b 20 7c 69 7c 20 70 75 74 73 20 69 20 7d 0d 0a 70 75 74 73 20 | o_i.}.each.{.|i|.puts.i.}..puts. |
| 240c0 | 22 53 65 6c 65 63 74 20 61 20 70 72 6f 63 65 73 73 20 49 44 20 74 6f 20 6b 69 6c 6c 3a 22 0d 0a | "Select.a.process.ID.to.kill:".. |
| 240e0 | 70 69 64 20 3d 20 67 65 74 73 2e 63 68 6f 6d 70 0d 0a 72 61 69 73 65 20 22 45 78 69 74 69 6e 67 | pid.=.gets.chomp..raise."Exiting |
| 24100 | 20 2e 2e 2e 20 5c 6e 22 20 75 6e 6c 65 73 73 20 70 69 64 20 26 26 20 70 69 64 20 3d 7e 20 2f 5e | .....\n".unless.pid.&&.pid.=~./^ |
| 24120 | 5c 64 2b 24 2f 0d 0a 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 27 54 45 52 4d 27 2c 20 70 69 64 2e | \d+$/..Process.kill('TERM',.pid. |
| 24140 | 74 6f 5f 69 29 0d 0a 73 6c 65 65 70 20 32 0d 0a 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 27 4b 49 | to_i)..sleep.2..Process.kill('KI |
| 24160 | 4c 4c 27 2c 20 70 69 64 2e 74 6f 5f 69 29 0d 0a 0d 0a 64 65 73 63 65 6e 64 69 6e 67 20 3d 20 75 | LL',.pid.to_i)....descending.=.u |
| 24180 | 6e 73 6f 72 74 65 64 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 62 2e 74 6f 5f 66 20 3c 3d 3e 20 | nsorted.sort.{.|a,b|.b.to_f.<=>. |
| 241a0 | 61 2e 74 6f 5f 66 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 31 35 0d 0a | a.to_f.}......#.@@PLEAC@@_4.15.. |
| 241c0 | 6f 72 64 65 72 65 64 20 3d 20 75 6e 6f 72 64 65 72 65 64 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c | ordered.=.unordered.sort.{.|a,b| |
| 241e0 | 20 63 6f 6d 70 61 72 65 28 61 2c 62 29 20 7d 0d 0a 0d 0a 70 72 65 63 6f 6d 70 75 74 65 64 20 3d | .compare(a,b).}....precomputed.= |
| 24200 | 20 75 6e 6f 72 64 65 72 65 64 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c 20 5b 63 6f 6d 70 75 74 | .unordered.collect.{.|e|.[comput |
| 24220 | 65 2c 20 65 5d 20 7d 0d 0a 6f 72 64 65 72 65 64 5f 70 72 65 63 6f 6d 70 75 74 65 64 20 3d 20 70 | e,.e].}..ordered_precomputed.=.p |
| 24240 | 72 65 63 6f 6d 70 75 74 65 64 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 61 5b 30 5d 20 3c 3d 3e | recomputed.sort.{.|a,b|.a[0].<=> |
| 24260 | 20 62 5b 30 5d 20 7d 0d 0a 6f 72 64 65 72 65 64 20 3d 20 6f 72 64 65 72 65 64 5f 70 72 65 63 6f | .b[0].}..ordered.=.ordered_preco |
| 24280 | 6d 70 75 74 65 64 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c 20 65 5b 31 5d 20 7d 0d 0a 0d 0a 6f | mputed.collect.{.|e|.e[1].}....o |
| 242a0 | 72 64 65 72 65 64 20 3d 20 75 6e 6f 72 64 65 72 65 64 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c | rdered.=.unordered.collect.{.|e| |
| 242c0 | 20 5b 63 6f 6d 70 75 74 65 2c 20 65 5d 20 7d 2e 0d 0a 20 20 20 20 73 6f 72 74 20 7b 20 7c 61 2c | .[compute,.e].}.......sort.{.|a, |
| 242e0 | 62 7c 20 61 5b 30 5d 20 3c 3d 3e 20 62 5b 30 5d 20 7d 2e 0d 0a 20 20 20 20 63 6f 6c 6c 65 63 74 | b|.a[0].<=>.b[0].}.......collect |
| 24300 | 20 7b 20 7c 65 7c 20 65 5b 31 5d 20 7d 0d 0a 0d 0a 66 6f 72 20 65 6d 70 6c 6f 79 65 65 20 69 6e | .{.|e|.e[1].}....for.employee.in |
| 24320 | 20 65 6d 70 6c 6f 79 65 65 73 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 61 2e 6e 61 6d 65 20 3c | .employees.sort.{.|a,b|.a.name.< |
| 24340 | 3d 3e 20 62 2e 6e 61 6d 65 20 7d 0d 0a 20 20 20 20 70 72 69 6e 74 20 65 6d 70 6c 6f 79 65 65 2e | =>.b.name.}......print.employee. |
| 24360 | 6e 61 6d 65 2c 20 22 20 65 61 72 6e 73 20 5c 24 20 22 2c 20 65 6d 70 6c 6f 79 65 65 2e 73 61 6c | name,.".earns.\$.",.employee.sal |
| 24380 | 61 72 79 2c 20 22 5c 6e 22 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 42 65 77 61 72 65 21 20 60 30 27 20 | ary,."\n"..end....#.Beware!.`0'. |
| 243a0 | 69 73 20 74 72 75 65 20 69 6e 20 52 75 62 79 2e 0d 0a 23 20 46 6f 72 20 63 68 61 69 6e 69 6e 67 | is.true.in.Ruby...#.For.chaining |
| 243c0 | 20 63 6f 6d 70 61 72 69 73 6f 6e 73 2c 20 79 6f 75 20 6d 61 79 20 75 73 65 20 4e 75 6d 65 72 69 | .comparisons,.you.may.use.Numeri |
| 243e0 | 63 23 6e 6f 6e 7a 65 72 6f 3f 2c 20 77 68 69 63 68 0d 0a 23 20 72 65 74 75 72 6e 73 20 6e 75 6d | c#nonzero?,.which..#.returns.num |
| 24400 | 20 69 66 20 6e 75 6d 20 69 73 20 6e 6f 74 20 7a 65 72 6f 2c 20 6e 69 6c 20 6f 74 68 65 72 77 69 | .if.num.is.not.zero,.nil.otherwi |
| 24420 | 73 65 0d 0a 73 6f 72 74 65 64 20 3d 20 65 6d 70 6c 6f 79 65 65 73 2e 73 6f 72 74 20 7b 20 7c 61 | se..sorted.=.employees.sort.{.|a |
| 24440 | 2c 62 7c 20 28 61 2e 6e 61 6d 65 20 3c 3d 3e 20 62 2e 6e 61 6d 65 29 2e 6e 6f 6e 7a 65 72 6f 3f | ,b|.(a.name.<=>.b.name).nonzero? |
| 24460 | 20 7c 7c 20 62 2e 61 67 65 20 3c 3d 3e 20 61 2e 61 67 65 20 7d 0d 0a 0d 0a 75 73 65 72 73 20 3d | .||.b.age.<=>.a.age.}....users.= |
| 24480 | 20 5b 5d 0d 0a 23 20 67 65 74 70 77 65 6e 74 20 69 73 20 6e 6f 74 20 77 72 61 70 70 65 64 20 69 | .[]..#.getpwent.is.not.wrapped.i |
| 244a0 | 6e 20 52 75 62 79 2e 2e 2e 20 6c 65 74 27 73 20 66 61 6c 6c 62 61 63 6b 0d 0a 49 4f 2e 72 65 61 | n.Ruby....let's.fallback..IO.rea |
| 244c0 | 64 6c 69 6e 65 73 28 27 2f 65 74 63 2f 70 61 73 73 77 64 27 29 2e 65 61 63 68 20 7b 20 7c 75 7c | dlines('/etc/passwd').each.{.|u| |
| 244e0 | 20 75 73 65 72 73 20 3c 3c 20 75 2e 73 70 6c 69 74 28 27 3a 27 29 20 7d 0d 0a 75 73 65 72 73 2e | .users.<<.u.split(':').}..users. |
| 24500 | 73 6f 72 74 21 20 7b 20 7c 61 2c 62 7c 20 61 5b 30 5d 20 3c 3d 3e 20 62 5b 30 5d 20 7d 0d 0a 66 | sort!.{.|a,b|.a[0].<=>.b[0].}..f |
| 24520 | 6f 72 20 75 73 65 72 20 69 6e 20 75 73 65 72 73 0d 0a 20 20 20 20 70 75 74 73 20 75 73 65 72 5b | or.user.in.users......puts.user[ |
| 24540 | 30 5d 0d 0a 65 6e 64 0d 0a 0d 0a 73 6f 72 74 65 64 20 3d 20 6e 61 6d 65 73 2e 73 6f 72 74 20 7b | 0]..end....sorted.=.names.sort.{ |
| 24560 | 20 7c 61 2c 62 7c 20 61 5b 31 2c 20 31 5d 20 3c 3d 3e 20 62 5b 31 2c 20 31 5d 20 7d 0d 0a 73 6f | .|a,b|.a[1,.1].<=>.b[1,.1].}..so |
| 24580 | 72 74 65 64 20 3d 20 73 74 72 69 6e 67 73 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 61 2e 6c 65 | rted.=.strings.sort.{.|a,b|.a.le |
| 245a0 | 6e 67 74 68 20 3c 3d 3e 20 62 2e 6c 65 6e 67 74 68 20 7d 0d 0a 0d 0a 23 20 6c 65 74 27 73 20 73 | ngth.<=>.b.length.}....#.let's.s |
| 245c0 | 68 6f 77 20 6f 6e 6c 79 20 74 68 65 20 63 6f 6d 70 61 63 74 20 76 65 72 73 69 6f 6e 0d 0a 6f 72 | how.only.the.compact.version..or |
| 245e0 | 64 65 72 65 64 20 3d 20 73 74 72 69 6e 67 73 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c 20 5b 65 | dered.=.strings.collect.{.|e|.[e |
| 24600 | 2e 6c 65 6e 67 74 68 2c 20 65 5d 20 7d 2e 0d 0a 20 20 20 20 73 6f 72 74 20 7b 20 7c 61 2c 62 7c | .length,.e].}.......sort.{.|a,b| |
| 24620 | 20 61 5b 30 5d 20 3c 3d 3e 20 62 5b 30 5d 20 7d 2e 0d 0a 20 20 20 20 63 6f 6c 6c 65 63 74 20 7b | .a[0].<=>.b[0].}.......collect.{ |
| 24640 | 20 7c 65 7c 20 65 5b 31 5d 20 7d 0d 0a 0d 0a 6f 72 64 65 72 65 64 20 3d 20 73 74 72 69 6e 67 73 | .|e|.e[1].}....ordered.=.strings |
| 24660 | 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c 20 5b 2f 5c 64 2b 2f 2e 6d 61 74 63 68 28 65 29 5b 30 | .collect.{.|e|.[/\d+/.match(e)[0 |
| 24680 | 5d 2e 74 6f 5f 69 2c 20 65 5d 20 7d 2e 0d 0a 20 20 20 20 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 | ].to_i,.e].}.......sort.{.|a,b|. |
| 246a0 | 61 5b 30 5d 20 3c 3d 3e 20 62 5b 30 5d 20 7d 2e 0d 0a 20 20 20 20 63 6f 6c 6c 65 63 74 20 7b 20 | a[0].<=>.b[0].}.......collect.{. |
| 246c0 | 7c 65 7c 20 65 5b 31 5d 20 7d 0d 0a 0d 0a 70 72 69 6e 74 20 60 63 61 74 20 2f 65 74 63 2f 70 61 | |e|.e[1].}....print.`cat./etc/pa |
| 246e0 | 73 73 77 64 60 2e 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c 20 5b 65 2c 20 65 2e 73 70 6c 69 74 28 | sswd`.collect.{.|e|.[e,.e.split( |
| 24700 | 27 3a 27 29 2e 69 6e 64 65 78 65 73 28 33 2c 32 2c 30 29 5d 2e 66 6c 61 74 74 65 6e 20 7d 2e 0d | ':').indexes(3,2,0)].flatten.}.. |
| 24720 | 0a 20 20 20 20 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 28 61 5b 31 5d 20 3c 3d 3e 20 62 5b 31 5d | .....sort.{.|a,b|.(a[1].<=>.b[1] |
| 24740 | 29 2e 6e 6f 6e 7a 65 72 6f 3f 20 7c 7c 20 28 61 5b 32 5d 20 3c 3d 3e 20 62 5b 32 5d 29 2e 6e 6f | ).nonzero?.||.(a[2].<=>.b[2]).no |
| 24760 | 6e 7a 65 72 6f 3f 20 7c 7c 20 61 5b 33 5d 20 3c 3d 3e 20 62 5b 33 5d 20 7d 2e 0d 0a 20 20 20 20 | nzero?.||.a[3].<=>.b[3].}....... |
| 24780 | 63 6f 6c 6c 65 63 74 20 7b 20 7c 65 7c 20 65 5b 30 5d 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c | collect.{.|e|.e[0].}......#.@@PL |
| 247a0 | 45 41 43 40 40 5f 34 2e 31 36 0d 0a 63 69 72 63 75 6c 61 72 2e 75 6e 73 68 69 66 74 28 63 69 72 | EAC@@_4.16..circular.unshift(cir |
| 247c0 | 63 75 6c 61 72 2e 70 6f 70 29 20 20 20 20 20 20 20 20 23 20 74 68 65 20 6c 61 73 74 20 73 68 61 | cular.pop)........#.the.last.sha |
| 247e0 | 6c 6c 20 62 65 20 66 69 72 73 74 0d 0a 63 69 72 63 75 6c 61 72 2e 70 75 73 68 28 63 69 72 63 75 | ll.be.first..circular.push(circu |
| 24800 | 6c 61 72 2e 73 68 69 66 74 29 20 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 76 69 63 65 20 76 65 | lar.shift).........#.and.vice.ve |
| 24820 | 72 73 61 0d 0a 0d 0a 64 65 66 20 67 72 61 62 5f 61 6e 64 5f 72 6f 74 61 74 65 28 6c 29 0d 0a 20 | rsa....def.grab_and_rotate(l)... |
| 24840 | 20 20 20 6c 2e 70 75 73 68 28 72 65 74 20 3d 20 6c 2e 73 68 69 66 74 29 0d 0a 20 20 20 20 72 65 | ...l.push(ret.=.l.shift)......re |
| 24860 | 74 0d 0a 65 6e 64 0d 0a 0d 0a 70 72 6f 63 65 73 73 65 73 20 3d 20 5b 31 2c 20 32 2c 20 33 2c 20 | t..end....processes.=.[1,.2,.3,. |
| 24880 | 34 2c 20 35 5d 0d 0a 77 68 69 6c 65 20 28 31 29 0d 0a 20 20 20 20 70 72 6f 63 65 73 73 20 3d 20 | 4,.5]..while.(1)......process.=. |
| 248a0 | 67 72 61 62 5f 61 6e 64 5f 72 6f 74 61 74 65 28 70 72 6f 63 65 73 73 65 73 29 0d 0a 20 20 20 20 | grab_and_rotate(processes)...... |
| 248c0 | 70 75 74 73 20 22 48 61 6e 64 6c 69 6e 67 20 70 72 6f 63 65 73 73 20 23 7b 70 72 6f 63 65 73 73 | puts."Handling.process.#{process |
| 248e0 | 7d 22 0d 0a 20 20 20 20 73 6c 65 65 70 20 31 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c | }"......sleep.1..end......#.@@PL |
| 24900 | 45 41 43 40 40 5f 34 2e 31 37 0d 0a 64 65 66 20 66 69 73 68 65 72 5f 79 61 74 65 73 5f 73 68 75 | EAC@@_4.17..def.fisher_yates_shu |
| 24920 | 66 66 6c 65 28 61 29 0d 0a 20 20 20 20 28 61 2e 73 69 7a 65 2d 31 29 2e 64 6f 77 6e 74 6f 28 31 | ffle(a)......(a.size-1).downto(1 |
| 24940 | 29 20 7b 20 7c 69 7c 0d 0a 20 20 20 20 20 20 20 20 6a 20 3d 20 72 61 6e 64 28 69 2b 31 29 0d 0a | ).{.|i|..........j.=.rand(i+1).. |
| 24960 | 20 20 20 20 20 20 20 20 61 5b 69 5d 2c 20 61 5b 6a 5d 20 3d 20 61 5b 6a 5d 2c 20 61 5b 69 5d 20 | ........a[i],.a[j].=.a[j],.a[i]. |
| 24980 | 69 66 20 69 20 21 3d 20 6a 0d 0a 20 20 20 20 7d 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 6e 61 69 | if.i.!=.j......}..end....def.nai |
| 249a0 | 76 65 5f 73 68 75 66 66 6c 65 28 61 29 0d 0a 20 20 20 20 66 6f 72 20 69 20 69 6e 20 30 2e 2e 2e | ve_shuffle(a)......for.i.in.0... |
| 249c0 | 61 2e 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 6a 20 3d 20 72 61 6e 64 28 61 2e 73 69 7a 65 29 | a.size..........j.=.rand(a.size) |
| 249e0 | 0d 0a 20 20 20 20 20 20 20 20 61 5b 69 5d 2c 20 61 5b 6a 5d 20 3d 20 61 5b 6a 5d 2c 20 61 5b 69 | ..........a[i],.a[j].=.a[j],.a[i |
| 24a00 | 5d 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | ]......end..end......#.@@PLEAC@@ |
| 24a20 | 5f 34 2e 31 38 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 72 75 62 79 0d 0a 23 20 65 78 | _4.18..#!/usr/bin/env.ruby..#.ex |
| 24a40 | 61 6d 70 6c 65 20 34 2d 32 20 77 6f 72 64 73 0d 0a 23 20 77 6f 72 64 73 20 2d 20 67 61 74 68 65 | ample.4-2.words..#.words.-.gathe |
| 24a60 | 72 20 6c 69 6e 65 73 2c 20 70 72 65 73 65 6e 74 20 69 6e 20 63 6f 6c 75 6d 73 0d 0a 0d 0a 23 20 | r.lines,.present.in.colums....#. |
| 24a80 | 63 6c 61 73 73 20 74 6f 20 65 6e 63 61 70 73 75 6c 61 74 65 20 74 68 65 20 77 6f 72 64 20 66 6f | class.to.encapsulate.the.word.fo |
| 24aa0 | 72 6d 61 74 74 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 69 6e 70 75 74 0d 0a 63 6c 61 73 73 20 57 | rmatting.from.the.input..class.W |
| 24ac0 | 6f 72 64 46 6f 72 6d 61 74 74 65 72 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 | ordFormatter......def.initialize |
| 24ae0 | 28 63 6f 6c 73 29 0d 0a 20 20 20 20 20 20 20 20 40 63 6f 6c 73 20 3d 20 63 6f 6c 73 0d 0a 20 20 | (cols)..........@cols.=.cols.... |
| 24b00 | 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 68 65 6c 70 65 72 20 74 6f 20 72 65 74 75 72 6e 20 | ..end........#.helper.to.return. |
| 24b20 | 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 6c 6f 6e 67 65 73 74 20 77 6f 72 64 20 69 | the.length.of.the.longest.word.i |
| 24b40 | 6e 20 74 68 65 20 77 6f 72 64 6c 69 73 74 0d 0a 20 20 20 20 64 65 66 20 6d 61 78 6c 65 6e 28 77 | n.the.wordlist......def.maxlen(w |
| 24b60 | 6f 72 64 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20 6d 61 78 20 3d 20 31 0d 0a 20 20 20 20 20 | ordlist)..........max.=.1....... |
| 24b80 | 20 20 20 66 6f 72 20 77 6f 72 64 20 69 6e 20 77 6f 72 64 6c 69 73 74 0d 0a 20 20 20 20 20 20 20 | ...for.word.in.wordlist......... |
| 24ba0 | 20 20 20 20 20 69 66 20 77 6f 72 64 2e 6c 65 6e 67 74 68 20 3e 20 6d 61 78 0d 0a 20 20 20 20 20 | .....if.word.length.>.max....... |
| 24bc0 | 20 20 20 20 20 20 20 20 20 20 20 6d 61 78 20 3d 20 77 6f 72 64 2e 6c 65 6e 67 74 68 0d 0a 20 20 | ...........max.=.word.length.... |
| 24be0 | 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | ..........end..........end...... |
| 24c00 | 20 20 20 20 6d 61 78 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 70 72 6f 63 65 73 | ....max......end........#.proces |
| 24c20 | 73 20 74 68 65 20 77 6f 72 64 6c 69 73 74 20 61 6e 64 20 70 72 69 6e 74 20 69 74 20 66 6f 72 6d | s.the.wordlist.and.print.it.form |
| 24c40 | 6d 61 74 65 64 20 69 6e 74 6f 20 63 6f 6c 75 6d 6e 73 0d 0a 20 20 20 20 64 65 66 20 6f 75 74 70 | mated.into.columns......def.outp |
| 24c60 | 75 74 28 77 6f 72 64 6c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 6e 20 3d 20 6d | ut(wordlist)..........collen.=.m |
| 24c80 | 61 78 6c 65 6e 28 77 6f 72 64 6c 69 73 74 29 20 2b 20 31 0d 0a 20 20 20 20 20 20 20 20 63 6f 6c | axlen(wordlist).+.1..........col |
| 24ca0 | 75 6d 6e 73 20 3d 20 40 63 6f 6c 73 20 2f 20 63 6f 6c 6c 65 6e 0d 0a 20 20 20 20 20 20 20 20 63 | umns.=.@cols./.collen..........c |
| 24cc0 | 6f 6c 75 6d 6e 73 20 3d 20 31 20 69 66 20 63 6f 6c 75 6d 6e 73 20 3d 3d 20 30 0d 0a 20 20 20 20 | olumns.=.1.if.columns.==.0...... |
| 24ce0 | 20 20 20 20 72 6f 77 73 20 3d 20 28 77 6f 72 64 6c 69 73 74 2e 6c 65 6e 67 74 68 20 2b 20 63 6f | ....rows.=.(wordlist.length.+.co |
| 24d00 | 6c 75 6d 6e 73 20 2d 20 31 29 20 2f 20 63 6f 6c 75 6d 6e 73 0d 0a 20 20 20 20 20 20 20 20 23 20 | lumns.-.1)./.columns..........#. |
| 24d20 | 6e 6f 77 20 70 72 6f 63 65 73 73 20 65 61 63 68 20 69 74 65 6d 2c 20 70 69 63 6b 69 6e 67 20 6f | now.process.each.item,.picking.o |
| 24d40 | 75 74 20 70 72 6f 70 65 72 20 70 69 65 63 65 20 66 6f 72 20 74 68 69 73 20 70 6f 73 69 74 69 6f | ut.proper.piece.for.this.positio |
| 24d60 | 6e 0d 0a 20 20 20 20 20 20 20 20 30 2e 75 70 74 6f 28 72 6f 77 73 20 2a 20 63 6f 6c 75 6d 6e 73 | n..........0.upto(rows.*.columns |
| 24d80 | 20 2d 20 31 29 20 7b 20 7c 69 74 65 6d 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 | .-.1).{.|item|..............targ |
| 24da0 | 65 74 20 3d 20 28 69 74 65 6d 20 25 20 63 6f 6c 75 6d 6e 73 29 20 2a 20 72 6f 77 73 20 2b 20 28 | et.=.(item.%.columns).*.rows.+.( |
| 24dc0 | 69 74 65 6d 20 2f 20 63 6f 6c 75 6d 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6f 6c | item./.columns)..............eol |
| 24de0 | 20 3d 20 28 28 69 74 65 6d 2b 31 29 20 25 20 63 6f 6c 75 6d 6e 73 20 3d 3d 20 30 29 0d 0a 20 20 | .=.((item+1).%.columns.==.0).... |
| 24e00 | 20 20 20 20 20 20 20 20 20 20 70 69 65 63 65 20 3d 20 77 6f 72 64 6c 69 73 74 5b 74 61 72 67 65 | ..........piece.=.wordlist[targe |
| 24e20 | 74 5d 20 7c 7c 20 22 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 69 65 63 65 20 3d 20 70 69 | t].||.""..............piece.=.pi |
| 24e40 | 65 63 65 2e 6c 6a 75 73 74 28 63 6f 6c 6c 65 6e 29 20 75 6e 6c 65 73 73 20 65 6f 6c 0d 0a 20 20 | ece.ljust(collen).unless.eol.... |
| 24e60 | 20 20 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 70 69 65 63 65 0d 0a 20 20 20 20 20 20 20 20 20 | ..........print.piece........... |
| 24e80 | 20 20 20 70 75 74 73 20 69 66 20 65 6f 6c 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 | ...puts.if.eol..........}....... |
| 24ea0 | 20 20 20 23 20 6e 6f 20 6e 65 65 64 20 74 6f 20 66 69 6e 69 73 68 20 69 74 20 75 70 2c 20 62 65 | ...#.no.need.to.finish.it.up,.be |
| 24ec0 | 63 61 75 73 65 20 65 6f 6c 20 69 73 20 61 6c 77 61 79 73 20 74 72 75 65 20 66 6f 72 20 74 68 65 | cause.eol.is.always.true.for.the |
| 24ee0 | 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 | .last.element......end..end....# |
| 24f00 | 20 67 65 74 20 6e 72 20 6f 66 20 63 68 61 72 73 20 74 68 61 74 20 66 69 74 20 69 6e 20 77 69 6e | .get.nr.of.chars.that.fit.in.win |
| 24f20 | 64 6f 77 20 6f 72 20 63 6f 6e 73 6f 6c 65 2c 20 73 65 65 20 50 4c 45 41 43 20 31 35 2e 34 0d 0a | dow.or.console,.see.PLEAC.15.4.. |
| 24f40 | 23 20 6e 6f 74 20 70 6f 72 74 61 62 6c 65 20 2d 2d 20 6c 69 6e 75 78 20 6f 6e 6c 79 20 28 3f 29 | #.not.portable.--.linux.only.(?) |
| 24f60 | 0d 0a 64 65 66 20 67 65 74 57 69 6e 43 68 61 72 57 69 64 74 68 28 29 0d 0a 20 20 20 20 62 75 66 | ..def.getWinCharWidth()......buf |
| 24f80 | 20 3d 20 22 5c 30 22 20 2a 20 38 0d 0a 20 20 20 20 24 73 74 64 6f 75 74 2e 69 6f 63 74 6c 28 30 | .=."\0".*.8......$stdout.ioctl(0 |
| 24fa0 | 78 35 34 31 33 2c 20 62 75 66 29 0d 0a 20 20 20 20 77 73 5f 72 6f 77 2c 20 77 73 5f 63 6f 6c 2c | x5413,.buf)......ws_row,.ws_col, |
| 24fc0 | 20 77 73 5f 78 70 69 78 65 6c 2c 20 77 73 5f 79 70 69 78 65 6c 20 3d 20 62 75 66 2e 75 6e 70 61 | .ws_xpixel,.ws_ypixel.=.buf.unpa |
| 24fe0 | 63 6b 28 22 24 34 22 29 0d 0a 20 20 20 20 77 73 5f 63 6f 6c 20 7c 7c 20 38 30 0d 0a 72 65 73 63 | ck("$4")......ws_col.||.80..resc |
| 25000 | 75 65 0d 0a 20 20 20 20 38 30 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 6d 61 69 6e 20 70 72 6f 67 72 61 | ue......80..end....#.main.progra |
| 25020 | 6d 0d 0a 63 6f 6c 73 20 3d 20 67 65 74 57 69 6e 43 68 61 72 57 69 64 74 68 28 29 0d 0a 66 6f 72 | m..cols.=.getWinCharWidth()..for |
| 25040 | 6d 61 74 74 65 72 20 3d 20 57 6f 72 64 46 6f 72 6d 61 74 74 65 72 2e 6e 65 77 28 63 6f 6c 73 29 | matter.=.WordFormatter.new(cols) |
| 25060 | 0d 0a 77 6f 72 64 73 20 3d 20 72 65 61 64 6c 69 6e 65 73 28 29 0d 0a 77 6f 72 64 73 2e 63 6f 6c | ..words.=.readlines()..words.col |
| 25080 | 6c 65 63 74 21 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 6c 69 6e 65 2e 63 68 6f 6d 70 0d 0a | lect!.{.|line|......line.chomp.. |
| 250a0 | 7d 0d 0a 66 6f 72 6d 61 74 74 65 72 2e 6f 75 74 70 75 74 28 77 6f 72 64 73 29 0d 0a 0d 0a 0d 0a | }..formatter.output(words)...... |
| 250c0 | 23 20 40 40 50 4c 45 41 43 40 40 5f 34 2e 31 39 0d 0a 23 20 49 6e 20 72 75 62 79 2c 20 46 69 78 | #.@@PLEAC@@_4.19..#.In.ruby,.Fix |
| 250e0 | 6e 75 6d 27 73 20 61 72 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 6f 6e 76 65 72 74 65 | num's.are.automatically.converte |
| 25100 | 64 20 74 6f 20 42 69 67 6e 75 6d 27 73 20 77 68 65 6e 0d 0a 23 20 6e 65 65 64 65 64 2c 20 73 6f | d.to.Bignum's.when..#.needed,.so |
| 25120 | 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6e 65 65 64 20 66 6f 72 20 61 6e 20 65 78 74 72 61 20 6d | .there.is.no.need.for.an.extra.m |
| 25140 | 6f 64 75 6c 65 0d 0a 64 65 66 20 66 61 63 74 6f 72 69 61 6c 28 6e 29 0d 0a 20 20 20 20 73 20 3d | odule..def.factorial(n)......s.= |
| 25160 | 20 31 0d 0a 20 20 20 20 77 68 69 6c 65 20 6e 20 3e 20 30 0d 0a 20 20 20 20 20 20 20 20 73 20 2a | .1......while.n.>.0..........s.* |
| 25180 | 3d 20 6e 0d 0a 20 20 20 20 20 20 20 20 6e 20 2d 3d 20 31 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 | =.n..........n.-=.1......end.... |
| 251a0 | 20 20 73 0d 0a 65 6e 64 0d 0a 0d 0a 70 75 74 73 20 66 61 63 74 6f 72 69 61 6c 28 35 30 30 29 0d | ..s..end....puts.factorial(500). |
| 251c0 | 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ...#---------------------------- |
| 251e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 | -----------------------------..# |
| 25200 | 20 45 78 61 6d 70 6c 65 20 34 2d 33 2e 20 74 73 63 2d 70 65 72 6d 75 74 65 0d 0a 23 20 74 73 63 | .Example.4-3..tsc-permute..#.tsc |
| 25220 | 5f 70 65 72 6d 75 74 65 3a 20 70 65 72 6d 75 74 65 20 65 61 63 68 20 77 6f 72 64 20 6f 66 20 69 | _permute:.permute.each.word.of.i |
| 25240 | 6e 70 75 74 0d 0a 64 65 66 20 70 65 72 6d 75 74 65 28 69 74 65 6d 73 2c 20 70 65 72 6d 73 29 0d | nput..def.permute(items,.perms). |
| 25260 | 0a 20 20 20 20 75 6e 6c 65 73 73 20 69 74 65 6d 73 2e 6c 65 6e 67 74 68 20 3e 20 30 0d 0a 20 20 | .....unless.items.length.>.0.... |
| 25280 | 20 20 20 20 20 20 70 75 74 73 20 70 65 72 6d 73 2e 6a 6f 69 6e 28 22 20 22 29 0d 0a 20 20 20 20 | ......puts.perms.join(".")...... |
| 252a0 | 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 69 20 69 6e 20 69 74 65 6d 73 0d 0a 20 20 | else..........for.i.in.items.... |
| 252c0 | 20 20 20 20 20 20 20 20 20 20 6e 65 77 69 74 65 6d 73 20 3d 20 69 74 65 6d 73 2e 64 75 70 0d 0a | ..........newitems.=.items.dup.. |
| 252e0 | 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 70 65 72 6d 73 20 3d 20 70 65 72 6d 73 2e 64 75 70 | ............newperms.=.perms.dup |
| 25300 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 70 65 72 6d 73 2e 75 6e 73 68 69 66 74 28 6e | ..............newperms.unshift(n |
| 25320 | 65 77 69 74 65 6d 73 2e 64 65 6c 65 74 65 28 69 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ewitems.delete(i)).............. |
| 25340 | 70 65 72 6d 75 74 65 28 6e 65 77 69 74 65 6d 73 2c 20 6e 65 77 70 65 72 6d 73 29 0d 0a 20 20 20 | permute(newitems,.newperms)..... |
| 25360 | 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 23 20 49 6e 20 72 75 62 | .....end......end..end..#.In.rub |
| 25380 | 79 20 74 68 65 20 6d 61 69 6e 20 70 72 6f 67 72 61 6d 20 6d 75 73 74 20 62 65 20 61 66 74 65 72 | y.the.main.program.must.be.after |
| 253a0 | 20 61 6c 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 20 69 74 20 69 73 20 75 73 69 6e 67 0d 0a 70 65 | .all.definitions.it.is.using..pe |
| 253c0 | 72 6d 75 74 65 28 41 52 47 56 2c 20 5b 5d 29 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | rmute(ARGV,.[])....#------------ |
| 253e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 25400 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 6d 6a 64 5f 70 65 72 6d 75 74 65 3a 20 70 65 | -------------..#.mjd_permute:.pe |
| 25420 | 72 6d 75 74 65 20 65 61 63 68 20 77 6f 72 64 20 6f 66 20 69 6e 70 75 74 0d 0a 0d 0a 64 65 66 20 | rmute.each.word.of.input....def. |
| 25440 | 66 61 63 74 6f 72 69 61 6c 28 6e 29 0d 0a 20 20 20 20 73 20 3d 20 31 0d 0a 20 20 20 20 77 68 69 | factorial(n)......s.=.1......whi |
| 25460 | 6c 65 20 6e 20 3e 20 30 0d 0a 20 20 20 20 20 20 20 20 73 20 2a 3d 20 6e 0d 0a 20 20 20 20 20 20 | le.n.>.0..........s.*=.n........ |
| 25480 | 20 20 6e 20 2d 3d 20 31 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 73 0d 0a 65 6e 64 0d 0a 0d | ..n.-=.1......end......s..end... |
| 254a0 | 0a 23 20 77 65 20 75 73 65 20 61 20 63 6c 61 73 73 20 77 69 74 68 20 61 20 63 6c 61 73 73 20 76 | .#.we.use.a.class.with.a.class.v |
| 254c0 | 61 72 69 61 62 6c 65 20 73 74 6f 72 65 20 74 68 65 20 70 72 69 76 61 74 65 20 63 61 63 68 65 0d | ariable.store.the.private.cache. |
| 254e0 | 0a 23 20 66 6f 72 20 74 68 65 20 72 65 73 75 6c 74 73 20 6f 66 20 74 68 65 20 66 61 63 74 6f 72 | .#.for.the.results.of.the.factor |
| 25500 | 69 61 6c 20 66 75 6e 63 74 69 6f 6e 2e 0d 0a 63 6c 61 73 73 20 46 61 63 74 6f 72 69 61 6c 0d 0a | ial.function...class.Factorial.. |
| 25520 | 20 20 20 20 40 40 66 61 63 74 20 3d 20 5b 20 31 20 5d 0d 0a 20 20 20 20 64 65 66 20 46 61 63 74 | ....@@fact.=.[.1.]......def.Fact |
| 25540 | 6f 72 69 61 6c 2e 63 6f 6d 70 75 74 65 28 6e 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 40 66 | orial.compute(n)..........if.@@f |
| 25560 | 61 63 74 5b 6e 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 40 66 61 63 74 5b 6e 5d 0d 0a 20 | act[n]..............@@fact[n]... |
| 25580 | 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 40 66 61 63 74 5b | .......else..............@@fact[ |
| 255a0 | 6e 5d 20 3d 20 6e 20 2a 20 46 61 63 74 6f 72 69 61 6c 2e 63 6f 6d 70 75 74 65 28 6e 20 2d 20 31 | n].=.n.*.Factorial.compute(n.-.1 |
| 255c0 | 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a | )..........end......end..end.... |
| 255e0 | 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | #------------------------------- |
| 25600 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 45 78 | --------------------------..#.Ex |
| 25620 | 61 6d 70 6c 65 20 34 2d 34 2d 20 6d 6a 64 2d 70 65 72 6d 75 74 65 0d 0a 23 20 6e 32 70 61 74 28 | ample.4-4-.mjd-permute..#.n2pat( |
| 25640 | 6e 2c 20 6c 65 6e 29 3a 20 70 72 6f 64 75 63 65 20 74 68 65 20 4e 2d 74 68 20 70 61 74 74 65 72 | n,.len):.produce.the.N-th.patter |
| 25660 | 6e 20 6f 66 20 6c 65 6e 67 74 68 20 6c 65 6e 0d 0a 0d 0a 23 20 57 65 20 6d 75 73 74 20 75 73 65 | n.of.length.len....#.We.must.use |
| 25680 | 20 61 20 6c 6f 77 65 72 20 63 61 73 65 20 6c 65 74 74 65 72 20 61 73 20 70 61 72 61 6d 65 74 65 | .a.lower.case.letter.as.paramete |
| 256a0 | 72 20 4e 2c 20 6f 74 68 65 72 77 69 73 65 20 69 74 20 69 73 0d 0a 23 20 68 61 6e 64 6c 65 64 20 | r.N,.otherwise.it.is..#.handled. |
| 256c0 | 61 73 20 63 6f 6e 73 74 61 6e 74 20 4c 65 6e 67 74 68 20 69 73 20 74 68 65 20 6c 65 6e 67 74 68 | as.constant.Length.is.the.length |
| 256e0 | 20 6f 66 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 0d 0a 23 20 61 72 72 61 79 2c 20 6e 6f 74 20 | .of.the.resulting..#.array,.not. |
| 25700 | 74 68 65 20 69 6e 64 65 78 20 6f 66 20 74 68 65 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 20 28 6c | the.index.of.the.last.element.(l |
| 25720 | 65 6e 67 74 68 20 2d 31 29 20 6c 69 6b 65 20 69 6e 0d 0a 23 20 74 68 65 20 70 65 72 6c 20 65 78 | ength.-1).like.in..#.the.perl.ex |
| 25740 | 61 6d 70 6c 65 2e 0d 0a 64 65 66 20 6e 32 70 61 74 28 6e 2c 20 6c 65 6e 67 74 68 29 0d 0a 20 20 | ample...def.n2pat(n,.length).... |
| 25760 | 20 20 70 61 74 20 3d 20 5b 5d 0d 0a 20 20 20 20 69 20 3d 20 31 0d 0a 20 20 20 20 77 68 69 6c 65 | ..pat.=.[]......i.=.1......while |
| 25780 | 20 69 20 3c 3d 20 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 70 61 74 2e 70 75 73 68 28 6e | .i.<=.length..........pat.push(n |
| 257a0 | 20 25 20 69 29 0d 0a 20 20 20 20 20 20 20 20 6e 20 2f 3d 20 69 0d 0a 20 20 20 20 20 20 20 20 69 | .%.i)..........n./=.i..........i |
| 257c0 | 20 2b 3d 20 31 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 70 61 74 0d 0a 65 6e 64 0d 0a 0d 0a | .+=.1......end......pat..end.... |
| 257e0 | 23 20 70 61 74 32 70 65 72 6d 28 70 61 74 29 3a 20 74 75 72 6e 20 70 61 74 74 65 72 6e 20 72 65 | #.pat2perm(pat):.turn.pattern.re |
| 25800 | 74 75 72 6e 65 64 20 62 79 20 6e 32 70 61 74 28 29 20 69 6e 74 6f 0d 0a 23 20 70 65 72 6d 75 74 | turned.by.n2pat().into..#.permut |
| 25820 | 61 74 69 6f 6e 20 6f 66 20 69 6e 74 65 67 65 72 73 2e 0d 0a 64 65 66 20 70 61 74 32 70 65 72 6d | ation.of.integers...def.pat2perm |
| 25840 | 28 70 61 74 29 0d 0a 20 20 20 20 73 6f 75 72 63 65 20 3d 20 28 30 20 2e 2e 20 70 61 74 2e 6c 65 | (pat)......source.=.(0....pat.le |
| 25860 | 6e 67 74 68 20 2d 20 31 29 2e 74 6f 5f 61 0d 0a 20 20 20 20 70 65 72 6d 20 3d 20 5b 5d 0d 0a 20 | ngth.-.1).to_a......perm.=.[]... |
| 25880 | 20 20 20 70 65 72 6d 2e 70 75 73 68 28 73 6f 75 72 63 65 2e 73 6c 69 63 65 21 28 70 61 74 2e 70 | ...perm.push(source.slice!(pat.p |
| 258a0 | 6f 70 29 29 20 77 68 69 6c 65 20 70 61 74 2e 6c 65 6e 67 74 68 20 3e 20 30 0d 0a 20 20 20 20 70 | op)).while.pat.length.>.0......p |
| 258c0 | 65 72 6d 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 6e 32 70 65 72 6d 28 6e 2c 20 6c 65 6e 29 0d 0a | erm..end....def.n2perm(n,.len).. |
| 258e0 | 20 20 20 20 70 61 74 32 70 65 72 6d 28 6e 32 70 61 74 28 6e 2c 6c 65 6e 29 29 0d 0a 65 6e 64 0d | ....pat2perm(n2pat(n,len))..end. |
| 25900 | 0a 0d 0a 23 20 49 6e 20 72 75 62 79 20 74 68 65 20 6d 61 69 6e 20 70 72 6f 67 72 61 6d 20 6d 75 | ...#.In.ruby.the.main.program.mu |
| 25920 | 73 74 20 62 65 20 61 66 74 65 72 20 61 6c 6c 20 64 65 66 69 6e 69 74 69 6f 6e 73 0d 0a 77 68 69 | st.be.after.all.definitions..whi |
| 25940 | 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 64 61 74 61 20 3d 20 73 70 6c 69 74 0d 0a 20 20 20 20 23 | le.gets......data.=.split......# |
| 25960 | 20 74 68 65 20 70 65 72 6c 20 73 6f 6c 75 74 69 6f 6e 20 68 61 73 20 75 73 65 64 20 24 23 64 61 | .the.perl.solution.has.used.$#da |
| 25980 | 74 61 2c 20 77 68 69 63 68 20 69 73 20 6c 65 6e 67 74 68 2d 31 0d 0a 20 20 20 20 6e 75 6d 5f 70 | ta,.which.is.length-1......num_p |
| 259a0 | 65 72 6d 75 74 61 74 69 6f 6e 73 20 3d 20 46 61 63 74 6f 72 69 61 6c 2e 63 6f 6d 70 75 74 65 28 | ermutations.=.Factorial.compute( |
| 259c0 | 64 61 74 61 2e 6c 65 6e 67 74 68 28 29 29 0d 0a 20 20 20 20 30 2e 75 70 74 6f 28 6e 75 6d 5f 70 | data.length())......0.upto(num_p |
| 259e0 | 65 72 6d 75 74 61 74 69 6f 6e 73 20 2d 20 31 29 20 64 6f 20 7c 69 7c 0d 0a 20 20 20 20 20 20 20 | ermutations.-.1).do.|i|......... |
| 25a00 | 20 23 20 69 6e 20 72 75 62 79 20 77 65 20 63 61 6e 20 6e 6f 74 20 75 73 65 20 61 6e 20 61 72 72 | .#.in.ruby.we.can.not.use.an.arr |
| 25a20 | 61 79 20 61 73 20 73 65 6c 65 63 74 6f 72 20 66 6f 72 20 61 6e 20 61 72 72 61 79 0d 0a 20 20 20 | ay.as.selector.for.an.array..... |
| 25a40 | 20 20 20 20 20 23 20 62 75 74 20 62 79 20 65 78 63 68 61 6e 67 69 6e 67 20 74 68 65 20 74 77 6f | .....#.but.by.exchanging.the.two |
| 25a60 | 20 61 72 72 61 79 73 2c 20 77 65 20 63 61 6e 20 75 73 65 20 74 68 65 20 63 6f 6c 6c 65 63 74 20 | .arrays,.we.can.use.the.collect. |
| 25a80 | 6d 65 74 68 6f 64 0d 0a 20 20 20 20 20 20 20 20 23 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 | method..........#.which.returns. |
| 25aa0 | 61 6e 20 61 72 72 61 79 20 77 69 74 68 20 74 68 65 20 72 65 73 75 6c 74 20 6f 66 20 61 6c 6c 20 | an.array.with.the.result.of.all. |
| 25ac0 | 62 6c 6f 63 6b 20 69 6e 76 6f 63 61 74 69 6f 6e 73 0d 0a 20 20 20 20 20 20 20 20 70 65 72 6d 75 | block.invocations..........permu |
| 25ae0 | 74 61 74 69 6f 6e 20 3d 20 6e 32 70 65 72 6d 28 69 2c 20 64 61 74 61 2e 6c 65 6e 67 74 68 29 2e | tation.=.n2perm(i,.data.length). |
| 25b00 | 63 6f 6c 6c 65 63 74 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 6a 7c 20 64 61 74 61 5b | collect.{..............|j|.data[ |
| 25b20 | 6a 5d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 70 65 72 6d | j]..........}..........puts.perm |
| 25b40 | 75 74 61 74 69 6f 6e 2e 6a 6f 69 6e 28 22 20 22 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d | utation.join(".")......end..end. |
| 25b60 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 30 0d 0a 61 67 65 20 3d 20 7b 20 22 4e | .....#.@@PLEAC@@_5.0..age.=.{."N |
| 25b80 | 61 74 22 2c 20 20 20 32 34 2c 0d 0a 20 20 20 20 20 20 20 20 22 4a 75 6c 65 73 22 2c 20 32 35 2c | at",...24,.........."Jules",.25, |
| 25ba0 | 0d 0a 20 20 20 20 20 20 20 20 22 4a 6f 73 68 22 2c 20 20 31 37 20 20 7d 0d 0a 0d 0a 61 67 65 5b | .........."Josh",..17..}....age[ |
| 25bc0 | 22 4e 61 74 22 5d 20 20 20 3d 20 32 34 0d 0a 61 67 65 5b 22 4a 75 6c 65 73 22 5d 20 3d 20 32 35 | "Nat"]...=.24..age["Jules"].=.25 |
| 25be0 | 0d 0a 61 67 65 5b 22 4a 6f 73 68 22 5d 20 20 3d 20 31 37 0d 0a 0d 0a 66 6f 6f 64 5f 63 6f 6c 6f | ..age["Josh"]..=.17....food_colo |
| 25c00 | 72 20 3d 20 7b 0d 0a 20 20 20 20 22 41 70 70 6c 65 22 20 20 3d 3e 20 22 72 65 64 22 2c 0d 0a 20 | r.=.{......"Apple"..=>."red",... |
| 25c20 | 20 20 20 22 42 61 6e 61 6e 61 22 20 3d 3e 20 22 79 65 6c 6c 6f 77 22 2c 0d 0a 20 20 20 20 22 4c | ..."Banana".=>."yellow",......"L |
| 25c40 | 65 6d 6f 6e 22 20 20 3d 3e 20 22 79 65 6c 6c 6f 77 22 2c 0d 0a 20 20 20 20 22 43 61 72 72 6f 74 | emon"..=>."yellow",......"Carrot |
| 25c60 | 22 20 3d 3e 20 22 6f 72 61 6e 67 65 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d | ".=>."orange"...............}... |
| 25c80 | 0a 23 20 49 6e 20 52 75 62 79 2c 20 79 6f 75 20 63 61 6e 6e 6f 74 20 61 76 6f 69 64 20 74 68 65 | .#.In.Ruby,.you.cannot.avoid.the |
| 25ca0 | 20 64 6f 75 62 6c 65 20 6f 72 20 73 69 6d 70 6c 65 20 71 75 6f 74 69 6e 67 0d 0a 23 20 77 68 69 | .double.or.simple.quoting..#.whi |
| 25cc0 | 6c 65 20 6d 61 6e 69 70 75 6c 61 74 69 6e 20 68 61 73 68 65 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 | le.manipulatin.hashes......#.@@P |
| 25ce0 | 4c 45 41 43 40 40 5f 35 2e 31 0d 0a 68 61 73 68 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 0d 0a 0d | LEAC@@_5.1..hash[key].=.value... |
| 25d00 | 0a 66 6f 6f 64 5f 63 6f 6c 6f 72 5b 22 52 61 73 70 62 65 72 72 79 22 5d 20 3d 20 22 70 69 6e 6b | .food_color["Raspberry"].=."pink |
| 25d20 | 22 0d 0a 70 75 74 73 20 22 4b 6e 6f 77 6e 20 66 6f 6f 64 73 3a 22 2c 20 66 6f 6f 64 5f 63 6f 6c | "..puts."Known.foods:",.food_col |
| 25d40 | 6f 72 2e 6b 65 79 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 32 0d 0a 23 20 | or.keys......#.@@PLEAC@@_5.2..#. |
| 25d60 | 64 6f 65 73 20 68 61 73 68 20 68 61 76 65 20 61 20 76 61 6c 75 65 20 66 6f 72 20 6b 65 79 20 3f | does.hash.have.a.value.for.key.? |
| 25d80 | 0d 0a 69 66 20 28 68 61 73 68 2e 68 61 73 5f 6b 65 79 3f 28 6b 65 79 29 29 0d 0a 20 20 20 20 23 | ..if.(hash.has_key?(key))......# |
| 25da0 | 20 69 74 20 65 78 69 73 74 73 0d 0a 65 6c 73 65 0d 0a 20 20 20 20 23 20 69 74 20 64 6f 65 73 6e | .it.exists..else......#.it.doesn |
| 25dc0 | 27 74 0d 0a 65 6e 64 0d 0a 0d 0a 5b 20 22 42 61 6e 61 6e 61 22 2c 20 22 4d 61 72 74 69 6e 69 22 | 't..end....[."Banana",."Martini" |
| 25de0 | 20 5d 2e 65 61 63 68 20 7b 20 7c 6e 61 6d 65 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 6e 61 6d 65 | .].each.{.|name|......print.name |
| 25e00 | 2c 20 22 20 69 73 20 61 20 22 2c 20 66 6f 6f 64 5f 63 6f 6c 6f 72 2e 68 61 73 5f 6b 65 79 3f 28 | ,.".is.a.",.food_color.has_key?( |
| 25e20 | 6e 61 6d 65 29 20 3f 20 22 66 6f 6f 64 22 20 3a 20 22 64 72 69 6e 6b 22 2c 20 22 5c 6e 22 0d 0a | name).?."food".:."drink",."\n".. |
| 25e40 | 7d 0d 0a 0d 0a 61 67 65 20 3d 20 7b 7d 0d 0a 61 67 65 5b 27 54 6f 64 64 6c 65 72 27 5d 20 3d 20 | }....age.=.{}..age['Toddler'].=. |
| 25e60 | 33 0d 0a 61 67 65 5b 27 55 6e 62 6f 72 6e 27 5d 20 3d 20 30 0d 0a 61 67 65 5b 27 50 68 61 6e 74 | 3..age['Unborn'].=.0..age['Phant |
| 25e80 | 61 73 6d 27 5d 20 3d 20 6e 69 6c 0d 0a 0d 0a 66 6f 72 20 74 68 69 6e 67 20 69 6e 20 5b 27 54 6f | asm'].=.nil....for.thing.in.['To |
| 25ea0 | 64 64 6c 65 72 27 2c 20 27 55 6e 62 6f 72 6e 27 2c 20 27 50 68 61 6e 74 61 73 6d 27 2c 20 27 52 | ddler',.'Unborn',.'Phantasm',.'R |
| 25ec0 | 65 6c 69 63 27 5d 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 23 7b 74 68 69 6e 67 7d 3a 20 22 0d 0a | elic']......print."#{thing}:.".. |
| 25ee0 | 20 20 20 20 70 72 69 6e 74 20 22 48 61 73 2d 6b 65 79 20 22 20 69 66 20 61 67 65 2e 68 61 73 5f | ....print."Has-key.".if.age.has_ |
| 25f00 | 6b 65 79 3f 28 74 68 69 6e 67 29 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 54 72 75 65 20 22 20 69 | key?(thing)......print."True.".i |
| 25f20 | 66 20 61 67 65 5b 74 68 69 6e 67 5d 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 4e 6f 6e 7a 65 72 6f | f.age[thing]......print."Nonzero |
| 25f40 | 20 22 20 69 66 20 61 67 65 5b 74 68 69 6e 67 5d 20 26 26 20 61 67 65 5b 74 68 69 6e 67 5d 2e 6e | .".if.age[thing].&&.age[thing].n |
| 25f60 | 6f 6e 7a 65 72 6f 3f 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 5c 6e 22 0d 0a 65 6e 64 0d 0a 0d 0a | onzero?......print."\n"..end.... |
| 25f80 | 23 3d 3e 0d 0a 23 20 54 6f 64 64 6c 65 72 3a 20 48 61 73 2d 6b 65 79 20 54 72 75 65 20 4e 6f 6e | #=>..#.Toddler:.Has-key.True.Non |
| 25fa0 | 7a 65 72 6f 0d 0a 23 20 55 6e 62 6f 72 6e 3a 20 48 61 73 2d 6b 65 79 20 54 72 75 65 0d 0a 23 20 | zero..#.Unborn:.Has-key.True..#. |
| 25fc0 | 50 68 61 6e 74 61 73 6d 3a 20 48 61 73 2d 6b 65 79 0d 0a 23 20 52 65 6c 69 63 3a 0d 0a 0d 0a 23 | Phantasm:.Has-key..#.Relic:....# |
| 25fe0 | 20 59 6f 75 20 75 73 65 20 48 61 73 68 23 68 61 73 5f 6b 65 79 3f 20 77 68 65 6e 20 79 6f 75 20 | .You.use.Hash#has_key?.when.you. |
| 26000 | 75 73 65 20 50 65 72 6c 27 73 20 65 78 69 73 74 73 20 2d 3e 20 69 74 20 63 68 65 63 6b 73 0d 0a | use.Perl's.exists.->.it.checks.. |
| 26020 | 23 20 66 6f 72 20 65 78 69 73 74 65 6e 63 65 20 6f 66 20 61 20 6b 65 79 20 69 6e 20 61 20 68 61 | #.for.existence.of.a.key.in.a.ha |
| 26040 | 73 68 2e 0d 0a 23 20 41 6c 6c 20 4e 75 6d 65 72 69 63 20 61 72 65 20 22 54 72 75 65 22 20 69 6e | sh...#.All.Numeric.are."True".in |
| 26060 | 20 72 75 62 79 2c 20 73 6f 20 74 68 65 20 74 65 73 74 20 64 6f 65 73 6e 27 74 20 68 61 76 65 20 | .ruby,.so.the.test.doesn't.have. |
| 26080 | 74 68 65 0d 0a 23 20 73 61 6d 65 20 73 65 6d 61 6e 74 69 63 73 20 61 73 20 69 6e 20 50 65 72 6c | the..#.same.semantics.as.in.Perl |
| 260a0 | 3b 20 79 6f 75 20 77 6f 75 6c 64 20 75 73 65 20 4e 75 6d 65 72 69 63 23 6e 6f 6e 7a 65 72 6f 3f | ;.you.would.use.Numeric#nonzero? |
| 260c0 | 20 74 6f 0d 0a 23 20 61 63 68 69 65 76 65 20 74 68 65 20 73 61 6d 65 20 73 65 6d 61 6e 74 69 63 | .to..#.achieve.the.same.semantic |
| 260e0 | 73 20 28 66 61 6c 73 65 20 69 66 20 30 2c 20 74 72 75 65 20 6f 74 68 65 72 77 69 73 65 29 2e 0d | s.(false.if.0,.true.otherwise).. |
| 26100 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 33 0d 0a 66 6f 6f 64 5f 63 6f 6c 6f 72 | .....#.@@PLEAC@@_5.3..food_color |
| 26120 | 2e 64 65 6c 65 74 65 28 22 42 61 6e 61 6e 61 22 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | .delete("Banana")......#.@@PLEAC |
| 26140 | 40 40 5f 35 2e 34 0d 0a 68 61 73 68 2e 65 61 63 68 20 7b 20 7c 6b 65 79 2c 20 76 61 6c 75 65 7c | @@_5.4..hash.each.{.|key,.value| |
| 26160 | 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 6b 65 79 20 61 6e | ......#.do.something.with.key.an |
| 26180 | 64 20 76 61 6c 75 65 0d 0a 7d 0d 0a 0d 0a 68 61 73 68 2e 65 61 63 68 5f 6b 65 79 20 7b 20 7c 6b | d.value..}....hash.each_key.{.|k |
| 261a0 | 65 79 7c 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 6b 65 79 | ey|......#.do.something.with.key |
| 261c0 | 0d 0a 7d 0d 0a 0d 0a 66 6f 6f 64 5f 63 6f 6c 6f 72 2e 65 61 63 68 20 7b 20 7c 66 6f 6f 64 2c 20 | ..}....food_color.each.{.|food,. |
| 261e0 | 63 6f 6c 6f 72 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 66 6f 6f 64 7d 20 69 73 20 23 7b 63 | color|......puts."#{food}.is.#{c |
| 26200 | 6f 6c 6f 72 7d 22 0d 0a 7d 0d 0a 0d 0a 66 6f 6f 64 5f 63 6f 6c 6f 72 2e 65 61 63 68 5f 6b 65 79 | olor}"..}....food_color.each_key |
| 26220 | 20 7b 20 7c 66 6f 6f 64 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 66 6f 6f 64 7d 20 69 73 20 | .{.|food|......puts."#{food}.is. |
| 26240 | 23 7b 66 6f 6f 64 5f 63 6f 6c 6f 72 5b 66 6f 6f 64 5d 7d 22 0d 0a 7d 0d 0a 0d 0a 23 20 49 4d 4f | #{food_color[food]}"..}....#.IMO |
| 26260 | 20 74 68 69 73 20 64 65 6d 6f 6e 73 74 72 61 74 65 73 20 74 68 61 74 20 4f 4f 20 73 74 79 6c 65 | .this.demonstrates.that.OO.style |
| 26280 | 20 69 73 20 62 79 20 66 61 72 20 6d 6f 72 65 20 72 65 61 64 61 62 6c 65 0d 0a 66 6f 6f 64 5f 63 | .is.by.far.more.readable..food_c |
| 262a0 | 6f 6c 6f 72 2e 6b 65 79 73 2e 73 6f 72 74 2e 65 61 63 68 20 7b 20 7c 66 6f 6f 64 7c 0d 0a 20 20 | olor.keys.sort.each.{.|food|.... |
| 262c0 | 20 20 70 75 74 73 20 22 23 7b 66 6f 6f 64 7d 20 69 73 20 23 7b 66 6f 6f 64 5f 63 6f 6c 6f 72 5b | ..puts."#{food}.is.#{food_color[ |
| 262e0 | 66 6f 6f 64 5d 7d 2e 22 0d 0a 7d 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | food]}."..}....#---------------- |
| 26300 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 0d 0a | -------------..#!/usr/bin/ruby.. |
| 26320 | 23 20 63 6f 75 6e 74 66 72 6f 6d 20 2d 20 63 6f 75 6e 74 20 6e 75 6d 62 65 72 20 6f 66 20 6d 65 | #.countfrom.-.count.number.of.me |
| 26340 | 73 73 61 67 65 73 20 66 72 6f 6d 20 65 61 63 68 20 73 65 6e 64 65 72 0d 0a 0d 0a 23 20 44 65 66 | ssages.from.each.sender....#.Def |
| 26360 | 61 75 6c 74 20 76 61 6c 75 65 20 69 73 20 30 0d 0a 66 72 6f 6d 20 3d 20 48 61 73 68 2e 6e 65 77 | ault.value.is.0..from.=.Hash.new |
| 26380 | 28 30 29 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 2f 5e 46 72 6f 6d 3a 20 28 2e 2a | (0)..while.gets....../^From:.(.* |
| 263a0 | 29 2f 20 61 6e 64 20 66 72 6f 6d 5b 24 31 5d 20 2b 3d 20 31 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 4d | )/.and.from[$1].+=.1..end....#.M |
| 263c0 | 6f 72 65 20 75 73 65 66 75 6c 20 74 6f 20 73 6f 72 74 20 62 79 20 6e 75 6d 62 65 72 20 6f 66 20 | ore.useful.to.sort.by.number.of. |
| 263e0 | 72 65 63 65 69 76 65 64 20 6d 61 69 6c 20 62 79 20 70 65 72 73 6f 6e 0d 0a 66 72 6f 6d 2e 73 6f | received.mail.by.person..from.so |
| 26400 | 72 74 20 7b 7c 61 2c 62 7c 20 62 5b 31 5d 3c 3d 3e 61 5b 31 5d 7d 2e 65 61 63 68 20 7b 20 7c 76 | rt.{|a,b|.b[1]<=>a[1]}.each.{.|v |
| 26420 | 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 76 5b 31 5d 7d 3a 20 23 7b 76 5b 30 5d 7d 22 0d 0a | |......puts."#{v[1]}:.#{v[0]}".. |
| 26440 | 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | }..#---------------------------- |
| 26460 | 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 35 0d 0a 23 20 59 6f 75 20 6d 61 | -......#.@@PLEAC@@_5.5..#.You.ma |
| 26480 | 79 20 75 73 65 20 74 68 65 20 62 75 69 6c 74 2d 69 6e 20 27 69 6e 73 70 65 63 74 27 20 6d 65 74 | y.use.the.built-in.'inspect'.met |
| 264a0 | 68 6f 64 20 74 68 69 73 20 77 61 79 3a 0d 0a 70 20 68 61 73 68 0d 0a 0d 0a 23 20 4f 72 20 64 6f | hod.this.way:..p.hash....#.Or.do |
| 264c0 | 20 69 74 20 74 68 65 20 43 6f 6f 6b 62 6f 6f 6b 20 77 61 79 3a 0d 0a 68 61 73 68 2e 65 61 63 68 | .it.the.Cookbook.way:..hash.each |
| 264e0 | 20 7b 20 7c 6b 2c 76 7c 20 70 75 74 73 20 22 23 7b 6b 7d 20 3d 3e 20 23 7b 76 7d 22 20 7d 0d 0a | .{.|k,v|.puts."#{k}.=>.#{v}".}.. |
| 26500 | 0d 0a 23 20 53 6f 72 74 65 64 20 62 79 20 6b 65 79 73 0d 0a 68 61 73 68 2e 73 6f 72 74 2e 65 61 | ..#.Sorted.by.keys..hash.sort.ea |
| 26520 | 63 68 20 7b 20 7c 65 7c 20 70 75 74 73 20 22 23 7b 65 5b 30 5d 7d 20 3d 3e 20 23 7b 65 5b 31 5d | ch.{.|e|.puts."#{e[0]}.=>.#{e[1] |
| 26540 | 7d 22 20 7d 0d 0a 23 20 53 6f 72 74 65 64 20 62 79 20 76 61 6c 75 65 73 0d 0a 68 61 73 68 2e 73 | }".}..#.Sorted.by.values..hash.s |
| 26560 | 6f 72 74 7b 7c 61 2c 62 7c 20 61 5b 31 5d 3c 3d 3e 62 5b 31 5d 7d 2e 65 61 63 68 20 7b 20 7c 65 | ort{|a,b|.a[1]<=>b[1]}.each.{.|e |
| 26580 | 7c 20 70 75 74 73 20 22 23 7b 65 5b 30 5d 7d 20 3d 3e 20 23 7b 65 5b 31 5d 7d 22 20 7d 0d 0a 0d | |.puts."#{e[0]}.=>.#{e[1]}".}... |
| 265a0 | 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 37 0d 0a 74 74 79 73 20 3d 20 48 61 73 68 2e | ...#.@@PLEAC@@_5.7..ttys.=.Hash. |
| 265c0 | 6e 65 77 0d 0a 66 6f 72 20 69 20 69 6e 20 60 77 68 6f 60 0d 0a 20 20 20 20 75 73 65 72 2c 20 74 | new..for.i.in.`who`......user,.t |
| 265e0 | 74 79 20 3d 20 69 2e 73 70 6c 69 74 0d 0a 20 20 20 20 28 74 74 79 73 5b 75 73 65 72 5d 20 7c 7c | ty.=.i.split......(ttys[user].|| |
| 26600 | 3d 20 5b 5d 29 20 3c 3c 20 74 74 79 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 65 | =.[]).<<.tty...............#.see |
| 26620 | 20 70 72 6f 62 6c 65 6d 73 5f 72 75 62 79 20 66 6f 72 20 6d 6f 72 65 20 69 6e 66 6f 73 0d 0a 65 | .problems_ruby.for.more.infos..e |
| 26640 | 6e 64 0d 0a 74 74 79 73 2e 6b 65 79 73 2e 73 6f 72 74 2e 65 61 63 68 20 7b 20 7c 6b 7c 0d 0a 20 | nd..ttys.keys.sort.each.{.|k|... |
| 26660 | 20 20 20 70 75 74 73 20 22 23 7b 6b 7d 3a 20 23 7b 63 6f 6d 6d 69 66 79 5f 73 65 72 69 65 73 28 | ...puts."#{k}:.#{commify_series( |
| 26680 | 74 74 79 73 5b 6b 5d 29 7d 22 20 20 23 20 66 72 6f 6d 20 34 2e 32 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 | ttys[k])}"..#.from.4.2..}......# |
| 266a0 | 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 38 0d 0a 73 75 72 6e 61 6d 65 20 3d 20 7b 20 22 4d 69 63 | .@@PLEAC@@_5.8..surname.=.{."Mic |
| 266c0 | 6b 65 79 22 20 3d 3e 20 22 4d 61 6e 74 6c 65 22 2c 20 22 42 61 62 65 22 20 3d 3e 20 22 52 75 74 | key".=>."Mantle",."Babe".=>."Rut |
| 266e0 | 68 22 20 7d 0d 0a 70 75 74 73 20 73 75 72 6e 61 6d 65 2e 69 6e 64 65 78 28 22 4d 61 6e 74 6c 65 | h".}..puts.surname.index("Mantle |
| 26700 | 22 29 0d 0a 0d 0a 23 20 49 66 20 79 6f 75 20 72 65 61 6c 6c 79 20 6e 65 65 64 65 64 20 74 6f 20 | ")....#.If.you.really.needed.to. |
| 26720 | 27 69 6e 76 65 72 74 27 20 74 68 65 20 77 68 6f 6c 65 20 68 61 73 68 2c 20 75 73 65 20 48 61 73 | 'invert'.the.whole.hash,.use.Has |
| 26740 | 68 23 69 6e 76 65 72 74 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | h#invert....#------------------- |
| 26760 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a | ----------..#!/usr/bin/ruby.-w.. |
| 26780 | 23 20 66 6f 6f 64 66 69 6e 64 20 2d 20 66 69 6e 64 20 6d 61 74 63 68 20 66 6f 72 20 66 6f 6f 64 | #.foodfind.-.find.match.for.food |
| 267a0 | 20 6f 72 20 63 6f 6c 6f 72 0d 0a 0d 0a 67 69 76 65 6e 20 3d 20 41 52 47 56 2e 73 68 69 66 74 20 | .or.color....given.=.ARGV.shift. |
| 267c0 | 6f 72 20 72 61 69 73 65 20 22 75 73 61 67 65 3a 20 66 6f 6f 64 66 69 6e 64 20 66 6f 6f 64 5f 6f | or.raise."usage:.foodfind.food_o |
| 267e0 | 72 5f 63 6f 6c 6f 72 22 0d 0a 0d 0a 63 6f 6c 6f 72 20 3d 20 7b 0d 0a 20 20 20 20 22 41 70 70 6c | r_color"....color.=.{......"Appl |
| 26800 | 65 22 20 20 3d 3e 20 22 72 65 64 22 2c 0d 0a 20 20 20 20 22 42 61 6e 61 6e 61 22 20 3d 3e 20 22 | e"..=>."red",......"Banana".=>." |
| 26820 | 79 65 6c 6c 6f 77 22 2c 0d 0a 20 20 20 20 22 4c 65 6d 6f 6e 22 20 20 3d 3e 20 22 79 65 6c 6c 6f | yellow",......"Lemon"..=>."yello |
| 26840 | 77 22 2c 0d 0a 20 20 20 20 22 43 61 72 72 6f 74 22 20 3d 3e 20 22 6f 72 61 6e 67 65 22 2c 0d 0a | w",......"Carrot".=>."orange",.. |
| 26860 | 7d 0d 0a 0d 0a 69 66 20 28 63 6f 6c 6f 72 2e 68 61 73 5f 6b 65 79 3f 28 67 69 76 65 6e 29 29 0d | }....if.(color.has_key?(given)). |
| 26880 | 0a 20 20 20 20 70 75 74 73 20 22 23 7b 67 69 76 65 6e 7d 20 69 73 20 61 20 66 6f 6f 64 20 77 69 | .....puts."#{given}.is.a.food.wi |
| 268a0 | 74 68 20 63 6f 6c 6f 72 20 23 7b 63 6f 6c 6f 72 5b 67 69 76 65 6e 5d 7d 2e 22 0d 0a 65 6e 64 0d | th.color.#{color[given]}."..end. |
| 268c0 | 0a 69 66 20 28 63 6f 6c 6f 72 2e 68 61 73 5f 76 61 6c 75 65 3f 28 67 69 76 65 6e 29 29 0d 0a 20 | .if.(color.has_value?(given))... |
| 268e0 | 20 20 20 70 75 74 73 20 22 23 7b 63 6f 6c 6f 72 2e 69 6e 64 65 78 28 67 69 76 65 6e 29 7d 20 69 | ...puts."#{color.index(given)}.i |
| 26900 | 73 20 61 20 66 6f 6f 64 20 77 69 74 68 20 63 6f 6c 6f 72 20 23 7b 67 69 76 65 6e 7d 2e 22 0d 0a | s.a.food.with.color.#{given}.".. |
| 26920 | 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | end..#-------------------------- |
| 26940 | 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 39 0d 0a 23 20 53 6f 72 74 | ---......#.@@PLEAC@@_5.9..#.Sort |
| 26960 | 65 64 20 62 79 20 6b 65 79 73 20 28 48 61 73 68 23 73 6f 72 74 20 67 69 76 65 73 20 61 6e 20 41 | ed.by.keys.(Hash#sort.gives.an.A |
| 26980 | 72 72 61 79 20 6f 66 20 70 61 69 72 73 20 6d 61 64 65 20 6f 66 20 65 61 63 68 20 6b 65 79 2c 76 | rray.of.pairs.made.of.each.key,v |
| 269a0 | 61 6c 75 65 29 0d 0a 66 6f 6f 64 5f 63 6f 6c 6f 72 2e 73 6f 72 74 2e 65 61 63 68 20 7b 20 7c 66 | alue)..food_color.sort.each.{.|f |
| 269c0 | 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 66 5b 30 5d 7d 20 69 73 20 23 7b 66 5b 31 5d 7d 2e | |......puts."#{f[0]}.is.#{f[1]}. |
| 269e0 | 22 0d 0a 7d 0d 0a 0d 0a 23 20 53 6f 72 74 65 64 20 62 79 20 76 61 6c 75 65 73 0d 0a 66 6f 6f 64 | "..}....#.Sorted.by.values..food |
| 26a00 | 5f 63 6f 6c 6f 72 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 61 5b 31 5d 20 3c 3d 3e 20 62 5b 31 | _color.sort.{.|a,b|.a[1].<=>.b[1 |
| 26a20 | 5d 20 7d 2e 65 61 63 68 20 7b 20 7c 66 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 66 5b 30 5d | ].}.each.{.|f|......puts."#{f[0] |
| 26a40 | 7d 20 69 73 20 23 7b 66 5b 31 5d 7d 2e 22 0d 0a 7d 0d 0a 0d 0a 23 20 53 6f 72 74 65 64 20 62 79 | }.is.#{f[1]}."..}....#.Sorted.by |
| 26a60 | 20 6c 65 6e 67 74 68 20 6f 66 20 76 61 6c 75 65 73 0d 0a 66 6f 6f 64 5f 63 6f 6c 6f 72 2e 73 6f | .length.of.values..food_color.so |
| 26a80 | 72 74 20 7b 20 7c 61 2c 62 7c 20 61 5b 31 5d 2e 6c 65 6e 67 74 68 20 3c 3d 3e 20 62 5b 31 5d 2e | rt.{.|a,b|.a[1].length.<=>.b[1]. |
| 26aa0 | 6c 65 6e 67 74 68 20 7d 2e 65 61 63 68 20 7b 20 7c 66 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 23 | length.}.each.{.|f|......puts."# |
| 26ac0 | 7b 66 5b 30 5d 7d 20 69 73 20 23 7b 66 5b 31 5d 7d 2e 22 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 | {f[0]}.is.#{f[1]}."..}......#.@@ |
| 26ae0 | 50 4c 45 41 43 40 40 5f 35 2e 31 30 0d 0a 6d 65 72 67 65 64 20 3d 20 61 2e 63 6c 6f 6e 65 2e 75 | PLEAC@@_5.10..merged.=.a.clone.u |
| 26b00 | 70 64 61 74 65 28 62 29 20 20 20 20 20 20 20 20 23 20 62 65 63 61 75 73 65 20 48 61 73 68 23 75 | pdate(b)........#.because.Hash#u |
| 26b20 | 70 64 61 74 65 20 63 68 61 6e 67 65 73 20 6f 62 6a 65 63 74 20 69 6e 20 70 6c 61 63 65 0d 0a 0d | pdate.changes.object.in.place... |
| 26b40 | 0a 64 72 69 6e 6b 5f 63 6f 6c 6f 72 20 3d 20 7b 20 22 47 61 6c 6c 69 61 6e 6f 22 20 20 3d 3e 20 | .drink_color.=.{."Galliano"..=>. |
| 26b60 | 22 79 65 6c 6c 6f 77 22 2c 20 22 4d 61 69 20 54 61 69 22 20 3d 3e 20 22 62 6c 75 65 22 20 7d 0d | "yellow",."Mai.Tai".=>."blue".}. |
| 26b80 | 0a 69 6e 67 65 73 74 65 64 5f 63 6f 6c 6f 72 20 3d 20 64 72 69 6e 6b 5f 63 6f 6c 6f 72 2e 63 6c | .ingested_color.=.drink_color.cl |
| 26ba0 | 6f 6e 65 2e 75 70 64 61 74 65 28 66 6f 6f 64 5f 63 6f 6c 6f 72 29 0d 0a 0d 0a 73 75 62 73 74 61 | one.update(food_color)....substa |
| 26bc0 | 6e 63 65 5f 63 6f 6c 6f 72 20 3d 20 7b 7d 0d 0a 66 6f 72 20 69 20 69 6e 20 5b 20 66 6f 6f 64 5f | nce_color.=.{}..for.i.in.[.food_ |
| 26be0 | 63 6f 6c 6f 72 2c 20 64 72 69 6e 6b 5f 63 6f 6c 6f 72 20 5d 0d 0a 20 20 20 20 69 2e 65 61 63 68 | color,.drink_color.]......i.each |
| 26c00 | 5f 6b 65 79 20 7b 20 7c 6b 7c 0d 0a 20 20 20 20 20 20 20 20 69 66 20 73 75 62 73 74 61 6e 63 65 | _key.{.|k|..........if.substance |
| 26c20 | 5f 63 6f 6c 6f 72 2e 68 61 73 5f 6b 65 79 3f 28 6b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | _color.has_key?(k).............. |
| 26c40 | 70 75 74 73 20 22 57 61 72 6e 69 6e 67 3a 20 23 7b 6b 7d 20 73 65 65 6e 20 74 77 69 63 65 2e 20 | puts."Warning:.#{k}.seen.twice.. |
| 26c60 | 20 55 73 69 6e 67 20 74 68 65 20 66 69 72 73 74 20 64 65 66 69 6e 69 74 69 6f 6e 2e 22 0d 0a 20 | .Using.the.first.definition."... |
| 26c80 | 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | ...........next..........end.... |
| 26ca0 | 20 20 20 20 20 20 73 75 62 73 74 61 6e 63 65 5f 63 6f 6c 6f 72 5b 6b 5d 20 3d 20 31 0d 0a 20 20 | ......substance_color[k].=.1.... |
| 26cc0 | 20 20 7d 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 31 31 0d 0a | ..}..end......#.@@PLEAC@@_5.11.. |
| 26ce0 | 63 6f 6d 6d 6f 6e 20 3d 20 68 61 73 68 31 2e 6b 65 79 73 20 26 20 68 61 73 68 32 2e 6b 65 79 73 | common.=.hash1.keys.&.hash2.keys |
| 26d00 | 0d 0a 0d 0a 74 68 69 73 5f 6e 6f 74 5f 74 68 61 74 20 3d 20 68 61 73 68 31 2e 6b 65 79 73 20 2d | ....this_not_that.=.hash1.keys.- |
| 26d20 | 20 68 61 73 68 32 2e 6b 65 79 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 31 | .hash2.keys......#.@@PLEAC@@_5.1 |
| 26d40 | 32 0d 0a 23 20 6e 6f 20 70 72 6f 62 6c 65 6d 20 68 65 72 65 2c 20 52 75 62 79 20 68 61 6e 64 6c | 2..#.no.problem.here,.Ruby.handl |
| 26d60 | 65 73 20 61 6e 79 20 6b 69 6e 64 20 6f 66 20 6f 62 6a 65 63 74 20 66 6f 72 20 6b 65 79 2d 69 6e | es.any.kind.of.object.for.key-in |
| 26d80 | 67 0d 0a 23 20 28 69 74 20 74 61 6b 65 73 20 4f 62 6a 65 63 74 23 68 61 73 68 2c 20 77 68 69 63 | g..#.(it.takes.Object#hash,.whic |
| 26da0 | 68 20 64 65 66 61 75 6c 74 73 20 74 6f 20 4f 62 6a 65 63 74 23 69 64 29 0d 0a 0d 0a 0d 0a 23 20 | h.defaults.to.Object#id)......#. |
| 26dc0 | 40 40 50 4c 45 41 43 40 40 5f 35 2e 31 33 0d 0a 23 20 41 46 41 49 4b 2c 20 6e 6f 74 20 70 6f 73 | @@PLEAC@@_5.13..#.AFAIK,.not.pos |
| 26de0 | 73 69 62 6c 65 20 69 6e 20 52 75 62 79 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 | sible.in.Ruby......#.@@PLEAC@@_5 |
| 26e00 | 2e 31 34 0d 0a 23 20 42 65 20 63 61 72 65 66 75 6c 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 | .14..#.Be.careful,.the.following |
| 26e20 | 20 69 73 20 70 6f 73 73 69 62 6c 65 20 6f 6e 6c 79 20 62 65 63 61 75 73 65 20 46 69 78 6e 75 6d | .is.possible.only.because.Fixnum |
| 26e40 | 20 6f 62 6a 65 63 74 73 20 61 72 65 0d 0a 23 20 73 70 65 63 69 61 6c 20 28 64 6f 63 75 6d 65 6e | .objects.are..#.special.(documen |
| 26e60 | 74 61 74 69 6f 6e 20 73 61 79 73 3a 20 74 68 65 72 65 20 69 73 20 65 66 66 65 63 74 69 76 65 6c | tation.says:.there.is.effectivel |
| 26e80 | 79 20 6f 6e 6c 79 20 6f 6e 65 20 46 69 78 6e 75 6d 20 6f 62 6a 65 63 74 0d 0a 23 20 69 6e 73 74 | y.only.one.Fixnum.object..#.inst |
| 26ea0 | 61 6e 63 65 20 66 6f 72 20 61 6e 79 20 67 69 76 65 6e 20 69 6e 74 65 67 65 72 20 76 61 6c 75 65 | ance.for.any.given.integer.value |
| 26ec0 | 29 2e 0d 0a 63 6f 75 6e 74 20 3d 20 48 61 73 68 2e 6e 65 77 28 30 29 0d 0a 61 72 72 61 79 2e 65 | )...count.=.Hash.new(0)..array.e |
| 26ee0 | 61 63 68 20 7b 20 7c 65 7c 0d 0a 20 20 20 20 63 6f 75 6e 74 5b 65 5d 20 2b 3d 20 31 0d 0a 7d 0d | ach.{.|e|......count[e].+=.1..}. |
| 26f00 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 31 35 0d 0a 66 61 74 68 65 72 20 3d 20 | .....#.@@PLEAC@@_5.15..father.=. |
| 26f20 | 7b 0d 0a 20 20 20 20 22 43 61 69 6e 22 20 20 20 20 20 20 2c 20 22 41 64 61 6d 22 2c 0d 0a 20 20 | {......"Cain"......,."Adam",.... |
| 26f40 | 20 20 22 41 62 65 6c 22 20 20 20 20 20 20 2c 20 22 41 64 61 6d 22 2c 0d 0a 20 20 20 20 22 53 65 | .."Abel"......,."Adam",......"Se |
| 26f60 | 74 68 22 20 20 20 20 20 20 2c 20 22 41 64 61 6d 22 2c 0d 0a 20 20 20 20 22 45 6e 6f 63 68 22 20 | th"......,."Adam",......"Enoch". |
| 26f80 | 20 20 20 20 2c 20 22 43 61 69 6e 22 2c 0d 0a 20 20 20 20 22 49 72 61 64 22 20 20 20 20 20 20 2c | ....,."Cain",......"Irad"......, |
| 26fa0 | 20 22 45 6e 6f 63 68 22 2c 0d 0a 20 20 20 20 22 4d 65 68 75 6a 61 65 6c 22 20 20 2c 20 22 49 72 | ."Enoch",......"Mehujael"..,."Ir |
| 26fc0 | 61 64 22 2c 0d 0a 20 20 20 20 22 4d 65 74 68 75 73 61 65 6c 22 20 2c 20 22 4d 65 68 75 6a 61 65 | ad",......"Methusael".,."Mehujae |
| 26fe0 | 6c 22 2c 0d 0a 20 20 20 20 22 4c 61 6d 65 63 68 22 20 20 20 20 2c 20 22 4d 65 74 68 75 73 61 65 | l",......"Lamech"....,."Methusae |
| 27000 | 6c 22 2c 0d 0a 20 20 20 20 22 4a 61 62 61 6c 22 20 20 20 20 20 2c 20 22 4c 61 6d 65 63 68 22 2c | l",......"Jabal".....,."Lamech", |
| 27020 | 0d 0a 20 20 20 20 22 4a 75 62 61 6c 22 20 20 20 20 20 2c 20 22 4c 61 6d 65 63 68 22 2c 0d 0a 20 | ......"Jubal".....,."Lamech",... |
| 27040 | 20 20 20 22 54 75 62 61 6c 63 61 69 6e 22 20 2c 20 22 4c 61 6d 65 63 68 22 2c 0d 0a 20 20 20 20 | ..."Tubalcain".,."Lamech",...... |
| 27060 | 22 45 6e 6f 73 22 20 20 20 20 20 20 2c 20 22 53 65 74 68 22 2c 0d 0a 7d 0d 0a 0d 0a 77 68 69 6c | "Enos"......,."Seth",..}....whil |
| 27080 | 65 20 67 65 74 73 0d 0a 20 20 20 20 63 68 6f 6d 70 0d 0a 20 20 20 20 62 65 67 69 6e 0d 0a 20 20 | e.gets......chomp......begin.... |
| 270a0 | 20 20 20 20 20 20 70 72 69 6e 74 20 24 5f 2c 20 22 20 22 0d 0a 20 20 20 20 65 6e 64 20 77 68 69 | ......print.$_,."."......end.whi |
| 270c0 | 6c 65 20 24 5f 20 3d 20 66 61 74 68 65 72 5b 24 5f 5d 0d 0a 20 20 20 20 70 75 74 73 0d 0a 65 6e | le.$_.=.father[$_]......puts..en |
| 270e0 | 64 0d 0a 0d 0a 63 68 69 6c 64 72 65 6e 20 3d 20 7b 7d 0d 0a 66 61 74 68 65 72 2e 65 61 63 68 20 | d....children.=.{}..father.each. |
| 27100 | 7b 20 7c 6b 2c 76 7c 0d 0a 20 20 20 20 28 63 68 69 6c 64 72 65 6e 5b 76 5d 20 7c 7c 3d 20 5b 5d | {.|k,v|......(children[v].||=.[] |
| 27120 | 29 20 3c 3c 20 6b 0d 0a 7d 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 63 68 6f 6d 70 | ).<<.k..}..while.gets......chomp |
| 27140 | 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 24 5f 7d 20 62 65 67 61 74 20 23 7b 28 63 68 69 6c 64 | ......puts."#{$_}.begat.#{(child |
| 27160 | 72 65 6e 5b 24 5f 5d 20 7c 7c 20 5b 27 4e 6f 62 6f 64 79 27 5d 29 2e 6a 6f 69 6e 28 27 2c 20 27 | ren[$_].||.['Nobody']).join(',.' |
| 27180 | 29 7d 2e 5c 6e 22 0d 0a 65 6e 64 0d 0a 0d 0a 69 6e 63 6c 75 64 65 73 20 3d 20 7b 7d 0d 0a 66 69 | )}.\n"..end....includes.=.{}..fi |
| 271a0 | 6c 65 73 2e 65 61 63 68 20 7b 20 7c 66 7c 0d 0a 20 20 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 | les.each.{.|f|......begin....... |
| 271c0 | 20 20 20 66 6f 72 20 6c 20 69 6e 20 49 4f 2e 72 65 61 64 6c 69 6e 65 73 28 66 29 0d 0a 20 20 20 | ...for.l.in.IO.readlines(f)..... |
| 271e0 | 20 20 20 20 20 20 20 20 20 6e 65 78 74 20 75 6e 6c 65 73 73 20 6c 20 3d 7e 20 2f 5e 5c 73 2a 23 | .........next.unless.l.=~./^\s*# |
| 27200 | 5c 73 2a 69 6e 63 6c 75 64 65 5c 73 2a 3c 28 5b 5e 3e 5d 2b 29 3e 2f 0d 0a 20 20 20 20 20 20 20 | \s*include\s*<([^>]+)>/......... |
| 27220 | 20 20 20 20 20 28 69 6e 63 6c 75 64 65 73 5b 24 31 5d 20 7c 7c 3d 20 5b 5d 29 20 3c 3c 20 66 0d | .....(includes[$1].||=.[]).<<.f. |
| 27240 | 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 72 65 73 63 75 65 20 53 79 73 74 65 6d 43 | .........end......rescue.SystemC |
| 27260 | 61 6c 6c 45 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 20 22 | allError..........$stderr.puts." |
| 27280 | 23 24 21 20 28 73 6b 69 70 70 69 6e 67 29 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 7d 0d 0a 0d 0a 69 | #$!.(skipping)"......end..}....i |
| 272a0 | 6e 63 6c 75 64 65 5f 66 72 65 65 20 3d 20 69 6e 63 6c 75 64 65 73 2e 76 61 6c 75 65 73 2e 66 6c | nclude_free.=.includes.values.fl |
| 272c0 | 61 74 74 65 6e 2e 75 6e 69 71 20 2d 20 69 6e 63 6c 75 64 65 73 2e 6b 65 79 73 0d 0a 0d 0a 0d 0a | atten.uniq.-.includes.keys...... |
| 272e0 | 23 20 40 40 50 4c 45 41 43 40 40 5f 35 2e 31 36 0d 0a 23 20 64 75 74 72 65 65 20 2d 20 70 72 69 | #.@@PLEAC@@_5.16..#.dutree.-.pri |
| 27300 | 6e 74 20 73 6f 72 74 65 64 20 69 6e 74 65 6e 74 65 64 20 72 65 6e 64 69 74 69 6f 6e 20 6f 66 20 | nt.sorted.intented.rendition.of. |
| 27320 | 64 75 20 6f 75 74 70 75 74 0d 0a 23 25 20 64 75 74 72 65 65 0d 0a 23 25 20 64 75 74 72 65 65 20 | du.output..#%.dutree..#%.dutree. |
| 27340 | 2f 75 73 72 0d 0a 23 25 20 64 75 74 72 65 65 20 2d 61 0d 0a 23 25 20 64 75 74 72 65 65 20 2d 61 | /usr..#%.dutree.-a..#%.dutree.-a |
| 27360 | 20 2f 62 69 6e 0d 0a 0d 0a 23 20 54 68 65 20 44 75 4e 6f 64 65 20 63 6c 61 73 73 20 63 6f 6c 6c | ./bin....#.The.DuNode.class.coll |
| 27380 | 65 63 74 73 20 61 6c 6c 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 61 20 64 69 72 | ects.all.information.about.a.dir |
| 273a0 | 65 63 74 6f 72 79 2c 0d 0a 23 20 61 6e 64 20 70 72 6f 76 69 64 65 73 20 73 6f 6d 65 20 63 6f 6e | ectory,..#.and.provides.some.con |
| 273c0 | 76 65 6e 69 65 6e 63 65 20 6d 65 74 68 6f 64 73 0d 0a 63 6c 61 73 73 20 44 75 4e 6f 64 65 0d 0a | venience.methods..class.DuNode.. |
| 273e0 | 0d 0a 20 20 20 20 61 74 74 72 5f 72 65 61 64 65 72 20 3a 6e 61 6d 65 0d 0a 20 20 20 20 61 74 74 | ......attr_reader.:name......att |
| 27400 | 72 5f 61 63 63 65 73 73 6f 72 20 3a 73 69 7a 65 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 | r_accessor.:size......attr_acces |
| 27420 | 73 6f 72 20 3a 6b 69 64 73 0d 0a 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 | sor.:kids........def.initialize( |
| 27440 | 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 40 6e 61 6d 65 20 3d 20 6e 61 6d 65 0d 0a 20 20 20 | name)..........@name.=.name..... |
| 27460 | 20 20 20 20 20 40 6b 69 64 73 20 3d 20 5b 5d 0d 0a 20 20 20 20 20 20 20 20 40 73 69 7a 65 20 3d | .....@kids.=.[]..........@size.= |
| 27480 | 20 30 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 73 75 70 70 6f 72 74 20 66 6f 72 | .0......end........#.support.for |
| 274a0 | 20 73 6f 72 74 69 6e 67 20 6e 6f 64 65 73 20 77 69 74 68 20 73 69 64 65 0d 0a 20 20 20 20 64 65 | .sorting.nodes.with.side......de |
| 274c0 | 66 20 73 69 7a 65 5f 63 6f 6d 70 61 72 65 28 6e 6f 64 65 32 29 0d 0a 20 20 20 20 20 20 20 20 40 | f.size_compare(node2)..........@ |
| 274e0 | 73 69 7a 65 20 3c 3d 3e 20 6e 6f 64 65 32 2e 73 69 7a 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a | size.<=>.node2.size......end.... |
| 27500 | 20 20 20 20 64 65 66 20 62 61 73 65 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 40 6e 61 6d 65 2e | ....def.basename..........@name. |
| 27520 | 73 75 62 28 2f 2e 2a 5c 2f 2f 2c 20 22 22 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 | sub(/.*\//,."")......end........ |
| 27540 | 23 72 65 74 75 72 6e 73 20 73 75 62 73 74 72 69 6e 67 20 62 65 66 6f 72 65 20 6c 61 73 74 20 22 | #returns.substring.before.last." |
| 27560 | 2f 22 2c 20 6e 69 6c 20 69 66 20 6e 6f 74 20 74 68 65 72 65 0d 0a 20 20 20 20 64 65 66 20 70 61 | /",.nil.if.not.there......def.pa |
| 27580 | 72 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 70 20 3d 20 40 6e 61 6d 65 2e 73 75 62 28 2f 5c 2f 5b | rent..........p.=.@name.sub(/\/[ |
| 275a0 | 5e 5c 2f 5d 2b 24 2f 2c 22 22 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 70 20 3d 3d 20 40 6e 61 | ^\/]+$/,"")..........if.p.==.@na |
| 275c0 | 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 | me..............nil..........els |
| 275e0 | 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 | e..............p..........end... |
| 27600 | 20 20 20 65 6e 64 0d 0a 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 68 65 20 44 75 54 72 65 65 20 64 6f | ...end....end....#.The.DuTree.do |
| 27620 | 65 73 20 74 68 65 20 61 63 64 74 75 61 6c 20 77 6f 72 6b 20 6f 66 0d 0a 23 20 67 65 74 74 69 6e | es.the.acdtual.work.of..#.gettin |
| 27640 | 67 20 74 68 65 20 69 6e 70 75 74 2c 20 70 61 72 73 69 6e 67 20 69 74 2c 20 62 75 69 6c 67 69 6e | g.the.input,.parsing.it,.builgin |
| 27660 | 67 20 75 70 20 61 20 74 72 65 65 0d 0a 23 20 61 6e 64 20 66 6f 72 6d 61 74 20 69 74 20 66 6f 72 | g.up.a.tree..#.and.format.it.for |
| 27680 | 20 6f 75 74 70 75 74 0d 0a 63 6c 61 73 73 20 44 75 74 72 65 65 0d 0a 0d 0a 20 20 20 20 61 74 74 | .output..class.Dutree........att |
| 276a0 | 72 5f 72 65 61 64 65 72 20 3a 74 6f 70 64 69 72 0d 0a 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 | r_reader.:topdir........def.init |
| 276c0 | 69 61 6c 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 40 6e 6f 64 65 73 20 3d 20 48 61 73 68 2e 6e 65 | ialize..........@nodes.=.Hash.ne |
| 276e0 | 77 0d 0a 20 20 20 20 20 20 20 20 40 64 69 72 73 69 7a 65 73 20 3d 20 48 61 73 68 2e 6e 65 77 28 | w..........@dirsizes.=.Hash.new( |
| 27700 | 30 29 0d 0a 20 20 20 20 20 20 20 20 40 6b 69 64 73 20 3d 20 48 61 73 68 2e 6e 65 77 28 5b 5d 29 | 0)..........@kids.=.Hash.new([]) |
| 27720 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 67 65 74 20 61 20 6e 6f 64 65 20 62 79 | ......end........#.get.a.node.by |
| 27740 | 20 6e 61 6d 65 2c 20 63 72 65 61 74 65 20 69 74 20 69 66 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 | .name,.create.it.if.it.does.not. |
| 27760 | 65 78 69 73 74 20 79 65 74 0d 0a 20 20 20 20 64 65 66 20 67 65 74 5f 63 72 65 61 74 65 5f 6e 6f | exist.yet......def.get_create_no |
| 27780 | 64 65 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 40 6e 6f 64 65 73 2e 68 61 73 5f | de(name)..........if.@nodes.has_ |
| 277a0 | 6b 65 79 3f 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 6e 6f 64 65 73 5b 6e | key?(name)..............@nodes[n |
| 277c0 | 61 6d 65 5d 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ame]..........else.............. |
| 277e0 | 6e 6f 64 65 20 3d 20 44 75 4e 6f 64 65 2e 6e 65 77 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 | node.=.DuNode.new(name)......... |
| 27800 | 20 20 20 20 20 40 6e 6f 64 65 73 5b 6e 61 6d 65 5d 20 3d 20 6e 6f 64 65 0d 0a 20 20 20 20 20 20 | .....@nodes[name].=.node........ |
| 27820 | 20 20 20 20 20 20 6e 6f 64 65 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 | ......node..........end......end |
| 27840 | 0d 0a 0d 0a 20 20 20 20 23 20 72 75 6e 20 64 75 2c 20 72 65 61 64 20 69 6e 20 69 6e 70 75 74 2c | ........#.run.du,.read.in.input, |
| 27860 | 20 73 61 76 65 20 73 69 7a 65 73 20 61 6e 64 20 6b 69 64 73 0d 0a 20 20 20 20 23 20 73 74 6f 72 | .save.sizes.and.kids......#.stor |
| 27880 | 65 73 20 6c 61 73 74 20 64 69 72 65 63 74 6f 72 79 20 72 65 61 64 20 69 6e 20 69 6e 73 74 61 6e | es.last.directory.read.in.instan |
| 278a0 | 63 65 20 76 61 72 69 61 62 6c 65 20 74 6f 70 64 69 72 0d 0a 20 20 20 20 64 65 66 20 69 6e 70 75 | ce.variable.topdir......def.inpu |
| 278c0 | 74 28 61 72 67 75 6d 65 6e 74 73 29 0d 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 22 22 0d | t(arguments)..........name.=."". |
| 278e0 | 0a 20 20 20 20 20 20 20 20 63 6d 64 20 3d 20 22 64 75 20 22 20 2b 20 61 72 67 75 6d 65 6e 74 73 | .........cmd.=."du.".+.arguments |
| 27900 | 2e 6a 6f 69 6e 28 22 20 22 29 0d 0a 20 20 20 20 20 20 20 20 49 4f 2e 70 6f 70 65 6e 28 63 6d 64 | .join(".")..........IO.popen(cmd |
| 27920 | 29 20 7b 20 7c 70 69 70 65 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 69 70 65 2e 65 61 63 | ).{.|pipe|..............pipe.eac |
| 27940 | 68 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 | h.{.|line|..................size |
| 27960 | 2c 20 6e 61 6d 65 20 3d 20 6c 69 6e 65 2e 63 68 6f 6d 70 2e 73 70 6c 69 74 28 2f 5c 73 2b 2f 2c | ,.name.=.line.chomp.split(/\s+/, |
| 27980 | 20 32 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 67 65 74 5f | .2)..................node.=.get_ |
| 279a0 | 63 72 65 61 74 65 5f 6e 6f 64 65 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | create_node(name)............... |
| 279c0 | 20 20 20 6e 6f 64 65 2e 73 69 7a 65 20 3d 20 73 69 7a 65 2e 74 6f 5f 69 0d 0a 20 20 20 20 20 20 | ...node.size.=.size.to_i........ |
| 279e0 | 20 20 20 20 20 20 20 20 20 20 40 6e 6f 64 65 73 5b 6e 61 6d 65 5d 20 3d 20 6e 6f 64 65 0d 0a 20 | ..........@nodes[name].=.node... |
| 27a00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 61 72 | ...............parent.=.node.par |
| 27a20 | 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 61 72 65 6e 74 0d 0a | ent..................if.parent.. |
| 27a40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 63 72 65 61 74 65 5f 6e | ....................get_create_n |
| 27a60 | 6f 64 65 28 70 61 72 65 6e 74 29 2e 6b 69 64 73 2e 70 75 73 68 28 6e 6f 64 65 29 0d 0a 20 20 20 | ode(parent).kids.push(node)..... |
| 27a80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d | .............end..............}. |
| 27aa0 | 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 40 74 6f 70 64 69 72 20 3d 20 40 6e | .........}..........@topdir.=.@n |
| 27ac0 | 6f 64 65 73 5b 6e 61 6d 65 5d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 66 69 67 | odes[name]......end........#.fig |
| 27ae0 | 75 72 65 20 6f 75 74 20 68 6f 77 20 6d 75 63 68 20 69 73 20 74 61 6b 65 6e 20 69 6e 20 65 61 63 | ure.out.how.much.is.taken.in.eac |
| 27b00 | 68 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 23 20 74 68 61 74 20 69 73 6e 27 74 20 73 74 | h.directory......#.that.isn't.st |
| 27b20 | 6f 72 65 64 20 69 6e 20 74 68 65 20 73 75 62 64 69 72 65 63 74 6f 72 69 65 73 2e 20 41 64 64 20 | ored.in.the.subdirectories..Add. |
| 27b40 | 61 20 6e 65 77 0d 0a 20 20 20 20 23 20 66 61 6b 65 20 6b 69 64 20 63 61 6c 6c 65 64 20 22 2e 22 | a.new......#.fake.kid.called."." |
| 27b60 | 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 61 74 20 6d 75 63 68 2e 0d 0a 20 20 20 20 64 65 66 20 | .containing.that.much.......def. |
| 27b80 | 67 65 74 5f 64 6f 74 73 28 6e 6f 64 65 29 0d 0a 20 20 20 20 20 20 20 20 63 75 72 73 69 7a 65 20 | get_dots(node)..........cursize. |
| 27ba0 | 3d 20 6e 6f 64 65 2e 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 69 64 20 69 6e 20 | =.node.size..........for.kid.in. |
| 27bc0 | 6e 6f 64 65 2e 6b 69 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 75 72 73 69 7a 65 20 2d | node.kids..............cursize.- |
| 27be0 | 3d 20 20 6b 69 64 2e 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5f 64 6f 74 | =..kid.size..............get_dot |
| 27c00 | 73 28 6b 69 64 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 69 66 20 | s(kid)..........end..........if. |
| 27c20 | 6e 6f 64 65 2e 73 69 7a 65 20 21 3d 20 63 75 72 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 | node.size.!=.cursize............ |
| 27c40 | 20 20 6e 65 77 6e 6f 64 65 20 3d 20 67 65 74 5f 63 72 65 61 74 65 5f 6e 6f 64 65 28 6e 6f 64 65 | ..newnode.=.get_create_node(node |
| 27c60 | 2e 6e 61 6d 65 20 2b 20 22 2f 2e 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 6e 6f | .name.+."/.")..............newno |
| 27c80 | 64 65 2e 73 69 7a 65 20 3d 20 63 75 72 73 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e | de.size.=.cursize..............n |
| 27ca0 | 6f 64 65 2e 6b 69 64 73 2e 70 75 73 68 28 6e 65 77 6e 6f 64 65 29 0d 0a 20 20 20 20 20 20 20 20 | ode.kids.push(newnode).......... |
| 27cc0 | 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 72 65 63 75 72 73 69 76 65 6c | end......end........#.recursivel |
| 27ce0 | 79 20 6f 75 74 70 75 74 20 65 76 65 72 79 74 68 69 6e 67 0d 0a 20 20 20 20 23 20 70 61 73 73 69 | y.output.everything......#.passi |
| 27d00 | 6e 67 20 70 61 64 64 69 6e 67 20 61 6e 64 20 6e 75 6d 62 65 72 20 77 69 64 74 68 20 61 73 20 77 | ng.padding.and.number.width.as.w |
| 27d20 | 65 6c 6c 0d 0a 20 20 20 20 23 20 6f 6e 20 72 65 63 75 72 73 69 76 65 20 63 61 6c 6c 73 0d 0a 20 | ell......#.on.recursive.calls... |
| 27d40 | 20 20 20 64 65 66 20 6f 75 74 70 75 74 28 6e 6f 64 65 2c 20 70 72 65 66 69 78 3d 22 22 2c 20 77 | ...def.output(node,.prefix="",.w |
| 27d60 | 69 64 74 68 3d 30 29 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 73 70 72 69 6e 74 66 28 | idth=0)..........line.=.sprintf( |
| 27d80 | 22 25 23 7b 77 69 64 74 68 7d 64 20 25 73 22 2c 20 6e 6f 64 65 2e 73 69 7a 65 2c 20 6e 6f 64 65 | "%#{width}d.%s",.node.size,.node |
| 27da0 | 2e 62 61 73 65 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 28 70 72 65 66 69 78 20 | .basename)..........puts(prefix. |
| 27dc0 | 2b 20 6c 69 6e 65 29 0d 0a 20 20 20 20 20 20 20 20 70 72 65 66 69 78 20 2b 3d 20 6c 69 6e 65 2e | +.line)..........prefix.+=.line. |
| 27de0 | 73 75 62 28 2f 5c 64 20 2f 2c 20 22 7c 20 22 29 0d 0a 20 20 20 20 20 20 20 20 70 72 65 66 69 78 | sub(/\d./,."|.")..........prefix |
| 27e00 | 2e 67 73 75 62 21 28 2f 5b 5e 7c 5d 2f 2c 20 22 20 22 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 | .gsub!(/[^|]/,.".")..........if. |
| 27e20 | 6e 6f 64 65 2e 6b 69 64 73 2e 6c 65 6e 67 74 68 20 3e 20 30 20 20 20 20 20 23 20 6e 6f 74 20 61 | node.kids.length.>.0.....#.not.a |
| 27e40 | 20 62 61 63 68 65 6c 6f 72 20 6e 6f 64 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 64 73 | .bachelor.node..............kids |
| 27e60 | 20 3d 20 6e 6f 64 65 2e 6b 69 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6b 69 64 73 2e 73 | .=.node.kids..............kids.s |
| 27e80 | 6f 72 74 21 20 7b 20 7c 61 2c 62 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 2e | ort!.{.|a,b|..................b. |
| 27ea0 | 73 69 7a 65 5f 63 6f 6d 70 61 72 65 28 61 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a | size_compare(a)..............}.. |
| 27ec0 | 20 20 20 20 20 20 20 20 20 20 20 20 77 69 64 74 68 20 3d 20 6b 69 64 73 5b 30 5d 2e 73 69 7a 65 | ............width.=.kids[0].size |
| 27ee0 | 2e 74 6f 5f 73 2e 6c 65 6e 67 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6b 69 | .to_s.length..............for.ki |
| 27f00 | 64 20 69 6e 20 6b 69 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 70 75 | d.in.kids..................outpu |
| 27f20 | 74 28 6b 69 64 2c 20 70 72 65 66 69 78 2c 20 77 69 64 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 | t(kid,.prefix,.width)........... |
| 27f40 | 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a | ...end..........end......end.... |
| 27f60 | 65 6e 64 0d 0a 0d 0a 74 72 65 65 20 3d 20 44 75 74 72 65 65 2e 6e 65 77 0d 0a 74 72 65 65 2e 69 | end....tree.=.Dutree.new..tree.i |
| 27f80 | 6e 70 75 74 28 41 52 47 56 29 0d 0a 74 72 65 65 2e 67 65 74 5f 64 6f 74 73 28 74 72 65 65 2e 74 | nput(ARGV)..tree.get_dots(tree.t |
| 27fa0 | 6f 70 64 69 72 29 0d 0a 74 72 65 65 2e 6f 75 74 70 75 74 28 74 72 65 65 2e 74 6f 70 64 69 72 29 | opdir)..tree.output(tree.topdir) |
| 27fc0 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 30 0d 0a 23 20 54 68 65 20 76 65 72 | ......#.@@PLEAC@@_6.0..#.The.ver |
| 27fe0 | 62 6f 73 65 20 76 65 72 73 69 6f 6e 20 61 72 65 20 6d 61 74 63 68 2c 20 73 75 62 2c 20 67 73 75 | bose.version.are.match,.sub,.gsu |
| 28000 | 62 2c 20 73 75 62 21 20 61 6e 64 20 67 73 75 62 21 3b 0d 0a 23 20 70 61 74 74 65 72 6e 20 6e 65 | b,.sub!.and.gsub!;..#.pattern.ne |
| 28020 | 65 64 73 20 74 6f 20 62 65 20 61 20 52 65 67 65 78 70 20 6f 62 6a 65 63 74 3b 20 69 74 20 79 69 | eds.to.be.a.Regexp.object;.it.yi |
| 28040 | 65 6c 64 73 20 61 20 4d 61 74 63 68 44 61 74 61 0d 0a 23 20 6f 62 6a 65 63 74 2e 0d 0a 70 61 74 | elds.a.MatchData..#.object...pat |
| 28060 | 74 65 72 6e 2e 6d 61 74 63 68 28 73 74 72 69 6e 67 29 0d 0a 73 74 72 69 6e 67 2e 73 75 62 28 70 | tern.match(string)..string.sub(p |
| 28080 | 61 74 74 65 72 6e 2c 20 72 65 70 6c 61 63 65 6d 65 6e 74 29 0d 0a 73 74 72 69 6e 67 2e 67 73 75 | attern,.replacement)..string.gsu |
| 280a0 | 62 28 70 61 74 74 65 72 6e 2c 20 72 65 70 6c 61 63 65 6d 65 6e 74 29 0d 0a 23 20 41 73 20 75 73 | b(pattern,.replacement)..#.As.us |
| 280c0 | 75 61 6c 20 69 6e 20 52 75 62 79 2c 20 73 75 62 21 20 64 6f 65 73 20 74 68 65 20 73 61 6d 65 20 | ual.in.Ruby,.sub!.does.the.same. |
| 280e0 | 61 73 20 73 75 62 20 62 75 74 20 61 6c 73 6f 20 6d 6f 64 69 66 69 65 73 0d 0a 23 20 74 68 65 20 | as.sub.but.also.modifies..#.the. |
| 28100 | 6f 62 6a 65 63 74 2c 20 74 68 65 20 73 61 6d 65 20 66 6f 72 20 67 73 75 62 21 2f 67 73 75 62 2e | object,.the.same.for.gsub!/gsub. |
| 28120 | 0d 0a 0d 0a 23 20 53 75 67 61 72 65 64 20 73 79 6e 74 61 78 20 79 69 65 6c 64 73 20 74 68 65 20 | ....#.Sugared.syntax.yields.the. |
| 28140 | 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 74 63 68 20 28 6f 72 20 6e 69 6c 20 69 66 | position.of.the.match.(or.nil.if |
| 28160 | 20 6e 6f 0d 0a 23 20 6d 61 74 63 68 29 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 20 6f 62 6a | .no..#.match)..Note.that.the.obj |
| 28180 | 65 63 74 20 61 74 20 74 68 65 20 72 69 67 68 74 20 6f 66 20 74 68 65 20 6f 70 65 72 61 74 6f 72 | ect.at.the.right.of.the.operator |
| 281a0 | 20 6e 65 65 64 73 0d 0a 23 20 6e 6f 74 20 74 6f 20 62 65 20 61 20 52 65 67 65 78 70 20 6f 62 6a | .needs..#.not.to.be.a.Regexp.obj |
| 281c0 | 65 63 74 20 28 69 74 20 63 61 6e 20 62 65 20 61 20 53 74 72 69 6e 67 29 2e 20 54 68 65 20 22 64 | ect.(it.can.be.a.String)..The."d |
| 281e0 | 6f 6e 74 0d 0a 23 20 6d 61 74 63 68 22 20 6f 70 65 72 61 74 6f 72 20 79 69 65 6c 64 73 20 74 72 | ont..#.match".operator.yields.tr |
| 28200 | 75 65 20 6f 72 20 66 61 6c 73 65 2e 0d 0a 6d 65 61 64 6f 77 20 3d 7e 20 2f 73 68 65 65 70 2f 20 | ue.or.false...meadow.=~./sheep/. |
| 28220 | 20 20 23 20 70 6f 73 69 74 69 6f 6e 20 6f 66 20 74 68 65 20 6d 61 74 63 68 2c 20 6e 69 6c 20 69 | ..#.position.of.the.match,.nil.i |
| 28240 | 66 20 6e 6f 20 6d 61 74 63 68 0d 0a 6d 65 61 64 6f 77 20 21 7e 20 2f 73 68 65 65 70 2f 20 20 20 | f.no.match..meadow.!~./sheep/... |
| 28260 | 23 20 74 72 75 65 20 69 66 20 64 6f 65 73 6e 27 74 20 6d 61 74 63 68 2c 20 66 61 6c 73 65 20 69 | #.true.if.doesn't.match,.false.i |
| 28280 | 66 20 69 74 20 64 6f 65 73 0d 0a 23 20 54 68 65 72 65 20 69 73 20 6e 6f 20 73 75 67 61 72 65 64 | f.it.does..#.There.is.no.sugared |
| 282a0 | 20 76 65 72 73 69 6f 6e 20 66 6f 72 20 74 68 65 20 73 75 62 73 74 69 74 75 74 69 6f 6e 0d 0a 0d | .version.for.the.substitution... |
| 282c0 | 0a 6d 65 61 64 6f 77 20 3d 7e 20 2f 5c 62 6f 76 69 6e 65 73 3f 5c 62 2f 69 20 61 6e 64 20 70 72 | .meadow.=~./\bovines?\b/i.and.pr |
| 282e0 | 69 6e 74 20 22 48 65 72 65 20 62 65 20 73 68 65 65 70 21 22 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d | int."Here.be.sheep!"....string.= |
| 28300 | 20 22 67 6f 6f 64 20 66 6f 6f 64 22 0d 0a 73 74 72 69 6e 67 2e 73 75 62 21 28 2f 6f 2a 2f 2c 20 | ."good.food"..string.sub!(/o*/,. |
| 28320 | 27 65 27 29 0d 0a 0d 0a 23 20 25 20 65 63 68 6f 20 61 62 61 62 61 63 61 63 61 20 7c 20 72 75 62 | 'e')....#.%.echo.ababacaca.|.rub |
| 28340 | 79 20 2d 6e 65 20 27 70 75 74 73 20 24 26 20 69 66 20 2f 28 61 7c 62 61 7c 62 29 2b 28 61 7c 61 | y.-ne.'puts.$&.if./(a|ba|b)+(a|a |
| 28360 | 63 29 2b 2f 27 0d 0a 23 20 61 62 61 62 61 0d 0a 0d 0a 23 20 54 68 65 20 22 67 6c 6f 62 61 6c 22 | c)+/'..#.ababa....#.The."global" |
| 28380 | 20 28 6f 72 20 22 6d 75 6c 74 69 70 6c 65 22 29 20 6d 61 74 63 68 20 69 73 20 68 61 6e 64 6c 65 | .(or."multiple").match.is.handle |
| 283a0 | 64 20 62 79 20 53 74 72 69 6e 67 23 73 63 61 6e 0d 0a 73 63 61 6e 20 28 2f 28 5c 64 2b 29 2f 29 | d.by.String#scan..scan.(/(\d+)/) |
| 283c0 | 20 7b 0d 0a 20 20 20 20 70 75 74 73 20 22 46 6f 75 6e 64 20 6e 75 6d 62 65 72 20 23 7b 24 31 7d | .{......puts."Found.number.#{$1} |
| 283e0 | 22 0d 0a 7d 0d 0a 0d 0a 23 20 53 74 72 69 6e 67 23 73 63 61 6e 20 79 69 65 6c 64 73 20 61 6e 20 | "..}....#.String#scan.yields.an. |
| 28400 | 41 72 72 61 79 20 69 66 20 6e 6f 74 20 75 73 65 64 20 77 69 74 68 20 61 20 62 6c 6f 63 6b 0d 0a | Array.if.not.used.with.a.block.. |
| 28420 | 6e 75 6d 62 65 72 73 20 3d 20 73 63 61 6e 28 2f 5c 64 2b 2f 29 0d 0a 0d 0a 64 69 67 69 74 73 20 | numbers.=.scan(/\d+/)....digits. |
| 28440 | 3d 20 22 31 32 33 34 35 36 37 38 39 22 0d 0a 6e 6f 6e 6c 61 70 20 3d 20 64 69 67 69 74 73 2e 73 | =."123456789"..nonlap.=.digits.s |
| 28460 | 63 61 6e 28 2f 28 5c 64 5c 64 5c 64 29 2f 29 0d 0a 79 65 73 6c 61 70 20 3d 20 64 69 67 69 74 73 | can(/(\d\d\d)/)..yeslap.=.digits |
| 28480 | 2e 73 63 61 6e 28 2f 28 3f 3d 28 5c 64 5c 64 5c 64 29 29 2f 29 0d 0a 70 75 74 73 20 22 4e 6f 6e | .scan(/(?=(\d\d\d))/)..puts."Non |
| 284a0 | 2d 6f 76 65 72 6c 61 70 70 69 6e 67 3a 20 20 23 7b 6e 6f 6e 6c 61 70 2e 6a 6f 69 6e 28 27 20 27 | -overlapping:..#{nonlap.join('.' |
| 284c0 | 29 7d 22 0d 0a 70 75 74 73 20 22 4f 76 65 72 6c 61 70 70 69 6e 67 3a 20 20 20 20 20 20 23 7b 79 | )}"..puts."Overlapping:......#{y |
| 284e0 | 65 73 6c 61 70 2e 6a 6f 69 6e 28 27 20 27 29 7d 22 3b 0d 0a 23 20 4e 6f 6e 2d 6f 76 65 72 6c 61 | eslap.join('.')}";..#.Non-overla |
| 28500 | 70 70 69 6e 67 3a 20 20 31 32 33 20 34 35 36 20 37 38 39 0d 0a 23 20 4f 76 65 72 6c 61 70 70 69 | pping:..123.456.789..#.Overlappi |
| 28520 | 6e 67 3a 20 20 20 20 20 20 31 32 33 20 32 33 34 20 33 34 35 20 34 35 36 20 35 36 37 20 36 37 38 | ng:......123.234.345.456.567.678 |
| 28540 | 20 37 38 39 0d 0a 0d 0a 73 74 72 69 6e 67 20 3d 20 22 41 6e 64 20 6c 69 74 74 6c 65 20 6c 61 6d | .789....string.=."And.little.lam |
| 28560 | 62 73 20 65 61 74 20 69 76 79 22 0d 0a 73 74 72 69 6e 67 20 3d 7e 20 2f 6c 5b 5e 73 5d 2a 73 2f | bs.eat.ivy"..string.=~./l[^s]*s/ |
| 28580 | 0d 0a 70 75 74 73 20 22 28 23 24 60 29 20 28 23 24 26 29 20 28 23 24 27 29 22 0d 0a 23 20 28 41 | ..puts."(#$`).(#$&).(#$')"..#.(A |
| 285a0 | 6e 64 20 29 20 28 6c 69 74 74 6c 65 20 6c 61 6d 62 73 29 20 28 20 65 61 74 20 69 76 79 29 0d 0a | nd.).(little.lambs).(.eat.ivy).. |
| 285c0 | 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 31 0d 0a 23 20 52 75 62 79 20 64 6f 65 73 | ....#.@@PLEAC@@_6.1..#.Ruby.does |
| 285e0 | 6e 27 74 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20 70 72 6f 62 6c 65 6d 3a 0d 0a 64 73 74 20 | n't.have.the.same.problem:..dst. |
| 28600 | 3d 20 73 72 63 2e 73 75 62 28 27 74 68 69 73 27 2c 20 27 74 68 61 74 27 29 0d 0a 0d 0a 70 72 6f | =.src.sub('this',.'that')....pro |
| 28620 | 67 6e 61 6d 65 20 3d 20 24 30 2e 73 75 62 28 27 5e 2e 2a 2f 27 2c 20 27 27 29 0d 0a 0d 0a 62 69 | gname.=.$0.sub('^.*/',.'')....bi |
| 28640 | 6e 64 69 72 73 20 3d 20 25 77 28 2f 75 73 72 2f 62 69 6e 20 2f 62 69 6e 20 2f 75 73 72 2f 6c 6f | ndirs.=.%w(/usr/bin./bin./usr/lo |
| 28660 | 63 61 6c 2f 62 69 6e 29 0d 0a 6c 69 62 64 69 72 73 20 3d 20 62 69 6e 64 69 72 73 2e 6d 61 70 20 | cal/bin)..libdirs.=.bindirs.map. |
| 28680 | 7b 20 7c 6c 7c 20 6c 2e 73 75 62 28 27 62 69 6e 27 2c 20 27 6c 69 62 27 29 20 7d 0d 0a 0d 0a 0d | {.|l|.l.sub('bin',.'lib').}..... |
| 286a0 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 33 0d 0a 2f 5c 53 2b 2f 20 20 20 20 20 20 20 20 20 | .#.@@PLEAC@@_6.3../\S+/......... |
| 286c0 | 20 20 20 20 20 20 23 20 61 73 20 6d 61 6e 79 20 6e 6f 6e 2d 77 68 69 74 65 73 70 61 63 65 20 62 | ......#.as.many.non-whitespace.b |
| 286e0 | 79 74 65 73 20 61 73 20 70 6f 73 73 69 62 6c 65 0d 0a 2f 5b 41 2d 5a 61 2d 7a 27 2d 5d 2b 2f 20 | ytes.as.possible../[A-Za-z'-]+/. |
| 28700 | 20 20 20 20 20 20 23 20 61 73 20 6d 61 6e 79 20 6c 65 74 74 65 72 73 2c 20 61 70 6f 73 74 72 6f | ......#.as.many.letters,.apostro |
| 28720 | 70 68 65 73 2c 20 61 6e 64 20 68 79 70 68 65 6e 73 0d 0a 0d 0a 2f 5c 62 28 5b 41 2d 5a 61 2d 7a | phes,.and.hyphens..../\b([A-Za-z |
| 28740 | 5d 2b 29 5c 62 2f 20 20 20 23 20 75 73 75 61 6c 6c 79 20 62 65 73 74 0d 0a 2f 5c 73 28 5b 41 2d | ]+)\b/...#.usually.best../\s([A- |
| 28760 | 5a 61 2d 7a 5d 2b 29 5c 73 2f 20 20 20 23 20 66 61 69 6c 73 20 61 74 20 65 6e 64 73 20 6f 72 20 | Za-z]+)\s/...#.fails.at.ends.or. |
| 28780 | 77 2f 20 70 75 6e 63 74 75 61 74 69 6f 6e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f | w/.punctuation......#.@@PLEAC@@_ |
| 287a0 | 36 2e 34 0d 0a 72 65 71 75 69 72 65 20 27 73 6f 63 6b 65 74 27 0d 0a 73 74 72 20 3d 20 27 77 77 | 6.4..require.'socket'..str.=.'ww |
| 287c0 | 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 20 61 6e 64 20 77 77 77 2e 72 75 62 79 67 61 72 64 | w.ruby-lang.org.and.www.rubygard |
| 287e0 | 65 6e 2e 6f 72 67 27 0d 0a 72 65 20 3d 20 2f 0d 0a 20 20 20 20 20 20 28 20 20 20 20 20 20 20 20 | en.org'..re.=./........(........ |
| 28800 | 20 20 20 20 20 20 20 23 20 63 61 70 74 75 72 65 20 74 68 65 20 68 6f 73 74 6e 61 6d 65 20 69 6e | .......#.capture.the.hostname.in |
| 28820 | 20 24 31 0d 0a 20 20 20 20 20 20 20 20 28 3f 3a 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 | .$1..........(?:...........#.the |
| 28840 | 73 65 20 70 61 72 65 6e 73 20 66 6f 72 20 67 72 6f 75 70 69 6e 67 20 6f 6e 6c 79 0d 0a 20 20 20 | se.parens.for.grouping.only..... |
| 28860 | 20 20 20 20 20 20 20 28 3f 21 20 5b 2d 5f 5d 20 29 20 20 23 20 6c 6f 6f 6b 61 68 65 61 64 20 66 | .......(?!.[-_].)..#.lookahead.f |
| 28880 | 6f 72 20 6e 65 69 74 68 65 72 20 75 6e 64 65 72 73 63 6f 72 65 20 6e 6f 72 20 64 61 73 68 0d 0a | or.neither.underscore.nor.dash.. |
| 288a0 | 20 20 20 20 20 20 20 20 20 20 5b 5c 77 2d 5d 20 2b 20 20 20 20 20 23 20 68 6f 73 74 6e 61 6d 65 | ..........[\w-].+.....#.hostname |
| 288c0 | 20 63 6f 6d 70 6f 6e 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 5c 2e 20 20 20 20 20 20 20 20 | .component............\......... |
| 288e0 | 20 20 23 20 61 6e 64 20 74 68 65 20 64 6f 6d 61 69 6e 20 64 6f 74 0d 0a 20 20 20 20 20 20 20 20 | ..#.and.the.domain.dot.......... |
| 28900 | 29 20 2b 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f 77 20 72 65 70 65 61 74 20 74 68 61 74 20 | ).+...........#.now.repeat.that. |
| 28920 | 77 68 6f 6c 65 20 74 68 69 6e 67 20 61 20 62 75 6e 63 68 20 6f 66 20 74 69 6d 65 73 0d 0a 20 20 | whole.thing.a.bunch.of.times.... |
| 28940 | 20 20 20 20 20 20 5b 41 2d 5a 61 2d 7a 5d 20 20 20 20 20 20 23 20 6e 65 78 74 20 6d 75 73 74 20 | ......[A-Za-z]......#.next.must. |
| 28960 | 62 65 20 61 20 6c 65 74 74 65 72 0d 0a 20 20 20 20 20 20 20 20 5b 5c 77 2d 5d 20 2b 20 20 20 20 | be.a.letter..........[\w-].+.... |
| 28980 | 20 20 20 23 20 6e 6f 77 20 74 72 61 69 6c 69 6e 67 20 64 6f 6d 61 69 6e 20 70 61 72 74 0d 0a 20 | ...#.now.trailing.domain.part... |
| 289a0 | 20 20 20 20 20 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6e 64 20 6f 66 20 24 31 | .....)...............#.end.of.$1 |
| 289c0 | 20 63 61 70 74 75 72 65 0d 0a 20 20 20 20 20 2f 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .capture......./x............... |
| 289e0 | 23 20 2f 78 20 66 6f 72 20 6e 69 63 65 20 66 6f 72 6d 61 74 74 69 6e 67 0d 0a 0d 0a 73 74 72 2e | #./x.for.nice.formatting....str. |
| 28a00 | 67 73 75 62 21 20 72 65 20 64 6f 20 20 20 20 20 20 20 23 20 70 61 73 73 20 61 20 62 6c 6f 63 6b | gsub!.re.do.......#.pass.a.block |
| 28a20 | 20 74 6f 20 65 78 65 63 75 74 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 0d 0a 20 20 20 20 68 6f 73 | .to.execute.replacement......hos |
| 28a40 | 74 20 3d 20 54 43 50 73 6f 63 6b 65 74 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 24 31 29 0d | t.=.TCPsocket.gethostbyname($1). |
| 28a60 | 0a 20 20 20 20 22 23 7b 24 31 7d 20 5b 23 7b 68 6f 73 74 5b 33 5d 7d 5d 22 0d 0a 65 6e 64 0d 0a | ....."#{$1}.[#{host[3]}]"..end.. |
| 28a80 | 0d 0a 70 75 74 73 20 73 74 72 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..puts.str..#------------------- |
| 28aa0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 74 6f 20 6d 61 74 63 68 20 77 68 69 74 65 73 70 61 63 | ----------..#.to.match.whitespac |
| 28ac0 | 65 20 6f 72 20 23 2d 63 68 61 72 61 63 74 65 72 73 20 69 6e 20 61 6e 20 65 78 74 65 6e 64 65 64 | e.or.#-characters.in.an.extended |
| 28ae0 | 20 72 65 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 65 73 63 61 70 65 0d 0a 23 20 74 68 65 6d 2e 0d | .re.you.need.to.escape..#.them.. |
| 28b00 | 0a 0d 0a 66 6f 6f 20 3d 20 34 32 0d 0a 73 74 72 20 3d 20 27 62 6c 61 68 20 23 66 6f 6f 23 20 62 | ...foo.=.42..str.=.'blah.#foo#.b |
| 28b20 | 6c 61 68 27 0d 0a 73 74 72 2e 67 73 75 62 21 20 25 72 2f 20 20 20 20 20 20 20 23 20 72 65 70 6c | lah'..str.gsub!.%r/.......#.repl |
| 28b40 | 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 23 20 20 20 20 23 20 20 20 61 20 70 | ace................\#....#...a.p |
| 28b60 | 6f 75 6e 64 20 73 69 67 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 5c 77 2b 29 20 23 | ound.sign................(\w+).# |
| 28b80 | 20 20 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 | ...the.variable.name............ |
| 28ba0 | 20 20 20 20 5c 23 20 20 20 20 23 20 20 20 61 6e 6f 74 68 65 72 20 70 6f 75 6e 64 20 73 69 67 6e | ....\#....#...another.pound.sign |
| 28bc0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 2f 78 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............/x.do............... |
| 28be0 | 20 65 76 61 6c 20 24 31 20 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 74 68 65 20 76 61 | .eval.$1...........#.with.the.va |
| 28c00 | 6c 75 65 20 6f 66 20 61 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 20 20 20 | lue.of.a.local.variable......... |
| 28c20 | 20 20 20 65 6e 64 0d 0a 70 75 74 73 20 73 74 72 20 20 23 20 3d 3e 20 62 6c 61 68 20 34 32 20 62 | ...end..puts.str..#.=>.blah.42.b |
| 28c40 | 6c 61 68 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 35 0d 0a 23 20 54 68 65 20 | lah......#.@@PLEAC@@_6.5..#.The. |
| 28c60 | 27 67 27 20 6d 6f 64 69 66 69 65 72 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 20 69 6e 20 52 75 | 'g'.modifier.doesn't.exist.in.Ru |
| 28c80 | 62 79 2c 20 61 20 72 65 67 65 78 70 20 63 61 6e 27 74 20 62 65 20 75 73 65 64 0d 0a 23 20 64 69 | by,.a.regexp.can't.be.used..#.di |
| 28ca0 | 72 65 63 74 6c 79 20 69 6e 20 61 20 77 68 69 6c 65 20 6c 6f 6f 70 3b 20 69 6e 73 74 65 61 64 2c | rectly.in.a.while.loop;.instead, |
| 28cc0 | 20 75 73 65 20 53 74 72 69 6e 67 23 73 63 61 6e 20 7b 20 7c 6d 61 74 63 68 7c 20 2e 2e 20 7d 0d | .use.String#scan.{.|match|....}. |
| 28ce0 | 0a 66 69 73 68 20 3d 20 27 4f 6e 65 20 66 69 73 68 20 74 77 6f 20 66 69 73 68 20 72 65 64 20 66 | .fish.=.'One.fish.two.fish.red.f |
| 28d00 | 69 73 68 20 62 6c 75 65 20 66 69 73 68 27 0d 0a 57 41 4e 54 20 3d 20 33 0d 0a 63 6f 75 6e 74 20 | ish.blue.fish'..WANT.=.3..count. |
| 28d20 | 3d 20 30 0d 0a 66 69 73 68 2e 73 63 61 6e 28 2f 28 5c 77 2b 29 5c 73 2b 66 69 73 68 5c 62 2f 69 | =.0..fish.scan(/(\w+)\s+fish\b/i |
| 28d40 | 29 20 7b 0d 0a 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 2b 3d 20 31 29 20 3d 3d 20 57 41 4e 54 | ).{......if.(count.+=.1).==.WANT |
| 28d60 | 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 54 68 65 20 74 68 69 72 64 20 66 69 73 68 20 69 | ..........puts."The.third.fish.i |
| 28d80 | 73 20 61 20 23 7b 24 31 7d 20 6f 6e 65 2e 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 7d 0d 0a 0d 0a 69 | s.a.#{$1}.one."......end..}....i |
| 28da0 | 66 20 66 69 73 68 20 3d 7e 20 2f 28 3f 3a 5c 77 2b 5c 73 2b 66 69 73 68 5c 73 2b 29 7b 32 7d 28 | f.fish.=~./(?:\w+\s+fish\s+){2}( |
| 28dc0 | 5c 77 2b 29 5c 73 2b 66 69 73 68 2f 69 0d 0a 20 20 20 20 70 75 74 73 20 22 54 68 65 20 74 68 69 | \w+)\s+fish/i......puts."The.thi |
| 28de0 | 72 64 20 66 69 73 68 20 69 73 20 61 20 23 7b 24 31 7d 20 6f 6e 65 2e 22 0d 0a 65 6e 64 0d 0a 0d | rd.fish.is.a.#{$1}.one."..end... |
| 28e00 | 0a 70 6f 6e 64 20 3d 20 27 4f 6e 65 20 66 69 73 68 20 74 77 6f 20 66 69 73 68 20 72 65 64 20 66 | .pond.=.'One.fish.two.fish.red.f |
| 28e20 | 69 73 68 20 62 6c 75 65 20 66 69 73 68 27 0d 0a 23 20 53 74 72 69 6e 67 23 73 63 61 6e 20 77 69 | ish.blue.fish'..#.String#scan.wi |
| 28e40 | 74 68 6f 75 74 20 61 20 62 6c 6f 63 6b 20 67 69 76 65 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 | thout.a.block.gives.an.array.of. |
| 28e60 | 6d 61 74 63 68 65 73 2c 20 65 61 63 68 20 6d 61 74 63 68 0d 0a 23 20 62 65 69 6e 67 20 61 6e 20 | matches,.each.match..#.being.an. |
| 28e80 | 61 72 72 61 79 20 6f 66 20 61 6c 6c 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 67 72 6f 75 70 | array.of.all.the.specified.group |
| 28ea0 | 73 0d 0a 63 6f 6c 6f 72 73 20 3d 20 70 6f 6e 64 2e 73 63 61 6e 28 2f 28 5c 77 2b 29 5c 73 2b 66 | s..colors.=.pond.scan(/(\w+)\s+f |
| 28ec0 | 69 73 68 5c 62 2f 69 29 2e 66 6c 61 74 74 65 6e 20 20 23 20 67 65 74 20 61 6c 6c 20 6d 61 74 63 | ish\b/i).flatten..#.get.all.matc |
| 28ee0 | 68 65 73 0d 0a 63 6f 6c 6f 72 20 20 3d 20 63 6f 6c 6f 72 73 5b 32 5d 20 20 20 20 20 20 20 20 20 | hes..color..=.colors[2]......... |
| 28f00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 6e 20 74 68 65 20 6f 6e 65 20 | .................#.then.the.one. |
| 28f20 | 77 65 20 77 61 6e 74 0d 0a 23 20 6f 72 20 77 69 74 68 6f 75 74 20 61 20 74 65 6d 70 6f 72 61 72 | we.want..#.or.without.a.temporar |
| 28f40 | 79 20 61 72 72 61 79 0d 0a 63 6f 6c 6f 72 20 3d 20 70 6f 6e 64 2e 73 63 61 6e 28 2f 28 5c 77 2b | y.array..color.=.pond.scan(/(\w+ |
| 28f60 | 29 5c 73 2b 66 69 73 68 5c 62 2f 69 29 2e 66 6c 61 74 74 65 6e 5b 32 5d 20 20 23 20 6a 75 73 74 | )\s+fish\b/i).flatten[2]..#.just |
| 28f80 | 20 67 72 61 62 20 65 6c 65 6d 65 6e 74 20 33 0d 0a 70 75 74 73 20 22 54 68 65 20 74 68 69 72 64 | .grab.element.3..puts."The.third |
| 28fa0 | 20 66 69 73 68 20 69 6e 20 74 68 65 20 70 6f 6e 64 20 69 73 20 23 7b 63 6f 6c 6f 72 7d 2e 22 0d | .fish.in.the.pond.is.#{color}.". |
| 28fc0 | 0a 0d 0a 63 6f 75 6e 74 20 3d 20 30 0d 0a 66 69 73 68 65 73 20 3d 20 27 4f 6e 65 20 66 69 73 68 | ...count.=.0..fishes.=.'One.fish |
| 28fe0 | 20 74 77 6f 20 66 69 73 68 20 72 65 64 20 66 69 73 68 20 62 6c 75 65 20 66 69 73 68 27 0d 0a 65 | .two.fish.red.fish.blue.fish'..e |
| 29000 | 76 65 6e 73 20 3d 20 66 69 73 68 65 73 2e 73 63 61 6e 28 2f 28 5c 77 2b 29 5c 73 2b 66 69 73 68 | vens.=.fishes.scan(/(\w+)\s+fish |
| 29020 | 5c 62 2f 69 29 2e 73 65 6c 65 63 74 20 7b 20 28 63 6f 75 6e 74 2b 3d 31 29 20 25 20 32 20 3d 3d | \b/i).select.{.(count+=1).%.2.== |
| 29040 | 20 30 20 7d 0d 0a 70 72 69 6e 74 20 22 45 76 65 6e 20 6e 75 6d 62 65 72 65 64 20 66 69 73 68 20 | .0.}..print."Even.numbered.fish. |
| 29060 | 61 72 65 20 23 7b 65 76 65 6e 73 2e 6a 6f 69 6e 28 27 20 27 29 7d 2e 22 0d 0a 0d 0a 63 6f 75 6e | are.#{evens.join('.')}."....coun |
| 29080 | 74 20 3d 20 30 0d 0a 66 69 73 68 65 73 2e 67 73 75 62 28 2f 0d 0a 20 20 20 5c 62 20 20 20 20 20 | t.=.0..fishes.gsub(/.....\b..... |
| 290a0 | 20 20 20 20 20 20 20 20 20 20 23 20 6d 61 6b 65 73 20 6e 65 78 74 20 5c 77 20 6d 6f 72 65 20 65 | ..........#.makes.next.\w.more.e |
| 290c0 | 66 66 69 63 69 65 6e 74 0d 0a 20 20 20 28 20 5c 77 2b 20 29 20 20 20 20 20 20 20 20 20 20 23 20 | fficient.....(.\w+.)..........#. |
| 290e0 | 74 68 69 73 20 69 73 20 77 68 61 74 20 77 65 5c 27 6c 6c 20 62 65 20 63 68 61 6e 67 69 6e 67 0d | this.is.what.we\'ll.be.changing. |
| 29100 | 0a 20 20 20 28 0d 0a 20 20 20 20 20 5c 73 2b 20 66 69 73 68 20 5c 62 0d 0a 20 20 20 29 0d 0a 20 | ....(.......\s+.fish.\b.....)... |
| 29120 | 20 20 20 20 20 20 20 20 20 20 20 2f 78 29 20 7b 0d 0a 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 | .........../x).{......if.(count. |
| 29140 | 2b 3d 20 31 29 20 3d 3d 20 34 0d 0a 20 20 20 20 20 20 20 20 27 73 75 73 68 69 27 20 2b 20 24 32 | +=.1).==.4..........'sushi'.+.$2 |
| 29160 | 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 24 31 20 2b 20 24 32 0d 0a 20 20 20 | ......else..........$1.+.$2..... |
| 29180 | 20 65 6e 64 0d 0a 7d 0d 0a 0d 0a 70 6f 6e 64 20 3d 20 27 4f 6e 65 20 66 69 73 68 20 74 77 6f 20 | .end..}....pond.=.'One.fish.two. |
| 291a0 | 66 69 73 68 20 72 65 64 20 66 69 73 68 20 62 6c 75 65 20 66 69 73 68 20 73 77 69 6d 20 68 65 72 | fish.red.fish.blue.fish.swim.her |
| 291c0 | 65 2e 27 0d 0a 70 75 74 73 20 22 4c 61 73 74 20 66 69 73 68 20 69 73 20 23 7b 70 6f 6e 64 2e 73 | e.'..puts."Last.fish.is.#{pond.s |
| 291e0 | 63 61 6e 28 2f 5c 62 28 5c 77 2b 29 5c 73 2b 66 69 73 68 5c 62 2f 69 29 2e 66 6c 61 74 74 65 6e | can(/\b(\w+)\s+fish\b/i).flatten |
| 29200 | 5b 2d 31 5d 7d 22 0d 0a 0d 0a 2f 0d 0a 20 20 20 20 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | [-1]}"..../......A.............. |
| 29220 | 20 23 20 66 69 6e 64 20 73 6f 6d 65 20 70 61 74 74 65 72 6e 20 41 0d 0a 20 20 20 20 28 3f 21 20 | .#.find.some.pattern.A......(?!. |
| 29240 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6d 75 73 74 6e 5c 27 74 20 62 65 20 61 62 6c 65 20 74 | ............#.mustn\'t.be.able.t |
| 29260 | 6f 20 66 69 6e 64 0d 0a 20 20 20 20 20 20 20 20 2e 2a 20 20 20 20 20 20 20 20 20 20 23 20 73 6f | o.find...........*..........#.so |
| 29280 | 6d 65 74 68 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 41 20 20 20 20 20 20 20 20 20 20 20 23 20 61 | mething..........A...........#.a |
| 292a0 | 6e 64 20 41 0d 0a 20 20 20 20 29 0d 0a 20 20 20 20 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | nd.A......)......$.............. |
| 292c0 | 20 23 20 74 68 72 6f 75 67 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 | .#.through.the.end.of.the.string |
| 292e0 | 0d 0a 2f 78 0d 0a 0d 0a 23 20 54 68 65 20 22 73 22 20 70 65 72 6c 20 6d 6f 64 69 66 69 65 72 20 | ../x....#.The."s".perl.modifier. |
| 29300 | 69 73 20 22 6d 22 20 69 6e 20 52 75 62 79 20 28 6e 6f 74 20 76 65 72 79 20 6e 69 63 65 20 73 69 | is."m".in.Ruby.(not.very.nice.si |
| 29320 | 6e 63 65 20 74 68 65 72 65 20 69 73 0d 0a 23 20 61 6c 73 6f 20 61 6e 20 22 6d 22 20 69 6e 20 70 | nce.there.is..#.also.an."m".in.p |
| 29340 | 65 72 6c 2e 2e 29 0d 0a 70 6f 6e 64 20 3d 20 22 4f 6e 65 20 66 69 73 68 20 74 77 6f 20 66 69 73 | erl..)..pond.=."One.fish.two.fis |
| 29360 | 68 20 72 65 64 20 66 69 73 68 20 62 6c 75 65 20 66 69 73 68 20 73 77 69 6d 20 68 65 72 65 2e 22 | h.red.fish.blue.fish.swim.here." |
| 29380 | 0d 0a 69 66 20 28 70 6f 6e 64 20 3d 7e 20 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..if.(pond.=~./................. |
| 293a0 | 20 20 20 20 20 5c 62 20 20 28 20 20 5c 77 2b 29 20 5c 73 2b 20 66 69 73 68 20 5c 62 0d 0a 20 20 | .....\b..(..\w+).\s+.fish.\b.... |
| 293c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 21 20 2e 2a 20 5c 62 20 66 69 73 68 20 5c 62 20 | ..............(?!..*.\b.fish.\b. |
| 293e0 | 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 6d 69 78 29 0d 0a 20 20 20 20 70 75 74 73 20 22 | )............../mix)......puts." |
| 29400 | 4c 61 73 74 20 66 69 73 68 20 69 73 20 23 7b 24 31 7d 2e 22 0d 0a 65 6c 73 65 0d 0a 20 20 20 20 | Last.fish.is.#{$1}."..else...... |
| 29420 | 70 75 74 73 20 22 46 61 69 6c 65 64 21 22 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | puts."Failed!"..end......#.@@PLE |
| 29440 | 41 43 40 40 5f 36 2e 36 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | AC@@_6.6..#--------------------- |
| 29460 | 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 | --------..#!/usr/bin/ruby.-w..#. |
| 29480 | 6b 69 6c 6c 74 61 67 73 20 2d 20 76 65 72 79 20 62 61 64 20 68 74 6d 6c 20 6b 69 6c 6c 65 72 0d | killtags.-.very.bad.html.killer. |
| 294a0 | 0a 24 2f 20 3d 20 6e 69 6c 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .$/.=.nil;...................... |
| 294c0 | 20 20 20 20 20 20 20 20 23 20 65 61 63 68 20 72 65 61 64 20 69 73 20 77 68 6f 6c 65 20 66 69 6c | ........#.each.read.is.whole.fil |
| 294e0 | 65 0d 0a 77 68 69 6c 65 20 66 69 6c 65 20 3d 20 67 65 74 73 28 29 20 64 6f 0d 0a 20 20 20 20 66 | e..while.file.=.gets().do......f |
| 29500 | 69 6c 65 2e 67 73 75 62 21 28 2f 3c 2e 2a 3f 3e 2f 6d 2c 27 27 29 3b 20 20 20 20 20 20 20 20 20 | ile.gsub!(/<.*?>/m,'');......... |
| 29520 | 20 20 23 20 73 74 72 69 70 20 74 61 67 73 20 28 74 65 72 72 69 62 6c 79 29 0d 0a 20 20 20 20 70 | ..#.strip.tags.(terribly)......p |
| 29540 | 75 74 73 20 66 69 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | uts.file........................ |
| 29560 | 20 20 23 20 70 72 69 6e 74 20 66 69 6c 65 20 74 6f 20 53 54 44 4f 55 54 0d 0a 65 6e 64 0d 0a 23 | ..#.print.file.to.STDOUT..end..# |
| 29580 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 | -----------------------------..# |
| 295a0 | 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 68 65 61 64 65 72 66 79 20 2d 20 63 | !/usr/bin/ruby.-w..#headerfy.-.c |
| 295c0 | 68 61 6e 67 65 20 63 65 72 74 61 69 6e 20 63 68 61 70 74 65 72 20 68 65 61 64 65 72 73 20 74 6f | hange.certain.chapter.headers.to |
| 295e0 | 20 68 74 6d 6c 0d 0a 24 2f 20 3d 20 27 27 0d 0a 77 68 69 6c 65 20 66 69 6c 65 20 3d 20 67 65 74 | .html..$/.=.''..while.file.=.get |
| 29600 | 73 28 29 20 64 6f 0d 0a 20 20 20 20 70 61 74 74 65 72 6e 20 3d 20 2f 0d 0a 20 20 20 20 20 20 20 | s().do......pattern.=./......... |
| 29620 | 20 20 20 20 20 20 20 20 20 20 20 5c 41 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........\A................... |
| 29640 | 23 20 73 74 61 72 74 20 6f 66 20 72 65 63 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | #.start.of.record............... |
| 29660 | 20 20 20 20 20 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 63 61 70 74 | .....(....................#.capt |
| 29680 | 75 72 65 20 69 6e 20 24 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ure.in.$1....................... |
| 296a0 | 20 43 68 61 70 74 65 72 20 20 20 20 20 20 20 20 20 20 23 20 74 65 78 74 20 73 74 72 69 6e 67 0d | .Chapter..........#.text.string. |
| 296c0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 73 2b 20 20 20 20 20 20 | .......................\s+...... |
| 296e0 | 20 20 20 20 20 20 20 20 23 20 6d 61 6e 64 61 74 6f 72 79 20 77 68 69 74 65 73 70 61 63 65 0d 0a | ........#.mandatory.whitespace.. |
| 29700 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 64 2b 20 20 20 20 20 20 20 | ......................\d+....... |
| 29720 | 20 20 20 20 20 20 20 23 20 64 65 63 69 6d 61 6c 20 6e 75 6d 62 65 72 0d 0a 20 20 20 20 20 20 20 | .......#.decimal.number......... |
| 29740 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 73 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...............\s*.............. |
| 29760 | 23 20 6f 70 74 69 6f 6e 61 6c 20 77 68 69 74 65 73 70 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 | #.optional.whitespace........... |
| 29780 | 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | .............:................#. |
| 297a0 | 61 20 72 65 61 6c 20 63 6f 6c 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | a.real.colon.................... |
| 297c0 | 20 20 20 20 2e 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 74 68 69 6e 67 20 | ......*..............#.anything. |
| 297e0 | 6e 6f 74 20 61 20 6e 65 77 6c 69 6e 65 20 74 69 6c 6c 20 65 6e 64 20 6f 66 20 6c 69 6e 65 0d 0a | not.a.newline.till.end.of.line.. |
| 29800 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | ..................)............. |
| 29820 | 20 20 20 20 2f 78 0d 0a 20 20 20 20 70 75 74 73 20 66 69 6c 65 2e 67 73 75 62 28 70 61 74 74 65 | ..../x......puts.file.gsub(patte |
| 29840 | 72 6e 2c 27 3c 48 31 3e 5c 31 3c 2f 48 31 3e 27 29 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | rn,'<H1>\1</H1>')..end..#------- |
| 29860 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 25 20 72 75 62 79 20 | ----------------------..#%.ruby. |
| 29880 | 2d 30 30 70 65 20 22 67 73 75 62 21 28 2f 5c 41 28 43 68 61 70 74 65 72 5c 73 2b 5c 64 2b 5c 73 | -00pe."gsub!(/\A(Chapter\s+\d+\s |
| 298a0 | 2a 3a 2e 2a 29 2f 2c 27 3c 48 31 3e 5c 31 3c 2f 48 31 3e 27 29 22 20 64 61 74 61 66 69 6c 65 0d | *:.*)/,'<H1>\1</H1>')".datafile. |
| 298c0 | 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | ...#!/usr/bin/ruby.-w..#-------- |
| 298e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 6f 72 20 66 69 6c 65 20 | ---------------------..for.file. |
| 29900 | 69 6e 20 41 52 47 56 0d 0a 20 20 20 20 66 69 6c 65 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 41 52 | in.ARGV......file.=.File.open(AR |
| 29920 | 47 56 2e 73 68 69 66 74 29 0d 0a 20 20 20 20 77 68 69 6c 65 20 66 69 6c 65 2e 67 65 74 73 28 27 | GV.shift)......while.file.gets(' |
| 29940 | 27 29 20 64 6f 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 61 63 68 20 72 65 61 64 20 69 73 | ').do.............#.each.read.is |
| 29960 | 20 61 20 70 61 72 61 67 72 61 70 68 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 22 63 68 75 | .a.paragraph..........print."chu |
| 29980 | 6e 6b 20 23 7b 24 2e 7d 20 69 6e 20 24 41 52 47 56 20 68 61 73 20 3c 3c 23 7b 24 31 7d 3e 3e 5c | nk.#{$.}.in.$ARGV.has.<<#{$1}>>\ |
| 299a0 | 6e 22 20 77 68 69 6c 65 20 2f 5e 53 54 41 52 54 28 2e 2a 3f 29 5e 45 4e 44 2f 6d 0d 0a 20 20 20 | n".while./^START(.*?)^END/m..... |
| 299c0 | 20 65 6e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .end............................ |
| 299e0 | 20 20 20 20 23 20 2f 6d 20 61 63 74 69 76 61 74 65 73 20 74 68 65 20 6d 75 6c 74 69 6c 69 6e 65 | ....#./m.activates.the.multiline |
| 29a00 | 20 6d 6f 64 65 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .mode..end..#------------------- |
| 29a20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 37 0d 0a 23 | ----------....#.@@PLEAC@@_6.7..# |
| 29a40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 | -----------------------------..$ |
| 29a60 | 2f 20 3d 20 6e 69 6c 3b 0d 0a 66 69 6c 65 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 22 64 61 74 61 | /.=.nil;..file.=.File.open("data |
| 29a80 | 66 69 6c 65 22 29 0d 0a 63 68 75 6e 6b 73 20 3d 20 66 69 6c 65 2e 67 65 74 73 2e 73 70 6c 69 74 | file")..chunks.=.file.gets.split |
| 29aa0 | 28 2f 70 61 74 74 65 72 6e 2f 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | (/pattern/)..#------------------ |
| 29ac0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 2e 43 68 2c 20 2e 53 65 20 61 6e 64 20 2e 53 73 20 | -----------..#..Ch,..Se.and..Ss. |
| 29ae0 | 64 69 76 69 64 65 20 63 68 75 6e 6b 73 20 6f 66 20 53 54 44 49 4e 0d 0a 63 68 75 6e 6b 73 20 3d | divide.chunks.of.STDIN..chunks.= |
| 29b00 | 20 67 65 74 73 28 6e 69 6c 29 2e 73 70 6c 69 74 28 2f 5e 5c 2e 28 43 68 7c 53 65 7c 53 73 29 24 | .gets(nil).split(/^\.(Ch|Se|Ss)$ |
| 29b20 | 2f 29 0d 0a 70 72 69 6e 74 20 22 49 20 72 65 61 64 20 23 7b 63 68 75 6e 6b 73 2e 73 69 7a 65 7d | /)..print."I.read.#{chunks.size} |
| 29b40 | 20 63 68 75 6e 6b 73 2e 5c 6e 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .chunks.\n"..#------------------ |
| 29b60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 38 | -----------......#.@@PLEAC@@_6.8 |
| 29b80 | 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 69 66 20 7e 2f 42 45 47 49 4e 2f 20 2e 2e | ..while.gets......if.~/BEGIN/... |
| 29ba0 | 20 7e 2f 45 4e 44 2f 0d 0a 20 20 20 20 20 20 20 20 23 20 6c 69 6e 65 20 66 61 6c 6c 73 20 62 65 | .~/END/..........#.line.falls.be |
| 29bc0 | 74 77 65 65 6e 20 42 45 47 49 4e 20 61 6e 64 20 45 4e 44 20 69 6e 63 6c 75 73 69 76 65 0d 0a 20 | tween.BEGIN.and.END.inclusive... |
| 29be0 | 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 69 | ...end..end....while.gets......i |
| 29c00 | 66 20 28 24 2e 20 3d 3d 20 66 69 72 73 74 6e 75 6d 29 20 2e 2e 20 28 24 2e 20 3d 3d 20 6c 61 73 | f.($..==.firstnum)....($..==.las |
| 29c20 | 74 6e 75 6d 29 0d 0a 20 20 20 20 20 20 20 20 23 20 6f 70 65 72 61 74 65 20 62 65 74 77 65 65 6e | tnum)..........#.operate.between |
| 29c40 | 20 66 69 72 73 74 6e 75 6d 20 61 6e 64 20 6c 61 73 74 6e 75 6d 20 6c 69 6e 65 20 6e 75 6d 62 65 | .firstnum.and.lastnum.line.numbe |
| 29c60 | 72 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 69 6e 20 72 75 62 79 20 76 65 72 | r......end..end....#.in.ruby.ver |
| 29c80 | 73 69 6f 6e 73 20 70 72 69 6f 72 20 74 6f 20 31 2e 38 2c 20 74 68 65 20 61 62 6f 76 65 20 74 77 | sions.prior.to.1.8,.the.above.tw |
| 29ca0 | 6f 20 63 6f 6e 64 69 74 69 6f 6e 61 6c 0d 0a 23 20 65 78 70 72 65 73 73 69 6f 6e 73 20 63 6f 75 | o.conditional..#.expressions.cou |
| 29cc0 | 6c 64 20 62 65 20 73 68 6f 72 74 65 6e 65 64 20 74 6f 3a 0d 0a 23 20 20 20 20 20 69 66 20 2f 42 | ld.be.shortened.to:..#.....if./B |
| 29ce0 | 45 47 49 4e 2f 20 2e 2e 20 2f 45 4e 44 2f 0d 0a 23 20 61 6e 64 0d 0a 23 20 20 20 20 20 69 66 20 | EGIN/..../END/..#.and..#.....if. |
| 29d00 | 66 69 72 73 74 6e 75 6d 20 2e 2e 20 6c 61 73 74 6e 75 6d 0d 0a 23 20 62 75 74 20 74 68 65 73 65 | firstnum....lastnum..#.but.these |
| 29d20 | 20 6e 6f 77 20 6f 6e 6c 79 20 77 6f 72 6b 20 74 68 69 73 20 77 61 79 20 66 72 6f 6d 20 74 68 65 | .now.only.work.this.way.from.the |
| 29d40 | 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .command.line....#-------------- |
| 29d60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 | ---------------....while.gets... |
| 29d80 | 20 20 20 69 66 20 7e 2f 42 45 47 49 4e 2f 20 2e 2e 2e 20 7e 2f 45 4e 44 2f 0d 0a 20 20 20 20 20 | ...if.~/BEGIN/.....~/END/....... |
| 29da0 | 20 20 20 23 20 6c 69 6e 65 20 66 61 6c 6c 73 20 62 65 74 77 65 65 6e 20 42 45 47 49 4e 20 61 6e | ...#.line.falls.between.BEGIN.an |
| 29dc0 | 64 20 45 4e 44 20 6f 6e 20 64 69 66 66 65 72 65 6e 74 20 6c 69 6e 65 73 0d 0a 20 20 20 20 65 6e | d.END.on.different.lines......en |
| 29de0 | 64 0d 0a 65 6e 64 0d 0a 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 69 66 20 28 24 2e | d..end....while.gets......if.($. |
| 29e00 | 20 3d 3d 20 66 69 72 73 74 29 20 2e 2e 2e 20 28 24 2e 20 3d 3d 20 6c 61 73 74 29 0d 0a 20 20 20 | .==.first).....($..==.last)..... |
| 29e20 | 20 20 20 20 20 23 20 6f 70 65 72 61 74 65 20 62 65 74 77 65 65 6e 20 66 69 72 73 74 20 61 6e 64 | .....#.operate.between.first.and |
| 29e40 | 20 6c 61 73 74 20 6c 69 6e 65 20 6e 75 6d 62 65 72 20 6f 6e 20 64 69 66 66 65 72 65 6e 74 20 6c | .last.line.number.on.different.l |
| 29e60 | 69 6e 65 73 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | ines......end..end....#--------- |
| 29e80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 63 6f 6d 6d 61 6e 64 2d | --------------------..#.command- |
| 29ea0 | 6c 69 6e 65 20 74 6f 20 70 72 69 6e 74 20 6c 69 6e 65 73 20 31 35 20 74 68 72 6f 75 67 68 20 31 | line.to.print.lines.15.through.1 |
| 29ec0 | 37 20 69 6e 63 6c 75 73 69 76 65 20 28 73 65 65 20 62 65 6c 6f 77 29 0d 0a 72 75 62 79 20 2d 6e | 7.inclusive.(see.below)..ruby.-n |
| 29ee0 | 65 20 27 70 72 69 6e 74 20 69 66 20 31 35 20 2e 2e 20 31 37 27 20 64 61 74 61 66 69 6c 65 0d 0a | e.'print.if.15....17'.datafile.. |
| 29f00 | 0d 0a 23 20 70 72 69 6e 74 20 6f 75 74 20 61 6c 6c 20 3c 58 4d 50 3e 20 2e 2e 20 3c 2f 58 4d 50 | ..#.print.out.all.<XMP>....</XMP |
| 29f20 | 3e 20 64 69 73 70 6c 61 79 73 20 66 72 6f 6d 20 48 54 4d 4c 20 64 6f 63 0d 0a 77 68 69 6c 65 20 | >.displays.from.HTML.doc..while. |
| 29f40 | 67 65 74 73 0d 0a 20 20 20 20 70 72 69 6e 74 20 69 66 20 7e 25 72 23 3c 58 4d 50 3e 23 69 20 2e | gets......print.if.~%r#<XMP>#i.. |
| 29f60 | 2e 20 7e 25 72 23 3c 2f 58 4d 50 3e 23 69 3b 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 73 61 6d 65 2c 20 | ..~%r#</XMP>#i;..end....#.same,. |
| 29f80 | 62 75 74 20 61 73 20 73 68 65 6c 6c 20 63 6f 6d 6d 61 6e 64 0d 0a 23 20 72 75 62 79 20 2d 6e 65 | but.as.shell.command..#.ruby.-ne |
| 29fa0 | 20 27 70 72 69 6e 74 20 69 66 20 25 72 23 3c 58 4d 50 3e 23 69 20 2e 2e 20 25 72 23 3c 2f 58 4d | .'print.if.%r#<XMP>#i....%r#</XM |
| 29fc0 | 50 3e 23 69 27 20 64 6f 63 75 6d 65 6e 74 2e 68 74 6d 6c 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | P>#i'.document.html..#---------- |
| 29fe0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 72 75 62 79 20 2d 6e 65 20 | -------------------..#.ruby.-ne. |
| 2a000 | 27 42 45 47 49 4e 20 7b 20 24 74 6f 70 3d 33 3b 20 24 62 6f 74 74 6f 6d 3d 35 20 7d 3b 20 5c 0d | 'BEGIN.{.$top=3;.$bottom=5.};.\. |
| 2a020 | 0a 23 20 20 20 20 20 70 72 69 6e 74 20 69 66 20 24 74 6f 70 20 2e 2e 20 24 62 6f 74 74 6f 6d 27 | .#.....print.if.$top....$bottom' |
| 2a040 | 20 2f 65 74 63 2f 70 61 73 73 77 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 | ./etc/passwd.................#.. |
| 2a060 | 46 41 49 4c 53 0d 0a 23 20 72 75 62 79 20 2d 6e 65 20 27 42 45 47 49 4e 20 7b 20 24 74 6f 70 3d | FAILS..#.ruby.-ne.'BEGIN.{.$top= |
| 2a080 | 33 3b 20 24 62 6f 74 74 6f 6d 3d 35 20 7d 3b 20 5c 0d 0a 23 20 20 20 20 20 70 72 69 6e 74 20 69 | 3;.$bottom=5.};.\..#.....print.i |
| 2a0a0 | 66 20 24 2e 20 3d 3d 20 24 74 6f 70 20 2e 2e 20 24 2e 20 3d 3d 20 20 24 62 6f 74 74 6f 6d 27 20 | f.$..==.$top....$..==..$bottom'. |
| 2a0c0 | 2f 65 74 63 2f 70 61 73 73 77 64 20 20 20 20 23 20 77 6f 72 6b 73 0d 0a 23 20 72 75 62 79 20 2d | /etc/passwd....#.works..#.ruby.- |
| 2a0e0 | 6e 65 20 27 70 72 69 6e 74 20 69 66 20 33 20 2e 2e 20 35 27 20 2f 65 74 63 2f 70 61 73 73 77 64 | ne.'print.if.3....5'./etc/passwd |
| 2a100 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6c 73 6f 20 77 6f 72 6b 73 | ....................#.also.works |
| 2a120 | 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#----------------------------- |
| 2a140 | 0d 0a 70 72 69 6e 74 20 69 66 20 7e 2f 62 65 67 69 6e 2f 20 2e 2e 20 7e 2f 65 6e 64 2f 3b 0d 0a | ..print.if.~/begin/....~/end/;.. |
| 2a160 | 70 72 69 6e 74 20 69 66 20 7e 2f 62 65 67 69 6e 2f 20 2e 2e 2e 20 7e 2f 65 6e 64 2f 3b 0d 0a 23 | print.if.~/begin/.....~/end/;..# |
| 2a180 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 77 | -----------------------------..w |
| 2a1a0 | 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 24 69 6e 5f 68 65 61 64 65 72 20 3d 20 24 2e 20 3d | hile.gets......$in_header.=.$..= |
| 2a1c0 | 3d 20 31 20 20 2e 2e 20 7e 2f 5e 24 2f 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 0d 0a 20 20 | =.1.....~/^$/.?.true.:.false.... |
| 2a1e0 | 20 20 24 69 6e 5f 62 6f 64 79 20 20 20 3d 20 7e 2f 5e 24 2f 20 2e 2e 20 41 52 47 46 2e 65 6f 66 | ..$in_body...=.~/^$/....ARGF.eof |
| 2a200 | 20 3f 20 74 72 75 65 20 3a 20 66 61 6c 73 65 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | .?.true.:.false..end..#--------- |
| 2a220 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 65 65 6e 20 3d 20 7b 7d 0d | --------------------..seen.=.{}. |
| 2a240 | 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 6e 65 78 74 20 75 | .ARGF.each.do.|line|......next.u |
| 2a260 | 6e 6c 65 73 73 20 6c 69 6e 65 20 3d 7e 20 2f 5e 46 72 6f 6d 3a 3f 5c 73 2f 69 20 2e 2e 20 6c 69 | nless.line.=~./^From:?\s/i....li |
| 2a280 | 6e 65 20 3d 7e 20 2f 5e 24 2f 3b 0d 0a 20 20 20 20 6c 69 6e 65 2e 73 63 61 6e 28 25 72 2f 28 5b | ne.=~./^$/;......line.scan(%r/([ |
| 2a2a0 | 5e 3c 3e 28 29 2c 3b 5c 73 5d 2b 5c 40 5b 5e 3c 3e 28 29 2c 3b 5c 73 5d 2b 29 2f 29 2e 65 61 63 | ^<>(),;\s]+\@[^<>(),;\s]+)/).eac |
| 2a2c0 | 68 20 64 6f 20 7c 61 64 64 72 7c 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 61 64 64 72 20 75 | h.do.|addr|..........puts.addr.u |
| 2a2e0 | 6e 6c 65 73 73 20 73 65 65 6e 5b 61 64 64 72 5d 0d 0a 20 20 20 20 20 20 20 20 73 65 65 6e 5b 61 | nless.seen[addr]..........seen[a |
| 2a300 | 64 64 72 5d 20 7c 7c 3d 20 31 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 | ddr].||=.1......end..end......#. |
| 2a320 | 40 40 50 4c 45 41 43 40 40 5f 36 2e 39 0d 0a 64 65 66 20 67 6c 6f 62 32 70 61 74 28 67 6c 6f 62 | @@PLEAC@@_6.9..def.glob2pat(glob |
| 2a340 | 73 74 72 29 0d 0a 20 20 20 20 70 61 74 6d 61 70 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 27 2a | str)......patmap.=.{..........'* |
| 2a360 | 27 20 3d 3e 20 27 2e 2a 27 2c 0d 0a 20 20 20 20 20 20 20 20 27 3f 27 20 3d 3e 20 27 2e 27 2c 0d | '.=>.'.*',..........'?'.=>.'.',. |
| 2a380 | 0a 20 20 20 20 20 20 20 20 27 5b 27 20 3d 3e 20 27 5b 27 2c 0d 0a 20 20 20 20 20 20 20 20 27 5d | .........'['.=>.'[',..........'] |
| 2a3a0 | 27 20 3d 3e 20 27 5d 27 2c 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 67 6c 6f 62 73 74 72 2e 67 73 | '.=>.']',......}......globstr.gs |
| 2a3c0 | 75 62 21 28 2f 28 2e 29 2f 29 20 7b 20 7c 63 7c 20 70 61 74 6d 61 70 5b 63 5d 20 7c 7c 20 52 65 | ub!(/(.)/).{.|c|.patmap[c].||.Re |
| 2a3e0 | 67 65 78 70 3a 3a 65 73 63 61 70 65 28 63 29 20 7d 0d 0a 20 20 20 20 27 5e 27 20 2b 20 67 6c 6f | gexp::escape(c).}......'^'.+.glo |
| 2a400 | 62 73 74 72 20 2b 20 27 24 27 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | bstr.+.'$'..end......#.@@PLEAC@@ |
| 2a420 | 5f 36 2e 31 30 0d 0a 23 20 61 76 6f 69 64 20 69 6e 74 65 72 70 6f 6c 61 74 69 6e 67 20 70 61 74 | _6.10..#.avoid.interpolating.pat |
| 2a440 | 74 65 72 6e 73 20 6c 69 6b 65 20 74 68 69 73 20 69 66 20 74 68 65 20 70 61 74 74 65 72 6e 0d 0a | terns.like.this.if.the.pattern.. |
| 2a460 | 23 20 69 73 6e 27 74 20 67 6f 69 6e 67 20 74 6f 20 63 68 61 6e 67 65 3a 0d 0a 70 61 74 74 65 72 | #.isn't.going.to.change:..patter |
| 2a480 | 6e 20 3d 20 41 52 47 56 2e 73 68 69 66 74 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 | n.=.ARGV.shift..ARGF.each.do.|li |
| 2a4a0 | 6e 65 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 6c 69 6e 65 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f | ne|......print.line.if.line.=~./ |
| 2a4c0 | 23 7b 70 61 74 74 65 72 6e 7d 2f 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 74 68 65 20 61 62 6f 76 65 20 | #{pattern}/..end....#.the.above. |
| 2a4e0 | 63 72 65 61 74 65 73 20 61 20 6e 65 77 20 72 65 67 65 78 20 65 61 63 68 20 69 74 65 72 61 74 69 | creates.a.new.regex.each.iterati |
| 2a500 | 6f 6e 2e 20 49 6e 73 74 65 61 64 2c 0d 0a 23 20 75 73 65 20 74 68 65 20 2f 6f 20 6d 6f 64 69 66 | on..Instead,..#.use.the./o.modif |
| 2a520 | 69 65 72 20 73 6f 20 74 68 65 20 72 65 67 65 78 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 6f 6e 6c | ier.so.the.regex.is.compiled.onl |
| 2a540 | 79 20 6f 6e 63 65 0d 0a 0d 0a 70 61 74 74 65 72 6e 20 3d 20 41 52 47 56 2e 73 68 69 66 74 0d 0a | y.once....pattern.=.ARGV.shift.. |
| 2a560 | 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 6c | ARGF.each.do.|line|......print.l |
| 2a580 | 69 6e 65 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 23 7b 70 61 74 74 65 72 6e 7d 2f 6f 0d 0a 65 6e | ine.if.line.=~./#{pattern}/o..en |
| 2a5a0 | 64 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | d....#-------------------------- |
| 2a5c0 | 2d 2d 2d 0d 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 0d 0a 23 20 70 6f 70 67 72 65 | ---....#!/usr/bin/ruby..#.popgre |
| 2a5e0 | 70 31 20 2d 20 67 72 65 70 20 66 6f 72 20 61 62 62 72 65 76 69 61 74 69 6f 6e 73 20 6f 66 20 70 | p1.-.grep.for.abbreviations.of.p |
| 2a600 | 6c 61 63 65 73 20 74 68 61 74 20 73 61 79 20 22 70 6f 70 22 0d 0a 23 20 76 65 72 73 69 6f 6e 20 | laces.that.say."pop"..#.version. |
| 2a620 | 31 3a 20 73 6c 6f 77 20 62 75 74 20 6f 62 76 69 6f 75 73 20 77 61 79 0d 0a 70 6f 70 73 74 61 74 | 1:.slow.but.obvious.way..popstat |
| 2a640 | 65 73 20 3d 20 25 77 28 43 4f 20 4f 4e 20 4d 49 20 57 49 20 4d 4e 29 0d 0a 41 52 47 46 2e 65 61 | es.=.%w(CO.ON.MI.WI.MN)..ARGF.ea |
| 2a660 | 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 70 6f 70 73 74 61 74 65 73 2e 65 61 63 68 | ch.do.|line|......popstates.each |
| 2a680 | 20 64 6f 20 7c 73 74 61 74 65 7c 0d 0a 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 20 3d 7e 20 | .do.|state|..........if.line.=~. |
| 2a6a0 | 2f 5c 62 23 7b 73 74 61 74 65 7d 5c 62 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6e | /\b#{state}\b/..............prin |
| 2a6c0 | 74 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 73 74 0d 0a 20 20 20 20 20 20 | t.line..............last........ |
| 2a6e0 | 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | ..end......end..end....#-------- |
| 2a700 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 | ---------------------..#!/usr/bi |
| 2a720 | 6e 2f 72 75 62 79 0d 0a 23 20 70 6f 70 67 72 65 70 32 20 2d 20 67 72 65 70 20 66 6f 72 20 61 62 | n/ruby..#.popgrep2.-.grep.for.ab |
| 2a740 | 62 72 65 76 69 61 74 69 6f 6e 73 20 6f 66 20 70 6c 61 63 65 73 20 74 68 61 74 20 73 61 79 20 22 | breviations.of.places.that.say." |
| 2a760 | 70 6f 70 22 0d 0a 23 20 76 65 72 73 69 6f 6e 20 32 3a 20 65 76 61 6c 20 73 74 72 69 6e 67 73 3b | pop"..#.version.2:.eval.strings; |
| 2a780 | 20 66 61 73 74 20 62 75 74 20 68 61 72 64 20 74 6f 20 71 75 6f 74 65 0d 0a 70 6f 70 73 74 61 74 | .fast.but.hard.to.quote..popstat |
| 2a7a0 | 65 73 20 3d 20 25 77 28 43 4f 20 4f 4e 20 4d 49 20 57 49 20 4d 4e 29 0d 0a 63 6f 64 65 20 3d 20 | es.=.%w(CO.ON.MI.WI.MN)..code.=. |
| 2a7c0 | 22 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 5c 6e 22 0d 0a 70 6f 70 73 74 61 74 | "ARGF.each.do.|line|\n"..popstat |
| 2a7e0 | 65 73 2e 65 61 63 68 20 64 6f 20 7c 73 74 61 74 65 7c 0d 0a 20 20 20 20 63 6f 64 65 20 2b 3d 20 | es.each.do.|state|......code.+=. |
| 2a800 | 22 5c 74 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 5c 5c 62 23 7b 73 74 61 74 65 7d 5c 5c 62 2f 3b 20 | "\tif.line.=~./\\b#{state}\\b/;. |
| 2a820 | 70 72 69 6e 74 28 6c 69 6e 65 29 3b 20 6e 65 78 74 3b 20 65 6e 64 5c 6e 22 0d 0a 65 6e 64 0d 0a | print(line);.next;.end\n"..end.. |
| 2a840 | 63 6f 64 65 20 2b 3d 20 22 65 6e 64 5c 6e 22 0d 0a 70 72 69 6e 74 20 22 43 4f 44 45 20 49 53 5c | code.+=."end\n"..print."CODE.IS\ |
| 2a860 | 6e 2d 2d 2d 5c 6e 23 7b 63 6f 64 65 7d 5c 6e 2d 2d 2d 5c 6e 22 20 69 66 20 66 61 6c 73 65 20 23 | n---\n#{code}\n---\n".if.false.# |
| 2a880 | 20 74 75 72 6e 20 6f 6e 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a 65 76 61 6c 20 63 6f 64 | .turn.on.for.debugging..eval.cod |
| 2a8a0 | 65 0d 0a 0d 0a 23 20 43 4f 44 45 20 49 53 0d 0a 23 20 2d 2d 2d 0d 0a 23 20 41 52 47 46 2e 65 61 | e....#.CODE.IS..#.---..#.ARGF.ea |
| 2a8c0 | 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 20 | ch.do.|line|..#.........if.line. |
| 2a8e0 | 3d 7e 20 2f 5c 62 43 4f 5c 62 2f 3b 20 70 72 69 6e 74 28 6c 69 6e 65 29 3b 20 6e 65 78 74 3b 20 | =~./\bCO\b/;.print(line);.next;. |
| 2a900 | 65 6e 64 0d 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 5c 62 4f 4e 5c | end..#.........if.line.=~./\bON\ |
| 2a920 | 62 2f 3b 20 70 72 69 6e 74 28 6c 69 6e 65 29 3b 20 6e 65 78 74 3b 20 65 6e 64 0d 0a 23 20 20 20 | b/;.print(line);.next;.end..#... |
| 2a940 | 20 20 20 20 20 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 5c 62 4d 49 5c 62 2f 3b 20 70 72 69 6e 74 | ......if.line.=~./\bMI\b/;.print |
| 2a960 | 28 6c 69 6e 65 29 3b 20 6e 65 78 74 3b 20 65 6e 64 0d 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 | (line);.next;.end..#.........if. |
| 2a980 | 6c 69 6e 65 20 3d 7e 20 2f 5c 62 57 49 5c 62 2f 3b 20 70 72 69 6e 74 28 6c 69 6e 65 29 3b 20 6e | line.=~./\bWI\b/;.print(line);.n |
| 2a9a0 | 65 78 74 3b 20 65 6e 64 0d 0a 23 20 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f | ext;.end..#.........if.line.=~./ |
| 2a9c0 | 5c 62 4d 4e 5c 62 2f 3b 20 70 72 69 6e 74 28 6c 69 6e 65 29 3b 20 6e 65 78 74 3b 20 65 6e 64 0d | \bMN\b/;.print(line);.next;.end. |
| 2a9e0 | 0a 23 20 65 6e 64 0d 0a 23 0d 0a 23 20 2d 2d 2d 0d 0a 0d 0a 23 23 20 61 6c 74 65 72 6e 61 74 69 | .#.end..#..#.---....##.alternati |
| 2aa00 | 76 65 6c 79 2c 20 74 68 65 20 73 61 6d 65 20 69 64 65 61 20 61 73 20 61 62 6f 76 65 20 62 75 74 | vely,.the.same.idea.as.above.but |
| 2aa20 | 20 63 6f 6d 70 69 6c 69 6e 67 0d 0a 23 23 20 74 6f 20 61 20 63 61 73 65 20 73 74 61 74 65 6d 65 | .compiling..##.to.a.case.stateme |
| 2aa40 | 6e 74 3a 20 28 6e 6f 74 20 69 6e 20 70 65 72 6c 63 6f 6f 6b 62 6f 6f 6b 29 0d 0a 23 21 2f 75 73 | nt:.(not.in.perlcookbook)..#!/us |
| 2aa60 | 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 70 6f 70 67 72 65 70 32 2e 35 20 2d 20 67 72 | r/bin/ruby.-w..#.popgrep2.5.-.gr |
| 2aa80 | 65 70 20 66 6f 72 20 61 62 62 72 65 76 69 61 74 69 6f 6e 73 20 6f 66 20 70 6c 61 63 65 73 20 74 | ep.for.abbreviations.of.places.t |
| 2aaa0 | 68 61 74 20 73 61 79 20 22 70 6f 70 22 0d 0a 23 20 76 65 72 73 69 6f 6e 20 32 2e 35 3a 20 65 76 | hat.say."pop"..#.version.2.5:.ev |
| 2aac0 | 61 6c 20 73 74 72 69 6e 67 73 3b 20 66 61 73 74 20 62 75 74 20 68 61 72 64 20 74 6f 20 71 75 6f | al.strings;.fast.but.hard.to.quo |
| 2aae0 | 74 65 0d 0a 70 6f 70 73 74 61 74 65 73 20 3d 20 25 77 28 43 4f 20 4f 4e 20 4d 49 20 57 49 20 4d | te..popstates.=.%w(CO.ON.MI.WI.M |
| 2ab00 | 4e 29 0d 0a 63 6f 64 65 20 3d 20 22 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 5c | N)..code.=."ARGF.each.do.|line|\ |
| 2ab20 | 6e 20 20 20 20 63 61 73 65 20 6c 69 6e 65 5c 6e 22 0d 0a 70 6f 70 73 74 61 74 65 73 2e 65 61 63 | n....case.line\n"..popstates.eac |
| 2ab40 | 68 20 64 6f 20 7c 73 74 61 74 65 7c 0d 0a 20 20 20 20 63 6f 64 65 20 2b 3d 20 22 20 20 20 20 20 | h.do.|state|......code.+=."..... |
| 2ab60 | 20 20 20 77 68 65 6e 20 2f 5c 5c 62 23 7b 73 74 61 74 65 7d 5c 5c 62 2f 20 3a 20 70 72 69 6e 74 | ...when./\\b#{state}\\b/.:.print |
| 2ab80 | 20 6c 69 6e 65 5c 6e 22 0d 0a 65 6e 64 0d 0a 63 6f 64 65 20 2b 3d 20 22 20 20 20 20 65 6e 64 5c | .line\n"..end..code.+=."....end\ |
| 2aba0 | 6e 65 6e 64 5c 6e 22 0d 0a 70 72 69 6e 74 20 22 43 4f 44 45 20 49 53 5c 6e 2d 2d 2d 5c 6e 23 7b | nend\n"..print."CODE.IS\n---\n#{ |
| 2abc0 | 63 6f 64 65 7d 5c 6e 2d 2d 2d 5c 6e 22 20 69 66 20 66 61 6c 73 65 20 23 20 74 75 72 6e 20 6f 6e | code}\n---\n".if.false.#.turn.on |
| 2abe0 | 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 0d 0a 65 76 61 6c 20 63 6f 64 65 0d 0a 0d 0a 23 20 43 | .for.debugging..eval.code....#.C |
| 2ac00 | 4f 44 45 20 49 53 0d 0a 23 20 2d 2d 2d 0d 0a 23 20 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c | ODE.IS..#.---..#.ARGF.each.do.|l |
| 2ac20 | 69 6e 65 7c 0d 0a 23 20 20 20 20 20 63 61 73 65 20 6c 69 6e 65 0d 0a 23 20 20 20 20 20 20 20 20 | ine|..#.....case.line..#........ |
| 2ac40 | 20 77 68 65 6e 20 2f 5c 62 43 4f 5c 62 2f 20 3a 20 70 72 69 6e 74 20 6c 69 6e 65 0d 0a 23 20 20 | .when./\bCO\b/.:.print.line..#.. |
| 2ac60 | 20 20 20 20 20 20 20 77 68 65 6e 20 2f 5c 62 4f 4e 5c 62 2f 20 3a 20 70 72 69 6e 74 20 6c 69 6e | .......when./\bON\b/.:.print.lin |
| 2ac80 | 65 0d 0a 23 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 2f 5c 62 4d 49 5c 62 2f 20 3a 20 70 72 69 | e..#.........when./\bMI\b/.:.pri |
| 2aca0 | 6e 74 20 6c 69 6e 65 0d 0a 23 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 2f 5c 62 57 49 5c 62 2f | nt.line..#.........when./\bWI\b/ |
| 2acc0 | 20 3a 20 70 72 69 6e 74 20 6c 69 6e 65 0d 0a 23 20 20 20 20 20 20 20 20 20 77 68 65 6e 20 2f 5c | .:.print.line..#.........when./\ |
| 2ace0 | 62 4d 4e 5c 62 2f 20 3a 20 70 72 69 6e 74 20 6c 69 6e 65 0d 0a 23 20 20 20 20 20 65 6e 64 0d 0a | bMN\b/.:.print.line..#.....end.. |
| 2ad00 | 23 20 65 6e 64 0d 0a 23 0d 0a 23 20 2d 2d 2d 0d 0a 0d 0a 23 20 4e 6f 74 65 3a 20 28 61 62 6f 76 | #.end..#..#.---....#.Note:.(abov |
| 2ad20 | 65 29 20 52 75 62 79 20 31 2e 38 2b 20 61 6c 6c 6f 77 73 20 74 68 65 20 27 77 68 65 6e 20 45 58 | e).Ruby.1.8+.allows.the.'when.EX |
| 2ad40 | 50 20 3a 20 45 58 50 52 27 20 6f 6e 20 6f 6e 65 20 6c 69 6e 65 0d 0a 23 20 77 69 74 68 20 74 68 | P.:.EXPR'.on.one.line..#.with.th |
| 2ad60 | 65 20 63 6f 6c 6f 6e 20 73 65 70 61 72 61 74 6f 72 2e 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | e.colon.separator.....#--------- |
| 2ad80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e | --------------------..#!/usr/bin |
| 2ada0 | 2f 72 75 62 79 0d 0a 23 20 70 6f 70 67 72 65 70 33 20 2d 20 67 72 65 70 20 66 6f 72 20 61 62 62 | /ruby..#.popgrep3.-.grep.for.abb |
| 2adc0 | 72 65 76 69 61 74 69 6f 6e 73 20 6f 66 20 70 6c 61 63 65 73 20 74 68 61 74 20 73 61 79 20 22 70 | reviations.of.places.that.say."p |
| 2ade0 | 6f 70 22 0d 0a 23 20 76 65 72 73 69 6f 6e 33 3a 20 62 75 69 6c 64 20 61 20 6d 61 74 63 68 5f 61 | op"..#.version3:.build.a.match_a |
| 2ae00 | 6e 79 20 66 75 6e 63 74 69 6f 6e 0d 0a 70 6f 70 73 74 61 74 65 73 20 3d 20 25 77 28 43 4f 20 4f | ny.function..popstates.=.%w(CO.O |
| 2ae20 | 4e 20 4d 49 20 57 49 20 4d 4e 29 0d 0a 65 78 70 72 20 3d 20 70 6f 70 73 74 61 74 65 73 2e 6d 61 | N.MI.WI.MN)..expr.=.popstates.ma |
| 2ae40 | 70 7b 7c 65 7c 22 6c 69 6e 65 20 3d 7e 20 2f 5c 5c 62 23 7b 65 7d 5c 5c 62 2f 22 7d 2e 6a 6f 69 | p{|e|"line.=~./\\b#{e}\\b/"}.joi |
| 2ae60 | 6e 28 27 7c 7c 27 29 0d 0a 65 76 61 6c 20 22 64 65 66 20 6d 61 74 63 68 5f 61 6e 79 28 6c 69 6e | n('||')..eval."def.match_any(lin |
| 2ae80 | 65 29 3b 20 23 7b 65 78 70 72 7d 3b 65 6e 64 22 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c | e);.#{expr};end"..ARGF.each.do.| |
| 2aea0 | 6c 69 6e 65 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 6c 69 6e 65 20 69 66 20 6d 61 74 63 68 5f 61 | line|......print.line.if.match_a |
| 2aec0 | 6e 79 28 6c 69 6e 65 29 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ny(line)..end..#---------------- |
| 2aee0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23 23 20 20 62 75 69 6c 64 69 6e 67 20 61 20 | -------------....##..building.a. |
| 2af00 | 6d 61 74 63 68 5f 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 20 74 72 69 76 69 61 6c 0d | match_all.function.is.a.trivial. |
| 2af20 | 0a 23 23 20 20 73 75 62 73 74 69 74 75 74 69 6f 6e 20 6f 66 20 26 26 20 66 6f 72 20 7c 7c 0d 0a | .##..substitution.of.&&.for.||.. |
| 2af40 | 23 23 20 20 68 65 72 65 20 69 73 20 61 20 67 65 6e 65 72 61 6c 69 7a 65 64 20 65 78 61 6d 70 6c | ##..here.is.a.generalized.exampl |
| 2af60 | 65 3a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 23 20 67 72 65 70 61 | e:..#!/usr/bin/ruby.-w..##.grepa |
| 2af80 | 75 74 68 20 2d 20 70 72 69 6e 74 20 6c 69 6e 65 73 20 74 68 61 74 20 6d 65 6e 74 69 6f 6e 20 62 | uth.-.print.lines.that.mention.b |
| 2afa0 | 6f 74 68 20 66 6f 6f 20 61 6e 64 20 62 61 72 0d 0a 63 6c 61 73 73 20 4d 75 6c 74 69 4d 61 74 63 | oth.foo.and.bar..class.MultiMatc |
| 2afc0 | 68 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 2a 70 61 74 74 65 72 6e 73 29 | h......def.initialize(*patterns) |
| 2afe0 | 0d 0a 20 20 20 20 20 20 20 20 5f 61 6e 79 20 3d 20 62 75 69 6c 64 5f 6d 61 74 63 68 28 27 7c 7c | .........._any.=.build_match('|| |
| 2b000 | 27 2c 70 61 74 74 65 72 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 5f 61 6c 6c 20 3d 20 62 75 69 6c | ',patterns).........._all.=.buil |
| 2b020 | 64 5f 6d 61 74 63 68 28 27 26 26 27 2c 70 61 74 74 65 72 6e 73 29 0d 0a 20 20 20 20 20 20 20 20 | d_match('&&',patterns).......... |
| 2b040 | 65 76 61 6c 20 22 64 65 66 20 6d 61 74 63 68 5f 61 6e 79 28 6c 69 6e 65 29 3b 23 7b 5f 61 6e 79 | eval."def.match_any(line);#{_any |
| 2b060 | 7d 3b 65 6e 64 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 65 76 61 6c 20 22 64 65 66 20 6d 61 74 63 | };end\n"..........eval."def.matc |
| 2b080 | 68 5f 61 6c 6c 28 6c 69 6e 65 29 3b 23 7b 5f 61 6c 6c 7d 3b 65 6e 64 5c 6e 22 0d 0a 20 20 20 20 | h_all(line);#{_all};end\n"...... |
| 2b0a0 | 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 62 75 69 6c 64 5f 6d 61 74 63 68 28 73 79 6d 2c 61 | ..end......def.build_match(sym,a |
| 2b0c0 | 72 67 73 29 0d 0a 20 20 20 20 20 20 20 20 61 72 67 73 2e 6d 61 70 7b 7c 65 7c 22 6c 69 6e 65 20 | rgs)..........args.map{|e|"line. |
| 2b0e0 | 3d 7e 20 2f 23 7b 65 7d 2f 22 7d 2e 6a 6f 69 6e 28 73 79 6d 29 0d 0a 20 20 20 20 65 6e 64 0d 0a | =~./#{e}/"}.join(sym)......end.. |
| 2b100 | 65 6e 64 0d 0a 0d 0a 6d 6d 20 3d 20 4d 75 6c 74 69 4d 61 74 63 68 2e 6e 65 77 28 27 66 6f 6f 27 | end....mm.=.MultiMatch.new('foo' |
| 2b120 | 2c 27 62 61 72 27 29 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 | ,'bar')..ARGF.each.do.|line|.... |
| 2b140 | 20 20 70 72 69 6e 74 20 6c 69 6e 65 20 69 66 20 6d 6d 2e 6d 61 74 63 68 5f 61 6c 6c 28 6c 69 6e | ..print.line.if.mm.match_all(lin |
| 2b160 | 65 29 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | e)..end..#---------------------- |
| 2b180 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 0d 0a 23 20 70 6f | -------....#!/usr/bin/ruby..#.po |
| 2b1a0 | 70 67 72 65 70 34 20 2d 20 67 72 65 70 20 66 6f 72 20 61 62 62 72 65 76 69 61 74 69 6f 6e 73 20 | pgrep4.-.grep.for.abbreviations. |
| 2b1c0 | 6f 66 20 70 6c 61 63 65 73 20 74 68 61 74 20 73 61 79 20 22 70 6f 70 22 0d 0a 23 20 76 65 72 73 | of.places.that.say."pop"..#.vers |
| 2b1e0 | 69 6f 6e 34 3a 20 70 72 65 74 74 79 20 66 61 73 74 2c 20 62 75 74 20 73 69 6d 70 6c 65 3a 20 63 | ion4:.pretty.fast,.but.simple:.c |
| 2b200 | 6f 6d 70 69 6c 65 20 61 6c 6c 20 72 65 27 73 20 66 69 72 73 74 3a 0d 0a 70 6f 70 73 74 61 74 65 | ompile.all.re's.first:..popstate |
| 2b220 | 73 20 3d 20 25 77 28 43 4f 20 4f 4e 20 4d 49 20 57 49 20 4d 4e 29 0d 0a 70 6f 70 73 74 61 74 65 | s.=.%w(CO.ON.MI.WI.MN)..popstate |
| 2b240 | 73 20 3d 20 70 6f 70 73 74 61 74 65 73 2e 6d 61 70 7b 7c 72 65 7c 20 25 72 2f 5c 62 23 7b 72 65 | s.=.popstates.map{|re|.%r/\b#{re |
| 2b260 | 7d 5c 62 2f 7d 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 | }\b/}..ARGF.each.do.|line|...... |
| 2b280 | 70 6f 70 73 74 61 74 65 73 2e 65 61 63 68 20 64 6f 20 7c 73 74 61 74 65 5f 72 65 7c 0d 0a 20 20 | popstates.each.do.|state_re|.... |
| 2b2a0 | 20 20 20 20 20 20 69 66 20 6c 69 6e 65 20 3d 7e 20 73 74 61 74 65 5f 72 65 0d 0a 20 20 20 20 20 | ......if.line.=~.state_re....... |
| 2b2c0 | 20 20 20 20 20 20 20 70 72 69 6e 74 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 | .......print.line..............b |
| 2b2e0 | 72 65 61 6b 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d | reak..........end......end..end. |
| 2b300 | 0a 0d 0a 23 23 20 73 70 65 65 64 73 20 74 72 69 61 6c 73 20 6f 6e 20 74 68 65 20 6a 61 72 67 6f | ...##.speeds.trials.on.the.jargo |
| 2b320 | 6e 20 66 69 6c 65 28 34 31 32 29 3a 20 32 36 30 30 36 20 6c 69 6e 65 73 2c 20 31 2e 33 4d 42 0d | n.file(412):.26006.lines,.1.3MB. |
| 2b340 | 0a 23 23 20 70 6f 70 67 72 65 70 31 20 20 20 3d 3e 20 37 2e 30 34 30 73 0d 0a 23 23 20 70 6f 70 | .##.popgrep1...=>.7.040s..##.pop |
| 2b360 | 67 72 65 70 32 20 20 20 3d 3e 20 30 2e 36 35 36 73 0d 0a 23 23 20 70 6f 70 67 72 65 70 32 2e 35 | grep2...=>.0.656s..##.popgrep2.5 |
| 2b380 | 20 3d 3e 20 30 2e 36 33 33 73 0d 0a 23 23 20 70 6f 70 67 72 65 70 33 20 20 20 3d 3e 20 30 2e 36 | .=>.0.633s..##.popgrep3...=>.0.6 |
| 2b3a0 | 37 35 73 0d 0a 23 23 20 70 6f 70 67 72 65 70 34 20 20 20 3d 3e 20 31 2e 30 32 37 73 0d 0a 0d 0a | 75s..##.popgrep4...=>.1.027s.... |
| 2b3c0 | 23 20 75 6e 6c 65 73 73 20 73 70 65 65 64 20 69 73 20 63 72 69 74 69 63 69 61 6c 2c 20 74 68 65 | #.unless.speed.is.criticial,.the |
| 2b3e0 | 20 74 65 63 68 6e 69 71 75 65 20 69 6e 20 70 6f 70 67 72 65 70 34 20 69 73 20 61 0d 0a 23 20 72 | .technique.in.popgrep4.is.a..#.r |
| 2b400 | 65 61 73 6f 6e 61 62 6c 65 20 62 61 6c 61 6e 63 65 20 62 65 74 77 65 65 6e 20 73 70 65 65 64 20 | easonable.balance.between.speed. |
| 2b420 | 61 6e 64 20 6c 6f 67 69 63 61 6c 20 73 69 6d 70 6c 69 63 69 74 79 2e 0d 0a 0d 0a 0d 0a 23 20 40 | and.logical.simplicity.......#.@ |
| 2b440 | 40 50 4c 45 41 43 40 40 5f 36 2e 31 31 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 70 72 69 6e 74 20 | @PLEAC@@_6.11..begin......print. |
| 2b460 | 22 50 61 74 74 65 72 6e 3f 20 22 0d 0a 20 20 20 20 70 61 74 20 3d 20 24 73 74 64 69 6e 2e 67 65 | "Pattern?."......pat.=.$stdin.ge |
| 2b480 | 74 73 2e 63 68 6f 6d 70 0d 0a 20 20 20 20 52 65 67 65 78 70 2e 6e 65 77 28 70 61 74 29 0d 0a 72 | ts.chomp......Regexp.new(pat)..r |
| 2b4a0 | 65 73 63 75 65 0d 0a 20 20 20 20 77 61 72 6e 20 22 49 6e 76 61 6c 69 64 20 50 61 74 74 65 72 6e | escue......warn."Invalid.Pattern |
| 2b4c0 | 22 0d 0a 20 20 20 20 72 65 74 72 79 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | "......retry..end......#.@@PLEAC |
| 2b4e0 | 40 40 5f 36 2e 31 33 0d 0a 23 20 75 73 65 73 20 74 68 65 20 27 61 6d 61 74 63 68 27 20 65 78 74 | @@_6.13..#.uses.the.'amatch'.ext |
| 2b500 | 65 6e 73 69 6f 6e 20 66 6f 75 6e 64 20 6f 6e 3a 0d 0a 23 20 68 74 74 70 3a 2f 2f 72 61 61 2e 72 | ension.found.on:..#.http://raa.r |
| 2b520 | 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f 70 72 6f 6a 65 63 74 2f 61 6d 61 74 63 68 2f 0d 0a 72 65 | uby-lang.org/project/amatch/..re |
| 2b540 | 71 75 69 72 65 20 27 61 6d 61 74 63 68 27 0d 0a 6d 61 74 63 68 65 72 20 3d 20 41 6d 61 74 63 68 | quire.'amatch'..matcher.=.Amatch |
| 2b560 | 2e 6e 65 77 28 27 62 61 6c 61 73 74 27 29 0d 0a 23 24 72 65 6c 61 74 69 76 65 2c 20 24 64 69 73 | .new('balast')..#$relative,.$dis |
| 2b580 | 74 61 6e 63 65 20 3d 20 30 2c 20 31 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 27 2f 75 73 72 2f 73 68 | tance.=.0,.1..File.open('/usr/sh |
| 2b5a0 | 61 72 65 2f 64 69 63 74 2f 77 6f 72 64 73 27 29 2e 65 61 63 68 5f 6c 69 6e 65 20 64 6f 20 7c 6c | are/dict/words').each_line.do.|l |
| 2b5c0 | 69 6e 65 7c 0d 0a 20 20 20 20 70 72 69 6e 74 20 6c 69 6e 65 20 69 66 20 6d 61 74 63 68 65 72 2e | ine|......print.line.if.matcher. |
| 2b5e0 | 73 65 61 72 63 68 28 6c 69 6e 65 29 20 3c 3d 20 31 0d 0a 65 6e 64 0d 0a 5f 5f 45 4e 44 5f 5f 0d | search(line).<=.1..end..__END__. |
| 2b600 | 0a 23 43 4f 44 45 0d 0a 62 61 6c 6c 61 73 74 0d 0a 62 61 6c 6c 61 73 74 73 0d 0a 62 61 6c 75 73 | .#CODE..ballast..ballasts..balus |
| 2b620 | 74 72 61 64 65 0d 0a 62 61 6c 75 73 74 72 61 64 65 73 0d 0a 62 6c 61 73 74 0d 0a 62 6c 61 73 74 | trade..balustrades..blast..blast |
| 2b640 | 65 64 0d 0a 62 6c 61 73 74 65 72 0d 0a 62 6c 61 73 74 65 72 73 0d 0a 62 6c 61 73 74 69 6e 67 0d | ed..blaster..blasters..blasting. |
| 2b660 | 0a 62 6c 61 73 74 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 31 34 0d 0a 73 | .blasts......#.@@PLEAC@@_6.14..s |
| 2b680 | 74 72 2e 73 63 61 6e 28 2f 5c 47 28 5c 64 29 2f 29 2e 65 61 63 68 20 64 6f 20 7c 74 6f 6b 65 6e | tr.scan(/\G(\d)/).each.do.|token |
| 2b6a0 | 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 66 6f 75 6e 64 20 23 7b 74 6f 6b 65 6e 7d 22 0d 0a 65 6e | |......puts."found.#{token}"..en |
| 2b6c0 | 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | d..#---------------------------- |
| 2b6e0 | 2d 0d 0a 6e 20 3d 20 22 20 20 20 34 39 20 68 65 72 65 22 0d 0a 6e 2e 67 73 75 62 21 28 2f 5c 47 | -..n.=."...49.here"..n.gsub!(/\G |
| 2b700 | 20 2f 2c 27 30 27 29 0d 0a 70 75 74 73 20 6e 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ./,'0')..puts.n..#-------------- |
| 2b720 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 20 3d 20 22 33 2c 34 2c 35 2c 39 2c | ---------------..str.=."3,4,5,9, |
| 2b740 | 31 32 30 22 0d 0a 73 74 72 2e 73 63 61 6e 28 2f 5c 47 2c 3f 28 5c 64 2b 29 2f 29 2e 65 61 63 68 | 120"..str.scan(/\G,?(\d+)/).each |
| 2b760 | 20 64 6f 20 7c 6e 75 6d 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 46 6f 75 6e 64 20 6e 75 6d 62 65 | .do.|num|......puts."Found.numbe |
| 2b780 | 72 3a 20 23 7b 6e 75 6d 7d 22 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | r:.#{num}"..end..#-------------- |
| 2b7a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 52 75 62 79 20 64 6f 65 73 6e 27 74 20 | ---------------..#.Ruby.doesn't. |
| 2b7c0 | 68 61 76 65 20 74 68 65 20 53 74 72 69 6e 67 2e 70 6f 73 20 6f 72 20 61 20 2f 63 20 72 65 20 6d | have.the.String.pos.or.a./c.re.m |
| 2b7e0 | 6f 64 69 66 69 65 72 20 6c 69 6b 65 20 50 65 72 6c 0d 0a 23 20 42 75 74 20 69 74 20 64 6f 65 73 | odifier.like.Perl..#.But.it.does |
| 2b800 | 20 68 61 76 65 20 53 74 72 69 6e 67 53 63 61 6e 6e 65 72 20 69 6e 20 74 68 65 20 73 74 61 6e 64 | .have.StringScanner.in.the.stand |
| 2b820 | 61 72 64 20 6c 69 62 72 61 72 79 20 28 73 74 72 73 63 6e 29 0d 0a 23 20 77 68 69 63 68 20 61 6c | ard.library.(strscn)..#.which.al |
| 2b840 | 6c 6f 77 73 20 73 69 6d 69 6c 61 72 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 3a 0d 0a 0d 0a 72 | lows.similar.functionality:....r |
| 2b860 | 65 71 75 69 72 65 20 27 73 74 72 73 63 61 6e 27 0d 0a 74 65 78 74 20 3d 20 27 74 68 65 20 79 65 | equire.'strscan'..text.=.'the.ye |
| 2b880 | 61 72 20 31 37 35 32 20 6c 6f 73 74 20 31 30 20 64 61 79 73 20 6f 6e 20 74 68 65 20 33 72 64 20 | ar.1752.lost.10.days.on.the.3rd. |
| 2b8a0 | 6f 66 20 53 65 70 74 65 6d 62 65 72 27 0d 0a 73 63 20 3d 20 53 74 72 69 6e 67 53 63 61 6e 6e 65 | of.September'..sc.=.StringScanne |
| 2b8c0 | 72 2e 6e 65 77 28 74 65 78 74 29 0d 0a 77 68 69 6c 65 20 73 63 2e 73 63 61 6e 28 2f 2e 2a 3f 28 | r.new(text)..while.sc.scan(/.*?( |
| 2b8e0 | 5c 64 2b 29 2f 29 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 66 6f 75 6e 64 3a 20 23 7b 73 63 5b 31 | \d+)/)......print."found:.#{sc[1 |
| 2b900 | 5d 7d 5c 6e 22 0d 0a 65 6e 64 0d 0a 69 66 20 73 63 2e 73 63 61 6e 28 2f 5c 53 2b 2f 29 0d 0a 20 | ]}\n"..end..if.sc.scan(/\S+/)... |
| 2b920 | 20 20 20 70 75 74 73 20 22 46 6f 75 6e 64 20 23 7b 73 63 5b 30 5d 7d 20 61 66 74 65 72 20 6c 61 | ...puts."Found.#{sc[0]}.after.la |
| 2b940 | 73 74 20 6e 75 6d 62 65 72 22 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | st.number"..end..#-------------- |
| 2b960 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 61 73 73 75 6d 69 6e 67 20 63 6f 6e 74 | ---------------..#.assuming.cont |
| 2b980 | 69 6e 75 69 6e 67 20 66 72 6f 6d 20 61 62 6f 76 65 3a 0d 0a 70 75 74 73 20 22 54 68 65 20 70 6f | inuing.from.above:..puts."The.po |
| 2b9a0 | 73 69 74 69 6f 6e 20 69 6e 20 27 74 65 78 74 27 20 69 73 3a 20 23 7b 73 63 2e 70 6f 73 7d 22 0d | sition.in.'text'.is:.#{sc.pos}". |
| 2b9c0 | 0a 73 63 2e 70 6f 73 20 3d 20 33 30 0d 0a 70 75 74 73 20 22 54 68 65 20 70 6f 73 69 74 69 6f 6e | .sc.pos.=.30..puts."The.position |
| 2b9e0 | 20 69 6e 20 27 74 65 78 74 27 20 69 73 3a 20 23 7b 73 63 2e 70 6f 73 7d 22 0d 0a 0d 0a 0d 0a 23 | .in.'text'.is:.#{sc.pos}"......# |
| 2ba00 | 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 31 35 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .@@PLEAC@@_6.15..#-------------- |
| 2ba20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 67 72 65 65 64 79 20 70 61 74 74 65 72 | ---------------..#.greedy.patter |
| 2ba40 | 6e 0d 0a 73 74 72 2e 67 73 75 62 21 28 2f 3c 2e 2a 3e 2f 6d 2c 27 27 29 20 20 20 23 20 6e 6f 74 | n..str.gsub!(/<.*>/m,'')...#.not |
| 2ba60 | 20 67 6f 6f 64 0d 0a 0d 0a 23 20 6e 6f 6e 2d 67 72 65 65 64 79 20 28 6d 69 6e 69 6d 61 6c 29 20 | .good....#.non-greedy.(minimal). |
| 2ba80 | 70 61 74 74 65 72 6e 0d 0a 73 74 72 2e 67 73 75 62 21 28 2f 3c 2e 2a 3f 3e 2f 6d 2c 27 27 29 20 | pattern..str.gsub!(/<.*?>/m,''). |
| 2baa0 | 20 20 23 20 6e 6f 74 20 67 72 65 61 74 0d 0a 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#.not.great......#------------ |
| 2bac0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 3c 62 3e 3c 69 3e 74 68 69 73 3c 2f | -----------------..#<b><i>this</ |
| 2bae0 | 69 3e 20 61 6e 64 20 3c 69 3e 74 68 61 74 3c 2f 69 3e 20 61 72 65 20 69 6d 70 6f 72 74 61 6e 74 | i>.and.<i>that</i>.are.important |
| 2bb00 | 3c 2f 62 3e 20 4f 68 2c 20 3c 62 3e 3c 69 3e 6d 65 20 74 6f 6f 21 3c 2f 69 3e 3c 2f 62 3e 0d 0a | </b>.Oh,.<b><i>me.too!</i></b>.. |
| 2bb20 | 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a | #-----------------------------.. |
| 2bb40 | 25 72 7b 20 3c 62 3e 3c 69 3e 28 2e 2a 3f 29 3c 2f 69 3e 3c 2f 62 3e 20 7d 6d 78 0d 0a 23 2d 2d | %r{.<b><i>(.*?)</i></b>.}mx..#-- |
| 2bb60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 2f | ---------------------------..%r/ |
| 2bb80 | 42 45 47 49 4e 28 28 3f 3a 28 3f 21 42 45 47 49 4e 29 2e 29 2a 29 45 4e 44 2f 0d 0a 23 2d 2d 2d | BEGIN((?:(?!BEGIN).)*)END/..#--- |
| 2bba0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 7b 20 | --------------------------..%r{. |
| 2bbc0 | 3c 62 3e 3c 69 3e 28 20 20 28 3f 3a 20 28 3f 21 3c 2f 62 3e 7c 3c 2f 69 3e 29 2e 20 29 2a 20 20 | <b><i>(..(?:.(?!</b>|</i>)..)*.. |
| 2bbe0 | 29 20 3c 2f 69 3e 3c 2f 62 3e 20 7d 6d 78 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ).</i></b>.}mx..#--------------- |
| 2bc00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 7b 20 3c 62 3e 3c 69 3e 28 20 20 28 3f 3a | --------------..%r{.<b><i>(..(?: |
| 2bc20 | 20 28 3f 21 3c 2f 5b 69 62 5d 3e 29 2e 20 29 2a 20 20 29 20 3c 2f 69 3e 3c 2f 62 3e 20 7d 6d 78 | .(?!</[ib]>)..)*..).</i></b>.}mx |
| 2bc40 | 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#----------------------------- |
| 2bc60 | 0d 0a 25 72 7b 0d 0a 20 20 20 20 3c 62 3e 3c 69 3e 0d 0a 20 20 20 20 5b 5e 3c 5d 2a 20 20 23 20 | ..%r{......<b><i>......[^<]*..#. |
| 2bc80 | 73 74 75 66 66 20 6e 6f 74 20 70 6f 73 73 69 62 6c 79 20 62 61 64 2c 20 61 6e 64 20 6e 6f 74 20 | stuff.not.possibly.bad,.and.not. |
| 2bca0 | 70 6f 73 73 69 62 6c 79 20 74 68 65 20 65 6e 64 2e 0d 0a 20 20 20 20 28 3f 3a 0d 0a 20 23 20 61 | possibly.the.end.......(?:...#.a |
| 2bcc0 | 74 20 74 68 69 73 20 70 6f 69 6e 74 2c 20 77 65 20 63 61 6e 20 68 61 76 65 20 27 3c 27 20 69 66 | t.this.point,.we.can.have.'<'.if |
| 2bce0 | 20 6e 6f 74 20 70 61 72 74 20 6f 66 20 73 6f 6d 65 74 68 69 6e 67 20 62 61 64 0d 0a 20 20 20 20 | .not.part.of.something.bad...... |
| 2bd00 | 20 28 3f 21 20 20 3c 2f 3f 5b 69 62 5d 3e 20 20 29 20 20 20 23 20 77 68 61 74 20 77 65 20 63 61 | .(?!..</?[ib]>..)...#.what.we.ca |
| 2bd20 | 6e 27 74 20 68 61 76 65 0d 0a 20 20 20 20 20 3c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | n't.have.......<................ |
| 2bd40 | 20 20 23 20 6f 6b 61 79 2c 20 73 6f 20 6d 61 74 63 68 20 74 68 65 20 27 3c 27 0d 0a 20 20 20 20 | ..#.okay,.so.match.the.'<'...... |
| 2bd60 | 20 5b 5e 3c 5d 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 63 6f 6e 74 69 6e | .[^<]*..............#.and.contin |
| 2bd80 | 75 65 20 77 69 74 68 20 6d 6f 72 65 20 73 61 66 65 20 73 74 75 66 66 0d 0a 20 20 20 20 29 20 2a | ue.with.more.safe.stuff......).* |
| 2bda0 | 0d 0a 20 20 20 20 3c 2f 69 3e 3c 2f 62 3e 0d 0a 20 7d 6d 78 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c | ......</i></b>...}mx......#.@@PL |
| 2bdc0 | 45 41 43 40 40 5f 36 2e 31 36 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | EAC@@_6.16..#------------------- |
| 2bde0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 2f 20 3d 20 22 22 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 | ----------..$/.=.""..ARGF.each.d |
| 2be00 | 6f 20 7c 70 61 72 61 7c 0d 0a 20 20 20 20 70 61 72 61 2e 73 63 61 6e 20 25 72 2f 0d 0a 20 20 20 | o.|para|......para.scan.%r/..... |
| 2be20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 62 20 20 20 20 20 23 20 73 74 61 72 74 20 61 74 | ...............\b.....#.start.at |
| 2be40 | 20 77 6f 72 64 20 62 6f 75 6e 64 61 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .word.boundary.................. |
| 2be60 | 20 20 28 5c 53 2b 29 20 20 23 20 66 69 6e 64 20 63 68 75 6e 6b 20 6f 66 20 6e 6f 6e 2d 77 68 69 | ..(\S+)..#.find.chunk.of.non-whi |
| 2be80 | 74 65 73 70 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 62 20 20 20 | tespace....................\b... |
| 2bea0 | 20 20 23 20 75 6e 74 69 6c 20 61 20 77 6f 72 64 20 62 6f 75 6e 64 61 72 79 0d 0a 20 20 20 20 20 | ..#.until.a.word.boundary....... |
| 2bec0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .............(.................. |
| 2bee0 | 20 20 20 20 5c 73 2b 20 20 23 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 77 68 69 74 65 73 70 61 63 | ....\s+..#.followed.by.whitespac |
| 2bf00 | 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 31 20 20 20 23 20 61 6e | e......................\1...#.an |
| 2bf20 | 64 20 74 68 61 74 20 73 61 6d 65 20 63 68 75 6e 6b 20 61 67 61 69 6e 0d 0a 20 20 20 20 20 20 20 | d.that.same.chunk.again......... |
| 2bf40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 62 20 20 20 23 20 61 6e 64 20 61 20 77 6f 72 64 20 62 | .............\b...#.and.a.word.b |
| 2bf60 | 6f 75 6e 64 61 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 2b 20 20 | oundary....................).+.. |
| 2bf80 | 20 20 23 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 | ..#.one.or.more.times........... |
| 2bfa0 | 20 20 20 20 20 20 20 2f 78 69 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 64 75 70 | ......./xi.do..........puts."dup |
| 2bfc0 | 20 77 6f 72 64 20 27 23 7b 24 31 7d 27 20 61 74 20 70 61 72 61 67 72 61 70 68 20 23 7b 24 2e 7d | .word.'#{$1}'.at.paragraph.#{$.} |
| 2bfe0 | 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | "......end..end..#-------------- |
| 2c000 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 61 73 74 72 20 3d 20 27 6e 6f 62 6f 64 79 27 | ---------------..astr.=.'nobody' |
| 2c020 | 0d 0a 62 73 74 72 20 3d 20 27 62 6f 64 79 73 6e 61 74 63 68 65 72 27 0d 0a 69 66 20 22 23 7b 61 | ..bstr.=.'bodysnatcher'..if."#{a |
| 2c040 | 73 74 72 7d 20 23 7b 62 73 74 72 7d 22 20 3d 7e 20 2f 5e 28 5c 77 2b 29 28 5c 77 2b 29 20 5c 32 | str}.#{bstr}".=~./^(\w+)(\w+).\2 |
| 2c060 | 28 5c 77 2b 29 24 2f 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 23 7b 24 32 7d 20 6f 76 65 72 6c 61 | (\w+)$/......print."#{$2}.overla |
| 2c080 | 70 73 20 69 6e 20 23 7b 24 31 7d 2d 23 7b 24 32 7d 2d 23 7b 24 33 7d 22 0d 0a 65 6e 64 0d 0a 23 | ps.in.#{$1}-#{$2}-#{$3}"..end..# |
| 2c0a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 | -----------------------------..# |
| 2c0c0 | 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 70 72 69 6d 65 5f 70 61 74 74 65 | !/usr/bin/ruby.-w..#.prime_patte |
| 2c0e0 | 72 6e 20 2d 2d 20 66 69 6e 64 20 70 72 69 6d 65 20 66 61 63 74 6f 72 73 20 6f 66 20 61 72 67 75 | rn.--.find.prime.factors.of.argu |
| 2c100 | 6d 65 6e 74 20 75 73 69 6e 67 20 70 61 74 74 65 72 6e 73 0d 0a 41 52 47 56 20 3c 3c 20 31 38 30 | ment.using.patterns..ARGV.<<.180 |
| 2c120 | 0d 0a 63 61 70 20 3d 20 27 6f 27 20 2a 20 41 52 47 56 2e 73 68 69 66 74 0d 0a 77 68 69 6c 65 20 | ..cap.=.'o'.*.ARGV.shift..while. |
| 2c140 | 63 61 70 20 3d 7e 20 2f 5e 28 6f 6f 2b 3f 29 5c 31 2b 24 2f 0d 0a 20 20 20 20 70 72 69 6e 74 20 | cap.=~./^(oo+?)\1+$/......print. |
| 2c160 | 24 31 2e 73 69 7a 65 2c 20 22 20 22 0d 0a 20 20 20 20 63 61 70 2e 67 73 75 62 21 28 2f 23 7b 24 | $1.size,."."......cap.gsub!(/#{$ |
| 2c180 | 31 7d 2f 2c 27 6f 27 29 0d 0a 65 6e 64 0d 0a 70 75 74 73 20 63 61 70 2e 73 69 7a 65 0d 0a 23 2d | 1}/,'o')..end..puts.cap.size..#- |
| 2c1a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 64 | ----------------------------..#d |
| 2c1c0 | 69 6f 70 68 61 6e 74 69 6e 65 0d 0a 23 20 73 6f 6c 76 65 20 66 6f 72 20 31 32 78 20 2b 20 31 35 | iophantine..#.solve.for.12x.+.15 |
| 2c1e0 | 79 20 2b 20 31 36 7a 20 3d 20 32 38 31 2c 20 6d 61 78 69 6d 69 7a 69 6e 67 20 78 0d 0a 69 66 20 | y.+.16z.=.281,.maximizing.x..if. |
| 2c200 | 28 27 6f 27 20 2a 20 32 38 31 29 2e 6d 61 74 63 68 28 2f 5e 28 6f 2a 29 5c 31 7b 31 31 7d 28 6f | ('o'.*.281).match(/^(o*)\1{11}(o |
| 2c220 | 2a 29 5c 32 7b 31 34 7d 28 6f 2a 29 5c 33 7b 31 35 7d 24 2f 29 0d 0a 20 20 20 20 78 2c 20 79 2c | *)\2{14}(o*)\3{15}$/)......x,.y, |
| 2c240 | 20 7a 20 3d 20 24 31 2e 73 69 7a 65 2c 20 24 32 2e 73 69 7a 65 2c 20 24 33 2e 73 69 7a 65 0d 0a | .z.=.$1.size,.$2.size,.$3.size.. |
| 2c260 | 20 20 20 20 70 75 74 73 20 22 4f 6e 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 3a 20 78 3d 23 7b 78 | ....puts."One.solution.is:.x=#{x |
| 2c280 | 7d 3b 20 79 3d 23 7b 79 7d 3b 20 7a 3d 23 7b 7a 7d 22 0d 0a 65 6c 73 65 0d 0a 20 20 20 20 70 75 | };.y=#{y};.z=#{z}"..else......pu |
| 2c2a0 | 74 73 20 22 4e 6f 20 73 6f 6c 75 74 69 6f 6e 2e 22 0d 0a 65 6e 64 0d 0a 23 20 20 20 20 3d 3e 20 | ts."No.solution."..end..#....=>. |
| 2c2c0 | 4f 6e 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 3a 20 78 3d 31 37 3b 20 79 3d 33 3b 20 7a 3d 32 0d | One.solution.is:.x=17;.y=3;.z=2. |
| 2c2e0 | 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ...#---------------------------- |
| 2c300 | 2d 0d 0a 23 20 75 73 69 6e 67 20 64 69 66 66 65 72 65 6e 74 20 71 75 61 6e 74 69 66 69 65 72 73 | -..#.using.different.quantifiers |
| 2c320 | 3a 0d 0a 28 27 6f 27 20 2a 20 32 38 31 29 2e 6d 61 74 63 68 28 2f 5e 28 6f 2b 29 5c 31 7b 31 31 | :..('o'.*.281).match(/^(o+)\1{11 |
| 2c340 | 7d 28 6f 2b 29 5c 32 7b 31 34 7d 28 6f 2b 29 5c 33 7b 31 35 7d 24 2f 29 0d 0a 23 20 20 20 20 3d | }(o+)\2{14}(o+)\3{15}$/)..#....= |
| 2c360 | 3e 20 4f 6e 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 3a 20 78 3d 31 37 3b 20 79 3d 33 3b 20 7a 3d | >.One.solution.is:.x=17;.y=3;.z= |
| 2c380 | 32 0d 0a 0d 0a 28 27 6f 27 20 2a 20 32 38 31 29 2e 6d 61 74 63 68 28 2f 5e 28 6f 2a 3f 29 5c 31 | 2....('o'.*.281).match(/^(o*?)\1 |
| 2c3a0 | 7b 31 31 7d 28 6f 2a 29 5c 32 7b 31 34 7d 28 6f 2a 29 5c 33 7b 31 35 7d 24 2f 29 0d 0a 23 20 20 | {11}(o*)\2{14}(o*)\3{15}$/)..#.. |
| 2c3c0 | 20 20 3d 3e 20 4f 6e 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 3a 20 78 3d 30 3b 20 79 3d 37 3b 20 | ..=>.One.solution.is:.x=0;.y=7;. |
| 2c3e0 | 7a 3d 31 31 0d 0a 0d 0a 28 27 6f 27 20 2a 20 32 38 31 29 2e 6d 61 74 63 68 28 2f 5e 28 6f 2b 3f | z=11....('o'.*.281).match(/^(o+? |
| 2c400 | 29 5c 31 7b 31 31 7d 28 6f 2a 29 5c 32 7b 31 34 7d 28 6f 2a 29 5c 33 7b 31 35 7d 24 2f 29 0d 0a | )\1{11}(o*)\2{14}(o*)\3{15}$/).. |
| 2c420 | 23 20 20 20 20 3d 3e 20 4f 6e 65 20 73 6f 6c 75 74 69 6f 6e 20 69 73 3a 20 78 3d 31 3b 20 79 3d | #....=>.One.solution.is:.x=1;.y= |
| 2c440 | 33 3b 20 7a 3d 31 34 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 31 37 0d 0a 23 | 3;.z=14......#.@@PLEAC@@_6.17..# |
| 2c460 | 20 61 6c 70 68 61 20 4f 52 20 62 65 74 61 0d 0a 25 72 2f 61 6c 70 68 61 7c 62 65 74 61 2f 0d 0a | .alpha.OR.beta..%r/alpha|beta/.. |
| 2c480 | 0d 0a 23 20 61 6c 70 68 61 20 41 4e 44 20 62 65 74 61 0d 0a 25 72 2f 28 3f 3d 2e 2a 61 6c 70 68 | ..#.alpha.AND.beta..%r/(?=.*alph |
| 2c4a0 | 61 29 28 3f 3d 2e 2a 62 65 74 61 29 2f 6d 0d 0a 0d 0a 23 20 61 6c 70 68 61 20 41 4e 44 20 62 65 | a)(?=.*beta)/m....#.alpha.AND.be |
| 2c4c0 | 74 61 2c 20 20 6e 6f 20 6f 76 65 72 6c 61 70 0d 0a 25 72 2f 61 6c 70 68 61 2e 2a 62 65 74 61 7c | ta,..no.overlap..%r/alpha.*beta| |
| 2c4e0 | 62 65 74 61 2e 2a 61 6c 70 68 61 2f 6d 0d 0a 0d 0a 23 20 4e 4f 54 20 62 65 74 61 0d 0a 25 72 2f | beta.*alpha/m....#.NOT.beta..%r/ |
| 2c500 | 5e 28 3f 3a 28 3f 21 62 65 74 61 29 2e 29 2a 24 2f 6d 0d 0a 0d 0a 23 20 4e 4f 54 20 62 61 64 20 | ^(?:(?!beta).)*$/m....#.NOT.bad. |
| 2c520 | 42 55 54 20 67 6f 6f 64 0d 0a 25 72 2f 28 3f 3d 28 3f 3a 28 3f 21 42 41 44 29 2e 29 2a 24 29 47 | BUT.good..%r/(?=(?:(?!BAD).)*$)G |
| 2c540 | 4f 4f 44 2f 6d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | OOD/m..#------------------------ |
| 2c560 | 2d 2d 2d 2d 2d 0d 0a 0d 0a 69 66 20 21 28 73 74 72 69 6e 67 20 3d 7e 20 2f 70 61 74 74 65 72 6e | -----....if.!(string.=~./pattern |
| 2c580 | 2f 29 20 20 20 23 20 75 67 6c 79 0d 0a 20 20 20 20 73 6f 6d 65 74 68 69 6e 67 28 29 0d 0a 65 6e | /)...#.ugly......something()..en |
| 2c5a0 | 64 0d 0a 0d 0a 69 66 20 73 74 72 69 6e 67 20 21 7e 20 2f 70 61 74 74 65 72 6e 2f 20 20 20 23 20 | d....if.string.!~./pattern/...#. |
| 2c5c0 | 70 72 65 66 65 72 72 65 64 0d 0a 20 20 20 20 73 6f 6d 65 74 68 69 6e 67 28 29 0d 0a 65 6e 64 0d | preferred......something()..end. |
| 2c5e0 | 0a 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .....#-------------------------- |
| 2c600 | 2d 2d 2d 0d 0a 69 66 20 73 74 72 69 6e 67 20 3d 7e 20 2f 70 61 74 31 2f 20 20 26 26 20 73 74 72 | ---..if.string.=~./pat1/..&&.str |
| 2c620 | 69 6e 67 20 3d 7e 20 2f 70 61 74 32 2f 0d 0a 20 20 20 20 73 6f 6d 65 74 68 69 6e 67 28 29 0d 0a | ing.=~./pat2/......something().. |
| 2c640 | 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | end..#-------------------------- |
| 2c660 | 2d 2d 2d 0d 0a 69 66 20 73 74 72 69 6e 67 20 3d 7e 20 2f 70 61 74 31 2f 20 7c 7c 20 73 74 72 69 | ---..if.string.=~./pat1/.||.stri |
| 2c680 | 6e 67 20 3d 7e 20 2f 70 61 74 32 2f 0d 0a 20 20 20 20 73 6f 6d 65 74 68 69 6e 67 28 29 0d 0a 65 | ng.=~./pat2/......something()..e |
| 2c6a0 | 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nd..#--------------------------- |
| 2c6c0 | 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 6d 69 6e 69 67 72 | --..#!/usr/bin/ruby.-w..#.minigr |
| 2c6e0 | 65 70 20 2d 20 74 72 69 76 69 61 6c 20 67 72 65 70 0d 0a 70 61 74 20 3d 20 41 52 47 56 2e 73 68 | ep.-.trivial.grep..pat.=.ARGV.sh |
| 2c700 | 69 66 74 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 70 72 | ift..ARGF.each.do.|line|......pr |
| 2c720 | 69 6e 74 20 6c 69 6e 65 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 23 7b 70 61 74 7d 2f 6f 0d 0a 65 | int.line.if.line.=~./#{pat}/o..e |
| 2c740 | 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nd..#--------------------------- |
| 2c760 | 2d 2d 0d 0a 20 22 6c 61 62 65 6c 6c 65 64 22 20 3d 7e 20 2f 5e 28 3f 3d 2e 2a 62 65 6c 6c 29 28 | --..."labelled".=~./^(?=.*bell)( |
| 2c780 | 3f 3d 2e 2a 6c 61 62 29 2f 6d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ?=.*lab)/m..#------------------- |
| 2c7a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 73 74 72 69 6e 67 20 3d 7e 20 2f 62 65 6c 6c 2f 20 26 26 | ----------..$string.=~./bell/.&& |
| 2c7c0 | 20 24 73 74 72 69 6e 67 20 3d 7e 20 2f 6c 61 62 2f 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .$string.=~./lab/..#------------ |
| 2c7e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 6d 75 72 72 61 79 5f 68 69 6c 6c 20 | -----------------..$murray_hill. |
| 2c800 | 3d 20 22 62 6c 61 68 20 62 65 6c 6c 20 62 6c 61 68 20 22 0d 0a 69 66 20 24 6d 75 72 72 61 79 5f | =."blah.bell.blah."..if.$murray_ |
| 2c820 | 68 69 6c 6c 20 3d 7e 20 25 72 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | hill.=~.%r{..................... |
| 2c840 | 20 20 20 20 20 20 5e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 74 61 72 74 20 6f 66 20 | ......^..............#.start.of. |
| 2c860 | 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | string.......................... |
| 2c880 | 28 3f 3d 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 7a 65 72 6f 2d 77 69 64 74 68 20 6c 6f 6f | (?=.............#.zero-width.loo |
| 2c8a0 | 6b 61 68 65 61 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | kahead.......................... |
| 2c8c0 | 20 20 20 20 2e 2a 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 | .....*..........#.any.amount.of. |
| 2c8e0 | 69 6e 74 65 72 76 65 6e 69 6e 67 20 73 74 75 66 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | intervening.stuff............... |
| 2c900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 6c 6c 20 20 20 20 20 20 20 20 23 20 74 68 65 | ...............bell........#.the |
| 2c920 | 20 64 65 73 69 72 65 64 20 62 65 6c 6c 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 | .desired.bell.string............ |
| 2c940 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | ..............)...............#. |
| 2c960 | 72 65 77 69 6e 64 2c 20 73 69 6e 63 65 20 77 65 20 77 65 72 65 20 6f 6e 6c 79 20 6c 6f 6f 6b 69 | rewind,.since.we.were.only.looki |
| 2c980 | 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 3d 20 | ng..........................(?=. |
| 2c9a0 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 64 6f 20 74 68 65 20 73 61 6d 65 20 74 68 | ............#.and.do.the.same.th |
| 2c9c0 | 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ing............................. |
| 2c9e0 | 20 2e 2a 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 69 6e 74 | ..*..........#.any.amount.of.int |
| 2ca00 | 65 72 76 65 6e 69 6e 67 20 73 74 75 66 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ervening.stuff.................. |
| 2ca20 | 20 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 20 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 74 68 | ............lab.........#.and.th |
| 2ca40 | 65 20 6c 61 62 20 70 61 72 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e.lab.part...................... |
| 2ca60 | 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 6d 78 20 | ....).......................}mx. |
| 2ca80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 2f 6d 20 6d 65 61 6e 73 20 2e 20 63 61 6e 20 | ...............#./m.means...can. |
| 2caa0 | 6d 61 74 63 68 20 6e 65 77 6c 69 6e 65 0d 0a 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 4c 6f 6f 6b | match.newline........print."Look |
| 2cac0 | 73 20 6c 69 6b 65 20 42 65 6c 6c 20 4c 61 62 73 20 6d 69 67 68 74 20 62 65 20 69 6e 20 4d 75 72 | s.like.Bell.Labs.might.be.in.Mur |
| 2cae0 | 72 61 79 20 48 69 6c 6c 21 5c 6e 22 3b 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ray.Hill!\n";..end..#----------- |
| 2cb00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 22 6c 61 62 65 6c 6c 65 64 22 20 3d | ------------------.."labelled".= |
| 2cb20 | 7e 20 2f 28 3f 3a 5e 2e 2a 62 65 6c 6c 2e 2a 6c 61 62 29 7c 28 3f 3a 5e 2e 2a 6c 61 62 2e 2a 62 | ~./(?:^.*bell.*lab)|(?:^.*lab.*b |
| 2cb40 | 65 6c 6c 29 2f 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ell)/..#------------------------ |
| 2cb60 | 2d 2d 2d 2d 2d 0d 0a 24 62 72 61 6e 64 20 3d 20 22 6c 61 62 65 6c 6c 65 64 22 3b 0d 0a 69 66 20 | -----..$brand.=."labelled";..if. |
| 2cb80 | 24 62 72 61 6e 64 20 3d 7e 20 25 72 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | $brand.=~.%r{..................( |
| 2cba0 | 3f 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f 6e 2d 63 61 70 74 75 72 69 | ?:.................#.non-capturi |
| 2cbc0 | 6e 67 20 67 72 6f 75 70 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ng.grouper...................... |
| 2cbe0 | 5e 20 2e 2a 3f 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 | ^..*?...........#.any.amount.of. |
| 2cc00 | 73 74 75 66 66 20 61 74 20 74 68 65 20 66 72 6f 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | stuff.at.the.front.............. |
| 2cc20 | 20 20 20 20 20 20 20 20 20 20 62 65 6c 6c 20 20 20 20 20 20 20 20 20 20 23 20 6c 6f 6f 6b 20 66 | ..........bell..........#.look.f |
| 2cc40 | 6f 72 20 61 20 62 65 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | or.a.bell....................... |
| 2cc60 | 20 2e 2a 3f 20 20 20 20 20 20 20 20 20 20 20 23 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 79 | ..*?...........#.followed.by.any |
| 2cc80 | 20 61 6d 6f 75 6e 74 20 6f 66 20 61 6e 79 74 68 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | .amount.of.anything............. |
| 2cca0 | 20 20 20 20 20 20 20 20 20 20 20 6c 61 62 20 20 20 20 20 20 20 20 20 20 20 23 20 6c 6f 6f 6b 20 | ...........lab...........#.look. |
| 2ccc0 | 66 6f 72 20 61 20 6c 61 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 20 | for.a.lab....................).. |
| 2cce0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6e 64 20 67 72 6f 75 70 65 72 0d 0a 20 20 | ...............#.end.grouper.... |
| 2cd00 | 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........|..................... |
| 2cd20 | 20 20 23 20 6f 74 68 65 72 77 69 73 65 2c 20 74 72 79 20 74 68 65 20 6f 74 68 65 72 20 64 69 72 | ..#.otherwise,.try.the.other.dir |
| 2cd40 | 65 63 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3f 3a 20 20 20 20 20 | ection..................(?:..... |
| 2cd60 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f 6e 2d 63 61 70 74 75 72 69 6e 67 20 67 72 6f 75 | ............#.non-capturing.grou |
| 2cd80 | 70 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 20 2e 2a 3f 20 20 | per......................^..*?.. |
| 2cda0 | 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 73 74 75 66 66 20 61 | .........#.any.amount.of.stuff.a |
| 2cdc0 | 74 20 74 68 65 20 66 72 6f 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t.the.front..................... |
| 2cde0 | 20 20 20 6c 61 62 20 20 20 20 20 20 20 20 20 20 20 23 20 6c 6f 6f 6b 20 66 6f 72 20 61 20 6c 61 | ...lab...........#.look.for.a.la |
| 2ce00 | 62 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 2a 3f 20 20 20 20 | b.........................*?.... |
| 2ce20 | 20 20 20 20 20 20 20 23 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 79 20 61 6d 6f 75 6e 74 20 | .......#.followed.by.any.amount. |
| 2ce40 | 6f 66 20 61 6e 79 74 68 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | of.anything..................... |
| 2ce60 | 20 20 20 62 65 6c 6c 20 20 20 20 20 20 20 20 20 20 23 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 | ...bell..........#.followed.by.a |
| 2ce80 | 20 62 65 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 20 20 20 20 20 | .bell....................)...... |
| 2cea0 | 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6e 64 20 67 72 6f 75 70 65 72 0d 0a 20 20 20 20 20 20 | ...........#.end.grouper........ |
| 2cec0 | 20 20 20 20 20 20 7d 6d 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | ......}mx.....................#. |
| 2cee0 | 2f 6d 20 6d 65 61 6e 73 20 2e 20 63 61 6e 20 6d 61 74 63 68 20 6e 65 77 6c 69 6e 65 0d 0a 20 20 | /m.means...can.match.newline.... |
| 2cf00 | 20 20 70 72 69 6e 74 20 22 4f 75 72 20 62 72 61 6e 64 20 68 61 73 20 62 65 6c 6c 20 61 6e 64 20 | ..print."Our.brand.has.bell.and. |
| 2cf20 | 6c 61 62 20 73 65 70 61 72 61 74 65 2e 5c 6e 22 3b 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | lab.separate.\n";..end..#------- |
| 2cf40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 6d 61 70 20 3d 7e 20 | ----------------------..$map.=~. |
| 2cf60 | 2f 5e 28 3f 3a 28 3f 21 77 61 6c 64 6f 29 2e 29 2a 24 2f 73 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | /^(?:(?!waldo).)*$/s..#--------- |
| 2cf80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 6d 61 70 20 3d 20 22 74 68 | --------------------..$map.=."th |
| 2cfa0 | 65 20 67 72 65 61 74 20 62 61 6c 64 6f 22 0d 0a 69 66 20 24 6d 61 70 20 3d 7e 20 25 72 7b 0d 0a | e.great.baldo"..if.$map.=~.%r{.. |
| 2cfc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................^............... |
| 2cfe0 | 20 20 20 20 23 20 73 74 61 72 74 20 6f 66 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 | ....#.start.of.string........... |
| 2d000 | 20 20 20 20 20 20 20 28 3f 3a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f 6e | .......(?:.................#.non |
| 2d020 | 2d 63 61 70 74 75 72 69 6e 67 20 67 72 6f 75 70 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | -capturing.grouper.............. |
| 2d040 | 20 20 20 20 20 20 20 20 28 3f 21 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6c 6f 6f 6b 20 61 | ........(?!.............#.look.a |
| 2d060 | 68 65 61 64 20 6e 65 67 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | head.negation................... |
| 2d080 | 20 20 20 20 20 20 20 77 61 6c 64 6f 20 20 20 20 20 20 20 23 20 69 73 20 68 65 20 61 68 65 61 64 | .......waldo.......#.is.he.ahead |
| 2d0a0 | 20 6f 66 20 75 73 20 6e 6f 77 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .of.us.now?..................... |
| 2d0c0 | 20 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 73 20 73 6f 2c 20 74 68 65 20 6e 65 | .)...............#.is.so,.the.ne |
| 2d0e0 | 67 61 74 69 6f 6e 20 66 61 69 6c 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | gation.failed................... |
| 2d100 | 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 63 68 61 72 61 63 74 | ...................#.any.charact |
| 2d120 | 65 72 20 28 63 75 7a 7a 61 20 2f 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 | er.(cuzza./s)..................) |
| 2d140 | 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 70 65 61 74 20 74 68 61 74 | .*.................#.repeat.that |
| 2d160 | 20 67 72 6f 75 70 69 6e 67 20 30 20 6f 72 20 6d 6f 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | .grouping.0.or.more............. |
| 2d180 | 20 20 20 20 20 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 72 6f 75 | .....$...................#.throu |
| 2d1a0 | 67 68 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 | gh.the.end.of.the.string........ |
| 2d1c0 | 20 20 20 20 20 20 20 7d 6d 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | .......}mx....................#. |
| 2d1e0 | 2f 6d 20 6d 65 61 6e 73 20 2e 20 63 61 6e 20 6d 61 74 63 68 20 6e 65 77 6c 69 6e 65 0d 0a 20 20 | /m.means...can.match.newline.... |
| 2d200 | 20 20 70 72 69 6e 74 20 22 54 68 65 72 65 27 73 20 6e 6f 20 77 61 6c 64 6f 20 68 65 72 65 21 5c | ..print."There's.no.waldo.here!\ |
| 2d220 | 6e 22 3b 0d 0a 65 6e 64 0d 0a 3d 62 65 67 69 6e 0d 0a 20 37 3a 31 35 61 6d 20 20 75 70 20 32 30 | n";..end..=begin...7:15am..up.20 |
| 2d240 | 36 20 64 61 79 73 2c 20 31 33 3a 33 30 2c 20 20 34 20 75 73 65 72 73 2c 20 20 6c 6f 61 64 20 61 | 6.days,.13:30,..4.users,..load.a |
| 2d260 | 76 65 72 61 67 65 3a 20 31 2e 30 34 2c 20 31 2e 30 37 2c 20 31 2e 30 34 0d 0a 0d 0a 55 53 45 52 | verage:.1.04,.1.07,.1.04....USER |
| 2d280 | 20 20 20 20 20 54 54 59 20 20 20 20 20 20 46 52 4f 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....TTY......FROM.............. |
| 2d2a0 | 4c 4f 47 49 4e 40 20 20 49 44 4c 45 20 20 20 4a 43 50 55 20 20 20 50 43 50 55 20 20 57 48 41 54 | LOGIN@..IDLE...JCPU...PCPU..WHAT |
| 2d2c0 | 0d 0a 0d 0a 74 63 68 72 69 73 74 20 20 74 74 79 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....tchrist..tty1............... |
| 2d2e0 | 20 20 20 20 20 20 20 20 35 3a 31 36 70 6d 20 33 36 64 61 79 73 20 32 34 3a 34 33 20 20 20 30 2e | ........5:16pm.36days.24:43...0. |
| 2d300 | 30 33 73 20 20 78 69 6e 69 74 0d 0a 0d 0a 74 63 68 72 69 73 74 20 20 74 74 79 32 20 20 20 20 20 | 03s..xinit....tchrist..tty2..... |
| 2d320 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 35 3a 31 39 70 6d 20 20 36 64 61 79 73 20 | ..................5:19pm..6days. |
| 2d340 | 20 30 2e 34 33 73 20 20 30 2e 34 33 73 20 20 2d 74 63 73 68 0d 0a 0d 0a 74 63 68 72 69 73 74 20 | .0.43s..0.43s..-tcsh....tchrist. |
| 2d360 | 20 74 74 79 70 30 20 20 20 20 63 68 74 68 6f 6e 20 20 20 20 20 20 20 20 20 20 20 20 37 3a 35 38 | .ttyp0....chthon............7:58 |
| 2d380 | 61 6d 20 20 33 64 61 79 73 20 32 33 2e 34 34 73 20 20 30 2e 34 34 73 20 20 2d 74 63 73 68 0d 0a | am..3days.23.44s..0.44s..-tcsh.. |
| 2d3a0 | 0d 0a 67 6e 61 74 20 20 20 20 20 74 74 79 53 34 20 20 20 20 63 6f 70 72 6f 6c 69 74 68 20 20 20 | ..gnat.....ttyS4....coprolith... |
| 2d3c0 | 20 20 20 20 20 20 32 3a 30 31 70 6d 20 31 33 3a 33 36 6d 20 20 30 2e 33 30 73 20 20 30 2e 33 30 | ......2:01pm.13:36m..0.30s..0.30 |
| 2d3e0 | 73 20 20 2d 74 63 73 68 0d 0a 3d 65 6e 64 0d 0a 23 25 20 77 20 7c 20 6d 69 6e 69 67 72 65 70 20 | s..-tcsh..=end..#%.w.|.minigrep. |
| 2d400 | 27 5e 28 3f 21 2e 2a 74 74 79 70 29 2e 2a 74 63 68 72 69 73 74 27 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | '^(?!.*ttyp).*tchrist'..#------- |
| 2d420 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 7b 0d 0a 20 20 20 | ----------------------..%r{..... |
| 2d440 | 20 5e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 63 68 6f | .^.......................#.ancho |
| 2d460 | 72 65 64 20 74 6f 20 74 68 65 20 73 74 61 72 74 0d 0a 20 20 20 20 28 3f 21 20 20 20 20 20 20 20 | red.to.the.start......(?!....... |
| 2d480 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 7a 65 72 6f 2d 77 69 64 74 68 20 6c 6f 6f 6b 2d | ..............#.zero-width.look- |
| 2d4a0 | 61 68 65 61 64 20 61 73 73 65 72 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 2e 2a 20 20 20 20 20 | ahead.assertion...........*..... |
| 2d4c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 61 6e 79 | .............#.any.amount.of.any |
| 2d4e0 | 74 68 69 6e 67 20 28 66 61 73 74 65 72 20 74 68 61 6e 20 2e 2a 3f 29 0d 0a 20 20 20 20 20 20 20 | thing.(faster.than..*?)......... |
| 2d500 | 20 74 74 79 70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 20 73 74 72 69 6e | .ttyp................#.the.strin |
| 2d520 | 67 20 79 6f 75 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 6f 20 66 69 6e 64 0d 0a 20 20 20 20 29 20 | g.you.don't.want.to.find......). |
| 2d540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6e 64 20 6c 6f 6f 6b | ......................#.end.look |
| 2d560 | 2d 61 68 65 61 64 20 6e 65 67 61 74 69 6f 6e 3b 20 72 65 77 69 6e 64 20 74 6f 20 73 74 61 72 74 | -ahead.negation;.rewind.to.start |
| 2d580 | 0d 0a 20 20 20 20 2e 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | .......*......................#. |
| 2d5a0 | 61 6e 79 20 61 6d 6f 75 6e 74 20 6f 66 20 61 6e 79 74 68 69 6e 67 20 28 66 61 73 74 65 72 20 74 | any.amount.of.anything.(faster.t |
| 2d5c0 | 68 61 6e 20 2e 2a 3f 29 0d 0a 20 20 20 20 74 63 68 72 69 73 74 20 20 20 20 20 20 20 20 20 20 20 | han..*?)......tchrist........... |
| 2d5e0 | 20 20 20 20 20 20 23 20 6e 6f 77 20 74 72 79 20 74 6f 20 66 69 6e 64 20 54 6f 6d 0d 0a 7d 78 0d | ......#.now.try.to.find.Tom..}x. |
| 2d600 | 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d | .#-----------------------------. |
| 2d620 | 0a 23 25 20 77 20 7c 20 67 72 65 70 20 74 63 68 72 69 73 74 20 7c 20 67 72 65 70 20 2d 76 20 74 | .#%.w.|.grep.tchrist.|.grep.-v.t |
| 2d640 | 74 79 70 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | typ..#-------------------------- |
| 2d660 | 2d 2d 2d 0d 0a 23 25 20 67 72 65 70 20 2d 69 20 27 70 61 74 74 65 72 6e 27 20 66 69 6c 65 73 0d | ---..#%.grep.-i.'pattern'.files. |
| 2d680 | 0a 23 25 20 6d 69 6e 69 67 72 65 70 20 27 28 3f 69 29 70 61 74 74 65 72 6e 27 20 66 69 6c 65 73 | .#%.minigrep.'(?i)pattern'.files |
| 2d6a0 | 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#----------------------------- |
| 2d6c0 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 32 30 0d 0a 61 6e 73 20 3d 20 24 73 | ......#.@@PLEAC@@_6.20..ans.=.$s |
| 2d6e0 | 74 64 69 6e 2e 67 65 74 73 2e 63 68 6f 6d 70 0d 0a 72 65 20 3d 20 25 72 2f 5e 23 7b 52 65 67 65 | tdin.gets.chomp..re.=.%r/^#{Rege |
| 2d700 | 78 70 2e 71 75 6f 74 65 28 61 6e 73 29 7d 2f 0d 0a 63 61 73 65 0d 0a 20 20 20 20 77 68 65 6e 20 | xp.quote(ans)}/..case......when. |
| 2d720 | 22 53 45 4e 44 22 20 20 3d 7e 20 72 65 20 3a 20 70 75 74 73 20 22 41 63 74 69 6f 6e 20 69 73 20 | "SEND"..=~.re.:.puts."Action.is. |
| 2d740 | 73 65 6e 64 22 0d 0a 20 20 20 20 77 68 65 6e 20 22 53 54 4f 50 22 20 20 3d 7e 20 72 65 20 3a 20 | send"......when."STOP"..=~.re.:. |
| 2d760 | 70 75 74 73 20 22 41 63 74 69 6f 6e 20 69 73 20 73 74 6f 70 22 0d 0a 20 20 20 20 77 68 65 6e 20 | puts."Action.is.stop"......when. |
| 2d780 | 22 41 42 4f 52 54 22 20 3d 7e 20 72 65 20 3a 20 70 75 74 73 20 22 41 63 74 69 6f 6e 20 69 73 20 | "ABORT".=~.re.:.puts."Action.is. |
| 2d7a0 | 61 62 6f 72 74 22 0d 0a 20 20 20 20 77 68 65 6e 20 22 45 44 49 54 22 20 20 3d 7e 20 72 65 20 3a | abort"......when."EDIT"..=~.re.: |
| 2d7c0 | 20 70 75 74 73 20 22 41 63 74 69 6f 6e 20 69 73 20 65 64 69 74 22 0d 0a 65 6e 64 0d 0a 23 2d 2d | .puts."Action.is.edit"..end..#-- |
| 2d7e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 72 65 71 | ---------------------------..req |
| 2d800 | 75 69 72 65 20 27 61 62 62 72 65 76 27 0d 0a 74 61 62 6c 65 20 3d 20 41 62 62 72 65 76 2e 61 62 | uire.'abbrev'..table.=.Abbrev.ab |
| 2d820 | 62 72 65 76 20 25 77 2d 73 65 6e 64 20 73 74 6f 70 20 61 62 6f 72 74 20 65 64 69 74 2d 0d 0a 6c | brev.%w-send.stop.abort.edit-..l |
| 2d840 | 6f 6f 70 20 64 6f 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 41 63 74 69 6f 6e 3a 20 22 0d 0a 20 20 | oop.do......print."Action:.".... |
| 2d860 | 20 20 61 6e 73 20 3d 20 24 73 74 64 69 6e 2e 67 65 74 73 2e 63 68 6f 6d 70 0d 0a 20 20 20 20 70 | ..ans.=.$stdin.gets.chomp......p |
| 2d880 | 75 74 73 20 22 41 63 74 69 6f 6e 20 66 6f 72 20 23 7b 61 6e 73 7d 20 69 73 20 23 7b 74 61 62 6c | uts."Action.for.#{ans}.is.#{tabl |
| 2d8a0 | 65 5b 61 6e 73 2e 64 6f 77 6e 63 61 73 65 5d 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 2d 2d 2d | e[ans.downcase]}"..end......#--- |
| 2d8c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 64 75 | --------------------------..#.du |
| 2d8e0 | 6d 6d 79 20 76 61 6c 75 65 73 20 61 72 65 20 64 65 66 69 6e 65 64 20 66 6f 72 20 27 66 69 6c 65 | mmy.values.are.defined.for.'file |
| 2d900 | 27 2c 20 27 50 41 47 45 52 27 2c 20 61 6e 64 0d 0a 23 20 74 68 65 20 27 69 6e 76 6f 6b 65 5f 65 | ',.'PAGER',.and..#.the.'invoke_e |
| 2d920 | 64 69 74 6f 72 27 20 61 6e 64 20 27 64 65 6c 69 76 65 72 5f 6d 65 73 73 61 67 65 27 20 6d 65 74 | ditor'.and.'deliver_message'.met |
| 2d940 | 68 6f 64 73 0d 0a 23 20 64 6f 20 6e 6f 74 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 69 6e 74 65 72 | hods..#.do.not.do.anything.inter |
| 2d960 | 65 73 74 69 6e 67 20 69 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 2e 0d 0a 23 21 2f 75 73 72 2f | esting.in.this.example...#!/usr/ |
| 2d980 | 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 72 65 71 75 69 72 65 20 27 61 62 62 72 65 76 27 0d 0a 0d | bin/ruby.-w..require.'abbrev'... |
| 2d9a0 | 0a 66 69 6c 65 20 3d 20 27 70 6c 65 61 63 5f 72 75 62 79 2e 64 61 74 61 27 0d 0a 50 41 47 45 52 | .file.=.'pleac_ruby.data'..PAGER |
| 2d9c0 | 20 3d 20 27 6c 65 73 73 27 0d 0a 0d 0a 64 65 66 20 69 6e 76 6f 6b 65 5f 65 64 69 74 6f 72 0d 0a | .=.'less'....def.invoke_editor.. |
| 2d9e0 | 20 20 20 20 70 75 74 73 20 22 69 6e 76 6f 6b 69 6e 67 20 65 64 69 74 6f 72 22 0d 0a 65 6e 64 0d | ....puts."invoking.editor"..end. |
| 2da00 | 0a 0d 0a 64 65 66 20 64 65 6c 69 76 65 72 5f 6d 65 73 73 61 67 65 0d 0a 20 20 20 20 70 75 74 73 | ...def.deliver_message......puts |
| 2da20 | 20 22 64 65 6c 69 76 65 72 69 6e 67 20 6d 65 73 73 61 67 65 22 0d 0a 65 6e 64 0d 0a 0d 0a 61 63 | ."delivering.message"..end....ac |
| 2da40 | 74 69 6f 6e 73 20 3d 20 7b 0d 0a 20 20 20 20 27 65 64 69 74 27 20 20 3d 3e 20 73 65 6c 66 2e 6d | tions.=.{......'edit'..=>.self.m |
| 2da60 | 65 74 68 6f 64 28 3a 69 6e 76 6f 6b 65 5f 65 64 69 74 6f 72 29 2c 0d 0a 20 20 20 20 27 73 65 6e | ethod(:invoke_editor),......'sen |
| 2da80 | 64 27 20 20 3d 3e 20 73 65 6c 66 2e 6d 65 74 68 6f 64 28 3a 64 65 6c 69 76 65 72 5f 6d 65 73 73 | d'..=>.self.method(:deliver_mess |
| 2daa0 | 61 67 65 29 2c 0d 0a 20 20 20 20 27 6c 69 73 74 27 20 20 3d 3e 20 70 72 6f 63 20 7b 73 79 73 74 | age),......'list'..=>.proc.{syst |
| 2dac0 | 65 6d 28 50 41 47 45 52 2c 20 66 69 6c 65 29 7d 2c 0d 0a 20 20 20 20 27 61 62 6f 72 74 27 20 3d | em(PAGER,.file)},......'abort'.= |
| 2dae0 | 3e 20 70 72 6f 63 20 7b 70 75 74 73 20 22 53 65 65 20 79 61 21 22 3b 20 65 78 69 74 7d 2c 0d 0a | >.proc.{puts."See.ya!";.exit},.. |
| 2db00 | 20 20 20 20 22 22 20 20 20 20 20 20 3d 3e 20 70 72 6f 63 20 7b 70 75 74 73 20 22 55 6e 6b 6e 6f | ....""......=>.proc.{puts."Unkno |
| 2db20 | 77 6e 20 43 6f 6d 6d 61 6e 64 22 7d 0d 0a 7d 0d 0a 0d 0a 64 74 61 62 6c 65 20 3d 20 41 62 62 72 | wn.Command"}..}....dtable.=.Abbr |
| 2db40 | 65 76 2e 61 62 62 72 65 76 28 61 63 74 69 6f 6e 73 2e 6b 65 79 73 29 0d 0a 6c 6f 6f 70 20 64 6f | ev.abbrev(actions.keys)..loop.do |
| 2db60 | 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 41 63 74 69 6f 6e 3a 20 22 0d 0a 20 20 20 20 61 6e 73 20 | ......print."Action:."......ans. |
| 2db80 | 3d 20 24 73 74 64 69 6e 2e 67 65 74 73 2e 63 68 6f 6d 70 2e 64 65 6c 65 74 65 28 22 20 5c 74 22 | =.$stdin.gets.chomp.delete(".\t" |
| 2dba0 | 29 0d 0a 20 20 20 20 61 63 74 69 6f 6e 73 5b 20 64 74 61 62 6c 65 5b 61 6e 73 2e 64 6f 77 6e 63 | )......actions[.dtable[ans.downc |
| 2dbc0 | 61 73 65 5d 20 7c 7c 20 22 22 20 5d 2e 63 61 6c 6c 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 | ase].||."".].call..end......#.@@ |
| 2dbe0 | 50 4c 45 41 43 40 40 5f 36 2e 31 39 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | PLEAC@@_6.19..#----------------- |
| 2dc00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 62 61 73 69 63 61 6c 6c 79 2c 20 74 68 65 20 50 | ------------..#.basically,.the.P |
| 2dc20 | 65 72 6c 20 43 6f 6f 6b 62 6f 6f 6b 20 63 61 74 65 67 6f 72 69 7a 65 73 20 74 68 69 73 20 61 73 | erl.Cookbook.categorizes.this.as |
| 2dc40 | 20 61 6e 0d 0a 23 20 75 6e 73 6f 6c 76 61 62 6c 65 20 70 72 6f 62 6c 65 6d 20 2e 2e 2e 0d 0a 23 | .an..#.unsolvable.problem......# |
| 2dc60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 31 | -----------------------------..1 |
| 2dc80 | 20 77 68 69 6c 65 20 61 64 64 72 2e 67 73 75 62 21 28 2f 5c 28 5b 5e 28 29 5d 2a 5c 29 2f 2c 27 | .while.addr.gsub!(/\([^()]*\)/,' |
| 2dca0 | 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ')..#--------------------------- |
| 2dcc0 | 2d 2d 0d 0a 44 65 61 72 20 73 6f 6d 65 75 73 65 72 40 68 6f 73 74 2e 63 6f 6d 2c 0d 0a 0d 0a 50 | --..Dear.someuser@host.com,....P |
| 2dce0 | 6c 65 61 73 65 20 63 6f 6e 66 69 72 6d 20 74 68 65 20 6d 61 69 6c 20 61 64 64 72 65 73 73 20 79 | lease.confirm.the.mail.address.y |
| 2dd00 | 6f 75 20 67 61 76 65 20 75 73 20 57 65 64 20 4d 61 79 20 20 36 20 30 39 3a 33 38 3a 34 31 0d 0a | ou.gave.us.Wed.May..6.09:38:41.. |
| 2dd20 | 4d 44 54 20 31 39 39 38 20 62 79 20 72 65 70 6c 79 69 6e 67 20 74 6f 20 74 68 69 73 20 6d 65 73 | MDT.1998.by.replying.to.this.mes |
| 2dd40 | 73 61 67 65 2e 20 20 49 6e 63 6c 75 64 65 20 74 68 65 20 73 74 72 69 6e 67 0d 0a 22 52 75 6d 70 | sage...Include.the.string.."Rump |
| 2dd60 | 65 6c 73 74 69 6c 74 73 6b 69 6e 22 20 69 6e 20 74 68 61 74 20 72 65 70 6c 79 2c 20 62 75 74 20 | elstiltskin".in.that.reply,.but. |
| 2dd80 | 73 70 65 6c 6c 65 64 20 69 6e 20 72 65 76 65 72 73 65 3b 20 74 68 61 74 20 69 73 2c 0d 0a 73 74 | spelled.in.reverse;.that.is,..st |
| 2dda0 | 61 72 74 20 77 69 74 68 20 22 4e 69 6b 2e 2e 2e 22 2e 20 20 4f 6e 63 65 20 74 68 69 73 20 69 73 | art.with."Nik..."...Once.this.is |
| 2ddc0 | 20 64 6f 6e 65 2c 20 79 6f 75 72 20 63 6f 6e 66 69 72 6d 65 64 20 61 64 64 72 65 73 73 20 77 69 | .done,.your.confirmed.address.wi |
| 2dde0 | 6c 6c 0d 0a 62 65 20 65 6e 74 65 72 65 64 20 69 6e 74 6f 20 6f 75 72 20 72 65 63 6f 72 64 73 2e | ll..be.entered.into.our.records. |
| 2de00 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 32 31 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | ......#.@@PLEAC@@_6.21..#------- |
| 2de20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 25 20 67 75 6e 7a 69 | ----------------------..#%.gunzi |
| 2de40 | 70 20 2d 63 20 7e 2f 6d 61 69 6c 2f 61 72 63 68 69 76 65 2e 67 7a 20 7c 20 75 72 6c 69 66 79 20 | p.-c.~/mail/archive.gz.|.urlify. |
| 2de60 | 3e 20 61 72 63 68 69 76 65 2e 75 72 6c 69 66 69 65 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | >.archive.urlified..#----------- |
| 2de80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 25 20 75 72 6c 69 66 79 20 7e 2f | ------------------..#%.urlify.~/ |
| 2dea0 | 6d 61 69 6c 2f 2a 2e 69 6e 62 6f 78 20 3e 20 7e 2f 61 6c 6c 6d 61 69 6c 2e 75 72 6c 69 66 69 65 | mail/*.inbox.>.~/allmail.urlifie |
| 2dec0 | 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | d..#---------------------------- |
| 2dee0 | 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 75 72 6c 69 66 79 20 | -..#!/usr/bin/ruby.-w..#.urlify. |
| 2df00 | 2d 20 77 72 61 70 20 48 54 4d 4c 20 6c 69 6e 6b 73 20 61 72 6f 75 6e 64 20 55 52 4c 2d 6c 69 6b | -.wrap.HTML.links.around.URL-lik |
| 2df20 | 65 20 63 6f 6e 73 74 72 75 63 74 73 0d 0a 0d 0a 75 72 6c 73 20 3d 20 27 28 68 74 74 70 73 3f 7c | e.constructs....urls.=.'(https?| |
| 2df40 | 74 65 6c 6e 65 74 7c 67 6f 70 68 65 72 7c 66 69 6c 65 7c 77 61 69 73 7c 66 74 70 29 27 3b 0d 0a | telnet|gopher|file|wais|ftp)';.. |
| 2df60 | 6c 74 72 73 20 3d 20 27 5c 77 27 3b 0d 0a 67 75 6e 6b 20 3d 20 27 2f 23 7e 3a 2e 3f 2b 3d 26 25 | ltrs.=.'\w';..gunk.=.'/#~:.?+=&% |
| 2df80 | 40 21 5c 2d 27 3b 0d 0a 70 75 6e 63 20 3d 20 27 2e 3a 3f 5c 2d 27 3b 0d 0a 61 6e 79 20 20 3d 20 | @!\-';..punc.=.'.:?\-';..any..=. |
| 2dfa0 | 22 23 7b 6c 74 72 73 7d 23 7b 67 75 6e 6b 7d 23 7b 70 75 6e 63 7d 22 3b 0d 0a 0d 0a 41 52 47 46 | "#{ltrs}#{gunk}#{punc}";....ARGF |
| 2dfc0 | 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 6c 69 6e 65 2e 67 73 75 62 21 20 | .each.do.|line|......line.gsub!. |
| 2dfe0 | 25 72 2f 0d 0a 20 20 20 20 20 20 20 20 5c 62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | %r/..........\b................. |
| 2e000 | 20 20 20 23 20 73 74 61 72 74 20 61 74 20 77 6f 72 64 20 62 6f 75 6e 64 61 72 79 0d 0a 20 20 20 | ...#.start.at.word.boundary..... |
| 2e020 | 20 20 20 20 20 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 62 65 67 | .....(.....................#.beg |
| 2e040 | 69 6e 20 24 31 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 23 7b 75 72 6c 73 7d 20 20 20 20 20 3a | in.$1..{...........#{urls}.....: |
| 2e060 | 20 20 20 20 20 20 20 20 23 20 6e 65 65 64 20 72 65 73 6f 75 72 63 65 20 61 6e 64 20 61 20 63 6f | ........#.need.resource.and.a.co |
| 2e080 | 6c 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 5b 23 7b 61 6e 79 7d 5d 20 2b 3f 20 20 20 20 20 20 20 | lon...........[#{any}].+?....... |
| 2e0a0 | 20 20 20 23 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 6f 6e 20 6f 72 20 6d 6f 72 65 0d 0a 20 20 20 | ...#.followed.by.on.or.more..... |
| 2e0c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 6f 66 | ...........................#..of |
| 2e0e0 | 20 61 6e 79 20 76 61 6c 69 64 20 63 68 61 72 61 63 74 65 72 2c 20 62 75 74 0d 0a 20 20 20 20 20 | .any.valid.character,.but....... |
| 2e100 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 62 65 20 63 | .........................#..be.c |
| 2e120 | 6f 6e 73 65 72 76 61 74 69 76 65 20 61 6e 64 20 74 61 6b 65 20 6f 6e 6c 79 0d 0a 20 20 20 20 20 | onservative.and.take.only....... |
| 2e140 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 20 77 68 61 74 | .........................#..what |
| 2e160 | 20 79 6f 75 20 6e 65 65 64 20 74 6f 2e 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 29 20 20 20 20 20 | .you.need.to..............)..... |
| 2e180 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 65 6e 64 20 20 20 24 31 20 20 7d 0d 0a 20 | ................#.end...$1..}... |
| 2e1a0 | 20 20 20 20 20 20 20 28 3f 3d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6c | .......(?=...................#.l |
| 2e1c0 | 6f 6f 6b 2d 61 68 65 61 64 20 6e 6f 6e 2d 63 6f 6e 73 75 6d 70 74 69 76 65 20 61 73 73 65 72 74 | ook-ahead.non-consumptive.assert |
| 2e1e0 | 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 5b 23 7b 70 75 6e 63 7d 5d 2a 20 20 20 20 20 20 20 20 | ion...........[#{punc}]*........ |
| 2e200 | 20 20 20 23 20 65 69 74 68 65 72 20 30 20 6f 72 20 6d 6f 72 65 20 70 75 6e 63 74 75 61 74 69 6f | ...#.either.0.or.more.punctuatio |
| 2e220 | 6e 0d 0a 20 20 20 20 20 20 20 20 20 5b 5e 23 7b 61 6e 79 7d 5d 20 20 20 20 20 20 20 20 20 20 20 | n...........[^#{any}]........... |
| 2e240 | 20 23 20 20 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 20 6e 6f 6e 2d 75 72 6c 20 63 68 61 72 0d | .#...followed.by.a.non-url.char. |
| 2e260 | 0a 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 | ..........|....................# |
| 2e280 | 20 6f 72 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 24 20 20 20 20 20 20 20 20 20 20 20 20 | .or.else...........$............ |
| 2e2a0 | 20 20 20 20 20 20 20 20 23 20 20 20 74 68 65 6e 20 65 6e 64 20 6f 66 20 74 68 65 20 73 74 72 69 | ........#...then.end.of.the.stri |
| 2e2c0 | 6e 67 0d 0a 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 2f 69 6f 78 20 64 6f 0d 0a 20 20 20 20 | ng..........)....../iox.do...... |
| 2e2e0 | 20 20 20 20 25 51 7c 3c 41 20 48 52 45 46 3d 22 23 7b 24 31 7d 22 3e 23 7b 24 31 7d 3c 2f 41 3e | ....%Q|<A.HREF="#{$1}">#{$1}</A> |
| 2e300 | 7c 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 70 72 69 6e 74 20 6c 69 6e 65 0d 0a 65 6e 64 0d | |......end......print.line..end. |
| 2e320 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 36 2e 32 33 0d 0a 25 72 2f 5e 6d 2a 28 64 3f | .....#.@@PLEAC@@_6.23..%r/^m*(d? |
| 2e340 | 63 7b 30 2c 33 7d 7c 63 5b 64 6d 5d 29 28 6c 3f 78 7b 30 2c 33 7d 7c 78 5b 6c 63 5d 29 28 76 3f | c{0,3}|c[dm])(l?x{0,3}|x[lc])(v? |
| 2e360 | 69 7b 30 2c 33 7d 7c 69 5b 76 78 5d 29 24 2f 69 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | i{0,3}|i[vx])$/i..#------------- |
| 2e380 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 73 75 62 21 28 2f 28 5c 53 2b | ----------------..str.sub!(/(\S+ |
| 2e3a0 | 29 28 5c 73 2b 29 28 5c 53 2b 29 2f 2c 20 27 5c 33 5c 32 5c 31 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d | )(\s+)(\S+)/,.'\3\2\1')..#------ |
| 2e3c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 2f 28 5c 77 2b | -----------------------..%r/(\w+ |
| 2e3e0 | 29 5c 73 2a 3d 5c 73 2a 28 2e 2a 29 5c 73 2a 24 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | )\s*=\s*(.*)\s*$/.............#. |
| 2e400 | 6b 65 79 77 6f 72 64 20 69 73 20 24 31 2c 20 76 61 6c 75 65 20 69 73 20 24 32 0d 0a 23 2d 2d 2d | keyword.is.$1,.value.is.$2..#--- |
| 2e420 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 2f 2e | --------------------------..%r/. |
| 2e440 | 7b 38 30 2c 7d 2f 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | {80,}/..#----------------------- |
| 2e460 | 2d 2d 2d 2d 2d 2d 0d 0a 25 72 7c 28 5c 64 2b 29 2f 28 5c 64 2b 29 2f 28 5c 64 2b 29 20 28 5c 64 | ------..%r|(\d+)/(\d+)/(\d+).(\d |
| 2e480 | 2b 29 3a 28 5c 64 2b 29 3a 28 5c 64 2b 29 7c 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | +):(\d+):(\d+)|..#-------------- |
| 2e4a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 67 73 75 62 21 28 25 72 7c 2f 75 | ---------------..str.gsub!(%r|/u |
| 2e4c0 | 73 72 2f 62 69 6e 7c 2c 27 2f 75 73 72 2f 6c 6f 63 61 6c 2f 62 69 6e 27 29 0d 0a 23 2d 2d 2d 2d | sr/bin|,'/usr/local/bin')..#---- |
| 2e4e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 67 | -------------------------..str.g |
| 2e500 | 73 75 62 21 28 2f 25 28 5b 30 2d 39 41 2d 46 61 2d 66 5d 5b 30 2d 39 41 2d 46 61 2d 66 5d 29 2f | sub!(/%([0-9A-Fa-f][0-9A-Fa-f])/ |
| 2e520 | 29 7b 20 24 31 2e 68 65 78 2e 63 68 72 20 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ){.$1.hex.chr.}..#-------------- |
| 2e540 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 67 73 75 62 21 28 25 72 7b 0d 0a | ---------------..str.gsub!(%r{.. |
| 2e560 | 20 20 20 20 2f 5c 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4d 61 74 | ..../\*....................#.Mat |
| 2e580 | 63 68 20 74 68 65 20 6f 70 65 6e 69 6e 67 20 64 65 6c 69 6d 69 74 65 72 0d 0a 20 20 20 20 2e 2a | ch.the.opening.delimiter.......* |
| 2e5a0 | 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4d 61 74 63 68 20 61 20 6d | ?....................#.Match.a.m |
| 2e5c0 | 69 6e 69 6d 61 6c 20 6e 75 6d 62 65 72 20 6f 66 20 63 68 61 72 61 63 74 65 72 73 0d 0a 20 20 20 | inimal.number.of.characters..... |
| 2e5e0 | 20 5c 2a 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 4d 61 74 63 68 20 | .\*/....................#.Match. |
| 2e600 | 74 68 65 20 63 6c 6f 73 69 6e 67 20 64 65 6c 69 6d 69 74 65 72 0d 0a 7d 78 6d 2c 27 27 29 0d 0a | the.closing.delimiter..}xm,'').. |
| 2e620 | 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a | #-----------------------------.. |
| 2e640 | 73 74 72 2e 73 75 62 21 28 2f 5e 5c 73 2b 2f 2c 20 27 27 29 0d 0a 73 74 72 2e 73 75 62 21 28 2f | str.sub!(/^\s+/,.'')..str.sub!(/ |
| 2e660 | 5c 73 2b 24 2f 2c 20 27 27 29 0d 0a 0d 0a 23 20 62 75 74 20 72 65 61 6c 6c 79 2c 20 69 6e 20 52 | \s+$/,.'')....#.but.really,.in.R |
| 2e680 | 75 62 79 20 77 65 27 64 20 6a 75 73 74 20 64 6f 3a 0d 0a 73 74 72 2e 73 74 72 69 70 21 0d 0a 23 | uby.we'd.just.do:..str.strip!..# |
| 2e6a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 | -----------------------------..s |
| 2e6c0 | 74 72 2e 67 73 75 62 21 28 2f 5c 5c 6e 2f 2c 22 5c 6e 22 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | tr.gsub!(/\\n/,"\n")..#--------- |
| 2e6e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 73 75 62 21 28 2f | --------------------..str.sub!(/ |
| 2e700 | 5e 2e 2a 3a 3a 2f 2c 20 27 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ^.*::/,.'')..#------------------ |
| 2e720 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 2f 5e 28 5b 30 31 5d 3f 5c 64 5c 64 7c 32 5b 30 2d | -----------..%r/^([01]?\d\d|2[0- |
| 2e740 | 34 5d 5c 64 7c 32 35 5b 30 2d 35 5d 29 5c 2e 28 5b 30 31 5d 3f 5c 64 5c 64 7c 32 5b 30 2d 34 5d | 4]\d|25[0-5])\.([01]?\d\d|2[0-4] |
| 2e760 | 5c 64 7c 32 35 5b 30 2d 35 5d 29 5c 2e 0d 0a 20 20 20 20 28 5b 30 31 5d 3f 5c 64 5c 64 7c 32 5b | \d|25[0-5])\.......([01]?\d\d|2[ |
| 2e780 | 30 2d 34 5d 5c 64 7c 32 35 5b 30 2d 35 5d 29 5c 2e 28 5b 30 31 5d 3f 5c 64 5c 64 7c 32 5b 30 2d | 0-4]\d|25[0-5])\.([01]?\d\d|2[0- |
| 2e7a0 | 34 5d 5c 64 7c 32 35 5b 30 2d 35 5d 29 24 2f 78 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | 4]\d|25[0-5])$/x..#------------- |
| 2e7c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 73 75 62 21 28 25 72 7c 5e 2e | ----------------..str.sub!(%r|^. |
| 2e7e0 | 2a 2f 7c 2c 20 27 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | */|,.'')..#--------------------- |
| 2e800 | 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 63 6f 6c 73 20 3d 20 28 20 28 45 4e 56 5b 27 54 45 52 4d 43 41 50 | --------..cols.=.(.(ENV['TERMCAP |
| 2e820 | 27 5d 20 7c 7c 20 22 20 22 29 20 3d 7e 20 2f 3a 63 6f 23 28 5c 64 2b 29 3a 2f 20 29 20 3f 20 24 | '].||.".").=~./:co#(\d+):/.).?.$ |
| 2e840 | 31 20 3a 20 38 30 3b 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | 1.:.80;..#---------------------- |
| 2e860 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 6e 61 6d 65 20 3d 20 22 20 23 7b 24 30 7d 20 23 7b 41 52 47 56 7d 22 | -------..name.=.".#{$0}.#{ARGV}" |
| 2e880 | 2e 67 73 75 62 28 25 72 7c 20 2f 5c 53 2b 2f 7c 2c 20 27 20 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | .gsub(%r|./\S+/|,.'.')..#------- |
| 2e8a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 72 65 71 75 69 72 65 20 | ----------------------..require. |
| 2e8c0 | 27 72 62 63 6f 6e 66 69 67 27 0d 0a 69 6e 63 6c 75 64 65 20 43 6f 6e 66 69 67 0d 0a 72 61 69 73 | 'rbconfig'..include.Config..rais |
| 2e8e0 | 65 20 22 54 68 69 73 20 69 73 6e 27 74 20 4c 69 6e 75 78 22 20 75 6e 6c 65 73 73 20 43 4f 4e 46 | e."This.isn't.Linux".unless.CONF |
| 2e900 | 49 47 5b 27 74 61 72 67 65 74 5f 6f 73 27 5d 20 3d 7e 20 2f 6c 69 6e 75 78 2f 69 3b 0d 0a 23 2d | IG['target_os'].=~./linux/i;..#- |
| 2e920 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 | ----------------------------..st |
| 2e940 | 72 2e 67 73 75 62 21 28 25 72 2f 5c 6e 5c 73 2b 2f 2c 20 27 20 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d | r.gsub!(%r/\n\s+/,.'.')..#------ |
| 2e960 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6e 75 6d 73 20 3d 20 | -----------------------..nums.=. |
| 2e980 | 73 74 72 2e 73 63 61 6e 28 2f 28 5c 64 2b 5c 2e 3f 5c 64 2a 7c 5c 2e 5c 64 2b 29 2f 29 0d 0a 23 | str.scan(/(\d+\.?\d*|\.\d+)/)..# |
| 2e9a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 63 | -----------------------------..c |
| 2e9c0 | 61 70 77 6f 72 64 73 20 3d 20 73 74 72 2e 73 63 61 6e 28 25 72 2f 28 5c 62 5b 5e 5c 57 61 2d 7a | apwords.=.str.scan(%r/(\b[^\Wa-z |
| 2e9e0 | 30 2d 39 5f 5d 2b 5c 62 29 2f 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | 0-9_]+\b)/)..#------------------ |
| 2ea00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6c 6f 77 6f 72 64 73 20 3d 20 73 74 72 2e 73 63 61 6e 28 | -----------..lowords.=.str.scan( |
| 2ea20 | 25 72 2f 28 5c 62 5b 5e 5c 57 41 2d 5a 30 2d 39 5f 5d 2b 5c 62 29 2f 29 0d 0a 23 2d 2d 2d 2d 2d | %r/(\b[^\WA-Z0-9_]+\b)/)..#----- |
| 2ea40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 69 63 77 6f 72 64 | ------------------------..icword |
| 2ea60 | 73 20 3d 20 73 74 72 2e 73 63 61 6e 28 25 72 2f 28 5c 62 5b 5e 5c 57 61 2d 7a 30 2d 39 5f 5d 5b | s.=.str.scan(%r/(\b[^\Wa-z0-9_][ |
| 2ea80 | 5e 5c 57 41 2d 5a 30 2d 39 5f 5d 2a 5c 62 29 2f 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ^\WA-Z0-9_]*\b)/)..#------------ |
| 2eaa0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6c 69 6e 6b 73 20 3d 20 73 74 72 2e 73 | -----------------..links.=.str.s |
| 2eac0 | 63 61 6e 28 25 72 2f 3c 41 5b 5e 3e 5d 2b 3f 48 52 45 46 5c 73 2a 3d 5c 73 2a 5b 22 27 5d 3f 28 | can(%r/<A[^>]+?HREF\s*=\s*["']?( |
| 2eae0 | 5b 5e 27 22 20 3e 5d 2b 3f 29 5b 20 27 22 5d 3f 3e 2f 6d 69 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | [^'".>]+?)[.'"]?>/mi)..#-------- |
| 2eb00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 69 6e 69 74 69 61 6c 20 3d | ---------------------..initial.= |
| 2eb20 | 20 73 74 72 20 3d 7e 20 2f 5e 5c 53 2b 5c 73 2b 28 5c 53 29 5c 53 2a 5c 73 2b 5c 53 2f 20 3f 20 | .str.=~./^\S+\s+(\S)\S*\s+\S/.?. |
| 2eb40 | 24 31 20 3a 20 22 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | $1.:.""..#---------------------- |
| 2eb60 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 74 72 2e 67 73 75 62 21 28 25 72 2f 22 28 5b 5e 22 5d 2a 29 22 2f | -------..str.gsub!(%r/"([^"]*)"/ |
| 2eb80 | 2c 20 25 71 2d 60 60 5c 31 27 27 2d 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ,.%q-``\1''-)..#---------------- |
| 2eba0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 24 2f 20 3d 20 22 22 0d 0a 73 65 6e 74 65 6e | -------------....$/.=.""..senten |
| 2ebc0 | 63 65 73 20 3d 20 5b 5d 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 70 61 72 61 7c 0d 0a 20 | ces.=.[]..ARGF.each.do.|para|... |
| 2ebe0 | 20 20 20 70 61 72 61 2e 67 73 75 62 21 28 2f 5c 6e 2f 2c 20 27 20 27 29 0d 0a 20 20 20 20 70 61 | ...para.gsub!(/\n/,.'.')......pa |
| 2ec00 | 72 61 2e 67 73 75 62 21 28 2f 20 7b 33 2c 7d 2f 2c 27 20 20 27 29 0d 0a 20 20 20 20 73 65 6e 74 | ra.gsub!(/.{3,}/,'..')......sent |
| 2ec20 | 65 6e 63 65 73 20 3c 3c 20 70 61 72 61 2e 73 63 61 6e 28 2f 28 5c 53 2e 2a 3f 5b 21 3f 2e 5d 29 | ences.<<.para.scan(/(\S.*?[!?.]) |
| 2ec40 | 28 3f 3d 20 20 7c 5c 5a 29 2f 29 0d 0a 65 6e 64 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | (?=..|\Z)/)..end....#----------- |
| 2ec60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 2f 28 5c 64 7b 34 7d 29 2d 28 | ------------------..%r/(\d{4})-( |
| 2ec80 | 5c 64 5c 64 29 2d 28 5c 64 5c 64 29 2f 20 20 20 20 20 20 20 20 20 20 20 20 23 20 59 59 59 59 20 | \d\d)-(\d\d)/............#.YYYY. |
| 2eca0 | 69 6e 20 24 31 2c 20 4d 4d 20 69 6e 20 24 32 2c 20 44 44 20 69 6e 20 24 33 0d 0a 23 2d 2d 2d 2d | in.$1,.MM.in.$2,.DD.in.$3..#---- |
| 2ecc0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 25 72 2f 20 5e | -------------------------..%r/.^ |
| 2ece0 | 0d 0a 20 20 20 20 20 20 28 3f 3a 0d 0a 20 20 20 20 20 20 20 31 20 5c 73 20 28 3f 3a 20 5c 64 5c | ........(?:.........1.\s.(?:.\d\ |
| 2ed00 | 64 5c 64 20 5c 73 29 3f 20 20 20 20 20 20 20 20 20 20 20 20 23 20 31 2c 20 6f 72 20 31 20 61 6e | d\d.\s)?............#.1,.or.1.an |
| 2ed20 | 64 20 61 72 65 61 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 | d.area.code.........|........... |
| 2ed40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 2e 2e 2e 20 6f 72 20 2e 2e 2e | ....................#.....or.... |
| 2ed60 | 0d 0a 20 20 20 20 20 20 20 5c 28 5c 64 5c 64 5c 64 5c 29 20 5c 73 20 20 20 20 20 20 20 20 20 20 | .........\(\d\d\d\).\s.......... |
| 2ed80 | 20 20 20 20 20 20 20 20 20 23 20 61 72 65 61 20 63 6f 64 65 20 77 69 74 68 20 70 61 72 65 6e 73 | .........#.area.code.with.parens |
| 2eda0 | 0d 0a 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........|...................... |
| 2edc0 | 20 20 20 20 20 20 20 20 20 23 20 2e 2e 2e 20 6f 72 20 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 28 3f | .........#.....or.............(? |
| 2ede0 | 3a 20 5c 2b 5c 64 5c 64 3f 5c 64 3f 20 5c 73 29 3f 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | :.\+\d\d?\d?.\s)?.............#. |
| 2ee00 | 6f 70 74 69 6f 6e 61 6c 20 2b 63 6f 75 6e 74 72 79 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 20 5c | optional.+country.code.........\ |
| 2ee20 | 64 5c 64 5c 64 20 28 5b 5c 73 5c 2d 5d 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 | d\d\d.([\s\-]).................# |
| 2ee40 | 20 61 6e 64 20 61 72 65 61 20 63 6f 64 65 0d 0a 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 5c | .and.area.code........)........\ |
| 2ee60 | 64 5c 64 5c 64 20 28 5c 73 7c 5c 31 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | d\d\d.(\s|\1)................... |
| 2ee80 | 23 20 70 72 65 66 69 78 20 28 61 6e 64 20 61 72 65 61 20 63 6f 64 65 20 73 65 70 61 72 61 74 6f | #.prefix.(and.area.code.separato |
| 2eea0 | 72 29 0d 0a 20 20 20 20 20 20 5c 64 5c 64 5c 64 5c 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r)........\d\d\d\d.............. |
| 2eec0 | 20 20 20 20 20 20 20 20 20 20 20 23 20 65 78 63 68 61 6e 67 65 0d 0a 20 20 20 20 20 20 20 20 24 | ...........#.exchange..........$ |
| 2eee0 | 0d 0a 20 2f 78 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .../x..#------------------------ |
| 2ef00 | 2d 2d 2d 2d 2d 0d 0a 25 72 2f 5c 62 6f 68 5c 73 2b 6d 79 5c 73 2b 67 68 3f 6f 28 64 28 64 65 73 | -----..%r/\boh\s+my\s+gh?o(d(des |
| 2ef20 | 73 28 65 73 29 3f 7c 73 3f 29 7c 6f 64 6e 65 73 73 7c 73 68 29 5c 62 2f 69 0d 0a 23 2d 2d 2d 2d | s(es)?|s?)|odness|sh)\b/i..#---- |
| 2ef40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6c 69 6e 65 73 | -------------------------..lines |
| 2ef60 | 20 3d 20 5b 5d 0d 0a 6c 69 6e 65 73 20 3c 3c 20 24 31 20 77 68 69 6c 65 20 69 6e 70 75 74 2e 73 | .=.[]..lines.<<.$1.while.input.s |
| 2ef80 | 75 62 21 28 2f 5e 28 5b 5e 5c 30 31 32 5c 30 31 35 5d 2a 29 28 5c 30 31 32 5c 30 31 35 3f 7c 5c | ub!(/^([^\012\015]*)(\012\015?|\ |
| 2efa0 | 30 31 35 5c 30 31 32 3f 29 2f 2c 27 27 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f | 015\012?)/,'')......#.@@PLEAC@@_ |
| 2efc0 | 37 2e 30 0d 0a 23 20 41 6e 20 49 4f 20 6f 62 6a 65 63 74 20 62 65 69 6e 67 20 45 6e 75 6d 65 72 | 7.0..#.An.IO.object.being.Enumer |
| 2efe0 | 61 62 6c 65 2c 20 77 65 20 63 61 6e 20 75 73 65 20 27 65 61 63 68 27 20 64 69 72 65 63 74 6c 79 | able,.we.can.use.'each'.directly |
| 2f000 | 20 6f 6e 20 69 74 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 22 2f 75 73 72 2f 6c 6f 63 61 6c 2f 77 69 | .on.it..File.open("/usr/local/wi |
| 2f020 | 64 67 65 74 73 2f 64 61 74 61 22 29 2e 65 61 63 68 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 | dgets/data").each.{.|line|...... |
| 2f040 | 70 75 74 73 20 6c 69 6e 65 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 62 6c 75 65 2f 0d 0a 7d 0d 0a | puts.line.if.line.=~./blue/..}.. |
| 2f060 | 0d 0a 6c 6f 67 66 69 6c 65 20 3d 20 46 69 6c 65 2e 6e 65 77 28 22 2f 76 61 72 2f 6c 6f 67 2f 72 | ..logfile.=.File.new("/var/log/r |
| 2f080 | 75 62 79 6c 6f 67 2e 74 78 74 22 2c 20 22 77 22 29 0d 0a 6d 79 73 75 62 28 24 73 74 64 69 6e 2c | ubylog.txt",."w")..mysub($stdin, |
| 2f0a0 | 20 6c 6f 67 66 69 6c 65 29 0d 0a 0d 0a 23 20 54 68 65 20 6d 65 74 68 6f 64 20 49 4f 23 72 65 61 | .logfile)....#.The.method.IO#rea |
| 2f0c0 | 64 6c 69 6e 65 20 69 73 20 73 69 6d 69 6c 61 72 20 20 74 6f 20 49 4f 23 67 65 74 73 0d 0a 23 20 | dline.is.similar..to.IO#gets..#. |
| 2f0e0 | 62 75 74 20 74 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 20 77 68 65 6e 20 69 74 20 | but.throws.an.exception.when.it. |
| 2f100 | 72 65 61 63 68 65 73 20 45 4f 46 0d 0a 66 20 3d 20 46 69 6c 65 2e 6e 65 77 28 22 62 6c 61 2e 74 | reaches.EOF..f.=.File.new("bla.t |
| 2f120 | 78 74 22 29 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 77 68 69 6c 65 20 28 6c 69 6e 65 20 3d 20 66 | xt")..begin......while.(line.=.f |
| 2f140 | 2e 72 65 61 64 6c 69 6e 65 29 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 2e 63 68 6f 6d 70 0d 0a | .readline)..........line.chomp.. |
| 2f160 | 20 20 20 20 20 20 20 20 24 73 74 64 6f 75 74 2e 70 72 69 6e 74 20 6c 69 6e 65 20 69 66 20 6c 69 | ........$stdout.print.line.if.li |
| 2f180 | 6e 65 20 3d 7e 20 2f 62 6c 75 65 2f 0d 0a 20 20 20 20 65 6e 64 0d 0a 72 65 73 63 75 65 20 45 4f | ne.=~./blue/......end..rescue.EO |
| 2f1a0 | 46 45 72 72 6f 72 0d 0a 20 20 20 20 66 2e 63 6c 6f 73 65 0d 0a 65 6e 64 0d 0a 0d 0a 77 68 69 6c | FError......f.close..end....whil |
| 2f1c0 | 65 20 24 73 74 64 69 6e 2e 67 65 74 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e.$stdin.gets................... |
| 2f1e0 | 20 20 20 20 20 23 20 72 65 61 64 73 20 66 72 6f 6d 20 53 54 44 49 4e 0d 0a 20 20 20 20 75 6e 6c | .....#.reads.from.STDIN......unl |
| 2f200 | 65 73 73 20 28 2f 5c 64 2f 29 0d 0a 20 20 20 20 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 | ess.(/\d/)..........$stderr.puts |
| 2f220 | 20 22 4e 6f 20 64 69 67 69 74 20 66 6f 75 6e 64 2e 22 20 20 20 23 20 77 72 69 74 65 73 20 74 6f | ."No.digit.found."...#.writes.to |
| 2f240 | 20 53 54 44 45 52 52 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 70 75 74 73 20 22 52 65 61 64 | .STDERR......end......puts."Read |
| 2f260 | 3a 20 23 7b 24 5f 7d 22 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 72 69 | :.#{$_}"...................#.wri |
| 2f280 | 74 65 73 20 74 6f 20 53 54 44 4f 55 54 0d 0a 65 6e 64 0d 0a 0d 0a 6c 6f 67 66 69 6c 65 20 3d 20 | tes.to.STDOUT..end....logfile.=. |
| 2f2a0 | 46 69 6c 65 2e 6e 65 77 28 22 2f 74 6d 70 2f 6c 6f 67 22 2c 20 22 77 22 29 0d 0a 0d 0a 6c 6f 67 | File.new("/tmp/log",."w")....log |
| 2f2c0 | 66 69 6c 65 2e 63 6c 6f 73 65 0d 0a 0d 0a 23 20 24 64 65 66 6f 75 74 20 28 6f 72 20 69 74 73 20 | file.close....#.$defout.(or.its. |
| 2f2e0 | 73 79 6e 6f 6e 79 6d 20 27 24 3e 27 29 20 69 73 20 74 68 65 20 64 65 73 74 69 6e 61 74 69 6f 6e | synonym.'$>').is.the.destination |
| 2f300 | 20 6f 66 20 6f 75 74 70 75 74 0d 0a 23 20 66 6f 72 20 4b 65 72 6e 65 6c 23 70 72 69 6e 74 2c 20 | .of.output..#.for.Kernel#print,. |
| 2f320 | 4b 65 72 6e 65 6c 23 70 75 74 73 2c 20 61 6e 64 20 66 61 6d 69 6c 79 20 66 75 6e 63 74 69 6f 6e | Kernel#puts,.and.family.function |
| 2f340 | 73 0d 0a 6c 6f 67 66 69 6c 65 20 3d 20 46 69 6c 65 2e 6e 65 77 28 22 6c 6f 67 2e 74 78 74 22 2c | s..logfile.=.File.new("log.txt", |
| 2f360 | 20 22 77 22 29 0d 0a 6f 6c 64 20 3d 20 24 64 65 66 6f 75 74 0d 0a 24 64 65 66 6f 75 74 20 3d 20 | ."w")..old.=.$defout..$defout.=. |
| 2f380 | 6c 6f 67 66 69 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 77 69 74 63 68 | logfile.................#.switch |
| 2f3a0 | 20 74 6f 20 6c 6f 67 66 69 6c 65 20 66 6f 72 20 6f 75 74 70 75 74 0d 0a 70 75 74 73 20 22 43 6f | .to.logfile.for.output..puts."Co |
| 2f3c0 | 75 6e 74 64 6f 77 6e 20 69 6e 69 74 69 61 74 65 64 20 2e 2e 2e 22 0d 0a 24 64 65 66 6f 75 74 20 | untdown.initiated...."..$defout. |
| 2f3e0 | 3d 20 6f 6c 64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 74 75 | =.old.....................#.retu |
| 2f400 | 72 6e 20 74 6f 20 6f 72 69 67 69 6e 61 6c 20 6f 75 74 70 75 74 0d 0a 70 75 74 73 20 22 59 6f 75 | rn.to.original.output..puts."You |
| 2f420 | 20 68 61 76 65 20 33 30 20 73 65 63 6f 6e 64 73 20 74 6f 20 72 65 61 63 68 20 6d 69 6e 69 6d 75 | .have.30.seconds.to.reach.minimu |
| 2f440 | 6d 20 73 61 66 65 74 79 20 64 69 73 74 61 6e 63 65 2e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | m.safety.distance."......#.@@PLE |
| 2f460 | 41 43 40 40 5f 37 2e 31 0d 0a 73 6f 75 72 63 65 20 3d 20 46 69 6c 65 2e 6e 65 77 28 70 61 74 68 | AC@@_7.1..source.=.File.new(path |
| 2f480 | 2c 20 22 72 22 29 20 20 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 66 6f 72 20 72 | ,."r")..#.open.file."path".for.r |
| 2f4a0 | 65 61 64 69 6e 67 20 6f 6e 6c 79 0d 0a 73 69 6e 6b 20 20 20 3d 20 46 69 6c 65 2e 6e 65 77 28 70 | eading.only..sink...=.File.new(p |
| 2f4c0 | 61 74 68 2c 20 22 77 22 29 20 20 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 66 6f | ath,."w")..#.open.file."path".fo |
| 2f4e0 | 72 20 77 72 69 74 69 6e 67 20 6f 6e 6c 79 0d 0a 0d 0a 73 6f 75 72 63 65 20 3d 20 46 69 6c 65 2e | r.writing.only....source.=.File. |
| 2f500 | 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a 3a 52 44 4f 4e 4c 59 29 20 20 23 20 6f 70 65 6e | open(path,.File::RDONLY)..#.open |
| 2f520 | 20 66 69 6c 65 20 22 70 61 74 68 22 20 66 6f 72 20 72 65 61 64 69 6e 67 20 6f 6e 6c 79 0d 0a 73 | .file."path".for.reading.only..s |
| 2f540 | 69 6e 6b 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a 3a 57 52 | ink...=.File.open(path,.File::WR |
| 2f560 | 4f 4e 4c 59 29 20 20 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 66 6f 72 20 77 72 | ONLY)..#.open.file."path".for.wr |
| 2f580 | 69 74 69 6e 67 20 6f 6e 6c 79 0d 0a 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e | iting.only....file...=.File.open |
| 2f5a0 | 28 70 61 74 68 2c 20 22 72 2b 22 29 20 20 23 20 6f 70 65 6e 20 22 70 61 74 68 22 20 66 6f 72 20 | (path,."r+")..#.open."path".for. |
| 2f5c0 | 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 | reading.and.writing..file...=.Fi |
| 2f5e0 | 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 66 6c 61 67 73 29 20 23 20 6f 70 65 6e 20 22 70 61 74 | le.open(path,.flags).#.open."pat |
| 2f600 | 68 22 20 77 69 74 68 20 74 68 65 20 66 6c 61 67 73 20 22 66 6c 61 67 73 22 20 28 73 65 65 20 65 | h".with.the.flags."flags".(see.e |
| 2f620 | 78 61 6d 70 6c 65 73 20 62 65 6c 6f 77 20 66 6f 72 20 66 6c 61 67 73 29 0d 0a 0d 0a 23 20 6f 70 | xamples.below.for.flags)....#.op |
| 2f640 | 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 72 65 61 64 20 6f 6e 6c 79 0d 0a 66 69 6c 65 20 20 | en.file."path".read.only..file.. |
| 2f660 | 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 22 72 22 29 0d 0a 66 69 6c 65 20 20 20 | .=.File.open(path,."r")..file... |
| 2f680 | 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a 3a 52 44 4f 4e 4c 59 29 0d | =.File.open(path,.File::RDONLY). |
| 2f6a0 | 0a 0d 0a 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 77 72 69 74 65 20 6f 6e 6c 79 | ...#.open.file."path".write.only |
| 2f6c0 | 2c 20 63 72 65 61 74 65 20 69 74 20 69 66 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 | ,.create.it.if.it.does.not.exist |
| 2f6e0 | 0d 0a 23 20 74 72 75 6e 63 61 74 65 20 69 74 20 74 6f 20 7a 65 72 6f 20 6c 65 6e 67 74 68 20 69 | ..#.truncate.it.to.zero.length.i |
| 2f700 | 66 20 69 74 20 65 78 69 73 74 73 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 | f.it.exists..file...=.File.open( |
| 2f720 | 70 61 74 68 2c 20 22 77 22 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 | path,."w")..file...=.File.open(p |
| 2f740 | 61 74 68 2c 20 46 69 6c 65 3a 3a 57 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 54 52 55 4e 43 7c 46 69 | ath,.File::WRONLY|File::TRUNC|Fi |
| 2f760 | 6c 65 3a 3a 43 52 45 41 54 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 | le::CREAT)..file...=.File.open(p |
| 2f780 | 61 74 68 2c 20 46 69 6c 65 3a 3a 57 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 54 52 55 4e 43 7c 46 69 | ath,.File::WRONLY|File::TRUNC|Fi |
| 2f7a0 | 6c 65 3a 3a 43 52 45 41 54 2c 20 30 36 36 36 29 20 20 23 20 77 69 74 68 20 70 65 72 6d 69 73 73 | le::CREAT,.0666)..#.with.permiss |
| 2f7c0 | 69 6f 6e 20 30 36 36 36 0d 0a 0d 0a 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 77 | ion.0666....#.open.file."path".w |
| 2f7e0 | 72 69 74 65 20 6f 6e 6c 79 2c 20 66 61 69 6c 73 20 69 66 20 66 69 6c 65 20 65 78 69 73 74 73 0d | rite.only,.fails.if.file.exists. |
| 2f800 | 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a 3a | .file...=.File.open(path,.File:: |
| 2f820 | 57 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 45 58 43 4c 7c 46 69 6c 65 3a 3a 43 52 45 41 54 29 0d 0a | WRONLY|File::EXCL|File::CREAT).. |
| 2f840 | 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a 3a 57 | file...=.File.open(path,.File::W |
| 2f860 | 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 45 58 43 4c 7c 46 69 6c 65 3a 3a 43 52 45 41 54 2c 20 30 36 | RONLY|File::EXCL|File::CREAT,.06 |
| 2f880 | 36 36 29 0d 0a 0d 0a 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 66 6f 72 20 61 70 | 66)....#.open.file."path".for.ap |
| 2f8a0 | 70 65 6e 64 69 6e 67 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 | pending..file...=.File.open(path |
| 2f8c0 | 2c 20 22 61 22 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c | ,."a")..file...=.File.open(path, |
| 2f8e0 | 20 46 69 6c 65 3a 3a 57 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 41 50 50 45 4e 44 7c 46 69 6c 65 3a | .File::WRONLY|File::APPEND|File: |
| 2f900 | 3a 43 52 45 41 54 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 | :CREAT)..file...=.File.open(path |
| 2f920 | 2c 20 46 69 6c 65 3a 3a 57 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 41 50 50 45 4e 44 7c 46 69 6c 65 | ,.File::WRONLY|File::APPEND|File |
| 2f940 | 3a 3a 43 52 45 41 54 2c 20 30 36 36 36 29 0d 0a 0d 0a 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 | ::CREAT,.0666)....#.open.file."p |
| 2f960 | 61 74 68 22 20 66 6f 72 20 61 70 70 65 6e 64 69 6e 67 20 6f 6e 6c 79 20 77 68 65 6e 20 66 69 6c | ath".for.appending.only.when.fil |
| 2f980 | 65 20 65 78 69 73 74 73 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 | e.exists..file...=.File.open(pat |
| 2f9a0 | 68 2c 20 46 69 6c 65 3a 3a 57 52 4f 4e 4c 59 7c 46 69 6c 65 3a 3a 41 50 50 45 4e 44 29 0d 0a 0d | h,.File::WRONLY|File::APPEND)... |
| 2f9c0 | 0a 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 20 66 6f 72 20 72 65 61 64 69 6e 67 20 | .#.open.file."path".for.reading. |
| 2f9e0 | 61 6e 64 20 77 72 69 74 69 6e 67 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 | and.writing..file...=.File.open( |
| 2fa00 | 70 61 74 68 2c 20 22 72 2b 22 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 | path,."r+")..file...=.File.open( |
| 2fa20 | 70 61 74 68 2c 20 46 69 6c 65 3a 3a 52 44 57 52 29 0d 0a 0d 0a 23 20 6f 70 65 6e 20 66 69 6c 65 | path,.File::RDWR)....#.open.file |
| 2fa40 | 20 66 6f 72 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 2c 20 63 72 65 61 74 65 | .for.reading.and.writing,.create |
| 2fa60 | 20 61 20 6e 65 77 20 66 69 6c 65 20 69 66 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 | .a.new.file.if.it.does.not.exist |
| 2fa80 | 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a | ..file...=.File.open(path,.File: |
| 2faa0 | 3a 52 44 57 52 7c 46 69 6c 65 3a 3a 43 52 45 41 54 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c | :RDWR|File::CREAT)..file...=.Fil |
| 2fac0 | 65 2e 6f 70 65 6e 28 70 61 74 68 2c 20 46 69 6c 65 3a 3a 52 44 57 52 7c 46 69 6c 65 3a 3a 43 52 | e.open(path,.File::RDWR|File::CR |
| 2fae0 | 45 41 54 2c 20 30 36 30 30 29 0d 0a 0d 0a 23 20 6f 70 65 6e 20 66 69 6c 65 20 22 70 61 74 68 22 | EAT,.0600)....#.open.file."path" |
| 2fb00 | 20 72 65 61 64 69 6e 67 20 61 6e 64 20 77 72 69 74 69 6e 67 2c 20 66 61 69 6c 73 20 69 66 20 66 | .reading.and.writing,.fails.if.f |
| 2fb20 | 69 6c 65 20 65 78 69 73 74 73 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 | ile.exists..file...=.File.open(p |
| 2fb40 | 61 74 68 2c 20 46 69 6c 65 3a 3a 52 44 57 52 7c 46 69 6c 65 3a 3a 45 58 43 4c 7c 46 69 6c 65 3a | ath,.File::RDWR|File::EXCL|File: |
| 2fb60 | 3a 43 52 45 41 54 29 0d 0a 66 69 6c 65 20 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 70 61 74 68 | :CREAT)..file...=.File.open(path |
| 2fb80 | 2c 20 46 69 6c 65 3a 3a 52 44 57 52 7c 46 69 6c 65 3a 3a 45 58 43 4c 7c 46 69 6c 65 3a 3a 43 52 | ,.File::RDWR|File::EXCL|File::CR |
| 2fba0 | 45 41 54 2c 20 30 36 30 30 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 32 0d | EAT,.0600)......#.@@PLEAC@@_7.2. |
| 2fbc0 | 0a 23 20 4e 6f 20 70 72 6f 62 6c 65 6d 20 77 69 74 68 20 52 75 62 79 20 73 69 6e 63 65 20 74 68 | .#.No.problem.with.Ruby.since.th |
| 2fbe0 | 65 20 66 69 6c 65 6e 61 6d 65 20 64 6f 65 73 6e 27 74 20 63 6f 6e 74 61 69 6e 20 63 68 61 72 61 | e.filename.doesn't.contain.chara |
| 2fc00 | 63 74 65 72 73 20 77 69 74 68 0d 0a 23 20 73 70 65 63 69 61 6c 20 6d 65 61 6e 69 6e 67 3b 20 6c | cters.with..#.special.meaning;.l |
| 2fc20 | 69 6b 65 20 50 65 72 6c 27 73 20 73 79 73 6f 70 65 6e 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 66 69 | ike.Perl's.sysopen..File.open(fi |
| 2fc40 | 6c 65 6e 61 6d 65 2c 20 27 72 27 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e | lename,.'r')......#.@@PLEAC@@_7. |
| 2fc60 | 33 0d 0a 46 69 6c 65 2e 65 78 70 61 6e 64 5f 70 61 74 68 28 27 7e 72 6f 6f 74 2f 74 6d 70 27 29 | 3..File.expand_path('~root/tmp') |
| 2fc80 | 0d 0a 23 3d 3e 20 22 2f 72 6f 6f 74 2f 74 6d 70 22 0d 0a 46 69 6c 65 2e 65 78 70 61 6e 64 5f 70 | ..#=>."/root/tmp"..File.expand_p |
| 2fca0 | 61 74 68 28 27 7e 72 70 63 75 73 65 72 27 29 0d 0a 23 3d 3e 20 22 2f 76 61 72 2f 6c 69 62 2f 6e | ath('~rpcuser')..#=>."/var/lib/n |
| 2fcc0 | 66 73 22 0d 0a 0d 0a 23 20 54 6f 20 65 78 70 61 6e 64 20 7e 2f 2e 2e 20 69 74 20 65 78 70 6c 69 | fs"....#.To.expand.~/...it.expli |
| 2fce0 | 63 69 74 65 6c 79 20 6e 65 65 64 73 20 74 68 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 | citely.needs.the.environment.var |
| 2fd00 | 69 61 62 6c 65 20 48 4f 4d 45 0d 0a 46 69 6c 65 2e 65 78 70 61 6e 64 5f 70 61 74 68 28 27 7e 2f | iable.HOME..File.expand_path('~/ |
| 2fd20 | 74 6d 70 27 29 0d 0a 23 3d 3e 20 22 2f 68 6f 6d 65 2f 67 63 2f 74 6d 70 22 0d 0a 0d 0a 0d 0a 23 | tmp')..#=>."/home/gc/tmp"......# |
| 2fd40 | 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 34 0d 0a 23 20 54 68 65 20 65 78 63 65 70 74 69 6f 6e 20 | .@@PLEAC@@_7.4..#.The.exception. |
| 2fd60 | 72 61 69 73 65 64 20 69 6e 20 52 75 62 79 20 72 65 70 6f 72 74 73 20 74 68 65 20 66 69 6c 65 6e | raised.in.Ruby.reports.the.filen |
| 2fd80 | 61 6d 65 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 27 61 66 69 6c 65 27 29 0d 0a 0d 0a 0d 0a 23 20 40 | ame..File.open('afile')......#.@ |
| 2fda0 | 40 50 4c 45 41 43 40 40 5f 37 2e 35 0d 0a 23 20 53 74 61 6e 64 61 72 64 20 52 75 62 79 20 64 69 | @PLEAC@@_7.5..#.Standard.Ruby.di |
| 2fdc0 | 73 74 72 69 62 75 74 69 6f 6e 20 70 72 6f 76 69 64 65 73 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e | stribution.provides.the.followin |
| 2fde0 | 67 20 75 73 65 66 75 6c 20 65 78 74 65 6e 73 69 6f 6e 0d 0a 72 65 71 75 69 72 65 20 27 74 65 6d | g.useful.extension..require.'tem |
| 2fe00 | 70 66 69 6c 65 27 0d 0a 23 20 57 69 74 68 20 74 68 65 20 54 65 6d 70 66 69 6c 65 20 63 6c 61 73 | pfile'..#.With.the.Tempfile.clas |
| 2fe20 | 73 2c 20 74 68 65 20 66 69 6c 65 20 69 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 64 65 6c | s,.the.file.is.automatically.del |
| 2fe40 | 65 74 65 64 20 6f 6e 20 67 61 72 62 61 67 65 0d 0a 23 20 63 6f 6c 6c 65 63 74 69 6f 6e 2c 20 73 | eted.on.garbage..#.collection,.s |
| 2fe60 | 6f 20 79 6f 75 20 77 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 72 65 6d 6f 76 65 20 69 74 2c 20 6c | o.you.won't.need.to.remove.it,.l |
| 2fe80 | 61 74 65 72 20 6f 6e 2e 0d 0a 74 66 20 3d 20 54 65 6d 70 66 69 6c 65 2e 6e 65 77 28 27 74 6d 70 | ater.on...tf.=.Tempfile.new('tmp |
| 2fea0 | 27 29 20 20 20 23 20 61 20 6e 61 6d 65 20 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 63 72 65 | ')...#.a.name.is.required.to.cre |
| 2fec0 | 61 74 65 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0d 0a 0d 0a 23 20 49 66 20 79 6f 75 20 6e 65 65 | ate.the.filename....#.If.you.nee |
| 2fee0 | 64 20 74 6f 20 70 61 73 73 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 61 6e 20 65 78 74 | d.to.pass.the.filename.to.an.ext |
| 2ff00 | 65 72 6e 61 6c 20 70 72 6f 67 72 61 6d 20 79 6f 75 20 63 61 6e 20 75 73 65 0d 0a 23 20 46 69 6c | ernal.program.you.can.use..#.Fil |
| 2ff20 | 65 23 70 61 74 68 2c 20 62 75 74 20 64 6f 6e 27 74 20 66 6f 72 67 65 74 20 74 6f 20 46 69 6c 65 | e#path,.but.don't.forget.to.File |
| 2ff40 | 23 66 6c 75 73 68 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 66 6c 75 73 68 20 61 6e 79 74 68 69 6e | #flush.in.order.to.flush.anythin |
| 2ff60 | 67 0d 0a 23 20 6c 69 76 69 6e 67 20 69 6e 20 73 6f 6d 65 20 62 75 66 66 65 72 20 73 6f 6d 65 77 | g..#.living.in.some.buffer.somew |
| 2ff80 | 68 65 72 65 2e 0d 0a 74 66 2e 66 6c 75 73 68 0d 0a 73 79 73 74 65 6d 28 22 2f 75 73 72 2f 62 69 | here...tf.flush..system("/usr/bi |
| 2ffa0 | 6e 2f 64 6f 77 68 61 74 65 76 65 72 20 23 7b 74 66 2e 70 61 74 68 7d 22 29 0d 0a 0d 0a 66 68 20 | n/dowhatever.#{tf.path}")....fh. |
| 2ffc0 | 3d 20 54 65 6d 70 66 69 6c 65 2e 6e 65 77 28 27 74 6d 70 27 29 0d 0a 66 68 2e 73 79 6e 63 20 3d | =.Tempfile.new('tmp')..fh.sync.= |
| 2ffe0 | 20 74 72 75 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 75 74 6f 66 6c 75 73 68 | .true................#.autoflush |
| 30000 | 65 73 0d 0a 31 30 2e 74 69 6d 65 73 20 7b 20 7c 69 7c 20 66 68 2e 70 75 74 73 20 69 20 7d 0d 0a | es..10.times.{.|i|.fh.puts.i.}.. |
| 30020 | 66 68 2e 72 65 77 69 6e 64 0d 0a 70 75 74 73 20 27 54 6d 70 20 66 69 6c 65 20 68 61 73 3a 20 27 | fh.rewind..puts.'Tmp.file.has:.' |
| 30040 | 2c 20 66 68 2e 72 65 61 64 6c 69 6e 65 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f | ,.fh.readlines......#.@@PLEAC@@_ |
| 30060 | 37 2e 36 0d 0a 77 68 69 6c 65 20 28 44 41 54 41 2e 67 65 74 73 29 20 64 6f 0d 0a 20 20 20 20 23 | 7.6..while.(DATA.gets).do......# |
| 30080 | 20 70 72 6f 63 65 73 73 20 74 68 65 20 6c 69 6e 65 0d 0a 65 6e 64 0d 0a 5f 5f 45 4e 44 5f 5f 0d | .process.the.line..end..__END__. |
| 300a0 | 0a 23 20 79 6f 75 72 20 64 61 74 61 20 67 6f 65 73 20 68 65 72 65 0d 0a 23 20 5f 5f 44 41 54 41 | .#.your.data.goes.here..#.__DATA |
| 300c0 | 5f 5f 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 20 69 6e 20 52 75 62 79 0d 0a 0d 0a 23 43 4f 44 | __.doesn't.exist.in.Ruby....#COD |
| 300e0 | 45 0d 0a 23 20 67 65 74 20 69 6e 66 6f 20 61 62 6f 75 74 20 74 68 65 20 73 63 72 69 70 74 20 28 | E..#.get.info.about.the.script.( |
| 30100 | 73 69 7a 65 2c 20 64 61 74 65 20 6f 66 20 6c 61 73 74 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 29 | size,.date.of.last.modification) |
| 30120 | 0d 0a 6b 69 6c 6f 73 69 7a 65 20 3d 20 44 41 54 41 2e 73 74 61 74 2e 73 69 7a 65 20 2f 20 31 30 | ..kilosize.=.DATA.stat.size./.10 |
| 30140 | 32 34 0d 0a 6c 61 73 74 5f 6d 6f 64 69 66 20 3d 20 44 41 54 41 2e 73 74 61 74 2e 6d 74 69 6d 65 | 24..last_modif.=.DATA.stat.mtime |
| 30160 | 0d 0a 70 75 74 73 20 22 3c 50 3e 53 63 72 69 70 74 20 73 69 7a 65 20 69 73 20 23 7b 6b 69 6c 6f | ..puts."<P>Script.size.is.#{kilo |
| 30180 | 73 69 7a 65 7d 22 0d 0a 70 75 74 73 20 22 3c 50 3e 4c 61 73 74 20 73 63 72 69 70 74 20 75 70 64 | size}"..puts."<P>Last.script.upd |
| 301a0 | 61 74 65 3a 20 23 7b 6c 61 73 74 5f 6d 6f 64 69 66 7d 22 0d 0a 5f 5f 45 4e 44 5f 5f 0d 0a 23 20 | ate:.#{last_modif}"..__END__..#. |
| 301c0 | 44 4f 20 4e 4f 54 20 52 45 4d 4f 56 45 20 54 48 45 20 50 52 45 43 45 45 44 49 4e 47 20 4c 49 4e | DO.NOT.REMOVE.THE.PRECEEDING.LIN |
| 301e0 | 45 2e 0d 0a 23 20 45 76 65 72 79 74 68 69 6e 67 20 65 6c 73 65 20 69 6e 20 74 68 69 73 20 66 69 | E...#.Everything.else.in.this.fi |
| 30200 | 6c 65 20 77 69 6c 6c 20 62 65 20 69 67 6e 6f 72 65 64 2e 0d 0a 23 43 4f 44 45 0d 0a 0d 0a 0d 0a | le.will.be.ignored...#CODE...... |
| 30220 | 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 37 0d 0a 77 68 69 6c 65 20 6c 69 6e 65 20 3d 20 67 65 | #.@@PLEAC@@_7.7..while.line.=.ge |
| 30240 | 74 73 20 64 6f 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 6c | ts.do......#.do.something.with.l |
| 30260 | 69 6e 65 2e 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 20 6f 72 0d 0a 77 68 69 6c 65 20 67 65 74 73 20 64 | ine...end....#..or..while.gets.d |
| 30280 | 6f 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 24 5f 0d 0a 65 | o......#.do.something.with.$_..e |
| 302a0 | 6e 64 0d 0a 0d 0a 23 20 6f 72 20 6d 6f 72 65 20 72 75 62 79 69 73 68 0d 0a 24 73 74 64 75 6e 2e | nd....#.or.more.rubyish..$stdun. |
| 302c0 | 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 23 20 64 6f 20 73 74 75 66 66 20 77 | each.do.|line|......#.do.stuff.w |
| 302e0 | 69 74 68 20 6c 69 6e 65 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 41 52 47 46 20 6d 61 79 20 6d 61 | ith.line..end......#.ARGF.may.ma |
| 30300 | 6b 65 73 20 74 68 69 73 20 6d 6f 72 65 20 65 61 73 79 0d 0a 23 20 74 68 69 73 20 69 73 20 73 6b | kes.this.more.easy..#.this.is.sk |
| 30320 | 69 70 70 65 64 20 69 66 20 41 52 47 56 2e 73 69 7a 65 3d 3d 30 0d 0a 41 52 47 56 2e 65 61 63 68 | ipped.if.ARGV.size==0..ARGV.each |
| 30340 | 20 64 6f 20 7c 66 69 6c 65 6e 61 6d 65 7c 0d 0a 20 20 20 20 23 20 63 6c 6f 73 69 6e 67 20 61 6e | .do.|filename|......#.closing.an |
| 30360 | 64 20 65 78 63 65 70 74 69 6f 6e 20 68 61 6e 64 6c 69 6e 67 20 61 72 65 20 64 6f 6e 65 20 62 79 | d.exception.handling.are.done.by |
| 30380 | 20 74 68 65 20 62 6c 6f 63 6b 0d 0a 20 20 20 20 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 29 20 64 | .the.block......open(filename).d |
| 303a0 | 6f 20 7c 66 64 7c 0d 0a 20 20 20 20 20 20 20 20 66 64 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 | o.|fd|..........fd.each.do.|line |
| 303c0 | 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 6f 20 73 74 75 66 66 20 77 69 74 68 20 6c | |..............#.do.stuff.with.l |
| 303e0 | 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 20 72 65 73 63 75 65 | ine..........end......end.rescue |
| 30400 | 20 61 62 6f 72 74 28 22 63 61 6e 27 74 20 6f 70 65 6e 20 25 73 22 20 25 20 66 69 6c 65 6e 61 6d | .abort("can't.open.%s".%.filenam |
| 30420 | 65 29 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 67 6c 6f 62 62 69 6e 67 20 69 73 20 64 6f 6e 65 20 69 6e | e)..end....#.globbing.is.done.in |
| 30440 | 20 74 68 65 20 44 69 72 20 6d 6f 64 75 6c 65 0d 0a 41 52 47 56 20 3d 20 44 69 72 5b 22 2a 2e 5b | .the.Dir.module..ARGV.=.Dir["*.[ |
| 30460 | 43 63 68 5d 22 5d 20 69 66 20 41 52 47 56 2e 65 6d 70 74 79 3f 0d 0a 0d 0a 23 20 6e 6f 74 65 3a | Cch]"].if.ARGV.empty?....#.note: |
| 30480 | 20 6f 70 74 70 61 72 73 65 20 69 73 20 74 68 65 20 70 72 65 66 65 72 72 65 64 20 77 61 79 20 74 | .optparse.is.the.preferred.way.t |
| 304a0 | 6f 20 68 61 6e 64 6c 65 20 74 68 69 73 0d 0a 69 66 20 28 41 52 47 56 5b 30 5d 20 3d 3d 20 27 2d | o.handle.this..if.(ARGV[0].==.'- |
| 304c0 | 63 27 29 0d 0a 20 20 20 20 63 68 6f 70 5f 66 69 72 73 74 20 2b 3d 20 31 0d 0a 20 20 20 20 41 52 | c')......chop_first.+=.1......AR |
| 304e0 | 47 56 2e 73 68 69 66 74 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 70 72 6f 63 65 73 73 69 6e 67 20 | GV.shift..end......#.processing. |
| 30500 | 6e 75 6d 65 72 69 63 61 6c 20 6f 70 74 69 6f 6e 73 0d 0a 69 66 20 41 52 47 56 5b 30 5d 20 3d 7e | numerical.options..if.ARGV[0].=~ |
| 30520 | 20 2f 5e 2d 28 5c 64 2b 29 24 2f 0d 0a 20 20 20 20 63 6f 6c 75 6d 6e 73 20 3d 20 24 31 0d 0a 20 | ./^-(\d+)$/......columns.=.$1... |
| 30540 | 20 20 20 41 52 47 56 2e 73 68 69 66 74 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 61 67 61 69 6e 2c 20 62 | ...ARGV.shift..end....#.again,.b |
| 30560 | 65 74 74 65 72 20 74 6f 20 75 73 65 20 6f 70 74 70 61 72 73 65 3a 0d 0a 72 65 71 75 69 72 65 20 | etter.to.use.optparse:..require. |
| 30580 | 27 6f 70 74 70 61 72 73 65 27 0d 0a 6e 6f 73 74 64 6f 75 74 20 3d 20 30 0d 0a 61 70 70 65 6e 64 | 'optparse'..nostdout.=.0..append |
| 305a0 | 20 3d 20 30 0d 0a 75 6e 62 75 66 66 65 72 20 3d 20 30 0d 0a 69 67 6e 6f 72 65 5f 69 6e 74 73 20 | .=.0..unbuffer.=.0..ignore_ints. |
| 305c0 | 3d 20 30 0d 0a 41 52 47 56 2e 6f 70 74 69 6f 6e 73 20 64 6f 20 7c 6f 70 74 7c 0d 0a 20 20 20 20 | =.0..ARGV.options.do.|opt|...... |
| 305e0 | 6f 70 74 2e 6f 6e 28 27 2d 6e 27 29 20 7b 20 6e 6f 73 74 64 6f 75 74 20 2b 3d 31 20 7d 0d 0a 20 | opt.on('-n').{.nostdout.+=1.}... |
| 30600 | 20 20 20 6f 70 74 2e 6f 6e 28 27 2d 61 27 29 20 7b 20 61 70 70 65 6e 64 20 20 20 2b 3d 31 20 7d | ...opt.on('-a').{.append...+=1.} |
| 30620 | 0d 0a 20 20 20 20 6f 70 74 2e 6f 6e 28 27 2d 75 27 29 20 7b 20 75 6e 62 75 66 66 65 72 20 2b 3d | ......opt.on('-u').{.unbuffer.+= |
| 30640 | 31 20 7d 0d 0a 20 20 20 20 6f 70 74 2e 6f 6e 28 27 2d 69 27 29 20 7b 20 69 67 6e 6f 72 65 5f 69 | 1.}......opt.on('-i').{.ignore_i |
| 30660 | 6e 74 73 20 2b 3d 31 20 7d 0d 0a 20 20 20 20 6f 70 74 2e 70 61 72 73 65 21 0d 0a 65 6e 64 20 6f | nts.+=1.}......opt.parse!..end.o |
| 30680 | 72 20 61 62 6f 72 74 28 22 75 73 61 67 65 3a 20 22 20 2b 20 5f 5f 46 49 4c 45 5f 5f 20 2b 20 22 | r.abort("usage:.".+.__FILE__.+." |
| 306a0 | 20 5b 2d 61 69 6e 75 5d 20 5b 66 69 6c 65 6e 61 6d 65 73 5d 22 29 0d 0a 0d 0a 23 20 6e 6f 20 6e | .[-ainu].[filenames]")....#.no.n |
| 306c0 | 65 65 64 20 74 6f 20 64 6f 20 75 6e 64 65 66 20 24 2f 2c 20 77 65 20 68 61 76 65 20 46 69 6c 65 | eed.to.do.undef.$/,.we.have.File |
| 306e0 | 2e 72 65 61 64 0d 0a 73 74 72 20 3d 20 46 69 6c 65 2e 72 65 61 64 28 41 52 47 56 5b 30 5d 29 0d | .read..str.=.File.read(ARGV[0]). |
| 30700 | 0a 0d 0a 23 20 61 67 61 69 6e 20 77 65 20 68 61 76 65 20 46 69 6c 65 2e 72 65 61 64 0d 0a 73 74 | ...#.again.we.have.File.read..st |
| 30720 | 72 20 3d 20 46 69 6c 65 2e 72 65 61 64 28 41 52 47 56 5b 30 5d 29 0d 0a 0d 0a 23 20 6e 6f 74 20 | r.=.File.read(ARGV[0])....#.not. |
| 30740 | 73 75 72 65 20 77 68 61 74 20 74 68 69 73 20 73 68 6f 75 6c 64 20 64 6f 3a 0d 0a 23 20 49 20 62 | sure.what.this.should.do:..#.I.b |
| 30760 | 65 6c 69 65 76 65 20 6f 70 65 6e 20 74 68 65 20 66 69 6c 65 2c 20 70 72 69 6e 74 20 66 69 6c 65 | elieve.open.the.file,.print.file |
| 30780 | 6e 61 6d 65 2c 20 6c 69 6e 65 6e 6f 20 61 6e 64 20 6c 69 6e 65 3a 0d 0a 41 52 47 46 2e 65 61 63 | name,.lineno.and.line:..ARGF.eac |
| 307a0 | 68 5f 77 69 74 68 5f 69 6e 64 65 78 20 64 6f 20 7c 6c 69 6e 65 2c 20 69 64 78 7c 0d 0a 20 20 20 | h_with_index.do.|line,.idx|..... |
| 307c0 | 20 70 72 69 6e 74 20 41 52 47 46 2e 66 69 6c 65 6e 61 6d 65 2c 20 22 3a 22 2c 20 69 64 78 2c 20 | .print.ARGF.filename,.":",.idx,. |
| 307e0 | 22 3b 22 2c 20 6c 69 6e 65 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 70 72 69 6e 74 20 61 6c 6c 20 74 68 | ";",.line..end....#.print.all.th |
| 30800 | 65 20 6c 69 6e 65 73 20 69 6e 20 65 76 65 72 79 20 66 69 6c 65 20 70 61 73 73 65 64 20 76 69 61 | e.lines.in.every.file.passed.via |
| 30820 | 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20 6c 6f 67 69 | .command.line.that.contains.logi |
| 30840 | 6e 0d 0a 41 52 47 46 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 70 75 74 73 | n..ARGF.each.do.|line|......puts |
| 30860 | 20 6c 69 6e 65 20 69 66 20 6c 69 6e 65 20 3d 7e 20 2f 6c 6f 67 69 6e 2f 0d 0a 65 6e 64 0d 0a 23 | .line.if.line.=~./login/..end..# |
| 30880 | 0d 0a 23 20 65 76 65 6e 20 74 68 69 73 20 77 6f 75 6c 64 20 66 69 74 0d 0a 23 25 72 75 62 79 20 | ..#.even.this.would.fit..#%ruby. |
| 308a0 | 2d 6e 65 20 22 70 72 69 6e 74 20 69 66 20 2f 66 2f 22 20 32 2e 6c 6f 67 0d 0a 23 0d 0a 0d 0a 41 | -ne."print.if./f/".2.log..#....A |
| 308c0 | 52 47 46 2e 65 61 63 68 20 7b 20 7c 6c 7c 20 70 75 74 73 20 6c 2e 64 6f 77 6e 63 61 73 65 21 20 | RGF.each.{.|l|.puts.l.downcase!. |
| 308e0 | 7d 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 | }....#------------------..#!/usr |
| 30900 | 2f 62 69 6e 2f 72 75 62 79 20 2d 70 0d 0a 23 20 6a 75 73 74 20 6c 69 6b 65 20 70 65 72 6c 27 73 | /bin/ruby.-p..#.just.like.perl's |
| 30920 | 20 2d 70 0d 0a 24 5f 2e 64 6f 77 6e 63 61 73 65 21 0d 0a 23 0d 0a 0d 0a 23 20 49 20 64 6f 6e 27 | .-p..$_.downcase!..#....#.I.don' |
| 30940 | 74 20 6b 6e 6f 77 20 77 68 6f 20 73 68 6f 75 6c 64 20 49 20 74 72 75 73 74 2e 0d 0a 23 20 70 65 | t.know.who.should.I.trust...#.pe |
| 30960 | 72 6c 27 73 20 76 65 72 73 69 6f 6e 20 73 70 6c 69 74 73 20 6f 6e 20 5c 77 2b 20 77 68 69 6c 65 | rl's.version.splits.on.\w+.while |
| 30980 | 20 70 79 74 68 6f 6e 27 73 20 6f 6e 20 5c 77 2e 0d 0a 0d 0a 63 68 75 6e 6b 73 20 3d 20 30 0d 0a | .python's.on.\w.....chunks.=.0.. |
| 309a0 | 0d 0a 46 69 6c 65 2e 72 65 61 64 28 41 52 47 56 5b 30 5d 29 2e 73 70 6c 69 74 2e 65 61 63 68 20 | ..File.read(ARGV[0]).split.each. |
| 309c0 | 64 6f 20 7c 77 6f 72 64 7c 0d 0a 20 20 20 20 6e 65 78 74 20 69 66 20 77 6f 72 64 20 3d 7e 20 2f | do.|word|......next.if.word.=~./ |
| 309e0 | 5e 23 2f 0d 0a 20 20 20 20 62 72 65 61 6b 20 69 66 20 5b 22 5f 5f 44 41 54 41 5f 5f 22 2c 20 22 | ^#/......break.if.["__DATA__",." |
| 30a00 | 5f 5f 45 4e 44 5f 5f 22 5d 2e 6d 65 6d 62 65 72 3f 20 77 6f 72 64 0d 0a 20 20 20 20 63 68 75 6e | __END__"].member?.word......chun |
| 30a20 | 6b 73 20 2b 3d 20 31 0d 0a 65 6e 64 0d 0a 0d 0a 70 72 69 6e 74 20 22 46 6f 75 6e 64 20 22 2c 20 | ks.+=.1..end....print."Found.",. |
| 30a40 | 63 68 75 6e 6b 73 2c 20 22 20 63 68 75 6e 6b 73 5c 6e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | chunks,.".chunks\n"......#.@@PLE |
| 30a60 | 41 43 40 40 5f 37 2e 38 0d 0a 6f 6c 64 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 6f 6c 64 5f 66 69 | AC@@_7.8..old.=.File.open(old_fi |
| 30a80 | 6c 65 29 0d 0a 6e 65 77 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 6e 65 77 5f 66 69 6c 65 2c 20 22 | le)..new.=.File.open(new_file,." |
| 30aa0 | 77 22 29 0d 0a 77 68 69 6c 65 20 6f 6c 64 2e 67 65 74 73 20 64 6f 0d 0a 20 20 20 20 23 20 63 68 | w")..while.old.gets.do......#.ch |
| 30ac0 | 61 6e 67 65 20 24 5f 2c 20 74 68 65 6e 2e 2e 2e 0d 0a 20 20 20 20 6e 65 77 2e 70 72 69 6e 74 20 | ange.$_,.then.........new.print. |
| 30ae0 | 24 5f 0d 0a 65 6e 64 0d 0a 6f 6c 64 2e 63 6c 6f 73 65 0d 0a 6e 65 77 2e 63 6c 6f 73 65 0d 0a 46 | $_..end..old.close..new.close..F |
| 30b00 | 69 6c 65 2e 72 65 6e 61 6d 65 28 6f 6c 64 5f 66 69 6c 65 2c 20 22 6f 6c 64 2e 6f 72 69 67 22 29 | ile.rename(old_file,."old.orig") |
| 30b20 | 0d 0a 46 69 6c 65 2e 72 65 6e 61 6d 65 28 6e 65 77 5f 66 69 6c 65 2c 20 6f 6c 64 5f 66 69 6c 65 | ..File.rename(new_file,.old_file |
| 30b40 | 29 0d 0a 0d 0a 77 68 69 6c 65 20 6f 6c 64 2e 67 65 74 73 20 64 6f 0d 0a 20 20 20 20 69 66 20 24 | )....while.old.gets.do......if.$ |
| 30b60 | 2e 20 3d 3d 20 32 30 20 74 68 65 6e 20 23 20 77 65 20 61 72 65 20 61 74 20 74 68 65 20 32 30 74 | ..==.20.then.#.we.are.at.the.20t |
| 30b80 | 68 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 2e 70 75 74 73 20 22 45 78 74 72 61 20 | h.line..........new.puts."Extra. |
| 30ba0 | 6c 69 6e 65 20 31 22 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 2e 70 75 74 73 20 22 45 78 74 72 61 | line.1"..........new.puts."Extra |
| 30bc0 | 20 6c 69 6e 65 20 32 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 6e 65 77 2e 70 72 69 6e 74 | .line.2"......end......new.print |
| 30be0 | 20 24 5f 0d 0a 65 6e 64 0d 0a 0d 0a 77 68 69 6c 65 20 6f 6c 64 2e 67 65 74 73 20 64 6f 0d 0a 20 | .$_..end....while.old.gets.do... |
| 30c00 | 20 20 20 6e 65 78 74 20 69 66 20 32 30 2e 2e 33 30 20 23 20 73 6b 69 70 20 74 68 65 20 32 30 74 | ...next.if.20..30.#.skip.the.20t |
| 30c20 | 68 20 6c 69 6e 65 20 74 6f 20 74 68 65 20 33 30 74 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | h.line.to.the.30th.............. |
| 30c40 | 20 20 20 20 20 20 20 23 20 52 75 62 79 20 28 61 6e 64 20 50 65 72 6c 29 20 70 65 72 6d 69 74 20 | .......#.Ruby.(and.Perl).permit. |
| 30c60 | 74 6f 20 77 72 69 74 65 20 69 66 20 32 30 2e 2e 33 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | to.write.if.20..30.............. |
| 30c80 | 20 20 20 20 20 20 20 23 20 69 6e 73 74 65 61 64 20 6f 66 20 69 66 20 28 32 30 20 3c 3d 20 24 2e | .......#.instead.of.if.(20.<=.$. |
| 30ca0 | 29 20 61 6e 64 20 28 24 2e 20 3c 3d 20 33 30 29 0d 0a 20 20 20 20 6e 65 77 2e 70 72 69 6e 74 20 | ).and.($..<=.30)......new.print. |
| 30cc0 | 24 5f 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 39 0d 0a 23 25 | $_..end......#.@@PLEAC@@_7.9..#% |
| 30ce0 | 20 72 75 62 79 20 2d 69 2e 6f 72 69 67 20 2d 70 65 20 27 46 49 4c 54 45 52 20 43 4f 4d 4d 41 4e | .ruby.-i.orig.-pe.'FILTER.COMMAN |
| 30d00 | 44 27 20 66 69 6c 65 31 20 66 69 6c 65 32 20 66 69 6c 65 33 20 2e 2e 2e 0d 0a 23 0d 0a 23 2d 2d | D'.file1.file2.file3......#..#-- |
| 30d20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 23 21 | ---------------------------..##! |
| 30d40 | 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 69 2e 6f 72 69 67 20 2d 70 0d 0a 23 20 66 69 6c 74 | /usr/bin/ruby.-i.orig.-p..#.filt |
| 30d60 | 65 72 20 63 6f 6d 6d 61 6e 64 73 20 67 6f 20 68 65 72 65 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | er.commands.go.here..#---------- |
| 30d80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 23 25 20 72 75 62 79 20 2d | -------------------....#%.ruby.- |
| 30da0 | 70 69 2e 6f 72 69 67 20 2d 65 20 27 67 73 75 62 21 28 2f 44 41 54 45 2f 29 7b 54 69 6d 65 2e 6e | pi.orig.-e.'gsub!(/DATE/){Time.n |
| 30dc0 | 6f 77 29 27 0d 0a 0d 0a 23 20 65 66 66 65 63 74 69 76 65 6c 79 20 62 65 63 6f 6d 65 73 3a 0d 0a | ow)'....#.effectively.becomes:.. |
| 30de0 | 41 52 47 56 20 3c 3c 20 27 49 27 0d 0a 6f 6c 64 66 69 6c 65 20 3d 20 22 22 0d 0a 77 68 69 6c 65 | ARGV.<<.'I'..oldfile.=.""..while |
| 30e00 | 20 67 65 74 73 0d 0a 20 20 20 20 69 66 20 41 52 47 46 2e 66 69 6c 65 6e 61 6d 65 20 21 3d 20 6f | .gets......if.ARGF.filename.!=.o |
| 30e20 | 6c 64 66 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 66 69 6c 65 20 3d 20 41 52 47 46 2e 66 | ldfile..........newfile.=.ARGF.f |
| 30e40 | 69 6c 65 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 46 69 6c 65 2e 72 65 6e 61 6d 65 28 6e 65 77 | ilename..........File.rename(new |
| 30e60 | 66 69 6c 65 2c 20 6e 65 77 66 69 6c 65 20 2b 20 22 2e 6f 72 69 67 22 29 0d 0a 20 20 20 20 20 20 | file,.newfile.+.".orig")........ |
| 30e80 | 20 20 24 73 74 64 6f 75 74 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 6e 65 77 66 69 6c 65 2c 27 77 | ..$stdout.=.File.open(newfile,'w |
| 30ea0 | 27 29 0d 0a 20 20 20 20 20 20 20 20 6f 6c 64 66 69 6c 65 20 3d 20 6e 65 77 66 69 6c 65 0d 0a 20 | ')..........oldfile.=.newfile... |
| 30ec0 | 20 20 20 65 6e 64 0d 0a 20 20 20 20 67 73 75 62 21 28 2f 44 41 54 45 2f 29 7b 54 69 6d 65 2e 6e | ...end......gsub!(/DATE/){Time.n |
| 30ee0 | 6f 77 7d 0d 0a 20 20 20 20 70 72 69 6e 74 0d 0a 65 6e 64 0d 0a 24 73 74 64 6f 75 74 20 3d 20 53 | ow}......print..end..$stdout.=.S |
| 30f00 | 54 44 4f 55 54 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | TDOUT..#------------------------ |
| 30f20 | 2d 2d 2d 2d 2d 0d 0a 23 25 20 72 75 62 79 20 2d 69 2e 6f 6c 64 20 2d 70 65 20 27 67 73 75 62 21 | -----..#%.ruby.-i.old.-pe.'gsub! |
| 30f40 | 28 25 72 7b 5c 62 68 69 73 76 61 72 5c 62 7d 2c 20 27 68 65 72 76 61 72 27 29 27 20 2a 2e 5b 43 | (%r{\bhisvar\b},.'hervar')'.*.[C |
| 30f60 | 63 68 79 5d 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | chy]....#----------------------- |
| 30f80 | 2d 2d 2d 2d 2d 2d 0d 0a 23 20 73 65 74 20 75 70 20 74 6f 20 69 74 65 72 61 74 65 20 6f 76 65 72 | ------..#.set.up.to.iterate.over |
| 30fa0 | 20 74 68 65 20 2a 2e 63 20 66 69 6c 65 73 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 69 | .the.*.c.files.in.the.current.di |
| 30fc0 | 72 65 63 74 6f 72 79 2c 0d 0a 23 20 65 64 69 74 69 6e 67 20 69 6e 20 70 6c 61 63 65 20 61 6e 64 | rectory,..#.editing.in.place.and |
| 30fe0 | 20 73 61 76 69 6e 67 20 74 68 65 20 6f 6c 64 20 66 69 6c 65 20 77 69 74 68 20 61 20 2e 6f 72 69 | .saving.the.old.file.with.a..ori |
| 31000 | 67 20 65 78 74 65 6e 73 69 6f 6e 0d 0a 24 2d 69 20 3d 20 27 2e 6f 72 69 67 27 20 20 20 20 20 20 | g.extension..$-i.=.'.orig'...... |
| 31020 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 74 20 75 70 20 2d 69 20 6d 6f 64 | .................#.set.up.-i.mod |
| 31040 | 65 0d 0a 41 52 47 56 2e 72 65 70 6c 61 63 65 28 44 69 72 5b 27 2a 2e 5b 43 63 68 79 5d 27 5d 29 | e..ARGV.replace(Dir['*.[Cchy]']) |
| 31060 | 0d 0a 77 68 69 6c 65 20 67 65 74 73 0d 0a 20 20 20 20 69 66 20 24 2e 20 3d 3d 20 31 0d 0a 20 20 | ..while.gets......if.$..==.1.... |
| 31080 | 20 20 20 20 20 20 70 72 69 6e 74 20 22 54 68 69 73 20 6c 69 6e 65 20 73 68 6f 75 6c 64 20 61 70 | ......print."This.line.should.ap |
| 310a0 | 70 65 61 72 20 61 74 20 74 68 65 20 74 6f 70 20 6f 66 20 65 61 63 68 20 66 69 6c 65 5c 6e 22 0d | pear.at.the.top.of.each.file\n". |
| 310c0 | 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 67 73 75 62 21 28 2f 5c 62 28 70 29 65 61 72 6c 5c 62 | .....end......gsub!(/\b(p)earl\b |
| 310e0 | 2f 69 2c 20 27 5c 31 65 72 6c 27 29 20 20 20 20 23 20 43 6f 72 72 65 63 74 20 74 79 70 6f 73 2c | /i,.'\1erl')....#.Correct.typos, |
| 31100 | 20 70 72 65 73 65 72 76 69 6e 67 20 63 61 73 65 0d 0a 20 20 20 20 70 72 69 6e 74 0d 0a 20 20 20 | .preserving.case......print..... |
| 31120 | 20 41 52 47 46 2e 63 6c 6f 73 65 20 69 66 20 41 52 47 46 2e 65 6f 66 0d 0a 65 6e 64 0d 0a 0d 0a | .ARGF.close.if.ARGF.eof..end.... |
| 31140 | 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 31 30 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 27 69 | ..#.@@PLEAC@@_7.10..File.open('i |
| 31160 | 74 65 73 74 27 2c 20 27 72 2b 27 29 20 64 6f 20 7c 66 7c 20 20 20 23 20 6f 70 65 6e 20 66 69 6c | test',.'r+').do.|f|...#.open.fil |
| 31180 | 65 20 66 6f 72 20 75 70 64 61 74 65 0d 0a 20 20 20 20 6c 69 6e 65 73 20 3d 20 66 2e 72 65 61 64 | e.for.update......lines.=.f.read |
| 311a0 | 6c 69 6e 65 73 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 61 64 20 69 6e 74 6f 20 61 72 72 61 | lines...........#.read.into.arra |
| 311c0 | 79 20 6f 66 20 6c 69 6e 65 73 0d 0a 20 20 20 20 6c 69 6e 65 73 2e 65 61 63 68 20 64 6f 20 7c 69 | y.of.lines......lines.each.do.|i |
| 311e0 | 74 7c 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6d 6f 64 69 66 79 20 6c 69 6e 65 73 0d 0a 20 20 | t|............#.modify.lines.... |
| 31200 | 20 20 20 20 20 20 69 74 2e 67 73 75 62 21 28 2f 66 6f 6f 2f 2c 20 27 51 51 51 27 29 0d 0a 20 20 | ......it.gsub!(/foo/,.'QQQ').... |
| 31220 | 20 20 65 6e 64 0d 0a 20 20 20 20 66 2e 70 6f 73 20 3d 20 30 20 20 20 20 20 20 20 20 20 20 20 20 | ..end......f.pos.=.0............ |
| 31240 | 20 20 20 20 20 20 20 20 20 23 20 62 61 63 6b 20 74 6f 20 73 74 61 72 74 0d 0a 20 20 20 20 66 2e | .........#.back.to.start......f. |
| 31260 | 70 72 69 6e 74 20 6c 69 6e 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 72 | print.lines.................#.wr |
| 31280 | 69 74 65 20 6f 75 74 20 6d 6f 64 69 66 69 65 64 20 6c 69 6e 65 73 0d 0a 20 20 20 20 66 2e 74 72 | ite.out.modified.lines......f.tr |
| 312a0 | 75 6e 63 61 74 65 28 66 2e 70 6f 73 29 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 72 75 6e | uncate(f.pos).............#.trun |
| 312c0 | 63 61 74 65 20 74 6f 20 6e 65 77 20 6c 65 6e 67 74 68 0d 0a 65 6e 64 20 20 20 20 20 20 20 20 20 | cate.to.new.length..end......... |
| 312e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 66 69 6c 65 20 69 73 20 | ......................#.file.is. |
| 31300 | 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 63 6c 6f 73 65 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | automatically.closed..#--------- |
| 31320 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 | --------------------..File.open( |
| 31340 | 27 69 74 65 73 74 27 2c 20 27 72 2b 27 29 20 64 6f 20 7c 66 7c 0d 0a 20 20 20 20 6f 75 74 20 3d | 'itest',.'r+').do.|f|......out.= |
| 31360 | 20 22 22 0d 0a 20 20 20 20 66 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 20 | .""......f.each.do.|line|....... |
| 31380 | 20 20 20 6f 75 74 20 3c 3c 20 6c 69 6e 65 2e 67 73 75 62 28 2f 44 41 54 45 2f 29 20 7b 54 69 6d | ...out.<<.line.gsub(/DATE/).{Tim |
| 313a0 | 65 2e 6e 6f 77 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 66 2e 70 6f 73 20 3d 20 30 0d 0a | e.now}......end......f.pos.=.0.. |
| 313c0 | 20 20 20 20 66 2e 70 72 69 6e 74 20 6f 75 74 0d 0a 20 20 20 20 66 2e 74 72 75 6e 63 61 74 65 28 | ....f.print.out......f.truncate( |
| 313e0 | 66 2e 70 6f 73 29 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 31 31 0d | f.pos)..end....#.@@PLEAC@@_7.11. |
| 31400 | 0a 46 69 6c 65 2e 6f 70 65 6e 28 27 69 6e 66 69 6c 65 27 2c 20 27 72 2b 27 29 20 64 6f 20 7c 66 | .File.open('infile',.'r+').do.|f |
| 31420 | 7c 0d 0a 20 20 20 20 66 2e 66 6c 6f 63 6b 20 46 69 6c 65 3a 3a 4c 4f 43 4b 5f 45 58 0d 0a 20 20 | |......f.flock.File::LOCK_EX.... |
| 31440 | 20 20 23 20 75 70 64 61 74 65 20 66 69 6c 65 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#.update.file..end..#--------- |
| 31460 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 46 69 6c 65 3a 3a 4c 4f 43 4b | --------------------..File::LOCK |
| 31480 | 5f 53 48 20 20 20 20 20 23 20 73 68 61 72 65 64 20 6c 6f 63 6b 20 28 66 6f 72 20 72 65 61 64 69 | _SH.....#.shared.lock.(for.readi |
| 314a0 | 6e 67 29 0d 0a 46 69 6c 65 3a 3a 4c 4f 43 4b 5f 45 58 20 20 20 20 20 23 20 65 78 63 6c 75 73 69 | ng)..File::LOCK_EX.....#.exclusi |
| 314c0 | 76 65 20 6c 6f 63 6b 20 28 66 6f 72 20 77 72 69 74 69 6e 67 29 0d 0a 46 69 6c 65 3a 3a 4c 4f 43 | ve.lock.(for.writing)..File::LOC |
| 314e0 | 4b 5f 4e 42 20 20 20 20 20 23 20 6e 6f 6e 2d 62 6c 6f 63 6b 69 6e 67 20 72 65 71 75 65 73 74 0d | K_NB.....#.non-blocking.request. |
| 31500 | 0a 46 69 6c 65 3a 3a 4c 4f 43 4b 5f 55 4e 20 20 20 20 20 23 20 66 72 65 65 20 6c 6f 63 6b 0d 0a | .File::LOCK_UN.....#.free.lock.. |
| 31520 | 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a | #-----------------------------.. |
| 31540 | 75 6e 6c 65 73 73 20 66 2e 66 6c 6f 63 6b 20 46 69 6c 65 3a 3a 4c 4f 43 4b 5f 45 58 20 7c 20 46 | unless.f.flock.File::LOCK_EX.|.F |
| 31560 | 69 6c 65 3a 3a 4c 4f 43 4b 5f 4e 42 0d 0a 20 20 20 20 77 61 72 6e 20 22 63 61 6e 27 74 20 67 65 | ile::LOCK_NB......warn."can't.ge |
| 31580 | 74 20 69 6d 6d 65 64 69 61 74 65 20 6c 6f 63 6b 3a 20 62 6c 6f 63 6b 69 6e 67 20 2e 2e 2e 22 0d | t.immediate.lock:.blocking....". |
| 315a0 | 0a 20 20 20 20 66 2e 66 6c 6f 63 6b 20 46 69 6c 65 3a 3a 4c 4f 43 4b 5f 45 58 0d 0a 65 6e 64 0d | .....f.flock.File::LOCK_EX..end. |
| 315c0 | 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d | .#-----------------------------. |
| 315e0 | 0a 46 69 6c 65 2e 6f 70 65 6e 28 27 6e 75 6d 66 69 6c 65 27 2c 20 46 69 6c 65 3a 3a 52 44 57 52 | .File.open('numfile',.File::RDWR |
| 31600 | 7c 46 69 6c 65 3a 3a 43 52 45 41 54 29 20 64 6f 20 7c 66 7c 0d 0a 20 20 20 20 66 2e 66 6c 6f 63 | |File::CREAT).do.|f|......f.floc |
| 31620 | 6b 28 46 69 6c 65 3a 3a 4c 4f 43 4b 5f 45 58 29 0d 0a 20 20 20 20 6e 75 6d 20 3d 20 66 2e 67 65 | k(File::LOCK_EX)......num.=.f.ge |
| 31640 | 74 73 2e 74 6f 5f 69 20 7c 7c 20 30 0d 0a 20 20 20 20 66 2e 70 6f 73 20 3d 20 30 0d 0a 20 20 20 | ts.to_i.||.0......f.pos.=.0..... |
| 31660 | 20 66 2e 74 72 75 6e 63 61 74 65 20 30 0d 0a 20 20 20 20 66 2e 70 75 74 73 20 6e 75 6d 20 2b 20 | .f.truncate.0......f.puts.num.+. |
| 31680 | 31 71 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 2e 31 32 0d 0a 6f | 1q..end......#.@@PLEAC@@_7.12..o |
| 316a0 | 75 74 70 75 74 5f 68 61 6e 64 6c 65 2e 73 79 6e 63 20 3d 20 74 72 75 65 0d 0a 23 20 50 6c 65 61 | utput_handle.sync.=.true..#.Plea |
| 316c0 | 73 65 20 6e 6f 74 65 20 74 68 61 74 20 6c 69 6b 65 20 69 6e 20 50 65 72 6c 2c 20 24 73 74 64 65 | se.note.that.like.in.Perl,.$stde |
| 316e0 | 72 72 20 69 73 20 61 6c 72 65 61 64 79 20 75 6e 62 75 66 66 65 72 65 64 0d 0a 23 2d 2d 2d 2d 2d | rr.is.already.unbuffered..#----- |
| 31700 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 | ------------------------..#!/usr |
| 31720 | 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 73 65 65 6d 65 20 2d 20 64 65 6d 6f 20 73 74 64 | /bin/ruby.-w..#.seeme.-.demo.std |
| 31740 | 69 6f 20 6f 75 74 70 75 74 20 62 75 66 66 65 72 69 6e 67 0d 0a 24 73 74 64 6f 75 74 2e 73 79 6e | io.output.buffering..$stdout.syn |
| 31760 | 63 20 3d 20 41 52 47 56 2e 73 69 7a 65 20 3e 20 30 0d 0a 70 72 69 6e 74 20 22 4e 6f 77 20 79 6f | c.=.ARGV.size.>.0..print."Now.yo |
| 31780 | 75 20 64 6f 6e 27 74 20 73 65 65 20 69 74 2e 2e 2e 22 0d 0a 73 6c 65 65 70 20 32 0d 0a 70 75 74 | u.don't.see.it..."..sleep.2..put |
| 317a0 | 73 20 22 6e 6f 77 20 79 6f 75 20 64 6f 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | s."now.you.do"..#--------------- |
| 317c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 24 73 74 64 65 72 72 2e 73 79 6e 63 20 3d 20 74 | --------------..$stderr.sync.=.t |
| 317e0 | 72 75 65 0d 0a 61 66 69 6c 65 2e 73 79 6e 63 20 3d 20 66 61 6c 73 65 0d 0a 23 2d 2d 2d 2d 2d 2d | rue..afile.sync.=.false..#------ |
| 31800 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 61 73 73 75 6d | -----------------------..#.assum |
| 31820 | 65 20 27 72 65 6d 6f 74 65 5f 63 6f 6e 27 20 69 73 20 61 6e 20 69 6e 74 65 72 61 63 74 69 76 65 | e.'remote_con'.is.an.interactive |
| 31840 | 20 73 6f 63 6b 65 74 20 68 61 6e 64 6c 65 2c 0d 0a 23 20 62 75 74 20 27 64 69 73 6b 5f 66 69 6c | .socket.handle,..#.but.'disk_fil |
| 31860 | 65 27 20 69 73 20 61 20 68 61 6e 64 6c 65 20 74 6f 20 61 20 72 65 67 75 6c 61 72 20 66 69 6c 65 | e'.is.a.handle.to.a.regular.file |
| 31880 | 2e 0d 0a 72 65 6d 6f 74 65 5f 63 6f 6e 2e 73 79 6e 63 20 3d 20 74 72 75 65 20 20 20 20 20 20 20 | ...remote_con.sync.=.true....... |
| 318a0 | 23 20 75 6e 62 75 66 66 65 72 20 66 6f 72 20 63 6c 61 72 69 74 79 0d 0a 64 69 73 6b 5f 66 69 6c | #.unbuffer.for.clarity..disk_fil |
| 318c0 | 65 2e 73 79 6e 63 20 3d 20 66 61 6c 73 65 20 20 20 20 20 20 20 23 20 62 75 66 66 65 72 65 64 20 | e.sync.=.false.......#.buffered. |
| 318e0 | 66 6f 72 20 73 70 65 65 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | for.speed..#-------------------- |
| 31900 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 72 65 71 75 69 72 65 20 27 73 6f 63 6b 65 74 27 0d 0a 73 6f 63 | ---------..require.'socket'..soc |
| 31920 | 6b 20 3d 20 54 43 50 53 6f 63 6b 65 74 2e 6e 65 77 28 27 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 | k.=.TCPSocket.new('www.ruby-lang |
| 31940 | 2e 6f 72 67 27 2c 20 38 30 29 0d 0a 73 6f 63 6b 2e 73 79 6e 63 20 3d 20 74 72 75 65 0d 0a 73 6f | .org',.80)..sock.sync.=.true..so |
| 31960 | 63 6b 2e 70 75 74 73 20 22 47 45 54 20 2f 65 6e 2f 20 48 54 54 50 2f 31 2e 30 20 5c 6e 5c 6e 22 | ck.puts."GET./en/.HTTP/1.0.\n\n" |
| 31980 | 0d 0a 72 65 73 70 20 3d 20 73 6f 63 6b 2e 72 65 61 64 0d 0a 70 72 69 6e 74 20 22 44 4f 43 20 49 | ..resp.=.sock.read..print."DOC.I |
| 319a0 | 53 3a 20 23 7b 72 65 73 70 7d 5c 6e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 37 | S:.#{resp}\n"......#.@@PLEAC@@_7 |
| 319c0 | 2e 31 33 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .13..#-------------------------- |
| 319e0 | 2d 2d 2d 0d 0a 23 20 61 73 73 75 6d 65 73 20 66 68 31 2c 20 66 68 32 2c 20 66 68 32 20 61 72 65 | ---..#.assumes.fh1,.fh2,.fh2.are |
| 31a00 | 20 6f 65 6e 20 49 4f 20 6f 62 6a 65 63 74 73 0d 0a 6e 66 6f 75 6e 64 20 3d 20 73 65 6c 65 63 74 | .oen.IO.objects..nfound.=.select |
| 31a20 | 28 5b 24 73 74 64 69 6e 2c 20 66 68 31 2c 20 66 68 32 2c 20 66 68 33 5d 2c 20 6e 69 6c 2c 20 6e | ([$stdin,.fh1,.fh2,.fh3],.nil,.n |
| 31a40 | 69 6c 2c 20 30 29 0d 0a 6e 66 6f 75 6e 64 5b 30 5d 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c 65 7c | il,.0)..nfound[0].each.do.|file| |
| 31a60 | 0d 0a 20 20 20 20 63 61 73 65 20 66 69 6c 65 0d 0a 20 20 20 20 20 20 20 20 77 68 65 6e 20 66 68 | ......case.file..........when.fh |
| 31a80 | 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 | 1..............#.do.something.wi |
| 31aa0 | 74 68 20 66 68 31 0d 0a 20 20 20 20 20 20 20 20 77 68 65 6e 20 66 68 32 0d 0a 20 20 20 20 20 20 | th.fh1..........when.fh2........ |
| 31ac0 | 20 20 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 66 68 32 0d 0a 20 | ......#.do.something.with.fh2... |
| 31ae0 | 20 20 20 20 20 20 20 77 68 65 6e 20 66 68 33 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 | .......when.fh3..............#.d |
| 31b00 | 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 66 68 33 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 | o.something.with.fh3......end..e |
| 31b20 | 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nd..#--------------------------- |
| 31b40 | 2d 2d 0d 0a 69 6e 70 75 74 5f 66 69 6c 65 73 20 3d 20 5b 5d 0d 0a 23 20 72 65 70 65 61 74 20 6e | --..input_files.=.[]..#.repeat.n |
| 31b60 | 65 78 74 20 6c 69 6e 65 20 66 6f 72 20 61 6c 6c 20 69 6e 2d 66 69 6c 65 73 20 74 6f 20 70 6f 6c | ext.line.for.all.in-files.to.pol |
| 31b80 | 6c 0d 0a 69 6e 70 75 74 5f 66 69 6c 65 73 20 3c 3c 20 66 68 31 0d 0a 69 66 20 6e 66 6f 75 6e 64 | l..input_files.<<.fh1..if.nfound |
| 31ba0 | 20 3d 20 73 65 6c 65 63 74 28 69 6e 70 75 74 5f 66 69 6c 65 73 2c 20 6e 69 6c 2c 20 6e 69 6c 2c | .=.select(input_files,.nil,.nil, |
| 31bc0 | 20 30 29 0d 0a 20 20 20 20 23 20 69 6e 70 75 74 20 72 65 61 64 79 20 6f 6e 20 66 69 6c 65 73 20 | .0)......#.input.ready.on.files. |
| 31be0 | 69 6e 20 6e 66 6f 75 6e 64 5b 30 5d 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | in.nfound[0]..end......#.@@PLEAC |
| 31c00 | 40 40 5f 38 2e 30 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | @@_8.0..#----------------------- |
| 31c20 | 2d 2d 2d 2d 2d 2d 0d 0a 23 20 64 61 74 61 66 69 6c 65 20 69 73 20 61 20 66 69 6c 65 20 6f 72 20 | ------..#.datafile.is.a.file.or. |
| 31c40 | 49 4f 20 6f 62 6a 65 63 74 0d 0a 64 61 74 61 66 69 6c 65 2e 72 65 61 64 6c 69 6e 65 73 2e 65 61 | IO.object..datafile.readlines.ea |
| 31c60 | 63 68 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 6c 69 6e 65 2e 63 68 6f 6d 70 21 0d 0a 20 20 | ch.{.|line|......line.chomp!.... |
| 31c80 | 20 20 73 69 7a 65 20 3d 20 6c 69 6e 65 2e 6c 65 6e 67 74 68 0d 0a 20 20 20 20 70 75 74 73 20 73 | ..size.=.line.length......puts.s |
| 31ca0 | 69 7a 65 0d 0a 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ize..}..#----------------------- |
| 31cc0 | 2d 2d 2d 2d 2d 2d 0d 0a 64 61 74 61 66 69 6c 65 2e 72 65 61 64 6c 69 6e 65 73 2e 65 61 63 68 20 | ------..datafile.readlines.each. |
| 31ce0 | 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 70 75 74 73 20 6c 69 6e 65 2e 63 68 6f 6d 70 21 2e 6c | {.|line|......puts.line.chomp!.l |
| 31d00 | 65 6e 67 74 68 0d 0a 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ength..}..#--------------------- |
| 31d20 | 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6c 69 6e 65 73 20 3d 20 64 61 74 61 66 69 6c 65 2e 72 65 61 64 6c | --------..lines.=.datafile.readl |
| 31d40 | 69 6e 65 73 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ines..#------------------------- |
| 31d60 | 2d 2d 2d 2d 0d 0a 77 68 6f 6c 65 5f 66 69 6c 65 20 3d 20 66 69 6c 65 2e 72 65 61 64 0d 0a 23 2d | ----..whole_file.=.file.read..#- |
| 31d80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 | ----------------------------..#. |
| 31da0 | 72 75 62 79 20 2d 30 34 30 20 2d 65 20 27 77 6f 72 64 20 3d 20 67 65 74 73 3b 20 70 75 74 73 20 | ruby.-040.-e.'word.=.gets;.puts. |
| 31dc0 | 22 46 69 72 73 74 20 77 6f 72 64 20 69 73 20 23 7b 77 6f 72 64 7d 22 27 0d 0a 23 2d 2d 2d 2d 2d | "First.word.is.#{word}"'..#----- |
| 31de0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 72 75 62 79 | ------------------------..#.ruby |
| 31e00 | 20 2d 6e 65 20 27 42 45 47 49 4e 20 7b 20 24 2f 3d 22 25 25 5c 6e 22 20 7d 3b 20 24 5f 2e 63 68 | .-ne.'BEGIN.{.$/="%%\n".};.$_.ch |
| 31e20 | 6f 6d 70 3b 20 70 75 74 73 20 24 5f 20 69 66 28 20 24 5f 3d 7e 2f 55 6e 69 78 2f 69 29 27 20 66 | omp;.puts.$_.if(.$_=~/Unix/i)'.f |
| 31e40 | 6f 72 74 75 6e 65 2e 64 61 74 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ortune.dat..#------------------- |
| 31e60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 68 61 6e 64 6c 65 2e 70 72 69 6e 74 20 22 6f 6e 65 22 2c 20 | ----------..handle.print."one",. |
| 31e80 | 22 74 77 6f 22 2c 20 22 74 68 72 65 65 22 20 23 20 22 6f 6e 65 74 77 6f 74 68 72 65 65 22 0d 0a | "two",."three".#."onetwothree".. |
| 31ea0 | 70 75 74 73 20 22 42 61 61 20 62 61 61 20 62 6c 61 63 6b 20 73 68 65 65 70 2e 22 20 20 20 20 20 | puts."Baa.baa.black.sheep."..... |
| 31ec0 | 20 20 20 23 20 73 65 6e 74 20 74 6f 20 24 73 74 64 6f 75 74 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | ...#.sent.to.$stdout..#--------- |
| 31ee0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 62 75 66 66 65 72 20 3d 20 68 | --------------------..buffer.=.h |
| 31f00 | 61 6e 64 6c 65 2e 72 65 61 64 28 34 30 39 36 29 0d 0a 72 76 20 20 20 20 20 3d 20 62 75 66 66 65 | andle.read(4096)..rv.....=.buffe |
| 31f20 | 72 2e 6c 65 6e 67 74 68 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | r.length..#--------------------- |
| 31f40 | 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 68 61 6e 64 6c 65 2e 74 72 75 6e 63 61 74 65 28 6c 65 6e 67 74 68 | --------..handle.truncate(length |
| 31f60 | 29 0d 0a 6f 70 65 6e 28 22 2f 74 6d 70 23 7b 24 24 7d 2e 70 69 64 22 2c 20 27 77 27 29 20 7b 20 | )..open("/tmp#{$$}.pid",.'w').{. |
| 31f80 | 7c 68 61 6e 64 6c 65 7c 20 68 61 6e 64 6c 65 2e 74 72 75 6e 63 61 74 65 28 6c 65 6e 67 74 68 29 | |handle|.handle.truncate(length) |
| 31fa0 | 20 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .}..#--------------------------- |
| 31fc0 | 2d 2d 0d 0a 70 6f 73 20 3d 20 64 61 74 61 66 69 6c 65 2e 70 6f 73 20 20 23 20 74 65 6c 6c 20 69 | --..pos.=.datafile.pos..#.tell.i |
| 31fe0 | 73 20 61 6e 20 61 6c 69 61 73 20 6f 66 20 70 6f 73 0d 0a 70 75 74 73 20 22 49 27 6d 20 23 7b 70 | s.an.alias.of.pos..puts."I'm.#{p |
| 32000 | 6f 73 7d 20 62 79 74 65 73 20 66 72 6f 6d 20 74 68 65 20 73 74 61 72 74 20 6f 66 20 64 61 74 61 | os}.bytes.from.the.start.of.data |
| 32020 | 66 69 6c 65 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | file"..#------------------------ |
| 32040 | 2d 2d 2d 2d 2d 0d 0a 6c 6f 67 66 69 6c 65 2e 73 65 65 6b 28 30 2c 20 49 4f 3a 3a 53 45 45 4b 5f | -----..logfile.seek(0,.IO::SEEK_ |
| 32060 | 45 4e 44 29 0d 0a 64 61 74 61 66 69 6c 65 2e 73 65 65 6b 28 70 6f 73 29 20 20 23 20 20 49 4f 3a | END)..datafile.seek(pos)..#..IO: |
| 32080 | 3a 53 45 45 4b 5f 53 45 54 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 0d 0a 6f 75 74 2e 73 65 | :SEEK_SET.is.the.default..out.se |
| 320a0 | 65 6b 28 2d 32 30 2c 20 49 4f 3a 3a 53 45 45 4b 5f 43 55 52 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | ek(-20,.IO::SEEK_CUR)..#-------- |
| 320c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 77 72 69 74 74 65 6e 20 3d | ---------------------..written.= |
| 320e0 | 20 64 61 74 61 66 69 6c 65 2e 73 79 73 77 72 69 74 65 28 6d 79 73 74 72 69 6e 67 29 0d 0a 72 61 | .datafile.syswrite(mystring)..ra |
| 32100 | 69 73 65 20 52 75 6e 54 69 6d 65 45 72 72 6f 72 20 75 6e 6c 65 73 73 20 77 72 69 74 74 65 6e 20 | ise.RunTimeError.unless.written. |
| 32120 | 3d 3d 20 6d 79 73 74 72 69 6e 67 2e 6c 65 6e 67 74 68 0d 0a 62 6c 6f 63 6b 20 3d 20 69 6e 66 69 | ==.mystring.length..block.=.infi |
| 32140 | 6c 65 2e 73 79 73 72 65 61 64 28 32 35 36 29 20 20 20 23 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e | le.sysread(256)...#.no.equivalen |
| 32160 | 74 20 74 6f 20 70 65 72 6c 20 6f 66 66 73 65 74 20 70 61 72 61 6d 65 74 65 72 20 69 6e 20 73 79 | t.to.perl.offset.parameter.in.sy |
| 32180 | 73 72 65 61 64 0d 0a 70 75 74 73 20 22 6f 6e 6c 79 20 72 65 61 64 20 23 7b 62 6c 6f 63 6b 2e 6c | sread..puts."only.read.#{block.l |
| 321a0 | 65 6e 67 74 68 7d 20 62 79 74 65 73 22 20 69 66 20 32 35 36 20 21 3d 20 62 6c 6f 63 6b 2e 6c 65 | ength}.bytes".if.256.!=.block.le |
| 321c0 | 6e 67 74 68 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ngth..#------------------------- |
| 321e0 | 2d 2d 2d 2d 0d 0a 70 6f 73 20 3d 20 68 61 6e 64 6c 65 2e 73 79 73 73 65 65 6b 28 30 2c 20 49 4f | ----..pos.=.handle.sysseek(0,.IO |
| 32200 | 3a 3a 53 45 45 4b 5f 43 55 52 29 20 20 23 20 64 6f 6e 27 74 20 63 68 61 6e 67 65 20 70 6f 73 69 | ::SEEK_CUR)..#.don't.change.posi |
| 32220 | 74 69 6f 6e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 38 2e 31 0d 0a 77 68 69 6c 65 | tion......#.@@PLEAC@@_8.1..while |
| 32240 | 20 28 6c 69 6e 65 20 3d 20 66 68 2e 67 65 74 73 29 0d 0a 20 20 20 20 6c 69 6e 65 2e 63 68 6f 6d | .(line.=.fh.gets)......line.chom |
| 32260 | 70 21 0d 0a 20 20 20 20 6e 65 78 74 6c 69 6e 65 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 6c 69 6e 65 | p!......nextline.=.nil......line |
| 32280 | 2e 67 73 75 62 21 28 2f 5c 5c 24 2f 29 20 7b 20 7c 6d 61 74 63 68 7c 20 6e 65 78 74 6c 69 6e 65 | .gsub!(/\\$/).{.|match|.nextline |
| 322a0 | 20 3d 20 66 68 2e 67 65 74 73 3b 20 27 27 20 7d 0d 0a 20 20 20 20 69 66 20 28 6e 65 78 74 6c 69 | .=.fh.gets;.''.}......if.(nextli |
| 322c0 | 6e 65 20 21 3d 20 6e 69 6c 29 0d 0a 20 20 20 20 20 20 20 20 6c 69 6e 65 20 2b 3d 20 6e 65 78 74 | ne.!=.nil)..........line.+=.next |
| 322e0 | 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 72 65 64 6f 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 | line..........redo......end..... |
| 32300 | 20 23 20 70 72 6f 63 65 73 73 20 66 75 6c 6c 20 72 65 63 6f 72 64 20 69 6e 20 6c 69 6e 65 20 68 | .#.process.full.record.in.line.h |
| 32320 | 65 72 65 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ere..end..#--------------------- |
| 32340 | 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 44 49 53 54 46 49 4c 45 53 20 3d 20 24 28 44 49 53 54 5f 43 | --------..#.DISTFILES.=.$(DIST_C |
| 32360 | 4f 4d 4d 4f 4e 29 20 24 28 53 4f 55 52 43 45 53 29 20 24 28 48 45 41 44 45 52 53 29 20 5c 0d 0a | OMMON).$(SOURCES).$(HEADERS).\.. |
| 32380 | 23 20 20 20 20 20 20 20 20 20 24 28 54 45 58 49 4e 46 4f 53 29 20 24 28 49 4e 46 4f 53 29 20 24 | #.........$(TEXINFOS).$(INFOS).$ |
| 323a0 | 28 4d 41 4e 53 29 20 24 28 44 41 54 41 29 0d 0a 23 20 44 45 50 5f 44 49 53 54 46 49 4c 45 53 20 | (MANS).$(DATA)..#.DEP_DISTFILES. |
| 323c0 | 3d 20 24 28 44 49 53 54 5f 43 4f 4d 4d 4f 4e 29 20 24 28 53 4f 55 52 43 45 53 29 20 24 28 48 45 | =.$(DIST_COMMON).$(SOURCES).$(HE |
| 323e0 | 41 44 45 52 53 29 20 5c 0d 0a 23 20 20 20 20 20 20 20 20 20 24 28 54 45 58 49 4e 46 4f 53 29 20 | ADERS).\..#.........$(TEXINFOS). |
| 32400 | 24 28 49 4e 46 4f 5f 44 45 50 53 29 20 24 28 4d 41 4e 53 29 20 24 28 44 41 54 41 29 20 5c 0d 0a | $(INFO_DEPS).$(MANS).$(DATA).\.. |
| 32420 | 23 20 20 20 20 20 20 20 20 20 24 28 45 58 54 52 41 5f 44 49 53 54 29 0d 0a 23 2d 2d 2d 2d 2d 2d | #.........$(EXTRA_DIST)..#------ |
| 32440 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6c 69 6e 65 2e 67 73 | -----------------------..line.gs |
| 32460 | 75 62 21 28 2f 5c 5c 5c 73 2a 24 2f 2c 20 27 27 29 20 7b 0d 0a 20 20 20 20 23 20 61 73 20 62 65 | ub!(/\\\s*$/,.'').{......#.as.be |
| 32480 | 66 6f 72 65 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 38 2e 32 0d 0a 23 2d | fore..}......#.@@PLEAC@@_8.2..#- |
| 324a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 63 6f | ----------------------------..co |
| 324c0 | 75 6e 74 20 3d 20 60 77 63 20 2d 6c 20 3c 20 23 7b 66 69 6c 65 6e 61 6d 65 7d 60 0d 0a 66 61 69 | unt.=.`wc.-l.<.#{filename}`..fai |
| 324e0 | 6c 20 22 77 63 20 66 61 69 6c 65 64 3a 20 23 7b 24 3f 7d 22 20 69 66 20 24 3f 20 21 3d 20 30 0d | l."wc.failed:.#{$?}".if.$?.!=.0. |
| 32500 | 0a 63 6f 75 6e 74 2e 63 68 6f 6d 70 21 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .count.chomp!..#---------------- |
| 32520 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 63 6f 75 6e 74 20 3d 20 30 0d 0a 46 69 6c 65 2e 6f | -------------..count.=.0..File.o |
| 32540 | 70 65 6e 28 66 69 6c 65 2c 20 27 72 27 29 20 7b 20 7c 66 68 7c 0d 0a 20 20 20 20 63 6f 75 6e 74 | pen(file,.'r').{.|fh|......count |
| 32560 | 20 2b 3d 20 31 20 77 68 69 6c 65 20 66 68 2e 67 65 74 73 0d 0a 7d 0d 0a 23 20 63 6f 75 6e 74 20 | .+=.1.while.fh.gets..}..#.count. |
| 32580 | 6e 6f 77 20 68 6f 6c 64 73 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 72 65 | now.holds.the.number.of.lines.re |
| 325a0 | 61 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ad..#--------------------------- |
| 325c0 | 2d 2d 0d 0a 63 6f 75 6e 74 20 3d 20 30 0d 0a 77 68 69 6c 65 20 28 63 68 75 6e 6b 20 3d 20 66 69 | --..count.=.0..while.(chunk.=.fi |
| 325e0 | 6c 65 2e 73 79 73 72 65 61 64 28 32 2a 2a 31 36 29 29 0d 0a 20 20 20 20 63 6f 75 6e 74 20 2b 3d | le.sysread(2**16))......count.+= |
| 32600 | 20 63 68 75 6e 6b 2e 63 6f 75 6e 74 28 22 5c 6e 22 29 0d 0a 65 6e 64 20 72 65 73 63 75 65 20 45 | .chunk.count("\n")..end.rescue.E |
| 32620 | 4f 46 45 72 72 6f 72 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | OFError..#---------------------- |
| 32640 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 27 72 27 29 | -------..File.open(filename,'r') |
| 32660 | 20 7b 20 7c 66 68 7c 0d 0a 20 20 20 20 63 6f 75 6e 74 20 2b 3d 20 31 20 77 68 69 6c 65 20 66 68 | .{.|fh|......count.+=.1.while.fh |
| 32680 | 2e 67 65 74 73 0d 0a 7d 0d 0a 23 20 63 6f 75 6e 74 20 6e 6f 77 20 68 6f 6c 64 73 20 74 68 65 20 | .gets..}..#.count.now.holds.the. |
| 326a0 | 6e 75 6d 62 65 72 20 6f 66 20 6c 69 6e 65 73 20 72 65 61 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d | number.of.lines.read..#--------- |
| 326c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 41 73 20 72 75 62 79 20 | --------------------..#.As.ruby. |
| 326e0 | 64 6f 65 73 6e 27 74 20 71 75 69 74 65 20 68 61 76 65 20 61 6e 20 65 71 75 69 76 61 6c 65 6e 74 | doesn't.quite.have.an.equivalent |
| 32700 | 20 74 6f 20 75 73 69 6e 67 20 61 20 66 6f 72 0d 0a 23 20 73 74 61 74 65 6d 65 6e 74 20 61 73 20 | .to.using.a.for..#.statement.as. |
| 32720 | 69 6e 20 70 65 72 6c 2c 20 49 20 74 68 72 65 77 20 74 68 69 73 20 69 6e 0d 0a 63 6f 75 6e 74 20 | in.perl,.I.threw.this.in..count. |
| 32740 | 3d 20 46 69 6c 65 2e 72 65 61 64 6c 69 6e 65 73 28 66 69 6c 65 6e 61 6d 65 29 2e 73 69 7a 65 0d | =.File.readlines(filename).size. |
| 32760 | 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d | .#-----------------------------. |
| 32780 | 0a 31 20 77 68 69 6c 65 20 66 69 6c 65 2e 67 65 74 73 0d 0a 63 6f 75 6e 74 20 3d 20 24 2e 0d 0a | .1.while.file.gets..count.=.$... |
| 327a0 | 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a | #-----------------------------.. |
| 327c0 | 24 2f 20 3d 20 27 27 0d 0a 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 27 72 27 29 20 7b 20 7c | $/.=.''..open(filename,.'r').{.| |
| 327e0 | 66 68 7c 0d 0a 20 20 20 20 31 20 77 68 69 6c 65 20 66 68 2e 67 65 74 73 0d 0a 20 20 20 20 70 61 | fh|......1.while.fh.gets......pa |
| 32800 | 72 61 5f 63 6f 75 6e 74 20 3d 20 24 2e 0d 0a 7d 20 72 65 73 63 75 65 20 66 61 69 6c 28 22 63 61 | ra_count.=.$...}.rescue.fail("ca |
| 32820 | 6e 27 74 20 6f 70 65 6e 20 23 7b 66 69 6c 65 6e 61 6d 65 7d 3a 20 24 21 22 29 0d 0a 23 2d 2d 2d | n't.open.#{filename}:.$!")..#--- |
| 32840 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a | --------------------------...... |
| 32860 | 23 20 5e 5e 50 4c 45 41 43 5e 5e 5f 38 2e 33 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | #.^^PLEAC^^_8.3..#-------------- |
| 32880 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 77 68 69 6c 65 20 28 67 65 74 73 29 0d 0a 20 | ---------------..while.(gets)... |
| 328a0 | 20 20 20 73 70 6c 69 74 2e 65 61 63 68 20 7b 20 7c 63 68 75 6e 6b 7c 0d 0a 20 20 20 20 20 20 20 | ...split.each.{.|chunk|......... |
| 328c0 | 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 63 68 75 6e 6b 0d 0a 20 20 20 20 | .#.do.something.with.chunk...... |
| 328e0 | 7d 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | }..end..#----------------------- |
| 32900 | 2d 2d 2d 2d 2d 2d 0d 0a 77 68 69 6c 65 20 28 67 65 74 73 29 0d 0a 20 20 20 20 67 73 75 62 28 2f | ------..while.(gets)......gsub(/ |
| 32920 | 28 5c 77 5b 5c 77 27 2d 5d 2a 29 2f 29 20 7b 20 7c 77 6f 72 64 7c 0d 0a 20 20 20 20 20 20 20 20 | (\w[\w'-]*)/).{.|word|.......... |
| 32940 | 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 77 6f 72 64 0d 0a 20 20 20 20 7d 0d | #.do.something.with.word......}. |
| 32960 | 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .end..#------------------------- |
| 32980 | 2d 2d 2d 2d 0d 0a 23 20 4d 61 6b 65 20 61 20 77 6f 72 64 20 66 72 65 71 75 65 6e 63 79 20 63 6f | ----..#.Make.a.word.frequency.co |
| 329a0 | 75 6e 74 0d 0a 23 20 6e 6f 72 6d 61 6c 6c 79 20 68 61 73 68 65 73 20 63 61 6e 20 62 65 20 63 72 | unt..#.normally.hashes.can.be.cr |
| 329c0 | 65 61 74 65 64 20 75 73 69 6e 67 20 7b 7d 20 6f 72 20 6a 75 73 74 20 48 61 73 68 2e 6e 65 77 0d | eated.using.{}.or.just.Hash.new. |
| 329e0 | 0a 23 20 62 75 74 20 77 65 20 77 61 6e 74 20 74 68 65 20 64 65 66 61 75 6c 74 20 76 61 6c 75 65 | .#.but.we.want.the.default.value |
| 32a00 | 20 6f 66 20 61 6e 20 65 6e 74 72 79 20 74 6f 20 62 65 20 30 20 69 6e 73 74 65 61 64 0d 0a 23 20 | .of.an.entry.to.be.0.instead..#. |
| 32a20 | 6f 66 20 6e 69 6c 2e 20 28 6e 69 6c 20 63 61 6e 27 74 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65 | of.nil..(nil.can't.be.incremente |
| 32a40 | 64 29 0d 0a 73 65 65 6e 20 3d 20 48 61 73 68 2e 6e 65 77 28 30 29 0d 0a 77 68 69 6c 65 20 28 67 | d)..seen.=.Hash.new(0)..while.(g |
| 32a60 | 65 74 73 29 0d 0a 20 20 20 20 67 73 75 62 28 2f 28 5c 77 5b 5c 77 27 2d 5d 2a 29 2f 29 20 7b 20 | ets)......gsub(/(\w[\w'-]*)/).{. |
| 32a80 | 7c 77 6f 72 64 7c 0d 0a 20 20 20 20 20 20 20 20 73 65 65 6e 5b 77 6f 72 64 2e 64 6f 77 6e 63 61 | |word|..........seen[word.downca |
| 32aa0 | 73 65 5d 20 2b 3d 20 31 0d 0a 20 20 20 20 7d 0d 0a 65 6e 64 0d 0a 23 20 6f 75 74 70 75 74 20 68 | se].+=.1......}..end..#.output.h |
| 32ac0 | 61 73 68 20 69 6e 20 61 20 64 65 73 63 65 6e 64 69 6e 67 20 6e 75 6d 65 72 69 63 20 73 6f 72 74 | ash.in.a.descending.numeric.sort |
| 32ae0 | 20 6f 66 20 69 74 73 20 76 61 6c 75 65 73 0d 0a 73 65 65 6e 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 | .of.its.values..seen.sort.{.|a,b |
| 32b00 | 7c 20 62 5b 31 5d 20 3c 3d 3e 20 61 5b 31 5d 20 7d 2e 65 61 63 68 20 64 6f 20 7c 6b 2c 76 7c 0d | |.b[1].<=>.a[1].}.each.do.|k,v|. |
| 32b20 | 0a 20 20 20 20 70 72 69 6e 74 66 28 22 25 35 64 20 25 73 5c 6e 22 2c 20 76 2c 20 6b 20 29 0d 0a | .....printf("%5d.%s\n",.v,.k.).. |
| 32b40 | 65 6e 64 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | end....#------------------------ |
| 32b60 | 2d 2d 2d 2d 2d 0d 0a 23 20 4c 69 6e 65 20 66 72 65 71 75 65 6e 63 79 20 63 6f 75 6e 74 0d 0a 73 | -----..#.Line.frequency.count..s |
| 32b80 | 65 65 6e 20 3d 20 48 61 73 68 2e 6e 65 77 28 30 29 0d 0a 77 68 69 6c 65 20 28 67 65 74 73 29 0d | een.=.Hash.new(0)..while.(gets). |
| 32ba0 | 0a 20 20 20 20 73 65 65 6e 5b 24 5f 2e 64 6f 77 6e 63 61 73 65 5d 20 2b 3d 20 31 0d 0a 65 6e 64 | .....seen[$_.downcase].+=.1..end |
| 32bc0 | 0d 0a 73 65 65 6e 2e 73 6f 72 74 20 7b 20 7c 61 2c 62 7c 20 62 5b 31 5d 20 3c 3d 3e 20 61 5b 31 | ..seen.sort.{.|a,b|.b[1].<=>.a[1 |
| 32be0 | 5d 20 7d 2e 65 61 63 68 20 64 6f 20 7c 6b 2c 76 7c 0d 0a 20 20 20 20 70 72 69 6e 74 66 28 22 25 | ].}.each.do.|k,v|......printf("% |
| 32c00 | 35 64 20 25 73 5c 6e 22 2c 20 76 2c 20 6b 20 29 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | 5d.%s\n",.v,.k.)..end..#-------- |
| 32c20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 | ---------------------......#.@@P |
| 32c40 | 4c 45 41 43 40 40 5f 38 2e 34 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | LEAC@@_8.4..#------------------- |
| 32c60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 69 6e 73 74 65 61 64 20 6f 66 20 66 69 6c 65 20 68 61 | ----------..#.instead.of.file.ha |
| 32c80 | 6e 64 6c 65 20 46 49 4c 45 2c 20 77 65 20 63 61 6e 20 6a 75 73 74 0d 0a 23 20 75 73 65 20 61 20 | ndle.FILE,.we.can.just..#.use.a. |
| 32ca0 | 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 0d 0a | string.containing.the.filename.. |
| 32cc0 | 46 69 6c 65 2e 72 65 61 64 6c 69 6e 65 73 28 66 69 6c 65 29 2e 65 61 63 68 20 7b 20 7c 6c 69 6e | File.readlines(file).each.{.|lin |
| 32ce0 | 65 7c 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 6c 69 6e 65 | e|......#.do.something.with.line |
| 32d00 | 0d 0a 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..}..#-------------------------- |
| 32d20 | 2d 2d 2d 0d 0a 46 69 6c 65 2e 72 65 61 64 6c 69 6e 65 73 28 66 69 6c 65 29 2e 72 65 76 65 72 73 | ---..File.readlines(file).revers |
| 32d40 | 65 5f 65 61 63 68 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 | e_each.{.|line|......#.do.someth |
| 32d60 | 69 6e 67 20 77 69 74 68 20 6c 69 6e 65 0d 0a 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ing.with.line..}..#------------- |
| 32d80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 74 68 65 20 76 61 72 69 61 62 6c 65 | ----------------..#.the.variable |
| 32da0 | 20 6c 69 6e 65 73 20 6d 69 67 68 74 20 68 61 76 65 20 62 65 65 6e 20 63 72 65 61 74 65 64 0d 0a | .lines.might.have.been.created.. |
| 32dc0 | 23 20 74 68 69 73 20 77 61 79 0d 0a 23 20 6c 69 6e 65 73 20 3d 20 46 69 6c 65 2e 72 65 61 64 6c | #.this.way..#.lines.=.File.readl |
| 32de0 | 69 6e 65 73 28 66 69 6c 65 29 0d 0a 23 0d 0a 23 20 6e 6f 72 6d 61 6c 6c 79 20 6f 6e 65 20 77 6f | ines(file)..#..#.normally.one.wo |
| 32e00 | 75 6c 64 20 75 73 65 20 74 68 65 20 72 65 76 65 72 73 65 5f 65 61 63 68 2c 20 62 75 74 0d 0a 23 | uld.use.the.reverse_each,.but..# |
| 32e20 | 20 69 66 20 79 6f 75 20 69 6e 73 69 73 74 20 6f 6e 20 75 73 69 6e 67 20 61 20 6e 75 6d 65 72 69 | .if.you.insist.on.using.a.numeri |
| 32e40 | 63 61 6c 20 69 6e 64 65 78 20 74 6f 0d 0a 23 20 69 74 65 72 61 74 65 20 6f 76 65 72 20 74 68 65 | cal.index.to..#.iterate.over.the |
| 32e60 | 20 6c 69 6e 65 73 20 61 72 72 61 79 2e 2e 2e 0d 0a 28 6c 69 6e 65 73 2e 73 69 7a 65 20 2d 20 31 | .lines.array.....(lines.size.-.1 |
| 32e80 | 29 2e 64 6f 77 6e 74 6f 28 30 29 20 7b 20 7c 69 7c 0d 0a 20 20 20 20 6c 69 6e 65 20 3d 20 6c 69 | ).downto(0).{.|i|......line.=.li |
| 32ea0 | 6e 65 73 5b 69 5d 0d 0a 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | nes[i]..}..#-------------------- |
| 32ec0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 74 68 65 20 73 65 63 6f 6e 64 20 72 65 61 64 6c 69 6e 65 | ---------..#.the.second.readline |
| 32ee0 | 73 20 61 72 67 75 6d 65 6e 74 20 69 73 20 61 20 74 68 65 0d 0a 23 20 72 65 63 6f 72 64 20 73 65 | s.argument.is.a.the..#.record.se |
| 32f00 | 70 61 72 61 74 6f 72 20 24 2f 2c 20 6a 75 73 74 20 6c 69 6b 65 20 70 65 72 6c 2c 20 61 20 62 6c | parator.$/,.just.like.perl,.a.bl |
| 32f20 | 61 6e 6b 0d 0a 23 20 73 65 70 61 72 61 74 6f 72 20 73 70 6c 69 74 73 20 74 68 65 20 72 65 63 6f | ank..#.separator.splits.the.reco |
| 32f40 | 72 64 73 20 69 6e 74 6f 20 70 61 72 61 67 72 61 70 68 73 0d 0a 46 69 6c 65 2e 72 65 61 64 6c 69 | rds.into.paragraphs..File.readli |
| 32f60 | 6e 65 73 28 66 69 6c 65 2c 20 27 27 29 2e 65 61 63 68 20 7b 20 7c 70 61 72 61 67 72 61 70 68 7c | nes(file,.'').each.{.|paragraph| |
| 32f80 | 0d 0a 20 20 20 20 23 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 70 61 72 61 67 72 | ......#.do.something.with.paragr |
| 32fa0 | 61 70 68 0d 0a 20 20 20 20 70 75 74 73 20 22 2d 3e 50 61 72 61 67 72 61 70 68 20 23 7b 70 61 72 | aph......puts."->Paragraph.#{par |
| 32fc0 | 61 67 72 61 70 68 7d 22 0d 0a 7d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | agraph}"..}..#------------------ |
| 32fe0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 38 2e 36 | -----------......#.@@PLEAC@@_8.6 |
| 33000 | 0d 0a 0d 0a 24 2f 20 3d 20 22 25 5c 6e 22 3b 0d 0a 73 72 61 6e 64 3b 0d 0a 0d 0a 46 69 6c 65 2e | ....$/.=."%\n";..srand;....File. |
| 33020 | 6f 70 65 6e 28 27 2f 75 73 72 2f 73 68 61 72 65 2f 66 6f 72 74 75 6e 65 2f 68 75 6d 6f 72 69 73 | open('/usr/share/fortune/humoris |
| 33040 | 74 73 27 29 2e 65 61 63 68 20 64 6f 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 61 64 61 67 65 20 3d | ts').each.do.|line|......adage.= |
| 33060 | 20 6c 69 6e 65 20 69 66 20 72 61 6e 64 28 24 2e 29 20 3c 20 31 0d 0a 65 6e 64 0d 0a 0d 0a 70 75 | .line.if.rand($.).<.1..end....pu |
| 33080 | 74 73 20 61 64 61 67 65 3b 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 38 2e 31 30 0d | ts.adage;......#.@@PLEAC@@_8.10. |
| 330a0 | 0a 62 65 67 69 6e 0d 0a 20 20 20 20 66 68 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 66 69 6c 65 2c | .begin......fh.=.File.open(file, |
| 330c0 | 20 22 72 2b 22 29 0d 0a 20 20 20 20 61 64 64 72 20 3d 20 66 68 2e 74 65 6c 6c 20 75 6e 6c 65 73 | ."r+")......addr.=.fh.tell.unles |
| 330e0 | 73 20 66 68 2e 65 6f 66 20 77 68 69 6c 65 20 66 68 2e 67 65 74 73 0d 0a 20 20 20 20 66 68 2e 74 | s.fh.eof.while.fh.gets......fh.t |
| 33100 | 72 75 6e 63 61 74 65 28 61 64 64 72 29 0d 0a 72 65 73 63 75 65 20 53 79 73 74 65 6d 43 61 6c 6c | runcate(addr)..rescue.SystemCall |
| 33120 | 45 72 72 6f 72 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 20 22 23 24 21 22 0d 0a 65 | Error......$stderr.puts."#$!"..e |
| 33140 | 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 30 0d 0a 65 6e 74 72 79 20 3d | nd......#.@@PLEAC@@_9.0..entry.= |
| 33160 | 20 46 69 6c 65 2e 73 74 61 74 28 22 2f 75 73 72 2f 62 69 6e 2f 76 69 22 29 0d 0a 65 6e 74 72 79 | .File.stat("/usr/bin/vi")..entry |
| 33180 | 20 3d 20 46 69 6c 65 2e 73 74 61 74 28 22 2f 75 73 72 2f 62 69 6e 22 29 0d 0a 65 6e 74 72 79 20 | .=.File.stat("/usr/bin")..entry. |
| 331a0 | 3d 20 46 69 6c 65 2e 73 74 61 74 28 49 4e 46 49 4c 45 29 0d 0a 0d 0a 65 6e 74 72 79 20 3d 20 46 | =.File.stat(INFILE)....entry.=.F |
| 331c0 | 69 6c 65 2e 73 74 61 74 28 22 2f 75 73 72 2f 62 69 6e 2f 76 69 22 29 0d 0a 63 74 69 6d 65 20 3d | ile.stat("/usr/bin/vi")..ctime.= |
| 331e0 | 20 65 6e 74 72 79 2e 63 74 69 6d 65 0d 0a 73 69 7a 65 20 20 3d 20 65 6e 74 72 79 2e 73 69 7a 65 | .entry.ctime..size..=.entry.size |
| 33200 | 0d 0a 0d 0a 66 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 22 72 22 29 | ....f.=.File.open(filename,."r") |
| 33220 | 0d 0a 0d 0a 23 23 20 54 68 65 72 65 20 69 73 20 6e 6f 20 2d 54 20 65 71 75 69 76 61 6c 65 6e 74 | ....##.There.is.no.-T.equivalent |
| 33240 | 20 69 6e 20 52 75 62 79 2c 20 62 75 74 20 77 65 20 63 61 6e 20 73 74 69 6c 6c 20 74 65 73 74 20 | .in.Ruby,.but.we.can.still.test. |
| 33260 | 65 6d 70 74 69 6e 65 73 73 0d 0a 69 66 20 74 65 73 74 28 3f 73 2c 20 66 69 6c 65 6e 61 6d 65 29 | emptiness..if.test(?s,.filename) |
| 33280 | 0d 0a 20 20 70 75 74 73 20 22 23 7b 66 69 6c 65 6e 61 6d 65 7d 20 64 6f 65 73 6e 27 74 20 68 61 | ....puts."#{filename}.doesn't.ha |
| 332a0 | 76 65 20 74 65 78 74 20 69 6e 20 69 74 2e 22 0d 0a 20 20 65 78 69 74 0d 0a 65 6e 64 0d 0a 0d 0a | ve.text.in.it."....exit..end.... |
| 332c0 | 44 69 72 2e 6e 65 77 28 22 2f 75 73 72 2f 62 69 6e 22 29 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c | Dir.new("/usr/bin").each.do.|fil |
| 332e0 | 65 6e 61 6d 65 7c 0d 0a 20 20 70 75 74 73 20 22 49 6e 73 69 64 65 20 2f 75 73 72 2f 62 69 6e 20 | ename|....puts."Inside./usr/bin. |
| 33300 | 69 73 20 73 6f 6d 65 74 68 69 6e 67 20 63 61 6c 6c 65 64 20 23 7b 66 69 6c 65 6e 61 6d 65 7d 22 | is.something.called.#{filename}" |
| 33320 | 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 31 0d 0a 66 69 6c 65 | ..end......#.@@PLEAC@@_9.1..file |
| 33340 | 20 3d 20 46 69 6c 65 2e 73 74 61 74 28 22 66 69 6c 65 6e 61 6d 65 22 29 0d 0a 72 65 61 64 74 69 | .=.File.stat("filename")..readti |
| 33360 | 6d 65 2c 20 77 72 69 74 65 74 69 6d 65 20 3d 20 66 69 6c 65 2e 61 74 69 6d 65 2c 20 66 69 6c 65 | me,.writetime.=.file.atime,.file |
| 33380 | 2e 6d 74 69 6d 65 0d 0a 66 69 6c 65 2e 75 74 69 6d 65 28 72 65 61 64 74 69 6d 65 2c 20 77 72 69 | .mtime..file.utime(readtime,.wri |
| 333a0 | 74 65 74 69 6d 65 29 0d 0a 0d 0a 53 45 43 4f 4e 44 53 5f 50 45 52 5f 44 41 59 20 3d 20 36 30 20 | tetime)....SECONDS_PER_DAY.=.60. |
| 333c0 | 2a 20 36 30 20 2a 20 32 34 0d 0a 66 69 6c 65 20 3d 20 46 69 6c 65 2e 73 74 61 74 28 22 66 69 6c | *.60.*.24..file.=.File.stat("fil |
| 333e0 | 65 6e 61 6d 65 22 29 0d 0a 61 74 69 6d 65 2c 20 6d 74 69 6d 65 20 3d 20 66 69 6c 65 2e 61 74 69 | ename")..atime,.mtime.=.file.ati |
| 33400 | 6d 65 2c 20 66 69 6c 65 2e 6d 74 69 6d 65 0d 0a 0d 0a 61 74 69 6d 65 20 2d 3d 20 37 20 2a 20 53 | me,.file.mtime....atime.-=.7.*.S |
| 33420 | 45 43 4f 4e 44 53 5f 50 45 52 5f 44 41 59 0d 0a 6d 74 69 6d 65 20 2d 3d 20 37 20 2a 20 53 45 43 | ECONDS_PER_DAY..mtime.-=.7.*.SEC |
| 33440 | 4f 4e 44 53 5f 50 45 52 5f 44 41 59 0d 0a 0d 0a 46 69 6c 65 2e 75 74 69 6d 65 28 61 74 69 6d 65 | ONDS_PER_DAY....File.utime(atime |
| 33460 | 2c 20 6d 74 69 6d 65 2c 20 66 69 6c 65 29 0d 0a 6d 74 69 6d 65 20 3d 20 46 69 6c 65 2e 73 74 61 | ,.mtime,.file)..mtime.=.File.sta |
| 33480 | 74 28 66 69 6c 65 29 2e 6d 74 69 6d 65 0d 0a 46 69 6c 65 2e 75 74 69 6d 65 28 54 69 6d 65 2e 6e | t(file).mtime..File.utime(Time.n |
| 334a0 | 65 77 2c 20 6d 74 69 6d 65 2c 20 66 69 6c 65 29 0d 0a 46 69 6c 65 2e 75 74 69 6d 65 28 54 69 6d | ew,.mtime,.file)..File.utime(Tim |
| 334c0 | 65 2e 6e 65 77 2c 20 46 69 6c 65 2e 73 74 61 74 28 22 74 65 73 74 66 69 6c 65 22 29 2e 6d 74 69 | e.new,.File.stat("testfile").mti |
| 334e0 | 6d 65 2c 20 66 69 6c 65 29 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | me,.file)....#------------------ |
| 33500 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d | -----------..#!/usr/bin/ruby.-w. |
| 33520 | 0a 23 23 20 75 76 69 20 2d 20 76 69 20 61 20 66 69 6c 65 20 77 69 74 68 6f 75 74 20 63 68 61 6e | .##.uvi.-.vi.a.file.without.chan |
| 33540 | 67 69 6e 67 20 69 74 27 73 20 61 63 63 65 73 73 20 74 69 6d 65 73 0d 0a 0d 0a 69 66 20 41 52 47 | ging.it's.access.times....if.ARG |
| 33560 | 56 2e 6c 65 6e 67 74 68 20 21 3d 20 31 0d 0a 20 20 70 75 74 73 20 22 75 73 61 67 65 3a 20 75 76 | V.length.!=.1....puts."usage:.uv |
| 33580 | 69 20 66 69 6c 65 6e 61 6d 65 22 0d 0a 20 20 65 78 69 74 0d 0a 65 6e 64 0d 0a 66 69 6c 65 20 3d | i.filename"....exit..end..file.= |
| 335a0 | 20 41 52 47 56 5b 30 5d 0d 0a 61 74 69 6d 65 2c 20 6d 74 69 6d 65 20 3d 20 46 69 6c 65 2e 73 74 | .ARGV[0]..atime,.mtime.=.File.st |
| 335c0 | 61 74 28 66 69 6c 65 29 2e 61 74 69 6d 65 2c 20 46 69 6c 65 2e 73 74 61 74 28 66 69 6c 65 29 2e | at(file).atime,.File.stat(file). |
| 335e0 | 6d 74 69 6d 65 0d 0a 73 79 73 74 65 6d 28 45 4e 56 5b 22 45 44 49 54 4f 52 22 5d 20 7c 7c 20 22 | mtime..system(ENV["EDITOR"].||." |
| 33600 | 76 69 22 2c 20 66 69 6c 65 29 0d 0a 46 69 6c 65 2e 75 74 69 6d 65 28 61 74 69 6d 65 2c 20 6d 74 | vi",.file)..File.utime(atime,.mt |
| 33620 | 69 6d 65 2c 20 66 69 6c 65 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ime,.file)..#------------------- |
| 33640 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 32 0d | ----------......#.@@PLEAC@@_9.2. |
| 33660 | 0a 46 69 6c 65 2e 75 6e 6c 69 6e 6b 28 46 49 4c 45 4e 41 4d 45 29 0d 0a 0d 0a 65 72 72 5f 66 6c | .File.unlink(FILENAME)....err_fl |
| 33680 | 67 20 3d 20 66 61 6c 73 65 0d 0a 66 69 6c 65 6e 61 6d 65 73 2e 65 61 63 68 20 64 6f 20 7c 66 69 | g.=.false..filenames.each.do.|fi |
| 336a0 | 6c 65 7c 0d 0a 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 46 69 6c 65 2e 75 6e 6c 69 6e 6b 28 66 69 | le|....begin......File.unlink(fi |
| 336c0 | 6c 65 29 0d 0a 20 20 72 65 73 63 75 65 0d 0a 20 20 20 20 65 72 72 5f 66 6c 67 20 3d 20 24 21 0d | le)....rescue......err_flg.=.$!. |
| 336e0 | 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 65 72 72 5f 66 6c 67 20 61 6e 64 20 72 61 69 73 65 20 22 | ...end..end..err_flg.and.raise." |
| 33700 | 43 6f 75 6c 64 6e 27 74 20 75 6e 6c 69 6e 6b 20 61 6c 6c 20 6f 66 20 23 7b 66 69 6c 65 6e 61 6d | Couldn't.unlink.all.of.#{filenam |
| 33720 | 65 73 2e 6a 6f 69 6e 28 22 20 22 29 7d 3a 20 23 7b 65 72 72 5f 66 6c 67 7d 22 0d 0a 0d 0a 46 69 | es.join(".")}:.#{err_flg}"....Fi |
| 33740 | 6c 65 2e 75 6e 6c 69 6e 6b 28 66 69 6c 65 29 0d 0a 0d 0a 63 6f 75 6e 74 20 3d 20 66 69 6c 65 6e | le.unlink(file)....count.=.filen |
| 33760 | 61 6d 65 73 2e 6c 65 6e 67 74 68 0d 0a 66 69 6c 65 6e 61 6d 65 73 2e 65 61 63 68 20 64 6f 20 7c | ames.length..filenames.each.do.| |
| 33780 | 66 69 6c 65 7c 0d 0a 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 46 69 6c 65 2e 75 6e 6c 69 6e 6b 28 | file|....begin......File.unlink( |
| 337a0 | 66 69 6c 65 29 0d 0a 20 20 72 65 73 63 75 65 0d 0a 20 20 20 20 63 6f 75 6e 74 20 2d 3d 20 31 0d | file)....rescue......count.-=.1. |
| 337c0 | 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 69 66 20 63 6f 75 6e 74 20 21 3d 20 66 69 6c 65 6e 61 6d | ...end..end..if.count.!=.filenam |
| 337e0 | 65 73 2e 6c 65 6e 67 74 68 0d 0a 20 20 53 54 44 45 52 52 2e 70 75 74 73 20 22 63 6f 75 6c 64 20 | es.length....STDERR.puts."could. |
| 33800 | 6f 6e 6c 79 20 64 65 6c 65 74 65 20 23 7b 63 6f 75 6e 74 7d 20 6f 66 20 23 7b 66 69 6c 65 6e 61 | only.delete.#{count}.of.#{filena |
| 33820 | 6d 65 73 2e 6c 65 6e 67 74 68 7d 20 66 69 6c 65 73 22 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 | mes.length}.files"..end......#.@ |
| 33840 | 40 50 4c 45 41 43 40 40 5f 39 2e 33 0d 0a 72 65 71 75 69 72 65 20 22 66 74 6f 6f 6c 73 22 0d 0a | @PLEAC@@_9.3..require."ftools".. |
| 33860 | 46 69 6c 65 2e 63 6f 70 79 28 6f 6c 64 66 69 6c 65 2c 20 6e 65 77 66 69 6c 65 29 0d 0a 0d 0a 69 | File.copy(oldfile,.newfile)....i |
| 33880 | 6e 66 69 6c 65 20 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 6f 6c 64 66 69 6c 65 2c 20 22 72 22 29 | nfile..=.File.open(oldfile,."r") |
| 338a0 | 0d 0a 6f 75 74 66 69 6c 65 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 6e 65 77 66 69 6c 65 2c 20 22 | ..outfile.=.File.open(newfile,." |
| 338c0 | 77 22 29 0d 0a 0d 0a 62 6c 6b 73 69 7a 65 20 3d 20 69 6e 66 69 6c 65 2e 73 74 61 74 2e 62 6c 6b | w")....blksize.=.infile.stat.blk |
| 338e0 | 73 69 7a 65 0d 0a 23 20 54 68 69 73 20 64 6f 65 73 6e 27 74 20 68 61 6e 64 6c 65 20 70 61 72 74 | size..#.This.doesn't.handle.part |
| 33900 | 69 61 6c 20 77 72 69 74 65 73 20 6f 72 20 5e 5a 0d 0a 23 20 6c 69 6b 65 20 74 68 65 20 50 65 72 | ial.writes.or.^Z..#.like.the.Per |
| 33920 | 6c 20 76 65 72 73 69 6f 6e 20 64 6f 65 73 2e 0d 0a 77 68 69 6c 65 20 28 6c 69 6e 65 20 3d 20 69 | l.version.does...while.(line.=.i |
| 33940 | 6e 66 69 6c 65 2e 72 65 61 64 28 62 6c 6b 73 69 7a 65 29 29 0d 0a 20 20 6f 75 74 66 69 6c 65 2e | nfile.read(blksize))....outfile. |
| 33960 | 77 72 69 74 65 28 6c 69 6e 65 29 0d 0a 65 6e 64 0d 0a 0d 0a 69 6e 66 69 6c 65 2e 63 6c 6f 73 65 | write(line)..end....infile.close |
| 33980 | 0d 0a 6f 75 74 66 69 6c 65 2e 63 6c 6f 73 65 0d 0a 0d 0a 73 79 73 74 65 6d 28 22 63 70 20 23 7b | ..outfile.close....system("cp.#{ |
| 339a0 | 6f 6c 64 66 69 6c 65 7d 20 23 7b 6e 65 77 66 69 6c 65 7d 22 29 20 20 20 20 23 20 75 6e 69 78 0d | oldfile}.#{newfile}")....#.unix. |
| 339c0 | 0a 73 79 73 74 65 6d 28 22 63 6f 70 79 20 23 7b 6f 6c 64 66 69 6c 65 7d 20 23 7b 6e 65 77 66 69 | .system("copy.#{oldfile}.#{newfi |
| 339e0 | 6c 65 7d 22 29 20 20 23 20 64 6f 73 2c 20 76 6d 73 0d 0a 0d 0a 72 65 71 75 69 72 65 20 22 66 74 | le}")..#.dos,.vms....require."ft |
| 33a00 | 6f 6f 6c 73 22 0d 0a 46 69 6c 65 2e 63 6f 70 79 28 22 64 61 74 61 66 69 6c 65 2e 64 61 74 22 2c | ools"..File.copy("datafile.dat", |
| 33a20 | 20 22 64 61 74 61 66 69 6c 65 2e 62 61 6b 22 29 0d 0a 46 69 6c 65 2e 6d 6f 76 65 28 22 64 61 74 | ."datafile.bak")..File.move("dat |
| 33a40 | 61 66 69 6c 65 2e 6e 65 77 22 2c 20 22 64 61 74 61 66 69 6c 65 2e 64 61 74 22 29 0d 0a 0d 0a 0d | afile.new",."datafile.dat")..... |
| 33a60 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 34 0d 0a 24 73 65 65 6e 20 3d 20 7b 7d 20 23 20 6d | .#.@@PLEAC@@_9.4..$seen.=.{}.#.m |
| 33a80 | 75 73 74 20 75 73 65 20 67 6c 6f 62 61 6c 20 76 61 72 20 74 6f 20 62 65 20 73 65 65 6e 20 69 6e | ust.use.global.var.to.be.seen.in |
| 33aa0 | 73 69 64 65 20 6f 66 20 6d 65 74 68 6f 64 20 62 65 6c 6f 77 0d 0a 0d 0a 64 65 66 20 64 6f 5f 6d | side.of.method.below....def.do_m |
| 33ac0 | 79 5f 74 68 69 6e 67 28 66 69 6c 65 6e 61 6d 65 29 0d 0a 20 20 20 20 64 65 76 2c 20 69 6e 6f 20 | y_thing(filename)......dev,.ino. |
| 33ae0 | 3d 20 46 69 6c 65 2e 73 74 61 74 28 66 69 6c 65 6e 61 6d 65 29 2e 64 65 76 2c 20 46 69 6c 65 2e | =.File.stat(filename).dev,.File. |
| 33b00 | 73 74 61 74 28 66 69 6c 65 6e 61 6d 65 29 2e 69 6e 6f 0d 0a 20 20 20 20 75 6e 6c 65 73 73 20 24 | stat(filename).ino......unless.$ |
| 33b20 | 73 65 65 6e 5b 5b 64 65 76 2c 20 69 6e 6f 5d 5d 0d 0a 20 20 20 20 20 20 20 20 23 20 64 6f 20 73 | seen[[dev,.ino]]..........#.do.s |
| 33b40 | 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 24 66 69 6c 65 6e 61 6d 65 20 62 65 63 61 75 73 65 20 | omething.with.$filename.because. |
| 33b60 | 77 65 20 68 61 76 65 6e 27 74 0d 0a 20 20 20 20 20 20 20 20 23 20 73 65 65 6e 20 69 74 20 62 65 | we.haven't..........#.seen.it.be |
| 33b80 | 66 6f 72 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 24 73 65 65 6e 5b 5b 64 65 76 2c 20 69 | fore......end......$seen[[dev,.i |
| 33ba0 | 6e 6f 5d 5d 20 3d 20 24 73 65 65 6e 5b 5b 64 65 76 2c 20 69 6e 6f 5d 5d 2e 74 6f 5f 69 20 2b 20 | no]].=.$seen[[dev,.ino]].to_i.+. |
| 33bc0 | 31 0d 0a 65 6e 64 0d 0a 0d 0a 66 69 6c 65 73 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c 65 6e 61 6d | 1..end....files.each.do.|filenam |
| 33be0 | 65 7c 0d 0a 20 20 20 20 64 65 76 2c 20 69 6e 6f 20 3d 20 46 69 6c 65 2e 73 74 61 74 28 66 69 6c | e|......dev,.ino.=.File.stat(fil |
| 33c00 | 65 6e 61 6d 65 29 2e 64 65 76 2c 20 46 69 6c 65 2e 73 74 61 74 28 66 69 6c 65 6e 61 6d 65 29 2e | ename).dev,.File.stat(filename). |
| 33c20 | 69 6e 6f 0d 0a 20 20 20 20 69 66 20 21 24 73 65 65 6e 2e 68 61 73 5f 6b 65 79 3f 28 5b 64 65 76 | ino......if.!$seen.has_key?([dev |
| 33c40 | 2c 20 69 6e 6f 5d 29 0d 0a 20 20 20 20 20 20 20 20 24 73 65 65 6e 5b 5b 64 65 76 2c 20 69 6e 6f | ,.ino])..........$seen[[dev,.ino |
| 33c60 | 5d 5d 20 3d 20 5b 5d 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 24 73 65 65 6e 5b 5b 64 65 76 | ]].=.[]......end......$seen[[dev |
| 33c80 | 2c 20 69 6e 6f 5d 5d 2e 70 75 73 68 28 66 69 6c 65 6e 61 6d 65 29 0d 0a 65 6e 64 0d 0a 0d 0a 24 | ,.ino]].push(filename)..end....$ |
| 33ca0 | 73 65 65 6e 2e 6b 65 79 73 2e 73 6f 72 74 2e 65 61 63 68 20 64 6f 20 7c 64 65 76 69 6e 6f 7c 0d | seen.keys.sort.each.do.|devino|. |
| 33cc0 | 0a 20 20 20 20 69 6e 6f 2c 20 64 65 76 20 3d 20 64 65 76 69 6e 6f 0d 0a 20 20 20 20 69 66 20 24 | .....ino,.dev.=.devino......if.$ |
| 33ce0 | 73 65 65 6e 5b 64 65 76 69 6e 6f 5d 2e 6c 65 6e 67 74 68 20 3e 20 31 0d 0a 20 20 20 20 20 20 20 | seen[devino].length.>.1......... |
| 33d00 | 20 23 20 24 73 65 65 6e 5b 64 65 76 69 6e 6f 5d 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 66 69 | .#.$seen[devino].is.a.list.of.fi |
| 33d20 | 6c 65 6e 61 6d 65 73 20 66 6f 72 20 74 68 65 20 73 61 6d 65 20 66 69 6c 65 0d 0a 20 20 20 20 65 | lenames.for.the.same.file......e |
| 33d40 | 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 35 0d 0a 44 69 | nd..end......#.@@PLEAC@@_9.5..Di |
| 33d60 | 72 2e 6f 70 65 6e 28 64 69 72 6e 61 6d 65 29 20 64 6f 20 7c 64 69 72 7c 0d 0a 20 20 20 20 64 69 | r.open(dirname).do.|dir|......di |
| 33d80 | 72 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 20 20 20 20 20 20 23 20 64 6f 20 73 | r.each.do.|file|..........#.do.s |
| 33da0 | 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 64 69 72 6e 61 6d 65 2f 66 69 6c 65 0d 0a 20 20 20 20 | omething.with.dirname/file...... |
| 33dc0 | 20 20 20 20 70 75 74 73 20 66 69 6c 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 23 20 44 | ....puts.file......end..end..#.D |
| 33de0 | 69 72 2e 63 6c 6f 73 65 20 69 73 20 61 75 74 6f 6d 61 74 69 63 0d 0a 0d 0a 23 20 4e 6f 20 2d 54 | ir.close.is.automatic....#.No.-T |
| 33e00 | 20 65 71 75 69 76 61 6c 65 6e 74 20 69 6e 20 52 75 62 79 0d 0a 0d 0a 64 69 72 2e 65 61 63 68 20 | .equivalent.in.Ruby....dir.each. |
| 33e20 | 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 20 20 6e 65 78 74 20 69 66 20 66 69 6c 65 20 3d 7e 20 2f | do.|file|......next.if.file.=~./ |
| 33e40 | 5e 5c 2e 5c 2e 3f 24 2f 0d 0a 20 20 20 20 23 20 2e 2e 2e 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 | ^\.\.?$/......#......end....def. |
| 33e60 | 70 6c 61 69 6e 66 69 6c 65 73 28 64 69 72 29 0d 0a 20 20 20 20 64 68 20 3d 20 44 69 72 2e 6f 70 | plainfiles(dir)......dh.=.Dir.op |
| 33e80 | 65 6e 28 64 69 72 29 0d 0a 20 20 20 20 64 68 2e 65 6e 74 72 69 65 73 2e 67 72 65 70 28 2f 5e 5b | en(dir)......dh.entries.grep(/^[ |
| 33ea0 | 5e 2e 5d 2f 29 2e 0d 0a 20 20 20 20 20 20 20 20 6d 61 70 20 20 20 20 20 20 7b 7c 66 69 6c 65 7c | ^.]/)...........map......{|file| |
| 33ec0 | 20 22 23 7b 64 69 72 7d 2f 23 7b 66 69 6c 65 7d 22 7d 2e 0d 0a 20 20 20 20 20 20 20 20 66 69 6e | ."#{dir}/#{file}"}...........fin |
| 33ee0 | 64 5f 61 6c 6c 20 7b 7c 66 69 6c 65 7c 20 74 65 73 74 28 3f 66 2c 20 66 69 6c 65 29 7d 2e 0d 0a | d_all.{|file|.test(?f,.file)}... |
| 33f00 | 20 20 20 20 20 20 20 20 73 6f 72 74 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | ........sort..end......#.@@PLEAC |
| 33f20 | 40 40 5f 39 2e 36 0d 0a 6c 69 73 74 20 3d 20 44 69 72 2e 67 6c 6f 62 28 22 2a 2e 63 22 29 0d 0a | @@_9.6..list.=.Dir.glob("*.c").. |
| 33f40 | 0d 0a 64 69 72 20 3d 20 44 69 72 2e 6f 70 65 6e 28 70 61 74 68 29 0d 0a 66 69 6c 65 73 20 3d 20 | ..dir.=.Dir.open(path)..files.=. |
| 33f60 | 64 69 72 2e 65 6e 74 72 69 65 73 2e 67 72 65 70 28 2f 5c 2e 63 24 2f 29 0d 0a 64 69 72 2e 63 6c | dir.entries.grep(/\.c$/)..dir.cl |
| 33f80 | 6f 73 65 0d 0a 0d 0a 66 69 6c 65 73 20 3d 20 44 69 72 2e 67 6c 6f 62 28 22 2a 2e 63 22 29 0d 0a | ose....files.=.Dir.glob("*.c").. |
| 33fa0 | 66 69 6c 65 73 20 3d 20 44 69 72 2e 6f 70 65 6e 28 70 61 74 68 29 2e 65 6e 74 72 69 65 73 2e 67 | files.=.Dir.open(path).entries.g |
| 33fc0 | 72 65 70 28 2f 5c 2e 5b 63 68 5d 24 2f 69 29 0d 0a 0d 0a 64 69 72 20 3d 20 44 69 72 2e 6e 65 77 | rep(/\.[ch]$/i)....dir.=.Dir.new |
| 33fe0 | 28 70 61 74 68 29 0d 0a 66 69 6c 65 73 20 3d 20 64 69 72 2e 65 6e 74 72 69 65 73 2e 67 72 65 70 | (path)..files.=.dir.entries.grep |
| 34000 | 28 2f 5c 2e 5b 63 68 5d 24 2f 69 29 0d 0a 0d 0a 62 65 67 69 6e 0d 0a 20 20 64 20 3d 20 44 69 72 | (/\.[ch]$/i)....begin....d.=.Dir |
| 34020 | 2e 6f 70 65 6e 28 64 69 72 29 0d 0a 72 65 73 63 75 65 20 45 72 72 6e 6f 3a 3a 45 4e 4f 45 4e 54 | .open(dir)..rescue.Errno::ENOENT |
| 34040 | 0d 0a 20 20 72 61 69 73 65 20 22 43 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 23 7b 64 69 72 7d 20 | ....raise."Couldn't.open.#{dir}. |
| 34060 | 66 6f 72 20 72 65 61 64 69 6e 67 3a 20 23 7b 24 21 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 66 69 6c 65 | for.reading:.#{$!}"..end....file |
| 34080 | 73 20 3d 20 5b 5d 0d 0a 64 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 70 75 74 73 | s.=.[]..d.each.do.|file|....puts |
| 340a0 | 20 66 69 6c 65 0d 0a 20 20 6e 65 78 74 20 75 6e 6c 65 73 73 20 66 69 6c 65 20 3d 7e 20 2f 5c 2e | .file....next.unless.file.=~./\. |
| 340c0 | 5b 63 68 5d 24 2f 69 0d 0a 0d 0a 20 20 66 69 6c 65 6e 61 6d 65 20 3d 20 22 23 7b 64 69 72 7d 2f | [ch]$/i......filename.=."#{dir}/ |
| 340e0 | 23 7b 66 69 6c 65 7d 22 0d 0a 20 20 23 20 54 68 65 72 65 20 69 73 20 6e 6f 20 2d 54 20 65 71 75 | #{file}"....#.There.is.no.-T.equ |
| 34100 | 69 76 61 6c 65 6e 74 20 69 6e 20 52 75 62 79 2c 20 62 75 74 20 77 65 20 63 61 6e 20 73 74 69 6c | ivalent.in.Ruby,.but.we.can.stil |
| 34120 | 6c 20 74 65 73 74 20 65 6d 70 74 69 6e 65 73 73 0d 0a 20 20 66 69 6c 65 73 2e 70 75 73 68 28 66 | l.test.emptiness....files.push(f |
| 34140 | 69 6c 65 6e 61 6d 65 29 20 69 66 20 74 65 73 74 28 3f 73 2c 20 66 69 6c 65 6e 61 6d 65 29 0d 0a | ilename).if.test(?s,.filename).. |
| 34160 | 65 6e 64 0d 0a 0d 0a 64 69 72 73 2e 65 6e 74 72 69 65 73 2e 67 72 65 70 28 2f 5e 5c 64 2b 24 2f | end....dirs.entries.grep(/^\d+$/ |
| 34180 | 29 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 70 20 20 20 20 7b 20 7c 66 69 6c 65 7c | )................map....{.|file| |
| 341a0 | 20 5b 66 69 6c 65 2c 20 22 23 7b 70 61 74 68 7d 2f 23 7b 66 69 6c 65 7d 22 5d 7d 20 2e 0d 0a 20 | .[file,."#{path}/#{file}"]}..... |
| 341c0 | 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 65 63 74 20 7b 20 7c 66 69 6c 65 7c 20 74 65 73 74 | ............select.{.|file|.test |
| 341e0 | 28 3f 64 2c 20 66 69 6c 65 5b 31 5d 29 20 7d 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 73 | (?d,.file[1]).}................s |
| 34200 | 6f 72 74 20 20 20 7b 20 7c 61 2c 62 7c 20 20 61 5b 30 5d 20 3c 3d 3e 20 62 5b 30 5d 20 7d 2e 0d | ort...{.|a,b|..a[0].<=>.b[0].}.. |
| 34220 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 70 20 20 20 20 7b 20 7c 66 69 6c 65 7c 20 66 69 | ..............map....{.|file|.fi |
| 34240 | 6c 65 5b 31 5d 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 37 0d 0a 72 65 | le[1].}......#.@@PLEAC@@_9.7..re |
| 34260 | 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 46 69 6e 64 2e 66 69 6e 64 28 64 69 72 6c 69 73 74 29 | quire.'find'..Find.find(dirlist) |
| 34280 | 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 23 20 64 6f 20 77 68 61 74 65 76 65 72 0d 0a 65 6e 64 | .do.|file|....#.do.whatever..end |
| 342a0 | 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 61 72 67 76 20 3d 20 41 52 47 56 2e | ....require.'find'..argv.=.ARGV. |
| 342c0 | 65 6d 70 74 79 3f 20 3f 20 25 77 7b 2e 7d 20 3a 20 41 52 47 56 0d 0a 46 69 6e 64 2e 66 69 6e 64 | empty?.?.%w{.}.:.ARGV..Find.find |
| 342e0 | 28 2a 61 72 67 76 29 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 70 72 69 6e 74 20 66 69 6c 65 2c | (*argv).do.|file|....print.file, |
| 34300 | 20 28 74 65 73 74 28 3f 64 2c 20 66 69 6c 65 29 20 3f 20 22 2f 5c 6e 22 20 3a 20 22 5c 6e 22 29 | .(test(?d,.file).?."/\n".:."\n") |
| 34320 | 0d 0a 65 6e 64 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 61 72 67 76 20 3d 20 | ..end....require.'find'..argv.=. |
| 34340 | 41 52 47 56 2e 65 6d 70 74 79 3f 20 3f 20 25 77 7b 2e 7d 20 3a 20 41 52 47 56 0d 0a 73 75 6d 20 | ARGV.empty?.?.%w{.}.:.ARGV..sum. |
| 34360 | 3d 20 30 0d 0a 46 69 6e 64 2e 66 69 6e 64 28 2a 61 72 67 76 29 20 64 6f 20 7c 66 69 6c 65 7c 0d | =.0..Find.find(*argv).do.|file|. |
| 34380 | 0a 20 20 73 69 7a 65 20 3d 20 74 65 73 74 28 3f 73 2c 20 66 69 6c 65 29 20 7c 7c 20 30 0d 0a 20 | ...size.=.test(?s,.file).||.0... |
| 343a0 | 20 73 75 6d 20 2b 3d 20 73 69 7a 65 0d 0a 65 6e 64 0d 0a 70 75 74 73 20 22 23 7b 61 72 67 76 2e | .sum.+=.size..end..puts."#{argv. |
| 343c0 | 6a 6f 69 6e 28 27 20 27 29 7d 20 63 6f 6e 74 61 69 6e 73 20 23 7b 73 75 6d 7d 20 62 79 74 65 73 | join('.')}.contains.#{sum}.bytes |
| 343e0 | 22 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 61 72 67 76 20 3d 20 41 52 47 56 | "....require.'find'..argv.=.ARGV |
| 34400 | 2e 65 6d 70 74 79 3f 20 3f 20 25 77 7b 2e 7d 20 3a 20 41 52 47 56 0d 0a 73 61 76 65 64 5f 73 69 | .empty?.?.%w{.}.:.ARGV..saved_si |
| 34420 | 7a 65 2c 20 73 61 76 65 64 5f 6e 61 6d 65 20 3d 20 2d 31 2c 20 22 22 0d 0a 46 69 6e 64 2e 66 69 | ze,.saved_name.=.-1,.""..Find.fi |
| 34440 | 6e 64 28 2a 61 72 67 76 29 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 73 69 7a 65 20 3d 20 74 65 | nd(*argv).do.|file|....size.=.te |
| 34460 | 73 74 28 3f 73 2c 20 66 69 6c 65 29 20 7c 7c 20 30 0d 0a 20 20 6e 65 78 74 20 75 6e 6c 65 73 73 | st(?s,.file).||.0....next.unless |
| 34480 | 20 74 65 73 74 28 3f 66 2c 20 66 69 6c 65 29 20 26 26 20 73 69 7a 65 20 3e 20 73 61 76 65 64 5f | .test(?f,.file).&&.size.>.saved_ |
| 344a0 | 73 69 7a 65 0d 0a 20 20 73 61 76 65 64 5f 73 69 7a 65 20 3d 20 73 69 7a 65 0d 0a 20 20 73 61 76 | size....saved_size.=.size....sav |
| 344c0 | 65 64 5f 6e 61 6d 65 20 3d 20 66 69 6c 65 0d 0a 65 6e 64 0d 0a 70 75 74 73 20 22 42 69 67 67 65 | ed_name.=.file..end..puts."Bigge |
| 344e0 | 73 74 20 66 69 6c 65 20 23 7b 73 61 76 65 64 5f 6e 61 6d 65 7d 20 69 6e 20 23 7b 61 72 67 76 2e | st.file.#{saved_name}.in.#{argv. |
| 34500 | 6a 6f 69 6e 28 27 20 27 29 7d 20 69 73 20 23 7b 73 61 76 65 64 5f 73 69 7a 65 7d 22 0d 0a 0d 0a | join('.')}.is.#{saved_size}".... |
| 34520 | 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 61 72 67 76 20 3d 20 41 52 47 56 2e 65 6d 70 74 | require.'find'..argv.=.ARGV.empt |
| 34540 | 79 3f 20 3f 20 25 77 7b 2e 7d 20 3a 20 41 52 47 56 0d 0a 61 67 65 2c 20 6e 61 6d 65 20 3d 20 6e | y?.?.%w{.}.:.ARGV..age,.name.=.n |
| 34560 | 69 6c 0d 0a 46 69 6e 64 2e 66 69 6e 64 28 2a 61 72 67 76 29 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a | il..Find.find(*argv).do.|file|.. |
| 34580 | 20 20 6d 74 69 6d 65 20 3d 20 46 69 6c 65 2e 73 74 61 74 28 66 69 6c 65 29 2e 6d 74 69 6d 65 0d | ..mtime.=.File.stat(file).mtime. |
| 345a0 | 0a 20 20 6e 65 78 74 20 69 66 20 61 67 65 20 26 26 20 61 67 65 20 3e 20 6d 74 69 6d 65 0d 0a 20 | ...next.if.age.&&.age.>.mtime... |
| 345c0 | 20 61 67 65 20 3d 20 6d 74 69 6d 65 0d 0a 20 20 6e 61 6d 65 20 3d 20 66 69 6c 65 0d 0a 65 6e 64 | .age.=.mtime....name.=.file..end |
| 345e0 | 0d 0a 70 75 74 73 20 22 23 7b 6e 61 6d 65 7d 20 23 7b 61 67 65 7d 22 0d 0a 0d 0a 23 2d 2d 2d 2d | ..puts."#{name}.#{age}"....#---- |
| 34600 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 | -------------------------..#!/us |
| 34620 | 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 66 64 69 72 73 20 2d 20 66 69 6e 64 20 61 6c | r/bin/ruby.-w..#.fdirs.-.find.al |
| 34640 | 6c 20 64 69 72 65 63 74 6f 72 69 65 73 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 61 | l.directories..require.'find'..a |
| 34660 | 72 67 76 20 3d 20 41 52 47 56 2e 65 6d 70 74 79 3f 20 3f 20 25 77 7b 2e 7d 20 3a 20 41 52 47 56 | rgv.=.ARGV.empty?.?.%w{.}.:.ARGV |
| 34680 | 0d 0a 46 69 6c 65 2e 66 69 6e 64 28 2a 61 72 67 76 29 20 7b 20 7c 66 69 6c 65 7c 20 70 75 74 73 | ..File.find(*argv).{.|file|.puts |
| 346a0 | 20 66 69 6c 65 20 69 66 20 74 65 73 74 28 3f 64 2c 20 66 69 6c 65 29 20 7d 0d 0a 23 2d 2d 2d 2d | .file.if.test(?d,.file).}..#---- |
| 346c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 0d 0a 23 | -------------------------......# |
| 346e0 | 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 38 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6c 65 75 74 69 | .@@PLEAC@@_9.8..require.'fileuti |
| 34700 | 6c 73 27 0d 0a 0d 0a 70 75 74 73 20 22 55 73 61 67 65 20 23 7b 24 30 7d 20 64 69 72 20 2e 2e 2e | ls'....puts."Usage.#{$0}.dir.... |
| 34720 | 22 20 69 66 20 41 52 47 56 2e 65 6d 70 74 79 3f 0d 0a 41 52 47 56 2e 65 61 63 68 20 64 6f 20 7c | ".if.ARGV.empty?..ARGV.each.do.| |
| 34740 | 64 69 72 7c 0d 0a 20 20 46 69 6c 65 55 74 69 6c 73 2e 72 6d 74 72 65 65 28 64 69 72 29 0d 0a 65 | dir|....FileUtils.rmtree(dir)..e |
| 34760 | 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 39 0d 0a 72 65 71 75 69 72 65 | nd......#.@@PLEAC@@_9.9..require |
| 34780 | 20 27 66 74 6f 6f 6c 73 27 0d 0a 6e 61 6d 65 73 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c 65 7c 0d | .'ftools'..names.each.do.|file|. |
| 347a0 | 0a 20 20 6e 65 77 6e 61 6d 65 20 3d 20 66 69 6c 65 0d 0a 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 | ...newname.=.file....begin...... |
| 347c0 | 46 69 6c 65 2e 6d 6f 76 65 28 66 69 6c 65 2c 20 6e 65 77 6e 61 6d 65 29 0d 0a 20 20 72 65 73 63 | File.move(file,.newname)....resc |
| 347e0 | 75 65 20 45 72 72 6e 6f 3a 3a 45 50 45 52 4d 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 | ue.Errno::EPERM......$stderr.put |
| 34800 | 73 20 22 43 6f 75 6c 64 6e 27 74 20 72 65 6e 61 6d 65 20 23 7b 66 69 6c 65 7d 20 74 6f 20 23 7b | s."Couldn't.rename.#{file}.to.#{ |
| 34820 | 6e 65 77 6e 61 6d 65 7d 3a 20 23 7b 24 21 7d 22 0d 0a 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a | newname}:.#{$!}"....end..end.... |
| 34840 | 72 65 71 75 69 72 65 20 27 66 74 6f 6f 6c 73 27 0d 0a 6f 70 20 3d 20 41 52 47 56 2e 65 6d 70 74 | require.'ftools'..op.=.ARGV.empt |
| 34860 | 79 3f 20 3f 20 28 72 61 69 73 65 20 22 55 73 61 67 65 3a 20 72 65 6e 61 6d 65 20 65 78 70 72 20 | y?.?.(raise."Usage:.rename.expr. |
| 34880 | 5b 66 69 6c 65 73 5d 5c 6e 22 29 20 3a 20 41 52 47 56 2e 73 68 69 66 74 0d 0a 61 72 67 76 20 3d | [files]\n").:.ARGV.shift..argv.= |
| 348a0 | 20 41 52 47 56 2e 65 6d 70 74 79 3f 20 3f 20 24 73 74 64 69 6e 2e 72 65 61 64 6c 69 6e 65 73 2e | .ARGV.empty?.?.$stdin.readlines. |
| 348c0 | 6d 61 70 20 7b 20 7c 66 7c 20 66 2e 63 68 6f 6d 70 20 7d 20 3a 20 41 52 47 56 0d 0a 61 72 67 76 | map.{.|f|.f.chomp.}.:.ARGV..argv |
| 348e0 | 2e 65 61 63 68 20 64 6f 20 7c 66 69 6c 65 7c 0d 0a 20 20 77 61 73 20 3d 20 66 69 6c 65 0d 0a 20 | .each.do.|file|....was.=.file... |
| 34900 | 20 66 69 6c 65 20 3d 20 65 76 61 6c 28 22 66 69 6c 65 2e 23 7b 6f 70 7d 22 29 0d 0a 20 20 46 69 | .file.=.eval("file.#{op}")....Fi |
| 34920 | 6c 65 2e 6d 6f 76 65 28 77 61 73 2c 20 66 69 6c 65 29 20 75 6e 6c 65 73 73 20 77 61 73 20 3d 3d | le.move(was,.file).unless.was.== |
| 34940 | 20 66 69 6c 65 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 31 30 | .file..end......#.@@PLEAC@@_9.10 |
| 34960 | 0d 0a 62 61 73 65 20 3d 20 46 69 6c 65 2e 62 61 73 65 6e 61 6d 65 28 70 61 74 68 29 0d 0a 64 69 | ..base.=.File.basename(path)..di |
| 34980 | 72 20 20 3d 20 46 69 6c 65 2e 64 69 72 6e 61 6d 65 28 70 61 74 68 29 0d 0a 23 20 72 75 62 79 20 | r..=.File.dirname(path)..#.ruby. |
| 349a0 | 68 61 73 20 6e 6f 20 66 69 6c 65 70 61 72 73 65 20 65 71 75 69 76 61 6c 65 6e 74 0d 0a 64 69 72 | has.no.fileparse.equivalent..dir |
| 349c0 | 2c 20 62 61 73 65 20 3d 20 46 69 6c 65 2e 73 70 6c 69 74 28 70 61 74 68 29 0d 0a 65 78 74 20 3d | ,.base.=.File.split(path)..ext.= |
| 349e0 | 20 62 61 73 65 2e 73 63 61 6e 28 2f 5c 2e 2e 2a 24 2f 29 2e 74 6f 5f 73 0d 0a 0d 0a 70 61 74 68 | .base.scan(/\..*$/).to_s....path |
| 34a00 | 20 3d 20 27 2f 75 73 72 2f 6c 69 62 2f 6c 69 62 63 2e 61 27 0d 0a 66 69 6c 65 20 3d 20 46 69 6c | .=.'/usr/lib/libc.a'..file.=.Fil |
| 34a20 | 65 2e 62 61 73 65 6e 61 6d 65 28 70 61 74 68 29 0d 0a 64 69 72 20 20 3d 20 46 69 6c 65 2e 64 69 | e.basename(path)..dir..=.File.di |
| 34a40 | 72 6e 61 6d 65 28 70 61 74 68 29 0d 0a 0d 0a 70 75 74 73 20 22 64 69 72 20 69 73 20 23 7b 64 69 | rname(path)....puts."dir.is.#{di |
| 34a60 | 72 7d 2c 20 66 69 6c 65 20 69 73 20 23 7b 66 69 6c 65 7d 22 0d 0a 23 20 64 69 72 20 69 73 20 2f | r},.file.is.#{file}"..#.dir.is./ |
| 34a80 | 75 73 72 2f 6c 69 62 2c 20 66 69 6c 65 20 69 73 20 6c 69 62 63 2e 61 0d 0a 0d 0a 70 61 74 68 20 | usr/lib,.file.is.libc.a....path. |
| 34aa0 | 3d 20 27 2f 75 73 72 2f 6c 69 62 2f 6c 69 62 63 2e 61 27 0d 0a 64 69 72 2c 20 66 69 6c 65 6e 61 | =.'/usr/lib/libc.a'..dir,.filena |
| 34ac0 | 6d 65 20 3d 20 46 69 6c 65 2e 73 70 6c 69 74 28 70 61 74 68 29 0d 0a 6e 61 6d 65 2c 20 65 78 74 | me.=.File.split(path)..name,.ext |
| 34ae0 | 20 3d 20 66 69 6c 65 6e 61 6d 65 2e 73 70 6c 69 74 28 2f 28 3f 3d 5c 2e 29 2f 29 0d 0a 70 75 74 | .=.filename.split(/(?=\.)/)..put |
| 34b00 | 73 20 22 64 69 72 20 69 73 20 23 7b 64 69 72 7d 2c 20 6e 61 6d 65 20 69 73 20 23 7b 6e 61 6d 65 | s."dir.is.#{dir},.name.is.#{name |
| 34b20 | 7d 2c 20 65 78 74 20 69 73 20 23 7b 65 78 74 7d 22 0d 0a 23 20 20 20 4e 4f 54 45 3a 20 54 68 65 | },.ext.is.#{ext}"..#...NOTE:.The |
| 34b40 | 20 52 75 62 79 20 63 6f 64 65 20 70 72 69 6e 74 73 0d 0a 23 20 20 20 64 69 72 20 69 73 20 2f 75 | .Ruby.code.prints..#...dir.is./u |
| 34b60 | 73 72 2f 6c 69 62 2c 20 6e 61 6d 65 20 69 73 20 6c 69 62 63 2c 20 65 78 74 65 6e 73 69 6f 6e 20 | sr/lib,.name.is.libc,.extension. |
| 34b80 | 69 73 20 2e 61 0d 0a 23 20 20 20 20 20 77 68 69 6c 65 20 74 68 65 20 50 65 72 6c 20 63 6f 64 65 | is..a..#.....while.the.Perl.code |
| 34ba0 | 20 70 72 69 6e 74 73 20 61 20 27 2f 27 20 61 66 74 65 72 20 74 68 65 20 64 69 72 65 63 74 6f 72 | .prints.a.'/'.after.the.director |
| 34bc0 | 79 20 6e 61 6d 65 0d 0a 23 20 20 20 64 69 72 20 69 73 20 2f 75 73 72 2f 6c 69 62 2f 2c 20 6e 61 | y.name..#...dir.is./usr/lib/,.na |
| 34be0 | 6d 65 20 69 73 20 6c 69 62 63 2c 20 65 78 74 65 6e 73 69 6f 6e 20 69 73 20 2e 61 0d 0a 0d 0a 23 | me.is.libc,.extension.is..a....# |
| 34c00 | 20 4e 6f 20 66 69 6c 65 70 61 72 73 65 5f 73 65 74 5f 66 73 74 79 70 65 28 29 20 65 71 75 69 76 | .No.fileparse_set_fstype().equiv |
| 34c20 | 61 6c 65 6e 74 20 69 6e 20 72 75 62 79 0d 0a 0d 0a 64 65 66 20 65 78 74 65 6e 73 69 6f 6e 28 70 | alent.in.ruby....def.extension(p |
| 34c40 | 61 74 68 29 0d 0a 20 20 20 20 65 78 74 20 3d 20 70 61 74 68 2e 73 63 61 6e 28 2f 5c 2e 2e 2a 24 | ath)......ext.=.path.scan(/\..*$ |
| 34c60 | 2f 29 2e 74 6f 5f 73 0d 0a 20 20 20 20 65 78 74 2e 73 75 62 28 2f 5e 5c 2e 2f 2c 20 22 22 29 0d | /).to_s......ext.sub(/^\./,.""). |
| 34c80 | 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 31 31 0d 0a 23 2d 2d 2d | .end......#.@@PLEAC@@_9.11..#--- |
| 34ca0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 | --------------------------..#!/u |
| 34cc0 | 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 73 79 6d 69 72 72 6f 72 20 2d 20 62 75 69 | sr/bin/ruby.-w..#.symirror.-.bui |
| 34ce0 | 6c 64 20 73 70 65 63 74 72 61 6c 20 66 6f 72 65 73 74 20 6f 66 20 73 79 6d 6c 69 6e 6b 73 0d 0a | ld.spectral.forest.of.symlinks.. |
| 34d00 | 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6c 65 75 | ..require.'find'..require.'fileu |
| 34d20 | 74 69 6c 73 27 0d 0a 0d 0a 72 61 69 73 65 20 22 75 73 61 67 65 3a 20 23 7b 24 30 7d 20 72 65 61 | tils'....raise."usage:.#{$0}.rea |
| 34d40 | 6c 64 69 72 20 6d 69 72 72 6f 72 64 69 72 22 20 75 6e 6c 65 73 73 20 41 52 47 56 2e 73 69 7a 65 | ldir.mirrordir".unless.ARGV.size |
| 34d60 | 20 3d 3d 20 32 0d 0a 0d 0a 73 72 63 64 69 72 2c 64 73 74 64 69 72 20 3d 20 41 52 47 56 0d 0a 73 | .==.2....srcdir,dstdir.=.ARGV..s |
| 34d80 | 72 63 6d 6f 64 65 20 3d 20 46 69 6c 65 3a 3a 73 74 61 74 28 73 72 63 64 69 72 29 2e 6d 6f 64 65 | rcmode.=.File::stat(srcdir).mode |
| 34da0 | 0d 0a 44 69 72 2e 6d 6b 64 69 72 28 64 73 74 64 69 72 2c 20 73 72 63 6d 6f 64 65 20 26 20 30 37 | ..Dir.mkdir(dstdir,.srcmode.&.07 |
| 34dc0 | 37 37 37 29 20 75 6e 6c 65 73 73 20 74 65 73 74 28 3f 64 2c 20 64 73 74 64 69 72 29 0d 0a 0d 0a | 777).unless.test(?d,.dstdir).... |
| 34de0 | 23 20 66 69 78 20 72 65 6c 61 74 69 76 65 20 70 61 74 68 73 0d 0a 44 69 72 2e 63 68 64 69 72 28 | #.fix.relative.paths..Dir.chdir( |
| 34e00 | 73 72 63 64 69 72 29 20 7b 73 72 63 64 69 72 20 3d 20 44 69 72 2e 70 77 64 7d 0d 0a 44 69 72 2e | srcdir).{srcdir.=.Dir.pwd}..Dir. |
| 34e20 | 63 68 64 69 72 28 64 73 74 64 69 72 29 20 7b 64 73 74 64 69 72 20 3d 20 44 69 72 2e 70 77 64 7d | chdir(dstdir).{dstdir.=.Dir.pwd} |
| 34e40 | 0d 0a 0d 0a 46 69 6e 64 2e 66 69 6e 64 28 73 72 63 64 69 72 29 20 64 6f 20 7c 73 72 63 66 69 6c | ....Find.find(srcdir).do.|srcfil |
| 34e60 | 65 7c 0d 0a 20 20 20 20 69 66 20 74 65 73 74 28 3f 64 2c 20 73 72 63 66 69 6c 65 29 0d 0a 20 20 | e|......if.test(?d,.srcfile).... |
| 34e80 | 20 20 20 20 20 20 64 65 73 74 20 3d 20 73 72 63 66 69 6c 65 2e 73 75 62 28 2f 5e 23 7b 73 72 63 | ......dest.=.srcfile.sub(/^#{src |
| 34ea0 | 64 69 72 7d 2f 2c 20 64 73 74 64 69 72 29 0d 0a 20 20 20 20 20 20 20 20 64 6d 6f 64 65 20 3d 20 | dir}/,.dstdir)..........dmode.=. |
| 34ec0 | 46 69 6c 65 3a 3a 73 74 61 74 28 73 72 63 66 69 6c 65 29 2e 6d 6f 64 65 20 26 20 30 37 37 37 37 | File::stat(srcfile).mode.&.07777 |
| 34ee0 | 0d 0a 20 20 20 20 20 20 20 20 44 69 72 2e 6d 6b 64 69 72 28 64 65 73 74 2c 20 64 6d 6f 64 65 29 | ..........Dir.mkdir(dest,.dmode) |
| 34f00 | 20 75 6e 6c 65 73 73 20 74 65 73 74 28 3f 64 2c 20 64 65 73 74 29 0d 0a 20 20 20 20 20 20 20 20 | .unless.test(?d,.dest).......... |
| 34f20 | 61 20 3d 20 44 69 72 5b 22 23 7b 73 72 63 66 69 6c 65 7d 2f 2a 22 5d 2e 72 65 6a 65 63 74 7b 7c | a.=.Dir["#{srcfile}/*"].reject{| |
| 34f40 | 66 7c 20 74 65 73 74 28 3f 64 2c 20 66 29 7d 0d 0a 20 20 20 20 20 20 20 20 46 69 6c 65 55 74 69 | f|.test(?d,.f)}..........FileUti |
| 34f60 | 6c 73 2e 6c 6e 5f 73 28 61 2c 20 64 65 73 74 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a | ls.ln_s(a,.dest)......end..end.. |
| 34f80 | 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 39 2e 31 32 0d 0a 23 20 77 65 20 75 73 65 20 74 | ....#.@@PLEAC@@_9.12..#.we.use.t |
| 34fa0 | 68 65 20 47 65 74 6f 70 74 2f 44 65 63 6c 61 72 65 20 6c 69 62 72 61 72 79 20 68 65 72 65 20 66 | he.Getopt/Declare.library.here.f |
| 34fc0 | 6f 72 20 63 6f 6e 76 65 6e 69 65 6e 63 65 3a 0d 0a 23 20 20 20 68 74 74 70 3a 2f 2f 72 61 61 2e | or.convenience:..#...http://raa. |
| 34fe0 | 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f 70 72 6f 6a 65 63 74 2f 67 65 74 6f 70 74 64 65 63 6c | ruby-lang.org/project/getoptdecl |
| 35000 | 61 72 65 2f 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | are/..#------------------------- |
| 35020 | 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 6c 73 74 20 | ----..#!/usr/bin/ruby.-w..#.lst. |
| 35040 | 2d 20 6c 69 73 74 20 73 6f 72 74 65 64 20 64 69 72 65 63 74 6f 72 79 20 63 6f 6e 74 65 6e 74 73 | -.list.sorted.directory.contents |
| 35060 | 20 28 64 65 70 74 68 20 66 69 72 73 74 29 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 66 69 6e 64 27 | .(depth.first)....require.'find' |
| 35080 | 0d 0a 72 65 71 75 69 72 65 20 27 65 74 63 27 0d 0a 72 65 71 75 69 72 65 20 22 47 65 74 6f 70 74 | ..require.'etc'..require."Getopt |
| 350a0 | 2f 44 65 63 6c 61 72 65 22 0d 0a 0d 0a 23 20 4e 6f 74 65 3a 20 69 6e 20 74 68 65 20 6f 70 74 69 | /Declare"....#.Note:.in.the.opti |
| 350c0 | 6f 6e 2d 73 70 65 63 20 62 65 6c 6f 77 20 74 68 65 72 65 20 6d 75 73 74 20 62 79 20 61 74 20 6c | on-spec.below.there.must.by.at.l |
| 350e0 | 65 61 73 74 20 6f 6e 65 20 68 61 72 64 0d 0a 23 20 74 61 62 20 69 6e 20 62 65 74 77 65 65 6e 20 | east.one.hard..#.tab.in.between. |
| 35100 | 65 61 63 68 20 2d 6f 70 74 69 6f 6e 20 61 6e 64 20 69 74 73 20 64 65 73 63 72 69 70 74 69 6f 6e | each.-option.and.its.description |
| 35120 | 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 0d 0a 23 20 20 20 20 2d 69 20 3c 74 61 62 3e 20 72 65 61 | ..For.example..#....-i.<tab>.rea |
| 35140 | 64 20 66 72 6f 6d 20 73 74 64 69 6e 0d 0a 0d 0a 6f 70 74 73 20 3d 20 47 65 74 6f 70 74 3a 3a 44 | d.from.stdin....opts.=.Getopt::D |
| 35160 | 65 63 6c 61 72 65 2e 6e 65 77 28 3c 3c 27 45 4f 50 41 52 41 4d 27 29 0d 0a 20 20 20 20 3d 3d 3d | eclare.new(<<'EOPARAM')......=== |
| 35180 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 20 20 20 20 49 6e 70 75 74 20 46 6f 72 6d 61 74 3a 0d 0a 20 20 | =========......Input.Format:.... |
| 351a0 | 20 20 20 20 20 20 2d 69 09 72 65 61 64 20 66 72 6f 6d 20 73 74 64 69 6e 0d 0a 20 20 20 20 3d 3d | ......-i.read.from.stdin......== |
| 351c0 | 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a 20 20 20 20 4f 75 74 70 75 74 20 46 6f 72 6d 61 74 3a 0d 0a | ==========......Output.Format:.. |
| 351e0 | 20 20 20 20 20 20 20 20 2d 6c 09 6c 6f 6e 67 20 6c 69 73 74 69 6e 67 0d 0a 20 20 20 20 20 20 20 | ........-l.long.listing......... |
| 35200 | 20 2d 72 09 72 65 76 65 72 73 65 20 6c 69 73 74 69 6e 67 0d 0a 20 20 20 20 3d 3d 3d 3d 3d 3d 3d | .-r.reverse.listing......======= |
| 35220 | 3d 3d 3d 3d 3d 0d 0a 20 20 20 20 53 6f 72 74 20 6f 6e 3a 20 28 6f 6e 65 20 6f 66 29 0d 0a 20 20 | =====......Sort.on:.(one.of).... |
| 35240 | 20 20 20 20 20 20 2d 6d 09 6d 74 69 6d 65 20 28 6d 6f 64 69 66 79 20 74 69 6d 65 20 2d 20 64 65 | ......-m.mtime.(modify.time.-.de |
| 35260 | 66 61 75 6c 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 24 73 6f 72 74 5f 63 | fault)..................{$sort_c |
| 35280 | 72 69 74 65 72 69 61 20 3d 20 3a 6d 74 69 6d 65 7d 0d 0a 20 20 20 20 20 20 20 20 2d 75 09 61 74 | riteria.=.:mtime}..........-u.at |
| 352a0 | 69 6d 65 20 28 61 63 63 65 73 73 20 74 69 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ime.(access.time)............... |
| 352c0 | 20 20 20 7b 24 73 6f 72 74 5f 63 72 69 74 65 72 69 61 20 3d 20 3a 61 74 69 6d 65 7d 0d 0a 20 20 | ...{$sort_criteria.=.:atime}.... |
| 352e0 | 20 20 20 20 20 20 2d 63 09 63 74 69 6d 65 20 28 69 6e 6f 64 65 20 63 68 61 6e 67 65 20 74 69 6d | ......-c.ctime.(inode.change.tim |
| 35300 | 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 24 73 6f 72 74 5f 63 72 69 74 65 | e)..................{$sort_crite |
| 35320 | 72 69 61 20 3d 20 3a 63 74 69 6d 65 7d 0d 0a 20 20 20 20 20 20 20 20 2d 73 09 73 69 7a 65 0d 0a | ria.=.:ctime}..........-s.size.. |
| 35340 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 24 73 6f 72 74 5f 63 72 69 74 65 72 69 61 20 | ................{$sort_criteria. |
| 35360 | 3d 20 3a 73 69 7a 65 7d 0d 0a 20 20 20 20 20 20 20 20 5b 6d 75 74 65 78 3a 20 2d 6d 20 2d 75 20 | =.:size}..........[mutex:.-m.-u. |
| 35380 | 2d 63 20 2d 73 5d 0d 0a 0d 0a 45 4f 50 41 52 41 4d 0d 0a 0d 0a 24 73 6f 72 74 5f 63 72 69 74 65 | -c.-s]....EOPARAM....$sort_crite |
| 353a0 | 72 69 61 20 7c 7c 3d 20 3a 6d 74 69 6d 65 0d 0a 66 69 6c 65 73 20 3d 20 7b 7d 0d 0a 44 49 52 53 | ria.||=.:mtime..files.=.{}..DIRS |
| 353c0 | 20 3d 20 6f 70 74 73 5b 27 2d 69 27 5d 20 3f 20 24 73 74 64 69 6e 2e 72 65 61 64 6c 69 6e 65 73 | .=.opts['-i'].?.$stdin.readlines |
| 353e0 | 2e 6d 61 70 7b 7c 66 7c 66 2e 63 68 6f 6d 70 21 7d 20 3a 20 41 52 47 56 0d 0a 44 49 52 53 2e 65 | .map{|f|f.chomp!}.:.ARGV..DIRS.e |
| 35400 | 61 63 68 20 64 6f 20 7c 64 69 72 7c 0d 0a 20 20 20 20 46 69 6e 64 2e 66 69 6e 64 28 64 69 72 29 | ach.do.|dir|......Find.find(dir) |
| 35420 | 20 64 6f 20 7c 65 6e 74 7c 0d 0a 20 20 20 20 20 20 20 20 66 69 6c 65 73 5b 65 6e 74 5d 20 3d 20 | .do.|ent|..........files[ent].=. |
| 35440 | 46 69 6c 65 3a 3a 73 74 61 74 28 65 6e 74 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 65 | File::stat(ent)......end..end..e |
| 35460 | 6e 74 72 69 65 73 20 3d 20 66 69 6c 65 73 2e 6b 65 79 73 2e 73 6f 72 74 5f 62 79 7b 7c 66 7c 20 | ntries.=.files.keys.sort_by{|f|. |
| 35480 | 66 69 6c 65 73 5b 66 5d 2e 73 65 6e 64 28 24 73 6f 72 74 5f 63 72 69 74 65 72 69 61 29 7d 0d 0a | files[f].send($sort_criteria)}.. |
| 354a0 | 65 6e 74 72 69 65 73 20 3d 20 65 6e 74 72 69 65 73 2e 72 65 76 65 72 73 65 20 75 6e 6c 65 73 73 | entries.=.entries.reverse.unless |
| 354c0 | 20 6f 70 74 73 5b 27 2d 72 27 5d 0d 0a 0d 0a 65 6e 74 72 69 65 73 2e 65 61 63 68 20 64 6f 20 7c | .opts['-r']....entries.each.do.| |
| 354e0 | 65 6e 74 7c 0d 0a 20 20 20 20 75 6e 6c 65 73 73 20 6f 70 74 73 5b 27 2d 6c 27 5d 0d 0a 20 20 20 | ent|......unless.opts['-l']..... |
| 35500 | 20 20 20 20 20 70 75 74 73 20 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 6e 65 78 74 0d 0a 20 20 20 | .....puts.ent..........next..... |
| 35520 | 20 65 6e 64 0d 0a 20 20 20 20 73 74 61 74 73 20 3d 20 66 69 6c 65 73 5b 65 6e 74 5d 0d 0a 20 20 | .end......stats.=.files[ent].... |
| 35540 | 20 20 66 74 69 6d 65 20 3d 20 73 74 61 74 73 2e 73 65 6e 64 28 24 73 6f 72 74 5f 63 72 69 74 65 | ..ftime.=.stats.send($sort_crite |
| 35560 | 72 69 61 20 3d 3d 20 3a 73 69 7a 65 20 3f 20 3a 6d 74 69 6d 65 20 3a 20 24 73 6f 72 74 5f 63 72 | ria.==.:size.?.:mtime.:.$sort_cr |
| 35580 | 69 74 65 72 69 61 29 0d 0a 20 20 20 20 70 72 69 6e 74 66 20 22 25 36 64 20 25 30 34 6f 20 25 36 | iteria)......printf."%6d.%04o.%6 |
| 355a0 | 64 20 25 38 73 20 25 38 73 20 25 38 64 20 25 73 20 25 73 5c 6e 22 2c 0d 0a 20 20 20 20 20 20 20 | d.%8s.%8s.%8d.%s.%s\n",......... |
| 355c0 | 20 73 74 61 74 73 2e 69 6e 6f 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 61 74 73 2e 6d 6f 64 65 20 | .stats.ino,..........stats.mode. |
| 355e0 | 26 20 30 37 37 37 37 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 61 74 73 2e 6e 6c 69 6e 6b 2c 0d 0a | &.07777,..........stats.nlink,.. |
| 35600 | 20 20 20 20 20 20 20 20 45 54 43 3a 3a 50 41 53 53 57 44 5b 73 74 61 74 73 2e 75 69 64 5d 2e 6e | ........ETC::PASSWD[stats.uid].n |
| 35620 | 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 45 54 43 3a 3a 47 52 4f 55 50 5b 73 74 61 74 73 2e 67 | ame,..........ETC::GROUP[stats.g |
| 35640 | 69 64 5d 2e 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 73 74 61 74 73 2e 73 69 7a 65 2c 0d 0a | id].name,..........stats.size,.. |
| 35660 | 20 20 20 20 20 20 20 20 66 74 69 6d 65 2e 73 74 72 66 74 69 6d 65 28 22 25 61 20 25 62 20 25 64 | ........ftime.strftime("%a.%b.%d |
| 35680 | 20 25 48 3a 25 4d 3a 25 53 20 25 59 22 29 2c 0d 0a 20 20 20 20 20 20 20 20 65 6e 74 0d 0a 65 6e | .%H:%M:%S.%Y"),..........ent..en |
| 356a0 | 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 30 0d 0a 64 65 66 20 68 65 6c | d......#.@@PLEAC@@_10.0..def.hel |
| 356c0 | 6c 6f 0d 0a 20 20 20 20 24 67 72 65 65 74 65 64 20 2b 3d 20 31 20 20 20 20 20 20 23 20 69 6e 20 | lo......$greeted.+=.1......#.in. |
| 356e0 | 52 75 62 79 2c 20 61 20 76 61 72 69 61 62 6c 65 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 | Ruby,.a.variable.beginning.with. |
| 35700 | 24 20 69 73 20 67 6c 6f 62 61 6c 20 28 63 61 6e 20 62 65 20 61 6e 79 20 74 79 70 65 20 6f 66 20 | $.is.global.(can.be.any.type.of. |
| 35720 | 63 6f 75 72 73 65 29 0d 0a 20 20 20 20 70 75 74 73 20 22 68 69 20 74 68 65 72 65 21 22 0d 0a 65 | course)......puts."hi.there!"..e |
| 35740 | 6e 64 0d 0a 0d 0a 23 20 57 65 20 6e 65 65 64 20 74 6f 20 69 6e 69 74 69 61 6c 69 7a 65 20 24 67 | nd....#.We.need.to.initialize.$g |
| 35760 | 72 65 65 74 65 64 20 62 65 66 6f 72 65 20 69 74 20 63 61 6e 20 62 65 20 75 73 65 64 2c 20 62 65 | reeted.before.it.can.be.used,.be |
| 35780 | 63 61 75 73 65 20 22 2b 3d 22 20 69 73 20 77 61 69 74 69 6e 67 20 61 20 4e 75 6d 65 72 69 63 20 | cause."+=".is.waiting.a.Numeric. |
| 357a0 | 6f 62 6a 65 63 74 0d 0a 24 67 72 65 65 74 65 64 20 3d 20 30 0d 0a 68 65 6c 6c 6f 20 20 20 20 20 | object..$greeted.=.0..hello..... |
| 357c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 6e 6f 74 65 20 74 68 61 74 20 61 70 70 65 6e 64 69 | .............#.note.that.appendi |
| 357e0 | 6e 67 20 28 29 20 69 73 20 6f 70 74 69 6f 6e 61 6c 20 74 6f 20 66 75 6e 63 74 69 6f 6e 20 63 61 | ng.().is.optional.to.function.ca |
| 35800 | 6c 6c 73 20 77 69 74 68 20 6e 6f 20 70 61 72 61 6d 65 74 65 72 73 0d 0a 0d 0a 0d 0a 23 20 40 40 | lls.with.no.parameters......#.@@ |
| 35820 | 50 4c 45 41 43 40 40 5f 31 30 2e 31 0d 0a 23 20 49 6e 20 52 75 62 79 2c 20 70 61 72 61 6d 65 74 | PLEAC@@_10.1..#.In.Ruby,.paramet |
| 35840 | 65 72 73 20 61 72 65 20 6e 61 6d 65 64 20 61 6e 79 77 61 79 0d 0a 64 65 66 20 68 79 70 6f 74 65 | ers.are.named.anyway..def.hypote |
| 35860 | 6e 75 73 65 28 73 69 64 65 31 2c 20 73 69 64 65 32 29 0d 0a 20 20 20 20 4d 61 74 68 2e 73 71 72 | nuse(side1,.side2)......Math.sqr |
| 35880 | 74 28 73 69 64 65 31 2a 2a 32 20 2b 20 73 69 64 65 32 2a 2a 32 29 20 20 20 20 23 20 74 68 65 20 | t(side1**2.+.side2**2)....#.the. |
| 358a0 | 73 71 72 74 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6d 65 73 20 66 72 6f 6d 20 74 68 65 20 4d 61 74 | sqrt.function.comes.from.the.Mat |
| 358c0 | 68 20 6d 6f 64 75 6c 65 0d 0a 65 6e 64 0d 0a 64 69 61 67 20 3d 20 68 79 70 6f 74 65 6e 75 73 65 | h.module..end..diag.=.hypotenuse |
| 358e0 | 28 33 2c 20 34 29 0d 0a 0d 0a 70 75 74 73 20 68 79 70 6f 74 65 6e 75 73 65 28 33 2c 20 34 29 0d | (3,.4)....puts.hypotenuse(3,.4). |
| 35900 | 0a 0d 0a 61 20 3d 20 5b 33 2c 20 34 5d 0d 0a 70 72 69 6e 74 20 68 79 70 6f 74 65 6e 75 73 65 28 | ...a.=.[3,.4]..print.hypotenuse( |
| 35920 | 2a 61 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 20 73 74 61 72 20 | *a)..................#.the.star. |
| 35940 | 6f 70 65 72 61 74 6f 72 20 77 69 6c 6c 20 6d 61 67 69 63 61 6c 6c 79 20 63 6f 6e 76 65 72 74 20 | operator.will.magically.convert. |
| 35960 | 61 6e 20 41 72 72 61 79 20 69 6e 74 6f 20 61 20 22 74 75 70 6c 65 22 0d 0a 0d 0a 62 6f 74 68 20 | an.Array.into.a."tuple"....both. |
| 35980 | 3d 20 6d 65 6e 20 2b 20 77 6f 6d 65 6e 0d 0a 0d 0a 23 20 49 6e 20 52 75 62 79 2c 20 61 6c 6c 20 | =.men.+.women....#.In.Ruby,.all. |
| 359a0 | 6f 62 6a 65 63 74 73 20 61 72 65 20 72 65 66 65 72 65 6e 63 65 73 2c 20 73 6f 20 74 68 65 20 73 | objects.are.references,.so.the.s |
| 359c0 | 61 6d 65 20 70 72 6f 62 6c 65 6d 20 61 72 69 73 65 73 3b 20 77 65 20 74 68 65 6e 20 72 65 74 75 | ame.problem.arises;.we.then.retu |
| 359e0 | 72 6e 20 61 20 6e 65 77 20 6f 62 6a 65 63 74 0d 0a 6e 75 6d 73 20 3d 20 5b 31 2e 34 2c 20 33 2e | rn.a.new.object..nums.=.[1.4,.3. |
| 35a00 | 35 2c 20 36 2e 37 5d 0d 0a 64 65 66 20 69 6e 74 5f 61 6c 6c 28 6e 29 0d 0a 20 20 20 20 6e 2e 63 | 5,.6.7]..def.int_all(n)......n.c |
| 35a20 | 6f 6c 6c 65 63 74 20 7b 20 7c 76 7c 20 76 2e 74 6f 5f 69 20 7d 0d 0a 65 6e 64 0d 0a 69 6e 74 73 | ollect.{.|v|.v.to_i.}..end..ints |
| 35a40 | 20 3d 20 69 6e 74 5f 61 6c 6c 28 6e 75 6d 73 29 0d 0a 0d 0a 6e 75 6d 73 20 3d 20 5b 31 2e 34 2c | .=.int_all(nums)....nums.=.[1.4, |
| 35a60 | 20 33 2e 35 2c 20 36 2e 37 5d 0d 0a 64 65 66 20 74 72 75 6e 63 5f 65 6d 28 6e 29 0d 0a 20 20 20 | .3.5,.6.7]..def.trunc_em(n)..... |
| 35a80 | 20 6e 2e 63 6f 6c 6c 65 63 74 21 20 7b 20 7c 76 7c 20 76 2e 74 6f 5f 69 20 7d 20 20 20 20 20 20 | .n.collect!.{.|v|.v.to_i.}...... |
| 35aa0 | 20 20 20 23 20 74 68 65 20 62 61 6e 67 2d 76 65 72 73 69 6f 6e 20 6f 66 20 63 6f 6c 6c 65 63 74 | ...#.the.bang-version.of.collect |
| 35ac0 | 20 6d 6f 64 69 66 69 65 73 20 74 68 65 20 6f 62 6a 65 63 74 0d 0a 65 6e 64 0d 0a 74 72 75 6e 63 | .modifies.the.object..end..trunc |
| 35ae0 | 5f 65 6d 28 6e 75 6d 73 29 0d 0a 0d 0a 23 20 52 75 62 79 20 68 61 73 20 74 77 6f 20 63 68 6f 6d | _em(nums)....#.Ruby.has.two.chom |
| 35b00 | 70 20 76 65 72 73 69 6f 6e 3a 0d 0a 23 20 60 60 63 68 6f 6d 70 27 27 20 63 68 6f 6d 70 73 20 74 | p.version:..#.``chomp''.chomps.t |
| 35b20 | 68 65 20 72 65 63 6f 72 64 20 73 65 70 61 72 61 74 6f 72 20 61 6e 64 20 72 65 74 75 72 6e 73 20 | he.record.separator.and.returns. |
| 35b40 | 77 68 61 74 27 73 20 65 78 70 65 63 74 65 64 0d 0a 23 20 60 60 63 68 6f 6d 70 21 27 27 20 64 6f | what's.expected..#.``chomp!''.do |
| 35b60 | 65 73 20 74 68 65 20 73 61 6d 65 20 62 75 74 20 61 6c 73 6f 20 6d 6f 64 69 66 69 65 73 20 74 68 | es.the.same.but.also.modifies.th |
| 35b80 | 65 20 70 61 72 61 6d 65 74 65 72 20 6f 62 6a 65 63 74 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 | e.parameter.object......#.@@PLEA |
| 35ba0 | 43 40 40 5f 31 30 2e 32 0d 0a 64 65 66 20 73 6f 6d 65 66 75 6e 63 0d 0a 20 20 20 20 76 61 72 69 | C@@_10.2..def.somefunc......vari |
| 35bc0 | 61 62 6c 65 20 3d 20 73 6f 6d 65 74 68 69 6e 67 20 20 23 20 76 61 72 69 61 62 6c 65 20 69 73 20 | able.=.something..#.variable.is. |
| 35be0 | 6c 6f 63 61 6c 20 62 79 20 64 65 66 61 75 6c 74 0d 0a 65 6e 64 0d 0a 0d 0a 6e 61 6d 65 2c 20 61 | local.by.default..end....name,.a |
| 35c00 | 67 65 20 3d 20 41 52 47 56 0d 0a 73 74 61 72 74 20 20 20 20 20 3d 20 66 65 74 63 68 5f 74 69 6d | ge.=.ARGV..start.....=.fetch_tim |
| 35c20 | 65 0d 0a 0d 0a 61 2c 20 62 20 3d 20 70 61 69 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 | e....a,.b.=.pair...............# |
| 35c40 | 20 77 69 6c 6c 20 73 75 63 63 65 65 64 20 69 66 20 70 61 69 72 20 69 73 20 61 6e 20 41 72 72 61 | .will.succeed.if.pair.is.an.Arra |
| 35c60 | 79 20 6f 62 6a 65 63 74 20 28 6c 69 6b 65 20 41 52 47 56 20 69 73 29 0d 0a 63 20 3d 20 66 65 74 | y.object.(like.ARGV.is)..c.=.fet |
| 35c80 | 63 68 5f 74 69 6d 65 0d 0a 0d 0a 23 20 49 6e 20 72 75 62 79 2c 20 72 75 6e 5f 63 68 65 63 6b 20 | ch_time....#.In.ruby,.run_check. |
| 35ca0 | 63 61 6e 27 74 20 61 63 63 65 73 73 20 61 2c 20 62 2c 20 6f 72 20 63 20 75 6e 74 69 6c 20 74 68 | can't.access.a,.b,.or.c.until.th |
| 35cc0 | 65 79 20 61 72 65 0d 0a 23 20 65 78 70 6c 69 63 69 74 65 6c 79 20 64 65 66 69 6e 65 64 20 67 6c | ey.are..#.explicitely.defined.gl |
| 35ce0 | 6f 62 61 6c 20 28 75 73 69 6e 67 20 6c 65 61 64 69 6e 67 20 24 29 2c 20 65 76 65 6e 20 69 66 20 | obal.(using.leading.$),.even.if. |
| 35d00 | 74 68 65 79 20 61 72 65 0d 0a 23 20 62 6f 74 68 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 65 20 | they.are..#.both.defined.in.the. |
| 35d20 | 73 61 6d 65 20 73 63 6f 70 65 0d 0a 0d 0a 64 65 66 20 63 68 65 63 6b 5f 78 28 78 29 0d 0a 20 20 | same.scope....def.check_x(x).... |
| 35d40 | 20 20 79 20 3d 20 22 77 68 61 74 65 76 65 72 22 0d 0a 20 20 20 20 72 75 6e 5f 63 68 65 63 6b 0d | ..y.=."whatever"......run_check. |
| 35d60 | 0a 20 20 20 20 69 66 20 24 63 6f 6e 64 69 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 | .....if.$condition..........puts |
| 35d80 | 20 22 67 6f 74 20 24 78 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 68 65 | ."got.$x"......end..end....#.The |
| 35da0 | 20 66 6f 6c 6c 6f 77 69 6e 67 20 77 69 6c 6c 20 6b 65 65 70 20 61 20 72 65 66 65 72 65 6e 63 65 | .following.will.keep.a.reference |
| 35dc0 | 20 74 6f 20 74 68 65 20 61 72 72 61 79 2c 20 74 68 6f 75 67 68 20 74 68 65 0d 0a 23 20 72 65 73 | .to.the.array,.though.the..#.res |
| 35de0 | 75 6c 74 73 20 77 69 6c 6c 20 62 65 20 73 6c 69 67 68 74 6c 79 20 64 69 66 66 65 72 65 6e 74 20 | ults.will.be.slightly.different. |
| 35e00 | 66 72 6f 6d 20 70 65 72 6c 3a 20 74 68 65 20 6c 61 73 74 20 65 6c 65 6d 65 6e 74 0d 0a 23 20 6f | from.perl:.the.last.element..#.o |
| 35e20 | 66 20 24 67 6c 6f 62 61 6c 5f 61 72 72 61 79 20 77 69 6c 6c 20 62 65 20 69 74 73 65 6c 66 20 61 | f.$global_array.will.be.itself.a |
| 35e40 | 6e 20 61 72 72 61 79 0d 0a 64 65 66 20 73 61 76 65 5f 61 72 72 61 79 28 61 72 79 29 0d 0a 20 20 | n.array..def.save_array(ary).... |
| 35e60 | 20 20 24 67 6c 6f 62 61 6c 5f 61 72 72 61 79 20 3c 3c 20 61 72 79 0d 0a 65 6e 64 0d 0a 0d 0a 23 | ..$global_array.<<.ary..end....# |
| 35e80 | 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 67 69 76 65 73 20 74 68 65 20 73 61 6d 65 20 72 65 | .The.following.gives.the.same.re |
| 35ea0 | 73 75 6c 74 73 20 61 73 20 69 6e 20 50 65 72 6c 20 66 6f 72 20 24 67 6c 6f 62 61 6c 5f 61 72 72 | sults.as.in.Perl.for.$global_arr |
| 35ec0 | 61 79 2c 0d 0a 23 20 74 68 6f 75 67 68 20 69 74 20 64 6f 65 73 6e 27 74 20 69 6c 6c 75 73 74 72 | ay,..#.though.it.doesn't.illustr |
| 35ee0 | 61 74 65 20 61 6e 79 6d 6f 72 65 20 74 68 65 20 77 61 79 20 74 6f 20 6b 65 65 70 20 61 20 72 65 | ate.anymore.the.way.to.keep.a.re |
| 35f00 | 66 65 72 65 6e 63 65 0d 0a 23 20 74 6f 20 61 6e 20 6f 62 6a 65 63 74 3a 20 24 67 6c 6f 62 61 6c | ference..#.to.an.object:.$global |
| 35f20 | 5f 61 72 72 61 79 20 69 73 20 65 78 74 65 6e 64 65 64 20 77 69 74 68 20 74 68 65 20 65 6c 65 6d | _array.is.extended.with.the.elem |
| 35f40 | 65 6e 74 73 20 6f 66 20 61 72 79 0d 0a 64 65 66 20 73 61 76 65 5f 61 72 72 61 79 28 61 72 79 29 | ents.of.ary..def.save_array(ary) |
| 35f60 | 0d 0a 20 20 20 20 24 67 6c 6f 62 61 6c 5f 61 72 72 61 79 20 2b 3d 20 61 72 79 0d 0a 65 6e 64 0d | ......$global_array.+=.ary..end. |
| 35f80 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 33 0d 0a 23 20 49 6e 20 52 75 62 79 | .....#.@@PLEAC@@_10.3..#.In.Ruby |
| 35fa0 | 2c 20 41 46 41 49 4b 20 61 20 6d 65 74 68 6f 64 20 63 61 6e 6e 6f 74 20 61 63 63 65 73 73 20 22 | ,.AFAIK.a.method.cannot.access." |
| 35fc0 | 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 22 20 64 65 66 69 6e 65 64 0d 0a 23 20 75 70 70 65 | local.variables".defined..#.uppe |
| 35fe0 | 72 20 73 63 6f 70 65 3b 20 6d 6f 73 74 6c 79 20 62 65 63 61 75 73 65 20 65 76 65 72 79 74 68 69 | r.scope;.mostly.because.everythi |
| 36000 | 6e 67 20 69 73 20 61 6e 20 6f 62 6a 65 63 74 2c 20 73 6f 20 79 6f 75 27 6c 6c 0d 0a 23 20 64 6f | ng.is.an.object,.so.you'll..#.do |
| 36020 | 20 74 68 65 20 73 61 6d 65 20 62 79 20 64 65 66 69 6e 69 6e 67 20 61 6e 20 61 74 74 72 69 62 75 | .the.same.by.defining.an.attribu |
| 36040 | 74 65 20 6f 72 20 61 20 73 74 61 74 69 63 20 61 74 74 72 69 62 75 74 65 0d 0a 0d 0a 23 20 49 6e | te.or.a.static.attribute....#.In |
| 36060 | 20 52 75 62 79 20 74 68 65 20 42 45 47 49 4e 20 61 6c 73 6f 20 65 78 69 73 74 73 3a 0d 0a 42 45 | .Ruby.the.BEGIN.also.exists:..BE |
| 36080 | 47 49 4e 20 7b 20 70 75 74 73 20 22 68 65 6c 6c 6f 20 66 72 6f 6d 20 42 45 47 49 4e 22 20 7d 0d | GIN.{.puts."hello.from.BEGIN".}. |
| 360a0 | 0a 70 75 74 73 20 22 68 65 6c 6c 6f 20 66 72 6f 6d 20 6d 61 69 6e 22 0d 0a 42 45 47 49 4e 20 7b | .puts."hello.from.main"..BEGIN.{ |
| 360c0 | 20 70 75 74 73 20 22 68 65 6c 6c 6f 20 66 72 6f 6d 20 32 6e 64 20 42 45 47 49 4e 22 20 7d 0d 0a | .puts."hello.from.2nd.BEGIN".}.. |
| 360e0 | 23 20 67 69 76 65 73 3a 0d 0a 23 20 20 20 68 65 6c 6c 6f 20 66 72 6f 6d 20 42 45 47 49 4e 0d 0a | #.gives:..#...hello.from.BEGIN.. |
| 36100 | 23 20 20 20 68 65 6c 6c 6f 20 66 72 6f 6d 20 32 6e 64 20 42 45 47 49 4e 0d 0a 23 20 20 20 68 65 | #...hello.from.2nd.BEGIN..#...he |
| 36120 | 6c 6c 6f 20 66 72 6f 6d 20 6d 61 69 6e 0d 0a 0d 0a 23 20 49 6e 20 52 75 62 79 2c 20 69 74 20 63 | llo.from.main....#.In.Ruby,.it.c |
| 36140 | 61 6e 20 62 65 20 77 72 69 74 74 65 6e 20 61 73 20 61 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 | an.be.written.as.a.static.method |
| 36160 | 20 61 6e 64 20 61 20 73 74 61 74 69 63 0d 0a 23 20 76 61 72 69 61 62 6c 65 0d 0a 63 6c 61 73 73 | .and.a.static..#.variable..class |
| 36180 | 20 43 6f 75 6e 74 65 72 0d 0a 20 20 20 20 40 40 63 6f 75 6e 74 65 72 20 3d 20 30 0d 0a 20 20 20 | .Counter......@@counter.=.0..... |
| 361a0 | 20 64 65 66 20 43 6f 75 6e 74 65 72 2e 6e 65 78 74 5f 63 6f 75 6e 74 65 72 3b 20 40 40 63 6f 75 | .def.Counter.next_counter;.@@cou |
| 361c0 | 6e 74 65 72 20 2b 3d 20 31 3b 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 68 65 72 65 20 69 | nter.+=.1;.end..end....#.There.i |
| 361e0 | 73 20 6e 6f 20 6e 65 65 64 20 6f 66 20 42 45 47 49 4e 20 73 69 6e 63 65 20 74 68 65 20 76 61 72 | s.no.need.of.BEGIN.since.the.var |
| 36200 | 69 61 62 6c 65 20 77 69 6c 6c 20 67 65 74 0d 0a 23 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 77 68 | iable.will.get..#.initialized.wh |
| 36220 | 65 6e 20 70 61 72 73 69 6e 67 0d 0a 63 6c 61 73 73 20 43 6f 75 6e 74 65 72 0d 0a 20 20 20 20 40 | en.parsing..class.Counter......@ |
| 36240 | 40 63 6f 75 6e 74 65 72 20 3d 20 34 32 0d 0a 20 20 20 20 64 65 66 20 43 6f 75 6e 74 65 72 2e 6e | @counter.=.42......def.Counter.n |
| 36260 | 65 78 74 5f 63 6f 75 6e 74 65 72 3b 20 40 40 63 6f 75 6e 74 65 72 20 2b 3d 20 31 3b 20 65 6e 64 | ext_counter;.@@counter.+=.1;.end |
| 36280 | 0d 0a 20 20 20 20 64 65 66 20 43 6f 75 6e 74 65 72 2e 70 72 65 76 5f 63 6f 75 6e 74 65 72 3b 20 | ......def.Counter.prev_counter;. |
| 362a0 | 40 40 63 6f 75 6e 74 65 72 20 2d 3d 20 31 3b 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 | @@counter.-=.1;.end..end......#. |
| 362c0 | 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 34 0d 0a 23 20 59 6f 75 20 63 61 6e 20 65 69 74 68 65 72 | @@PLEAC@@_10.4..#.You.can.either |
| 362e0 | 20 67 65 74 20 74 68 65 20 77 68 6f 6c 65 20 74 72 61 63 65 20 61 73 20 61 6e 20 61 72 72 61 79 | .get.the.whole.trace.as.an.array |
| 36300 | 20 6f 66 20 73 74 72 69 6e 67 73 2c 20 65 61 63 68 0d 0a 23 20 73 74 72 69 6e 67 20 74 65 6c 6c | .of.strings,.each..#.string.tell |
| 36320 | 69 6e 67 20 77 68 69 63 68 20 66 69 6c 65 2c 20 6c 69 6e 65 20 61 6e 64 20 6d 65 74 68 6f 64 20 | ing.which.file,.line.and.method. |
| 36340 | 69 73 20 63 61 6c 6c 69 6e 67 3a 0d 0a 63 61 6c 6c 65 72 0d 0a 0d 0a 23 20 2e 2e 2e 6f 72 20 6f | is.calling:..caller....#....or.o |
| 36360 | 6e 6c 79 20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c 65 72 0d 0a 63 61 6c 6c 65 72 5b 30 5d 0d 0a | nly.the.last.caller..caller[0].. |
| 36380 | 0d 0a 23 20 57 65 20 6e 65 65 64 20 74 6f 20 65 78 74 72 61 63 74 20 6a 75 73 74 20 74 68 65 20 | ..#.We.need.to.extract.just.the. |
| 363a0 | 6d 65 74 68 6f 64 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 62 61 63 6b 74 72 61 63 65 3a 0d 0a 64 | method.name.of.the.backtrace:..d |
| 363c0 | 65 66 20 77 68 6f 61 6d 69 3b 20 20 63 61 6c 6c 65 72 28 29 5b 30 5d 20 3d 7e 20 2f 69 6e 20 60 | ef.whoami;..caller()[0].=~./in.` |
| 363e0 | 28 5b 5e 27 5d 2b 29 27 2f 20 3f 20 24 31 20 3a 20 27 28 61 6e 6f 6e 79 6d 6f 75 73 29 27 3b 20 | ([^']+)'/.?.$1.:.'(anonymous)';. |
| 36400 | 65 6e 64 0d 0a 64 65 66 20 77 68 6f 77 61 73 69 3b 20 63 61 6c 6c 65 72 28 29 5b 31 5d 20 3d 7e | end..def.whowasi;.caller()[1].=~ |
| 36420 | 20 2f 69 6e 20 60 28 5b 5e 27 5d 2b 29 27 2f 20 3f 20 24 31 20 3a 20 27 28 61 6e 6f 6e 79 6d 6f | ./in.`([^']+)'/.?.$1.:.'(anonymo |
| 36440 | 75 73 29 27 3b 20 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 35 0d | us)';.end......#.@@PLEAC@@_10.5. |
| 36460 | 0a 23 20 49 6e 20 52 75 62 79 2c 20 65 76 65 72 79 20 76 61 6c 75 65 20 69 73 20 61 20 72 65 66 | .#.In.Ruby,.every.value.is.a.ref |
| 36480 | 65 72 65 6e 63 65 20 6f 6e 20 61 6e 20 6f 62 6a 65 63 74 2c 20 74 68 75 73 20 74 68 65 72 65 20 | erence.on.an.object,.thus.there. |
| 364a0 | 69 73 0d 0a 23 20 6e 6f 20 73 75 63 68 20 70 72 6f 62 6c 65 6d 0d 0a 61 72 72 61 79 5f 64 69 66 | is..#.no.such.problem..array_dif |
| 364c0 | 66 28 61 72 72 61 79 31 2c 20 61 72 72 61 79 32 29 0d 0a 0d 0a 64 65 66 20 61 64 64 5f 76 65 63 | f(array1,.array2)....def.add_vec |
| 364e0 | 70 61 69 72 28 61 31 2c 20 61 32 29 0d 0a 20 20 20 20 72 65 73 75 6c 74 73 20 3d 20 5b 5d 0d 0a | pair(a1,.a2)......results.=.[].. |
| 36500 | 20 20 20 20 61 31 2e 65 61 63 68 5f 69 6e 64 65 78 20 7b 20 7c 69 7c 20 72 65 73 75 6c 74 73 20 | ....a1.each_index.{.|i|.results. |
| 36520 | 3c 3c 20 28 61 31 5b 69 5d 20 2b 20 61 32 5b 69 5d 29 20 7d 0d 0a 20 20 20 20 72 65 73 75 6c 74 | <<.(a1[i].+.a2[i]).}......result |
| 36540 | 73 0d 0a 65 6e 64 0d 0a 61 20 3d 20 5b 31 2c 20 32 5d 0d 0a 62 20 3d 20 5b 35 2c 20 38 5d 0d 0a | s..end..a.=.[1,.2]..b.=.[5,.8].. |
| 36560 | 63 20 3d 20 61 64 64 5f 76 65 63 70 61 69 72 28 61 2c 20 62 29 0d 0a 70 20 63 0d 0a 0d 0a 23 20 | c.=.add_vecpair(a,.b)..p.c....#. |
| 36580 | 41 64 64 20 74 68 69 73 20 74 6f 20 74 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 74 68 65 | Add.this.to.the.beginning.of.the |
| 365a0 | 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 63 68 65 63 6b 20 69 66 20 77 65 20 77 65 72 65 0d 0a 23 | .function.to.check.if.we.were..# |
| 365c0 | 20 67 69 76 65 6e 20 74 77 6f 20 61 72 72 61 79 73 0d 0a 61 31 2e 74 79 70 65 20 3d 3d 20 41 72 | .given.two.arrays..a1.type.==.Ar |
| 365e0 | 72 61 79 20 26 26 20 61 32 2e 74 79 70 65 20 3d 3d 20 41 72 72 61 79 20 6f 72 0d 0a 20 20 20 20 | ray.&&.a2.type.==.Array.or...... |
| 36600 | 72 61 69 73 65 20 22 75 73 61 67 65 3a 20 61 64 64 5f 76 65 63 70 61 69 72 20 61 72 72 61 79 31 | raise."usage:.add_vecpair.array1 |
| 36620 | 20 61 72 72 61 79 32 20 28 77 61 73 20 75 73 65 64 20 77 69 74 68 3a 20 23 7b 61 31 2e 74 79 70 | .array2.(was.used.with:.#{a1.typ |
| 36640 | 65 7d 20 23 7b 61 32 2e 74 79 70 65 7d 29 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | e}.#{a2.type})"......#.@@PLEAC@@ |
| 36660 | 5f 31 30 2e 36 0d 0a 23 20 54 68 65 72 65 20 69 73 20 6e 6f 20 72 65 74 75 72 6e 20 63 6f 6e 74 | _10.6..#.There.is.no.return.cont |
| 36680 | 65 78 74 20 69 6e 20 52 75 62 79 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e | ext.in.Ruby......#.@@PLEAC@@_10. |
| 366a0 | 37 0d 0a 23 20 4c 69 6b 65 20 69 6e 20 50 65 72 6c 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 66 61 | 7..#.Like.in.Perl,.we.need.to.fa |
| 366c0 | 6b 65 20 77 69 74 68 20 61 20 68 61 73 68 2c 20 62 75 74 20 69 74 27 73 20 64 69 72 74 79 20 3a | ke.with.a.hash,.but.it's.dirty.: |
| 366e0 | 2d 28 0d 0a 64 65 66 20 74 68 65 66 75 6e 63 28 70 61 72 61 6d 5f 61 72 67 73 29 0d 0a 20 20 20 | -(..def.thefunc(param_args)..... |
| 36700 | 20 61 72 67 73 20 3d 20 7b 20 27 49 4e 43 52 45 4d 45 4e 54 27 20 3d 3e 20 27 31 30 73 27 2c 20 | .args.=.{.'INCREMENT'.=>.'10s',. |
| 36720 | 27 46 49 4e 49 53 48 27 20 3d 3e 20 27 30 27 2c 20 27 53 54 41 52 54 27 20 3d 3e 20 30 20 7d 0d | 'FINISH'.=>.'0',.'START'.=>.0.}. |
| 36740 | 0a 20 20 20 20 61 72 67 73 2e 75 70 64 61 74 65 28 70 61 72 61 6d 5f 61 72 67 73 29 0d 0a 20 20 | .....args.update(param_args).... |
| 36760 | 20 20 69 66 20 28 61 72 67 73 5b 27 49 4e 43 52 45 4d 45 4e 54 27 5d 20 20 3d 7e 20 2f 6d 24 2f | ..if.(args['INCREMENT']..=~./m$/ |
| 36780 | 20 29 0d 0a 20 20 20 20 20 20 20 20 23 20 2e 2e 2e 2e 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e | .)..........#............end..en |
| 367a0 | 64 0d 0a 0d 0a 74 68 65 66 75 6e 63 28 7b 20 27 49 4e 43 52 45 4d 45 4e 54 27 20 3d 3e 20 27 32 | d....thefunc({.'INCREMENT'.=>.'2 |
| 367c0 | 30 73 27 2c 20 27 53 54 41 52 54 27 20 3d 3e 20 27 2b 35 6d 27 2c 20 27 46 49 4e 49 53 48 27 20 | 0s',.'START'.=>.'+5m',.'FINISH'. |
| 367e0 | 3d 3e 20 27 2b 33 30 6d 27 20 7d 29 0d 0a 74 68 65 66 75 6e 63 28 7b 7d 29 0d 0a 0d 0a 0d 0a 23 | =>.'+30m'.})..thefunc({})......# |
| 36800 | 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 38 0d 0a 23 20 74 68 65 72 65 20 69 73 20 6e 6f 20 22 | .@@PLEAC@@_10.8..#.there.is.no." |
| 36820 | 75 6e 64 65 66 22 20 64 69 72 65 63 74 20 65 71 75 69 76 61 6c 65 6e 74 20 62 75 74 20 74 68 65 | undef".direct.equivalent.but.the |
| 36840 | 72 65 20 69 73 20 74 68 65 20 73 6c 69 63 65 20 65 71 75 69 76 3a 0d 0a 61 2c 20 63 20 3d 20 66 | re.is.the.slice.equiv:..a,.c.=.f |
| 36860 | 75 6e 63 2e 69 6e 64 65 78 65 73 28 30 2c 20 32 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | unc.indexes(0,.2)......#.@@PLEAC |
| 36880 | 40 40 5f 31 30 2e 39 0d 0a 23 20 52 75 62 79 20 68 61 73 20 6e 6f 20 73 75 63 68 20 6c 69 6d 69 | @@_10.9..#.Ruby.has.no.such.limi |
| 368a0 | 74 61 74 69 6f 6e 3a 0d 0a 64 65 66 20 73 6f 6d 65 66 75 6e 63 0d 0a 20 20 20 20 61 72 79 20 3d | tation:..def.somefunc......ary.= |
| 368c0 | 20 5b 5d 0d 0a 20 20 20 20 68 61 73 68 20 3d 20 7b 7d 0d 0a 20 20 20 20 23 20 2e 2e 2e 0d 0a 20 | .[]......hash.=.{}......#....... |
| 368e0 | 20 20 20 72 65 74 75 72 6e 20 61 72 79 2c 20 68 61 73 68 0d 0a 65 6e 64 0d 0a 61 72 72 2c 20 64 | ...return.ary,.hash..end..arr,.d |
| 36900 | 69 63 74 20 3d 20 73 6f 6d 65 66 75 6e 63 0d 0a 0d 0a 61 72 72 61 79 5f 6f 66 5f 68 61 73 68 65 | ict.=.somefunc....array_of_hashe |
| 36920 | 73 20 3d 20 66 6e 0d 0a 68 31 2c 20 68 32 2c 20 68 33 20 20 20 20 20 20 3d 20 66 6e 0d 0a 0d 0a | s.=.fn..h1,.h2,.h3......=.fn.... |
| 36940 | 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 31 30 0d 0a 72 65 74 75 72 6e 0d 0a 23 20 6f | ..#.@@PLEAC@@_10.10..return..#.o |
| 36960 | 72 20 28 65 71 75 69 76 61 6c 65 6e 74 29 0d 0a 72 65 74 75 72 6e 20 6e 69 6c 0d 0a 0d 0a 0d 0a | r.(equivalent)..return.nil...... |
| 36980 | 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 31 31 0d 0a 23 20 59 6f 75 20 63 61 6e 27 74 20 70 | #.@@PLEAC@@_10.11..#.You.can't.p |
| 369a0 | 72 6f 74 6f 74 79 70 65 20 69 6e 20 52 75 62 79 20 72 65 67 61 72 64 69 6e 67 20 74 79 70 65 73 | rototype.in.Ruby.regarding.types |
| 369c0 | 20 3a 2d 28 0d 0a 23 20 54 68 6f 75 67 68 2c 20 79 6f 75 20 63 61 6e 20 66 6f 72 63 65 20 74 68 | .:-(..#.Though,.you.can.force.th |
| 369e0 | 65 20 6e 75 6d 62 65 72 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 3a 0d 0a 64 65 66 20 66 75 6e 63 | e.number.of.arguments:..def.func |
| 36a00 | 5f 77 69 74 68 5f 6e 6f 5f 61 72 67 3b 20 65 6e 64 0d 0a 64 65 66 20 66 75 6e 63 5f 77 69 74 68 | _with_no_arg;.end..def.func_with |
| 36a20 | 5f 6e 6f 5f 61 72 67 28 29 3b 20 65 6e 64 0d 0a 64 65 66 20 66 75 6e 63 5f 77 69 74 68 5f 6f 6e | _no_arg();.end..def.func_with_on |
| 36a40 | 65 5f 61 72 67 28 61 31 29 3b 20 65 6e 64 0d 0a 64 65 66 20 66 75 6e 63 5f 77 69 74 68 5f 74 77 | e_arg(a1);.end..def.func_with_tw |
| 36a60 | 6f 5f 61 72 67 73 28 61 31 2c 20 61 32 29 3b 20 65 6e 64 0d 0a 64 65 66 20 66 75 6e 63 5f 77 69 | o_args(a1,.a2);.end..def.func_wi |
| 36a80 | 74 68 5f 61 6e 79 5f 6e 75 6d 62 65 72 5f 6f 66 5f 61 72 67 73 28 2a 61 72 67 73 29 3b 20 65 6e | th_any_number_of_args(*args);.en |
| 36aa0 | 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 31 32 0d 0a 72 61 69 73 65 20 | d......#.@@PLEAC@@_10.12..raise. |
| 36ac0 | 22 73 6f 6d 65 20 6d 65 73 73 61 67 65 22 20 20 20 20 20 20 20 20 23 20 72 61 69 73 65 20 65 78 | "some.message"........#.raise.ex |
| 36ae0 | 63 65 70 74 69 6f 6e 0d 0a 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 76 61 6c 20 3d 20 66 75 6e 63 | ception....begin......val.=.func |
| 36b00 | 0d 0a 72 65 73 63 75 65 20 45 78 63 65 70 74 69 6f 6e 20 3d 3e 20 6d 73 67 0d 0a 20 20 20 20 24 | ..rescue.Exception.=>.msg......$ |
| 36b20 | 73 74 64 65 72 72 2e 70 75 74 73 20 22 66 75 6e 63 20 72 61 69 73 65 64 20 61 6e 20 65 78 63 65 | stderr.puts."func.raised.an.exce |
| 36b40 | 70 74 69 6f 6e 3a 20 23 7b 6d 73 67 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 49 6e 20 52 75 62 79 | ption:.#{msg}"..end....#.In.Ruby |
| 36b60 | 20 74 68 65 20 72 65 73 63 75 65 20 73 74 61 74 65 6d 65 6e 74 20 75 73 65 73 20 61 6e 20 65 78 | .the.rescue.statement.uses.an.ex |
| 36b80 | 63 65 70 74 69 6f 6e 20 63 6c 61 73 73 2c 20 65 76 65 72 79 0d 0a 23 20 65 78 63 65 70 74 69 6f | ception.class,.every..#.exceptio |
| 36ba0 | 6e 20 77 68 69 63 68 20 69 73 20 6e 6f 74 20 6d 61 74 63 68 65 64 20 69 73 20 73 74 69 6c 6c 20 | n.which.is.not.matched.is.still. |
| 36bc0 | 63 6f 6e 74 69 6e 75 69 6e 67 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 76 61 6c 20 3d 20 66 75 6e | continuing..begin......val.=.fun |
| 36be0 | 63 0d 0a 72 65 73 63 75 65 20 46 75 6c 6c 4d 6f 6f 6e 45 72 72 6f 72 0d 0a 20 20 20 20 2e 2e 2e | c..rescue.FullMoonError......... |
| 36c00 | 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 31 33 0d 0a 23 20 | ..end......#.@@PLEAC@@_10.13..#. |
| 36c20 | 53 61 76 69 6e 67 20 47 6c 6f 62 61 6c 20 56 61 6c 75 65 73 0d 0a 23 20 4f 66 20 63 6f 75 72 73 | Saving.Global.Values..#.Of.cours |
| 36c40 | 65 20 77 65 20 63 61 6e 20 6a 75 73 74 20 73 61 76 65 20 74 68 65 20 76 61 6c 75 65 20 61 6e 64 | e.we.can.just.save.the.value.and |
| 36c60 | 20 72 65 73 74 6f 72 65 20 69 74 20 6c 61 74 65 72 3a 0d 0a 64 65 66 20 70 72 69 6e 74 5f 61 67 | .restore.it.later:..def.print_ag |
| 36c80 | 65 0d 0a 20 20 20 20 70 75 74 73 20 22 41 67 65 20 69 73 20 23 7b 24 61 67 65 7d 22 0d 0a 65 6e | e......puts."Age.is.#{$age}"..en |
| 36ca0 | 64 0d 0a 0d 0a 24 61 67 65 20 3d 20 31 38 20 20 20 20 20 20 20 20 20 23 20 67 6c 6f 62 61 6c 20 | d....$age.=.18.........#.global. |
| 36cc0 | 76 61 72 69 61 62 6c 65 0d 0a 70 72 69 6e 74 5f 61 67 65 28 29 0d 0a 69 66 20 63 6f 6e 64 69 74 | variable..print_age()..if.condit |
| 36ce0 | 69 6f 6e 0d 0a 20 20 20 20 73 61 66 65 61 67 65 20 3d 20 24 61 67 65 0d 0a 20 20 20 20 24 61 67 | ion......safeage.=.$age......$ag |
| 36d00 | 65 20 3d 20 32 33 0d 0a 20 20 20 20 70 72 69 6e 74 5f 61 67 65 28 29 0d 0a 20 20 20 20 24 61 67 | e.=.23......print_age()......$ag |
| 36d20 | 65 20 3d 20 73 61 66 65 61 67 65 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 57 65 20 63 61 6e 20 61 6c 73 | e.=.safeage..end....#.We.can.als |
| 36d40 | 6f 20 75 73 65 20 61 20 6d 65 74 68 6f 64 20 74 68 61 74 20 73 61 76 65 73 20 74 68 65 20 67 6c | o.use.a.method.that.saves.the.gl |
| 36d60 | 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 20 61 6e 64 0d 0a 23 20 72 65 73 74 6f 72 65 73 20 69 74 | obal.variable.and..#.restores.it |
| 36d80 | 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 77 68 65 6e 20 74 68 65 20 62 6c 6f 63 6b 20 69 73 | .automatically.when.the.block.is |
| 36da0 | 20 6c 65 66 74 3a 0d 0a 0d 0a 64 65 66 20 6c 6f 63 61 6c 28 76 61 72 29 0d 0a 20 20 20 20 65 76 | .left:....def.local(var)......ev |
| 36dc0 | 61 6c 28 22 73 61 76 65 20 3d 20 23 7b 76 61 72 2e 69 64 32 6e 61 6d 65 7d 22 29 0d 0a 20 20 20 | al("save.=.#{var.id2name}")..... |
| 36de0 | 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 79 69 65 6c 64 0d 0a | .begin..........result.=.yield.. |
| 36e00 | 20 20 20 20 65 6e 73 75 72 65 0d 0a 20 20 20 20 20 20 20 20 23 20 77 65 20 77 61 6e 74 20 74 6f | ....ensure..........#.we.want.to |
| 36e20 | 20 63 61 6c 6c 20 74 68 69 73 20 65 76 65 6e 20 69 66 20 77 65 20 67 6f 74 20 61 6e 20 65 78 63 | .call.this.even.if.we.got.an.exc |
| 36e40 | 65 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 65 76 61 6c 28 22 23 7b 76 61 72 2e 69 64 32 6e | eption..........eval("#{var.id2n |
| 36e60 | 61 6d 65 7d 20 3d 20 73 61 76 65 22 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 72 65 73 75 | ame}.=.save")......end......resu |
| 36e80 | 6c 74 0d 0a 65 6e 64 0d 0a 0d 0a 63 6f 6e 64 69 74 69 6f 6e 20 3d 20 74 72 75 65 0d 0a 24 61 67 | lt..end....condition.=.true..$ag |
| 36ea0 | 65 20 3d 20 31 38 0d 0a 70 72 69 6e 74 5f 61 67 65 28 29 0d 0a 69 66 20 63 6f 6e 64 69 74 69 6f | e.=.18..print_age()..if.conditio |
| 36ec0 | 6e 0d 0a 20 20 20 20 6c 6f 63 61 6c 28 3a 24 61 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 24 | n......local(:$age).{..........$ |
| 36ee0 | 61 67 65 20 3d 20 32 33 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 5f 61 67 65 28 29 0d 0a 20 | age.=.23..........print_age()... |
| 36f00 | 20 20 20 7d 0d 0a 65 6e 64 0d 0a 70 72 69 6e 74 5f 61 67 65 28 29 0d 0a 0d 0a 23 20 54 68 65 72 | ...}..end..print_age()....#.Ther |
| 36f20 | 65 20 69 73 20 6e 6f 20 6e 65 65 64 20 74 6f 20 75 73 65 20 6c 6f 63 61 6c 28 29 20 66 6f 72 20 | e.is.no.need.to.use.local().for. |
| 36f40 | 66 69 6c 65 68 61 6e 64 6c 65 73 20 6f 72 20 64 69 72 65 63 74 6f 72 79 0d 0a 23 20 68 61 6e 64 | filehandles.or.directory..#.hand |
| 36f60 | 6c 65 73 20 69 6e 20 72 75 62 79 20 62 65 63 61 75 73 65 20 66 69 6c 65 68 61 6e 64 6c 65 73 20 | les.in.ruby.because.filehandles. |
| 36f80 | 61 72 65 20 6e 6f 72 6d 61 6c 20 6f 62 6a 65 63 74 73 2e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | are.normal.objects.......#.@@PLE |
| 36fa0 | 41 43 40 40 5f 31 30 2e 31 34 0d 0a 23 20 49 6e 20 52 75 62 79 20 79 6f 75 20 6d 61 79 20 72 65 | AC@@_10.14..#.In.Ruby.you.may.re |
| 36fc0 | 64 65 66 69 6e 65 20 61 20 6d 65 74 68 6f 64 20 5b 62 75 74 20 6e 6f 74 20 6f 76 65 72 6c 6f 61 | define.a.method.[but.not.overloa |
| 36fe0 | 64 20 69 74 20 3a 2d 28 5d 0d 0a 23 20 6a 75 73 74 20 62 79 20 64 65 66 69 6e 69 6e 67 20 61 67 | d.it.:-(]..#.just.by.defining.ag |
| 37000 | 61 69 6e 20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 6e 61 6d 65 2e 0d 0a 64 65 66 20 66 6f 6f | ain.with.the.same.name...def.foo |
| 37020 | 3b 20 70 75 74 73 20 27 66 6f 6f 27 3b 20 65 6e 64 0d 0a 64 65 66 20 66 6f 6f 3b 20 70 75 74 73 | ;.puts.'foo';.end..def.foo;.puts |
| 37040 | 20 27 62 61 72 27 3b 20 65 6e 64 0d 0a 66 6f 6f 0d 0a 23 3d 3e 20 62 61 72 0d 0a 0d 0a 23 20 59 | .'bar';.end..foo..#=>.bar....#.Y |
| 37060 | 6f 75 20 63 61 6e 20 61 6c 73 6f 20 74 61 6b 65 20 61 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 | ou.can.also.take.a.reference.to. |
| 37080 | 61 6e 20 65 78 69 73 74 69 6e 67 20 6d 65 74 68 6f 64 20 62 65 66 6f 72 65 0d 0a 23 20 72 65 64 | an.existing.method.before..#.red |
| 370a0 | 65 66 69 6e 69 6e 67 20 61 20 6e 65 77 20 6f 6e 65 2c 20 75 73 69 6e 67 20 74 68 65 20 60 61 6c | efining.a.new.one,.using.the.`al |
| 370c0 | 69 61 73 27 20 6b 65 79 77 6f 72 64 0d 0a 64 65 66 20 66 6f 6f 3b 20 70 75 74 73 20 27 66 6f 6f | ias'.keyword..def.foo;.puts.'foo |
| 370e0 | 27 3b 20 65 6e 64 0d 0a 61 6c 69 61 73 20 66 6f 6f 5f 6f 72 69 67 20 66 6f 6f 0d 0a 64 65 66 20 | ';.end..alias.foo_orig.foo..def. |
| 37100 | 66 6f 6f 3b 20 70 75 74 73 20 27 62 61 72 27 3b 20 65 6e 64 0d 0a 66 6f 6f 5f 6f 72 69 67 0d 0a | foo;.puts.'bar';.end..foo_orig.. |
| 37120 | 66 6f 6f 0d 0a 23 3d 3e 20 66 6f 6f 0d 0a 23 3d 3e 20 62 61 72 0d 0a 0d 0a 23 20 41 46 41 49 4b | foo..#=>.foo..#=>.bar....#.AFAIK |
| 37140 | 2c 20 74 68 65 72 65 20 69 73 20 6e 6f 20 64 69 72 65 63 74 20 77 61 79 20 74 6f 20 63 72 65 61 | ,.there.is.no.direct.way.to.crea |
| 37160 | 74 65 20 61 20 6e 65 77 20 6d 65 74 68 6f 64 20 77 68 6f 73 65 20 6e 61 6d 65 0d 0a 23 20 63 6f | te.a.new.method.whose.name..#.co |
| 37180 | 6d 65 73 20 66 72 6f 6d 20 61 20 76 61 72 69 61 62 6c 65 2c 20 73 6f 20 75 73 65 20 22 65 76 61 | mes.from.a.variable,.so.use."eva |
| 371a0 | 6c 22 0d 0a 63 6f 6c 6f 72 73 20 3d 20 25 77 28 72 65 64 20 62 6c 75 65 20 67 72 65 65 6e 20 79 | l"..colors.=.%w(red.blue.green.y |
| 371c0 | 65 6c 6c 6f 77 20 6f 72 61 6e 67 65 20 70 75 72 70 6c 65 20 76 69 6f 6c 65 74 29 0d 0a 63 6f 6c | ellow.orange.purple.violet)..col |
| 371e0 | 6f 72 73 2e 65 61 63 68 20 7b 20 7c 63 7c 0d 0a 20 20 20 20 65 76 61 6c 20 3c 3c 2d 45 4f 53 0d | ors.each.{.|c|......eval.<<-EOS. |
| 37200 | 0a 20 20 20 20 64 65 66 20 23 7b 63 7d 28 2a 61 29 0d 0a 20 20 20 20 20 20 20 20 22 3c 46 4f 4e | .....def.#{c}(*a).........."<FON |
| 37220 | 54 20 43 4f 4c 4f 52 3d 27 23 7b 63 7d 27 3e 22 20 2b 20 61 2e 74 6f 5f 73 20 2b 20 22 3c 2f 46 | T.COLOR='#{c}'>".+.a.to_s.+."</F |
| 37240 | 4f 4e 54 3e 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 45 4f 53 0d 0a 7d 0d 0a 0d 0a 0d 0a | ONT>"......end......EOS..}...... |
| 37260 | 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 31 35 0d 0a 64 65 66 20 6d 65 74 68 6f 64 5f 6d 69 | #.@@PLEAC@@_10.15..def.method_mi |
| 37280 | 73 73 69 6e 67 28 6e 61 6d 65 2c 20 2a 61 72 67 73 29 0d 0a 20 20 20 20 22 3c 46 4f 4e 54 20 43 | ssing(name,.*args)......"<FONT.C |
| 372a0 | 4f 4c 4f 52 3d 27 23 7b 6e 61 6d 65 7d 27 3e 22 20 2b 20 61 72 67 73 2e 6a 6f 69 6e 28 27 20 27 | OLOR='#{name}'>".+.args.join('.' |
| 372c0 | 29 20 2b 20 22 3c 2f 46 4f 4e 54 3e 22 0d 0a 65 6e 64 0d 0a 70 75 74 73 20 63 68 61 72 74 72 65 | ).+."</FONT>"..end..puts.chartre |
| 372e0 | 75 73 65 28 22 73 74 75 66 66 22 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 | use("stuff")......#.@@PLEAC@@_10 |
| 37300 | 2e 31 36 0d 0a 64 65 66 20 6f 75 74 65 72 28 61 72 67 29 0d 0a 20 20 20 20 78 20 3d 20 61 72 67 | .16..def.outer(arg)......x.=.arg |
| 37320 | 20 2b 20 33 35 0d 0a 20 20 20 20 69 6e 6e 65 72 20 3d 20 70 72 6f 63 20 7b 20 78 20 2a 20 31 39 | .+.35......inner.=.proc.{.x.*.19 |
| 37340 | 20 7d 0d 0a 20 20 20 20 78 20 2b 20 69 6e 6e 65 72 2e 63 61 6c 6c 28 29 0d 0a 65 6e 64 0d 0a 0d | .}......x.+.inner.call()..end... |
| 37360 | 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 30 2e 31 37 0d 0a 23 21 2f 75 73 72 2f 62 69 6e | ...#.@@PLEAC@@_10.17..#!/usr/bin |
| 37380 | 2f 72 75 62 79 20 2d 77 0d 0a 23 20 6d 61 69 6c 73 6f 72 74 20 2d 20 73 6f 72 74 20 6d 62 6f 78 | /ruby.-w..#.mailsort.-.sort.mbox |
| 373a0 | 20 62 79 20 64 69 66 66 65 72 65 6e 74 20 63 72 69 74 65 72 69 61 0d 0a 72 65 71 75 69 72 65 20 | .by.different.criteria..require. |
| 373c0 | 27 45 6e 67 6c 69 73 68 27 0d 0a 72 65 71 75 69 72 65 20 27 44 61 74 65 27 0d 0a 0d 0a 23 20 4f | 'English'..require.'Date'....#.O |
| 373e0 | 62 6a 65 63 74 73 20 6f 66 20 63 6c 61 73 73 20 4d 61 69 6c 20 72 65 70 72 65 73 65 6e 74 20 61 | bjects.of.class.Mail.represent.a |
| 37400 | 20 73 69 6e 67 6c 65 20 6d 61 69 6c 2e 0d 0a 63 6c 61 73 73 20 4d 61 69 6c 0d 0a 20 20 20 20 61 | .single.mail...class.Mail......a |
| 37420 | 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 6e 6f 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 | ttr_accessor.:no......attr_acces |
| 37440 | 73 6f 72 20 3a 73 75 62 6a 65 63 74 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 | sor.:subject......attr_accessor. |
| 37460 | 3a 66 75 6c 6c 74 65 78 74 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 64 61 | :fulltext......attr_accessor.:da |
| 37480 | 74 65 0d 0a 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 0d 0a 20 20 20 20 20 20 | te........def.initialize........ |
| 374a0 | 20 20 40 66 75 6c 6c 74 65 78 74 20 3d 20 22 22 0d 0a 20 20 20 20 20 20 20 20 40 73 75 62 6a 65 | ..@fulltext.=.""..........@subje |
| 374c0 | 63 74 20 3d 20 22 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 61 70 70 65 | ct.=.""......end........def.appe |
| 374e0 | 6e 64 28 70 61 72 61 29 0d 0a 20 20 20 20 20 20 20 20 40 66 75 6c 6c 74 65 78 74 20 3c 3c 20 70 | nd(para)..........@fulltext.<<.p |
| 37500 | 61 72 61 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 74 68 69 73 20 69 73 20 63 61 | ara......end........#.this.is.ca |
| 37520 | 6c 6c 65 64 20 69 66 20 79 6f 75 20 63 61 6c 6c 20 70 75 74 73 28 6d 61 69 6c 29 0d 0a 20 20 20 | lled.if.you.call.puts(mail)..... |
| 37540 | 20 64 65 66 20 74 6f 5f 73 0d 0a 20 20 20 20 20 20 20 20 40 66 75 6c 6c 74 65 78 74 0d 0a 20 20 | .def.to_s..........@fulltext.... |
| 37560 | 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 72 65 70 72 65 73 65 6e 74 73 20 61 20 6c 69 73 | ..end..end....#.represents.a.lis |
| 37580 | 74 20 6f 66 20 6d 61 69 6c 73 2e 0d 0a 63 6c 61 73 73 20 4d 61 69 6c 62 6f 78 20 3c 20 41 72 72 | t.of.mails...class.Mailbox.<.Arr |
| 375a0 | 61 79 0d 0a 0d 0a 20 20 20 20 53 75 62 6a 65 63 74 70 61 74 74 65 72 6e 20 3d 20 52 65 67 65 78 | ay........Subjectpattern.=.Regex |
| 375c0 | 70 2e 6e 65 77 28 27 53 75 62 6a 65 63 74 3a 5c 73 2a 28 3f 3a 52 65 3a 5c 73 2a 29 2a 28 2e 2a | p.new('Subject:\s*(?:Re:\s*)*(.* |
| 375e0 | 29 5c 6e 27 29 0d 0a 20 20 20 20 44 61 74 65 70 61 74 74 65 72 6e 20 3d 20 52 65 67 65 78 70 2e | )\n')......Datepattern.=.Regexp. |
| 37600 | 6e 65 77 28 27 44 61 74 65 3a 5c 73 2a 28 2e 2a 29 5c 6e 27 29 0d 0a 0d 0a 20 20 20 20 23 20 72 | new('Date:\s*(.*)\n')........#.r |
| 37620 | 65 61 64 73 20 6d 61 69 6c 73 20 66 72 6f 6d 20 6f 70 65 6e 20 66 69 6c 65 20 61 6e 64 20 73 74 | eads.mails.from.open.file.and.st |
| 37640 | 6f 72 65 73 20 74 68 65 6d 0d 0a 20 20 20 20 64 65 66 20 72 65 61 64 28 66 69 6c 65 29 0d 0a 20 | ores.them......def.read(file)... |
| 37660 | 20 20 20 20 20 20 20 24 49 4e 50 55 54 5f 52 45 43 4f 52 44 5f 53 45 50 41 52 41 54 4f 52 20 3d | .......$INPUT_RECORD_SEPARATOR.= |
| 37680 | 20 27 27 20 20 23 20 70 61 72 61 67 72 61 70 68 20 72 65 61 64 73 0d 0a 20 20 20 20 20 20 20 20 | .''..#.paragraph.reads.......... |
| 376a0 | 6d 73 67 6e 6f 20 3d 20 2d 31 0d 0a 20 20 20 20 20 20 20 20 66 69 6c 65 2e 65 61 63 68 20 7b 20 | msgno.=.-1..........file.each.{. |
| 376c0 | 7c 70 61 72 61 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 70 61 72 61 20 3d 7e 20 2f | |para|..............if.para.=~./ |
| 376e0 | 5e 46 72 6f 6d 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6c 20 3d 20 4d | ^From/..................mail.=.M |
| 37700 | 61 69 6c 2e 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6c 2e 6e 6f | ail.new..................mail.no |
| 37720 | 20 3d 20 28 6d 73 67 6e 6f 20 2b 3d 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .=.(msgno.+=.1)................. |
| 37740 | 20 6d 64 20 3d 20 53 75 62 6a 65 63 74 70 61 74 74 65 72 6e 2e 6d 61 74 63 68 28 70 61 72 61 29 | .md.=.Subjectpattern.match(para) |
| 37760 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d 64 0d 0a 20 20 20 20 20 20 20 | ..................if.md......... |
| 37780 | 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6c 2e 73 75 62 6a 65 63 74 20 3d 20 6d 64 5b 31 | .............mail.subject.=.md[1 |
| 377a0 | 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 | ]..................end.......... |
| 377c0 | 20 20 20 20 20 20 20 20 6d 64 20 3d 20 44 61 74 65 70 61 74 74 65 72 6e 2e 6d 61 74 63 68 28 70 | ........md.=.Datepattern.match(p |
| 377e0 | 61 72 61 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6d 64 0d 0a 20 20 20 | ara)..................if.md..... |
| 37800 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6c 2e 64 61 74 65 20 3d 20 44 61 74 | .................mail.date.=.Dat |
| 37820 | 65 54 69 6d 65 2e 70 61 72 73 65 28 6d 64 5b 31 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | eTime.parse(md[1]).............. |
| 37840 | 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 | ....else......................ma |
| 37860 | 69 6c 2e 64 61 74 65 20 3d 20 44 61 74 65 54 69 6d 65 2e 6e 6f 77 0d 0a 20 20 20 20 20 20 20 20 | il.date.=.DateTime.now.......... |
| 37880 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c | ........end..................sel |
| 378a0 | 66 2e 70 75 73 68 28 6d 61 69 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 | f.push(mail)..............end... |
| 378c0 | 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 6c 2e 61 70 70 65 6e 64 28 70 61 72 61 29 20 69 66 20 | ...........mail.append(para).if. |
| 378e0 | 6d 61 69 6c 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 | mail..........}......end........ |
| 37900 | 64 65 66 20 73 6f 72 74 5f 62 79 5f 73 75 62 6a 65 63 74 5f 61 6e 64 5f 6e 6f 0d 0a 20 20 20 20 | def.sort_by_subject_and_no...... |
| 37920 | 20 20 20 20 73 65 6c 66 2e 73 6f 72 74 5f 62 79 20 7b 20 7c 6d 7c 0d 0a 20 20 20 20 20 20 20 20 | ....self.sort_by.{.|m|.......... |
| 37940 | 20 20 20 20 5b 6d 2e 73 75 62 6a 65 63 74 2c 20 6d 2e 6e 6f 5d 0d 0a 20 20 20 20 20 20 20 20 7d | ....[m.subject,.m.no]..........} |
| 37960 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 73 6f 72 74 73 20 62 79 20 61 20 6c 69 | ......end........#.sorts.by.a.li |
| 37980 | 73 74 20 6f 66 20 61 74 74 72 69 62 75 74 73 20 6f 66 20 6d 61 69 6c 2c 20 67 69 76 65 6e 20 61 | st.of.attributs.of.mail,.given.a |
| 379a0 | 73 20 73 79 6d 62 6f 6c 73 0d 0a 20 20 20 20 64 65 66 20 73 6f 72 74 5f 62 79 5f 61 74 74 72 69 | s.symbols......def.sort_by_attri |
| 379c0 | 62 75 74 73 28 2a 61 74 74 72 73 29 0d 0a 20 20 20 20 20 20 20 20 23 20 79 6f 75 20 63 61 6e 20 | buts(*attrs)..........#.you.can. |
| 379e0 | 73 6f 72 74 20 61 6e 20 45 6e 75 6d 65 72 61 62 6c 65 20 62 79 20 61 6e 20 61 72 72 61 79 20 6f | sort.an.Enumerable.by.an.array.o |
| 37a00 | 66 0d 0a 20 20 20 20 20 20 20 20 23 20 76 61 6c 75 65 73 2c 20 74 68 65 79 20 77 6f 75 6c 64 20 | f..........#.values,.they.would. |
| 37a20 | 62 65 20 63 6f 6d 70 61 72 65 64 0d 0a 20 20 20 20 20 20 20 20 23 20 66 72 6f 6d 20 61 72 79 5b | be.compared..........#.from.ary[ |
| 37a40 | 30 5d 20 74 6f 20 61 72 79 5b 6e 5d 74 2c 20 73 61 79 3a 0d 0a 20 20 20 20 20 20 20 20 23 20 5b | 0].to.ary[n]t,.say:..........#.[ |
| 37a60 | 27 62 27 2c 31 5d 20 3e 20 5b 27 61 27 2c 31 30 5d 20 3e 20 5b 27 61 27 2c 39 5d 0d 0a 20 20 20 | 'b',1].>.['a',10].>.['a',9]..... |
| 37a80 | 20 20 20 20 20 73 65 6c 66 2e 73 6f 72 74 5f 62 79 20 7b 20 7c 65 6c 65 6d 7c 0d 0a 20 20 20 20 | .....self.sort_by.{.|elem|...... |
| 37aa0 | 20 20 20 20 20 20 20 20 61 74 74 72 73 2e 6d 61 70 20 7b 20 7c 61 74 74 72 7c 0d 0a 20 20 20 20 | ........attrs.map.{.|attr|...... |
| 37ac0 | 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 65 6d 2e 73 65 6e 64 28 61 74 74 72 29 0d 0a 20 20 20 | ............elem.send(attr)..... |
| 37ae0 | 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a | .........}..........}......end.. |
| 37b00 | 0d 0a 65 6e 64 0d 0a 0d 0a 6d 61 69 6c 62 6f 78 20 3d 20 4d 61 69 6c 62 6f 78 2e 6e 65 77 0d 0a | ..end....mailbox.=.Mailbox.new.. |
| 37b20 | 6d 61 69 6c 62 6f 78 2e 72 65 61 64 28 41 52 47 46 29 0d 0a 0d 0a 23 20 70 72 69 6e 74 20 6f 6e | mailbox.read(ARGF)....#.print.on |
| 37b40 | 6c 79 20 73 75 62 6a 65 63 74 73 20 73 6f 72 74 65 64 20 62 79 20 73 75 62 6a 65 63 74 20 61 6e | ly.subjects.sorted.by.subject.an |
| 37b60 | 64 20 6e 75 6d 62 65 72 0d 0a 66 6f 72 20 6d 20 69 6e 20 6d 61 69 6c 62 6f 78 2e 73 6f 72 74 5f | d.number..for.m.in.mailbox.sort_ |
| 37b80 | 62 79 5f 73 75 62 6a 65 63 74 5f 61 6e 64 5f 6e 6f 0d 0a 20 20 20 20 70 75 74 73 28 6d 2e 73 75 | by_subject_and_no......puts(m.su |
| 37ba0 | 62 6a 65 63 74 29 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 70 72 69 6e 74 20 63 6f 6d 70 6c 65 74 65 20 | bject)..end....#.print.complete. |
| 37bc0 | 6d 61 69 6c 73 20 73 6f 72 74 65 64 20 62 79 20 64 61 74 65 2c 20 74 68 65 6e 20 73 75 62 6a 65 | mails.sorted.by.date,.then.subje |
| 37be0 | 63 74 2c 20 74 68 65 6e 20 6e 75 6d 62 65 72 0d 0a 66 6f 72 20 6d 20 69 6e 20 6d 61 69 6c 62 6f | ct,.then.number..for.m.in.mailbo |
| 37c00 | 78 2e 73 6f 72 74 5f 62 79 5f 61 74 74 72 69 62 75 74 73 28 3a 64 61 74 65 2c 20 3a 73 75 62 6a | x.sort_by_attributs(:date,.:subj |
| 37c20 | 65 63 74 29 0d 0a 20 20 20 20 70 75 74 73 28 6d 29 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 | ect)......puts(m)..end......#.@@ |
| 37c40 | 50 4c 45 41 43 40 40 5f 31 31 2e 37 0d 0a 64 65 66 20 6d 6b 63 6f 75 6e 74 65 72 28 63 6f 75 6e | PLEAC@@_11.7..def.mkcounter(coun |
| 37c60 | 74 29 0d 0a 20 20 20 20 73 74 61 72 74 20 20 3d 20 63 6f 75 6e 74 0d 0a 20 20 20 20 62 75 6e 64 | t)......start..=.count......bund |
| 37c80 | 6c 65 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 22 4e 45 58 54 22 20 20 20 3d 3e 20 70 72 6f 63 | le.=.{.........."NEXT"...=>.proc |
| 37ca0 | 20 7b 20 63 6f 75 6e 74 20 2b 3d 20 31 20 7d 2c 0d 0a 20 20 20 20 20 20 20 20 22 50 52 45 56 22 | .{.count.+=.1.},.........."PREV" |
| 37cc0 | 20 20 20 3d 3e 20 70 72 6f 63 20 7b 20 63 6f 75 6e 74 20 2d 3d 20 31 20 7d 2c 0d 0a 20 20 20 20 | ...=>.proc.{.count.-=.1.},...... |
| 37ce0 | 20 20 20 20 22 52 45 53 45 54 22 20 20 3d 3e 20 70 72 6f 63 20 7b 20 63 6f 75 6e 74 20 3d 20 73 | ...."RESET"..=>.proc.{.count.=.s |
| 37d00 | 74 61 72 74 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 62 75 6e 64 6c 65 5b 22 4c 41 53 54 22 | tart.}......}......bundle["LAST" |
| 37d20 | 5d 20 3d 20 62 75 6e 64 6c 65 5b 22 50 52 45 56 22 5d 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 62 | ].=.bundle["PREV"]......return.b |
| 37d40 | 75 6e 64 6c 65 0d 0a 65 6e 64 0d 0a 0d 0a 63 31 20 3d 20 6d 6b 63 6f 75 6e 74 65 72 28 32 30 29 | undle..end....c1.=.mkcounter(20) |
| 37d60 | 0d 0a 63 32 20 3d 20 6d 6b 63 6f 75 6e 74 65 72 28 37 37 29 0d 0a 0d 0a 70 75 74 73 20 22 6e 65 | ..c2.=.mkcounter(77)....puts."ne |
| 37d80 | 78 74 20 63 31 3a 20 23 7b 63 31 5b 22 4e 45 58 54 22 5d 2e 63 61 6c 6c 7d 22 20 20 23 20 32 31 | xt.c1:.#{c1["NEXT"].call}"..#.21 |
| 37da0 | 0d 0a 70 75 74 73 20 22 6e 65 78 74 20 63 32 3a 20 23 7b 63 32 5b 22 4e 45 58 54 22 5d 2e 63 61 | ..puts."next.c2:.#{c2["NEXT"].ca |
| 37dc0 | 6c 6c 7d 22 20 20 23 20 37 38 0d 0a 70 75 74 73 20 22 6e 65 78 74 20 63 31 3a 20 23 7b 63 31 5b | ll}"..#.78..puts."next.c1:.#{c1[ |
| 37de0 | 22 4e 45 58 54 22 5d 2e 63 61 6c 6c 7d 22 20 20 23 20 32 32 0d 0a 70 75 74 73 20 22 6c 61 73 74 | "NEXT"].call}"..#.22..puts."last |
| 37e00 | 20 63 31 3a 20 23 7b 63 31 5b 22 50 52 45 56 22 5d 2e 63 61 6c 6c 7d 22 20 20 23 20 32 31 0d 0a | .c1:.#{c1["PREV"].call}"..#.21.. |
| 37e20 | 70 75 74 73 20 22 6c 61 73 74 20 63 31 3a 20 23 7b 63 31 5b 22 4c 41 53 54 22 5d 2e 63 61 6c 6c | puts."last.c1:.#{c1["LAST"].call |
| 37e40 | 7d 22 20 20 23 20 32 30 0d 0a 70 75 74 73 20 22 6f 6c 64 20 20 63 32 3a 20 23 7b 63 32 5b 22 52 | }"..#.20..puts."old..c2:.#{c2["R |
| 37e60 | 45 53 45 54 22 5d 2e 63 61 6c 6c 7d 22 20 23 20 37 37 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 | ESET"].call}".#.77......#.@@PLEA |
| 37e80 | 43 40 40 5f 31 31 2e 31 35 0d 0a 63 6c 61 73 73 20 42 69 6e 61 72 79 5f 74 72 65 65 0d 0a 20 20 | C@@_11.15..class.Binary_tree.... |
| 37ea0 | 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 76 61 6c 29 0d 0a 20 20 20 20 20 20 20 20 40 | ..def.initialize(val)..........@ |
| 37ec0 | 76 61 6c 75 65 20 3d 20 76 61 6c 0d 0a 20 20 20 20 20 20 20 20 40 6c 65 66 74 20 3d 20 6e 69 6c | value.=.val..........@left.=.nil |
| 37ee0 | 0d 0a 20 20 20 20 20 20 20 20 40 72 69 67 68 74 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 65 6e 64 0d | ..........@right.=.nil......end. |
| 37f00 | 0a 0d 0a 20 20 20 20 23 20 69 6e 73 65 72 74 20 67 69 76 65 6e 20 76 61 6c 75 65 20 69 6e 74 6f | .......#.insert.given.value.into |
| 37f20 | 20 70 72 6f 70 65 72 20 70 6f 69 6e 74 20 6f 66 0d 0a 20 20 20 20 23 20 70 72 6f 76 69 64 65 64 | .proper.point.of......#.provided |
| 37f40 | 20 74 72 65 65 2e 20 20 49 66 20 6e 6f 20 74 72 65 65 20 70 72 6f 76 69 64 65 64 2c 0d 0a 20 20 | .tree...If.no.tree.provided,.... |
| 37f60 | 20 20 23 20 75 73 65 20 69 6d 70 6c 69 63 69 74 20 70 61 73 73 20 62 79 20 72 65 66 65 72 65 6e | ..#.use.implicit.pass.by.referen |
| 37f80 | 63 65 20 61 73 70 65 63 74 20 6f 66 20 40 5f 0d 0a 20 20 20 20 23 20 74 6f 20 66 69 6c 6c 20 6f | ce.aspect.of.@_......#.to.fill.o |
| 37fa0 | 6e 65 20 69 6e 20 66 6f 72 20 6f 75 72 20 63 61 6c 6c 65 72 2e 0d 0a 20 20 20 20 64 65 66 20 69 | ne.in.for.our.caller.......def.i |
| 37fc0 | 6e 73 65 72 74 28 76 61 6c 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 20 3c 20 40 76 61 | nsert(val)..........if.val.<.@va |
| 37fe0 | 6c 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 40 6c 65 66 74 20 74 | lue.then..............if.@left.t |
| 38000 | 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 6c 65 66 74 2e 69 6e 73 65 72 | hen..................@left.inser |
| 38020 | 74 28 76 61 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 | t(val)..............else........ |
| 38040 | 20 20 20 20 20 20 20 20 20 20 40 6c 65 66 74 20 3d 20 42 69 6e 61 72 79 5f 74 72 65 65 2e 6e 65 | ..........@left.=.Binary_tree.ne |
| 38060 | 77 28 76 61 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 | w(val)..............end......... |
| 38080 | 20 65 6c 73 69 66 20 76 61 6c 20 3e 20 40 76 61 6c 75 65 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 | .elsif.val.>.@value.then........ |
| 380a0 | 20 20 20 20 20 20 69 66 20 40 72 69 67 68 74 20 74 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 | ......if.@right.then............ |
| 380c0 | 20 20 20 20 20 20 40 72 69 67 68 74 2e 69 6e 73 65 72 74 28 76 61 6c 29 0d 0a 20 20 20 20 20 20 | ......@right.insert(val)........ |
| 380e0 | 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 72 69 67 | ......else..................@rig |
| 38100 | 68 74 20 3d 20 42 69 6e 61 72 79 5f 74 72 65 65 2e 6e 65 77 28 76 61 6c 29 0d 0a 20 20 20 20 20 | ht.=.Binary_tree.new(val)....... |
| 38120 | 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 | .......end..........else........ |
| 38140 | 20 20 20 20 20 20 70 75 74 73 20 22 64 6f 75 62 6c 65 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | ......puts."double"............. |
| 38160 | 20 23 20 64 6f 20 6e 6f 74 68 69 6e 67 2c 20 6e 6f 20 64 6f 75 62 6c 65 20 76 61 6c 75 65 73 0d | .#.do.nothing,.no.double.values. |
| 38180 | 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 72 | .........end......end........#.r |
| 381a0 | 65 63 75 72 73 65 20 6f 6e 20 6c 65 66 74 20 63 68 69 6c 64 2c 0d 0a 20 20 20 20 23 20 74 68 65 | ecurse.on.left.child,......#.the |
| 381c0 | 6e 20 73 68 6f 77 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 23 20 74 68 65 | n.show.current.value,......#.the |
| 381e0 | 6e 20 72 65 63 75 72 73 65 20 6f 6e 20 72 69 67 68 74 20 63 68 69 6c 64 2e 0d 0a 20 20 20 20 64 | n.recurse.on.right.child.......d |
| 38200 | 65 66 20 69 6e 5f 6f 72 64 65 72 0d 0a 20 20 20 20 20 20 20 20 40 6c 65 66 74 2e 69 6e 5f 6f 72 | ef.in_order..........@left.in_or |
| 38220 | 64 65 72 20 69 66 20 40 6c 65 66 74 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 40 76 61 6c | der.if.@left..........print.@val |
| 38240 | 75 65 2c 20 22 20 22 0d 0a 20 20 20 20 20 20 20 20 40 72 69 67 68 74 2e 69 6e 5f 6f 72 64 65 72 | ue,."."..........@right.in_order |
| 38260 | 20 69 66 20 40 72 69 67 68 74 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 73 68 6f | .if.@right......end........#.sho |
| 38280 | 77 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 23 20 74 68 65 6e 20 72 65 63 | w.current.value,......#.then.rec |
| 382a0 | 75 72 73 65 20 6f 6e 20 6c 65 66 74 20 63 68 69 6c 64 2c 0d 0a 20 20 20 20 23 20 74 68 65 6e 20 | urse.on.left.child,......#.then. |
| 382c0 | 72 65 63 75 72 73 65 20 6f 6e 20 72 69 67 68 74 20 63 68 69 6c 64 2e 0d 0a 20 20 20 20 64 65 66 | recurse.on.right.child.......def |
| 382e0 | 20 70 72 65 5f 6f 72 64 65 72 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 40 76 61 6c 75 65 | .pre_order..........print.@value |
| 38300 | 2c 20 22 20 22 0d 0a 20 20 20 20 20 20 20 20 40 6c 65 66 74 2e 70 72 65 5f 6f 72 64 65 72 20 69 | ,."."..........@left.pre_order.i |
| 38320 | 66 20 40 6c 65 66 74 0d 0a 20 20 20 20 20 20 20 20 40 72 69 67 68 74 2e 70 72 65 5f 6f 72 64 65 | f.@left..........@right.pre_orde |
| 38340 | 72 20 69 66 20 40 72 69 67 68 74 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 72 65 | r.if.@right......end........#.re |
| 38360 | 63 75 72 73 65 20 6f 6e 20 6c 65 66 74 20 63 68 69 6c 64 2c 0d 0a 20 20 20 20 23 20 74 68 65 6e | curse.on.left.child,......#.then |
| 38380 | 20 72 65 63 75 72 73 65 20 6f 6e 20 72 69 67 68 74 20 63 68 69 6c 64 2c 0d 0a 20 20 20 20 23 20 | .recurse.on.right.child,......#. |
| 383a0 | 74 68 65 6e 20 73 68 6f 77 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 64 65 | then.show.current.value.......de |
| 383c0 | 66 20 70 6f 73 74 5f 6f 72 64 65 72 0d 0a 20 20 20 20 20 20 20 20 40 6c 65 66 74 2e 70 6f 73 74 | f.post_order..........@left.post |
| 383e0 | 5f 6f 72 64 65 72 20 69 66 20 40 6c 65 66 74 0d 0a 20 20 20 20 20 20 20 20 40 72 69 67 68 74 2e | _order.if.@left..........@right. |
| 38400 | 70 6f 73 74 5f 6f 72 64 65 72 20 69 66 20 40 72 69 67 68 74 0d 0a 20 20 20 20 20 20 20 20 70 72 | post_order.if.@right..........pr |
| 38420 | 69 6e 74 20 40 76 61 6c 75 65 2c 20 22 20 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 | int.@value,."."......end........ |
| 38440 | 23 20 66 69 6e 64 20 6f 75 74 20 77 68 65 74 68 65 72 20 70 72 6f 76 69 64 65 64 20 76 61 6c 75 | #.find.out.whether.provided.valu |
| 38460 | 65 20 69 73 20 69 6e 20 74 68 65 20 74 72 65 65 2e 0d 0a 20 20 20 20 23 20 69 66 20 73 6f 2c 20 | e.is.in.the.tree.......#.if.so,. |
| 38480 | 72 65 74 75 72 6e 20 74 68 65 20 6e 6f 64 65 20 61 74 20 77 68 69 63 68 20 74 68 65 20 76 61 6c | return.the.node.at.which.the.val |
| 384a0 | 75 65 20 77 61 73 20 66 6f 75 6e 64 2e 0d 0a 20 20 20 20 23 20 63 75 74 20 64 6f 77 6e 20 73 65 | ue.was.found.......#.cut.down.se |
| 384c0 | 61 72 63 68 20 74 69 6d 65 20 62 79 20 6f 6e 6c 79 20 6c 6f 6f 6b 69 6e 67 20 69 6e 20 74 68 65 | arch.time.by.only.looking.in.the |
| 384e0 | 20 63 6f 72 72 65 63 74 0d 0a 20 20 20 20 23 20 62 72 61 6e 63 68 2c 20 62 61 73 65 64 20 6f 6e | .correct......#.branch,.based.on |
| 38500 | 20 63 75 72 72 65 6e 74 20 76 61 6c 75 65 2e 0d 0a 20 20 20 20 64 65 66 20 73 65 61 72 63 68 28 | .current.value.......def.search( |
| 38520 | 76 61 6c 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 20 3d 3d 20 40 76 61 6c 75 65 20 74 | val)..........if.val.==.@value.t |
| 38540 | 68 65 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 65 6c 66 0d 0a 20 20 | hen..............return.self.... |
| 38560 | 20 20 20 20 20 20 65 6c 73 69 66 20 76 61 6c 20 3c 20 40 76 61 6c 75 65 20 74 68 65 6e 0d 0a 20 | ......elsif.val.<.@value.then... |
| 38580 | 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 40 6c 65 66 74 2e 73 65 61 72 63 68 28 76 | ...........return.@left.search(v |
| 385a0 | 61 6c 29 20 69 66 20 40 6c 65 66 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e | al).if.@left..............return |
| 385c0 | 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .nil..........else.............. |
| 385e0 | 72 65 74 75 72 6e 20 40 72 69 67 68 74 2e 73 65 61 72 63 68 28 76 61 6c 29 20 69 66 20 40 72 69 | return.@right.search(val).if.@ri |
| 38600 | 67 68 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 69 6c 0d 0a 20 20 20 | ght..............return.nil..... |
| 38620 | 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 66 69 72 73 | .....end......end..end....#.firs |
| 38640 | 74 20 67 65 6e 65 72 61 74 65 20 32 30 20 72 61 6e 64 6f 6d 20 69 6e 73 65 72 74 73 0d 0a 74 65 | t.generate.20.random.inserts..te |
| 38660 | 73 74 20 3d 20 42 69 6e 61 72 79 5f 74 72 65 65 2e 6e 65 77 28 30 29 0d 0a 66 6f 72 20 61 20 69 | st.=.Binary_tree.new(0)..for.a.i |
| 38680 | 6e 20 30 2e 2e 32 30 0d 0a 20 20 20 20 74 65 73 74 2e 69 6e 73 65 72 74 28 72 61 6e 64 28 31 30 | n.0..20......test.insert(rand(10 |
| 386a0 | 30 30 29 29 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 6e 6f 77 20 64 75 6d 70 20 6f 75 74 20 74 68 65 20 | 00))..end....#.now.dump.out.the. |
| 386c0 | 74 72 65 65 20 61 6c 6c 20 74 68 72 65 65 20 77 61 79 73 0d 0a 70 72 69 6e 74 20 22 50 72 65 20 | tree.all.three.ways..print."Pre. |
| 386e0 | 6f 72 64 65 72 3a 20 20 22 3b 20 20 74 65 73 74 2e 70 72 65 5f 6f 72 64 65 72 3b 20 20 70 75 74 | order:..";..test.pre_order;..put |
| 38700 | 73 20 22 22 0d 0a 70 72 69 6e 74 20 22 49 6e 20 6f 72 64 65 72 3a 20 20 22 3b 20 20 74 65 73 74 | s.""..print."In.order:..";..test |
| 38720 | 2e 69 6e 5f 6f 72 64 65 72 3b 20 20 70 75 74 73 20 22 22 0d 0a 70 72 69 6e 74 20 22 50 6f 73 74 | .in_order;..puts.""..print."Post |
| 38740 | 20 6f 72 64 65 72 3a 20 20 22 3b 20 20 74 65 73 74 2e 70 6f 73 74 5f 6f 72 64 65 72 3b 20 20 70 | .order:..";..test.post_order;..p |
| 38760 | 75 74 73 20 22 22 0d 0a 0d 0a 70 72 69 6e 74 20 22 73 65 61 72 63 68 3f 22 0d 0a 77 68 69 6c 65 | uts.""....print."search?"..while |
| 38780 | 20 67 65 74 73 0d 0a 20 20 20 20 70 72 69 6e 74 20 74 65 73 74 2e 73 65 61 72 63 68 28 24 5f 2e | .gets......print.test.search($_. |
| 387a0 | 74 6f 5f 69 29 0d 0a 20 20 20 20 70 72 69 6e 74 20 22 5c 6e 73 65 61 72 63 68 3f 22 0d 0a 65 6e | to_i)......print."\nsearch?"..en |
| 387c0 | 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 32 2e 30 0d 0a 23 20 63 6c 61 73 73 | d......#.@@PLEAC@@_12.0..#.class |
| 387e0 | 20 61 6e 64 20 6d 6f 64 75 6c 65 20 6e 61 6d 65 73 20 6e 65 65 64 20 74 6f 20 68 61 76 65 20 74 | .and.module.names.need.to.have.t |
| 38800 | 68 65 20 66 69 72 73 74 20 6c 65 74 74 65 72 20 63 61 70 69 74 61 6c 69 7a 65 64 0d 0a 6d 6f 64 | he.first.letter.capitalized..mod |
| 38820 | 75 6c 65 20 41 6c 70 68 61 0d 0a 20 20 20 20 4e 41 4d 45 20 3d 20 27 66 69 72 73 74 27 0d 0a 65 | ule.Alpha......NAME.=.'first'..e |
| 38840 | 6e 64 0d 0a 6d 6f 64 75 6c 65 20 4f 6d 65 67 61 0d 0a 20 20 20 20 4e 41 4d 45 20 3d 20 27 6c 61 | nd..module.Omega......NAME.=.'la |
| 38860 | 73 74 27 0d 0a 65 6e 64 0d 0a 70 75 74 73 20 22 41 6c 70 68 61 20 69 73 20 23 7b 41 6c 70 68 61 | st'..end..puts."Alpha.is.#{Alpha |
| 38880 | 3a 3a 4e 41 4d 45 7d 2c 20 4f 6d 65 67 61 20 69 73 20 23 7b 4f 6d 65 67 61 3a 3a 4e 41 4d 45 7d | ::NAME},.Omega.is.#{Omega::NAME} |
| 388a0 | 22 0d 0a 0d 0a 23 20 72 75 62 79 20 64 6f 65 73 6e 27 74 20 64 69 66 66 65 72 65 6e 74 69 61 74 | "....#.ruby.doesn't.differentiat |
| 388c0 | 65 20 62 65 74 65 65 6e 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20 61 6e 64 20 72 75 6e 2d 74 69 | e.beteen.compile-time.and.run-ti |
| 388e0 | 6d 65 0d 0a 72 65 71 75 69 72 65 20 27 67 65 74 6f 70 74 6c 6f 6e 67 2e 72 62 27 0d 0a 72 65 71 | me..require.'getoptlong.rb'..req |
| 38900 | 75 69 72 65 20 27 67 65 74 6f 70 74 6c 6f 6e 67 27 20 20 20 20 20 23 20 61 73 73 75 6d 65 73 20 | uire.'getoptlong'.....#.assumes. |
| 38920 | 74 68 65 20 2e 72 62 0d 0a 72 65 71 75 69 72 65 20 27 63 61 72 64 73 2f 70 6f 6b 65 72 2e 72 62 | the..rb..require.'cards/poker.rb |
| 38940 | 27 0d 0a 72 65 71 75 69 72 65 20 27 63 61 72 64 73 2f 70 6f 6b 65 72 27 20 20 20 20 23 20 61 73 | '..require.'cards/poker'....#.as |
| 38960 | 73 75 6d 65 73 20 74 68 65 20 2e 72 62 0d 0a 6c 6f 61 64 20 20 20 20 27 63 61 72 64 73 2f 70 6f | sumes.the..rb..load....'cards/po |
| 38980 | 6b 65 72 27 20 20 20 20 23 20 72 65 71 75 69 72 65 20 6f 6e 6c 79 20 6c 6f 61 64 73 20 74 68 65 | ker'....#.require.only.loads.the |
| 389a0 | 20 66 69 6c 65 20 6f 6e 63 65 0d 0a 0d 0a 6d 6f 64 75 6c 65 20 43 61 72 64 73 0d 0a 20 20 20 20 | .file.once....module.Cards...... |
| 389c0 | 6d 6f 64 75 6c 65 20 50 6f 6b 65 72 0d 0a 20 20 20 20 20 20 20 20 40 63 61 72 64 5f 64 65 63 6b | module.Poker..........@card_deck |
| 389e0 | 20 3d 20 41 72 72 61 79 2e 6e 65 77 20 23 20 6f 72 20 40 63 61 72 64 5f 64 65 63 6b 20 3d 20 5b | .=.Array.new.#.or.@card_deck.=.[ |
| 38a00 | 5d 0d 0a 20 20 20 20 20 20 20 20 64 65 66 20 73 68 75 66 66 6c 65 0d 0a 20 20 20 20 20 20 20 20 | ]..........def.shuffle.......... |
| 38a20 | 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | end......end..end......#.@@PLEAC |
| 38a40 | 40 40 5f 31 32 2e 31 0d 0a 23 20 61 20 6d 6f 64 75 6c 65 20 65 78 70 6f 72 74 73 20 61 6c 6c 20 | @@_12.1..#.a.module.exports.all. |
| 38a60 | 6f 66 20 69 74 73 20 66 75 6e 63 74 69 6f 6e 73 0d 0a 6d 6f 64 75 6c 65 20 59 6f 75 72 5f 4d 6f | of.its.functions..module.Your_Mo |
| 38a80 | 64 75 6c 65 0d 0a 20 20 20 20 64 65 66 20 73 65 6c 66 2e 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 | dule......def.self.function..... |
| 38aa0 | 20 20 20 20 20 23 20 74 68 69 73 20 77 6f 75 6c 64 20 62 65 20 63 61 6c 6c 65 64 20 61 73 20 59 | .....#.this.would.be.called.as.Y |
| 38ac0 | 6f 75 72 5f 4d 6f 64 75 6c 65 2e 66 75 6e 63 74 69 6f 6e 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a | our_Module.function......end.... |
| 38ae0 | 20 20 20 20 64 65 66 20 59 6f 75 72 5f 4d 6f 64 75 6c 65 2e 61 6e 6f 74 68 65 72 0d 0a 20 20 20 | ....def.Your_Module.another..... |
| 38b00 | 20 20 20 20 20 23 20 74 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 61 62 6f 76 65 | .....#.this.is.the.same.as.above |
| 38b20 | 2c 20 62 75 74 20 6d 6f 72 65 20 73 70 65 63 69 66 69 63 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e | ,.but.more.specific......end..en |
| 38b40 | 64 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 32 2e 32 0d 0a 62 65 67 69 6e 0d 0a 20 20 | d....#.@@PLEAC@@_12.2..begin.... |
| 38b60 | 20 20 72 65 71 75 69 72 65 20 27 6e 6f 6e 65 78 69 73 74 65 6e 74 27 0d 0a 72 65 73 63 75 65 20 | ..require.'nonexistent'..rescue. |
| 38b80 | 4c 6f 61 64 45 72 72 6f 72 0d 0a 20 20 20 20 70 75 74 73 20 22 43 6f 75 6c 64 6e 27 74 20 6c 6f | LoadError......puts."Couldn't.lo |
| 38ba0 | 61 64 20 23 7b 24 21 7d 22 20 20 23 20 24 21 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 6c 61 73 | ad.#{$!}"..#.$!.contains.the.las |
| 38bc0 | 74 20 65 72 72 6f 72 20 73 74 72 69 6e 67 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | t.error.string..end....#.@@PLEAC |
| 38be0 | 40 40 5f 31 32 2e 34 0d 0a 23 20 6d 6f 64 75 6c 65 20 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 | @@_12.4..#.module.variables.are. |
| 38c00 | 70 72 69 76 61 74 65 20 75 6e 6c 65 73 73 20 61 63 63 65 73 73 20 66 75 6e 63 74 69 6f 6e 73 20 | private.unless.access.functions. |
| 38c20 | 61 72 65 20 64 65 66 69 6e 65 64 0d 0a 6d 6f 64 75 6c 65 20 41 6c 70 68 61 0d 0a 20 20 20 20 40 | are.defined..module.Alpha......@ |
| 38c40 | 61 61 20 3d 20 31 30 0d 0a 20 20 20 20 40 62 62 20 3d 20 31 31 0d 0a 0d 0a 20 20 20 20 64 65 66 | aa.=.10......@bb.=.11........def |
| 38c60 | 20 73 65 6c 66 2e 70 75 74 5f 61 61 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 40 61 61 0d 0a | .self.put_aa..........puts.@aa.. |
| 38c80 | 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 73 65 6c 66 2e 62 62 3d 28 76 61 6c 29 | ....end........def.self.bb=(val) |
| 38ca0 | 0d 0a 20 20 20 20 20 20 20 20 40 62 62 20 3d 20 76 61 6c 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e | ..........@bb.=.val......end..en |
| 38cc0 | 64 0d 0a 0d 0a 41 6c 70 68 61 2e 62 62 20 3d 20 31 32 0d 0a 23 20 41 6c 70 68 61 2e 61 61 20 3d | d....Alpha.bb.=.12..#.Alpha.aa.= |
| 38ce0 | 20 31 30 20 23 20 65 72 72 6f 72 2c 20 6e 6f 20 61 61 3d 6d 65 74 68 6f 64 0d 0a 0d 0a 0d 0a 23 | .10.#.error,.no.aa=method......# |
| 38d00 | 20 40 40 50 4c 45 41 43 40 40 5f 31 32 2e 35 0d 0a 23 20 63 61 6c 6c 65 72 20 70 72 6f 76 69 64 | .@@PLEAC@@_12.5..#.caller.provid |
| 38d20 | 65 73 20 61 20 62 61 63 6b 74 72 61 63 65 20 6f 66 20 74 68 65 20 63 61 6c 6c 20 73 74 61 63 6b | es.a.backtrace.of.the.call.stack |
| 38d40 | 0d 0a 6d 6f 64 75 6c 65 20 4d 79 4d 6f 64 75 6c 65 0d 0a 20 20 20 20 64 65 66 20 66 69 6e 64 5f | ..module.MyModule......def.find_ |
| 38d60 | 63 61 6c 6c 65 72 0d 0a 20 20 20 20 20 20 20 20 63 61 6c 6c 65 72 0d 0a 20 20 20 20 65 6e 64 0d | caller..........caller......end. |
| 38d80 | 0a 0d 0a 20 20 20 20 64 65 66 20 66 69 6e 64 5f 63 61 6c 6c 65 72 32 28 69 29 0d 0a 20 20 20 20 | .......def.find_caller2(i)...... |
| 38da0 | 20 20 20 20 63 61 6c 6c 65 72 28 69 29 20 23 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 6c 69 6d 69 | ....caller(i).#.an.argument.limi |
| 38dc0 | 74 73 20 74 68 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 74 61 63 6b 20 72 65 74 75 72 6e 65 | ts.the.size.of.the.stack.returne |
| 38de0 | 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | d......end..end......#.@@PLEAC@@ |
| 38e00 | 5f 31 32 2e 36 0d 0a 42 45 47 49 4e 20 7b 0d 0a 20 20 20 20 24 6c 6f 67 66 69 6c 65 20 3d 20 27 | _12.6..BEGIN.{......$logfile.=.' |
| 38e20 | 2f 74 6d 70 2f 6d 79 6c 6f 67 27 20 75 6e 6c 65 73 73 20 64 65 66 69 6e 65 64 3f 20 24 6c 6f 67 | /tmp/mylog'.unless.defined?.$log |
| 38e40 | 66 69 6c 65 0d 0a 20 20 20 20 24 4c 46 20 3d 20 46 69 6c 65 2e 6f 70 65 6e 28 24 6c 6f 67 66 69 | file......$LF.=.File.open($logfi |
| 38e60 | 6c 65 2c 20 27 61 27 29 0d 0a 7d 0d 0a 0d 0a 6d 6f 64 75 6c 65 20 4c 6f 67 67 65 72 0d 0a 20 20 | le,.'a')..}....module.Logger.... |
| 38e80 | 20 20 64 65 66 20 73 65 6c 66 2e 6c 6f 67 6d 73 67 28 6d 73 67 29 0d 0a 20 20 20 20 20 20 20 20 | ..def.self.logmsg(msg).......... |
| 38ea0 | 24 4c 46 2e 70 75 74 73 20 6d 73 67 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 6c 6f 67 | $LF.puts.msg......end........log |
| 38ec0 | 6d 73 67 28 27 73 74 61 72 74 75 70 27 29 0d 0a 65 6e 64 0d 0a 0d 0a 45 4e 44 20 7b 0d 0a 20 20 | msg('startup')..end....END.{.... |
| 38ee0 | 20 20 4c 6f 67 67 65 72 3a 3a 6c 6f 67 6d 73 67 28 27 73 68 75 74 64 6f 77 6e 27 29 0d 0a 20 20 | ..Logger::logmsg('shutdown').... |
| 38f00 | 20 20 24 4c 46 2e 63 6c 6f 73 65 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f | ..$LF.close..}......#.@@PLEAC@@_ |
| 38f20 | 31 32 2e 37 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | 12.7..#------------------------- |
| 38f40 | 2d 2d 2d 2d 0d 0a 23 20 72 65 73 75 6c 74 73 20 6d 61 79 20 62 65 20 64 69 66 66 65 72 65 6e 74 | ----..#.results.may.be.different |
| 38f60 | 20 6f 6e 20 79 6f 75 72 20 73 79 73 74 65 6d 0d 0a 23 20 25 20 72 75 62 79 20 2d 65 20 22 24 4c | .on.your.system..#.%.ruby.-e."$L |
| 38f80 | 4f 41 44 5f 50 41 54 48 2e 65 61 63 68 5f 69 6e 64 65 78 20 7b 20 7c 69 7c 20 70 72 69 6e 74 66 | OAD_PATH.each_index.{.|i|.printf |
| 38fa0 | 28 22 25 64 20 25 73 5c 6e 22 2c 20 69 2c 20 24 4c 4f 41 44 5f 50 41 54 48 5b 69 5d 20 7d 0d 0a | ("%d.%s\n",.i,.$LOAD_PATH[i].}.. |
| 38fc0 | 23 30 20 2f 75 73 72 2f 6c 6f 63 61 6c 2f 6c 69 62 2f 73 69 74 65 5f 72 75 62 79 2f 31 2e 36 0d | #0./usr/local/lib/site_ruby/1.6. |
| 38fe0 | 0a 23 31 20 2f 75 73 72 2f 6c 6f 63 61 6c 2f 6c 69 62 2f 73 69 74 65 5f 72 75 62 79 2f 31 2e 36 | .#1./usr/local/lib/site_ruby/1.6 |
| 39000 | 2f 69 33 38 36 2d 6c 69 6e 75 78 0d 0a 23 32 20 2f 75 73 72 2f 6c 6f 63 61 6c 2f 6c 69 62 2f 73 | /i386-linux..#2./usr/local/lib/s |
| 39020 | 69 74 65 5f 72 75 62 79 2f 0d 0a 23 33 20 2f 75 73 72 2f 6c 69 62 2f 72 75 62 79 2f 31 2e 36 0d | ite_ruby/..#3./usr/lib/ruby/1.6. |
| 39040 | 0a 23 34 20 2f 75 73 72 2f 6c 69 62 2f 72 75 62 79 2f 31 2e 36 2f 69 31 33 36 2d 6c 69 6e 75 78 | .#4./usr/lib/ruby/1.6/i136-linux |
| 39060 | 0d 0a 23 35 20 2e 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#5....#----------------------- |
| 39080 | 2d 2d 2d 2d 2d 2d 0d 0a 23 20 73 79 6e 74 61 78 20 66 6f 72 20 73 68 2c 20 62 61 73 68 2c 20 6b | ------..#.syntax.for.sh,.bash,.k |
| 390a0 | 73 68 2c 20 6f 72 20 7a 73 68 0d 0a 23 24 20 65 78 70 6f 72 74 20 52 55 42 59 4c 49 42 3d 24 48 | sh,.or.zsh..#$.export.RUBYLIB=$H |
| 390c0 | 4f 4d 45 2f 72 75 62 79 6c 69 62 0d 0a 0d 0a 23 20 73 79 6e 74 61 78 20 66 6f 72 20 63 73 68 20 | OME/rubylib....#.syntax.for.csh. |
| 390e0 | 6f 72 20 74 63 73 68 0d 0a 23 20 25 20 73 65 74 65 6e 76 20 52 55 42 59 4c 49 42 20 7e 2f 72 75 | or.tcsh..#.%.setenv.RUBYLIB.~/ru |
| 39100 | 62 79 6c 69 62 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | bylib..#------------------------ |
| 39120 | 2d 2d 2d 2d 2d 0d 0a 24 4c 4f 41 44 5f 50 41 54 48 2e 75 6e 73 68 69 66 74 20 22 2f 70 72 6f 6a | -----..$LOAD_PATH.unshift."/proj |
| 39140 | 65 63 74 73 2f 73 70 65 63 74 72 65 2f 6c 69 62 22 3b 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 | ects/spectre/lib";......#.@@PLEA |
| 39160 | 43 40 40 5f 31 32 2e 38 0d 0a 23 20 65 71 75 69 76 61 6c 65 6e 74 73 20 69 6e 20 72 75 62 79 20 | C@@_12.8..#.equivalents.in.ruby. |
| 39180 | 61 72 65 20 6d 6b 6d 66 2c 20 53 57 49 47 2c 20 6f 72 20 52 75 62 79 2f 44 4c 20 64 65 70 65 6e | are.mkmf,.SWIG,.or.Ruby/DL.depen |
| 391a0 | 64 69 6e 67 20 6f 6e 20 75 73 61 67 65 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 | ding.on.usage......#.@@PLEAC@@_1 |
| 391c0 | 32 2e 39 0d 0a 23 20 6e 6f 20 65 71 75 69 76 61 6c 65 6e 74 20 69 6e 20 72 75 62 79 0d 0a 0d 0a | 2.9..#.no.equivalent.in.ruby.... |
| 391e0 | 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 32 2e 31 30 0d 0a 23 20 6e 6f 20 65 71 75 69 76 61 | ..#.@@PLEAC@@_12.10..#.no.equiva |
| 39200 | 6c 65 6e 74 20 69 6e 20 72 75 62 79 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 32 | lent.in.ruby......#.@@PLEAC@@_12 |
| 39220 | 2e 31 31 0d 0a 6d 6f 64 75 6c 65 20 46 69 6e 65 54 69 6d 65 0d 0a 20 20 20 20 64 65 66 20 73 65 | .11..module.FineTime......def.se |
| 39240 | 6c 66 2e 74 69 6d 65 0d 0a 20 20 20 20 20 20 20 20 23 20 74 6f 20 62 65 20 64 65 66 69 6e 65 64 | lf.time..........#.to.be.defined |
| 39260 | 20 6c 61 74 65 72 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 6d 6f 64 75 6c 65 | .later......end..end......module |
| 39280 | 20 46 69 6e 65 54 69 6d 65 0d 0a 20 20 20 20 64 65 66 20 73 65 6c 66 2e 74 69 6d 65 0d 0a 20 20 | .FineTime......def.self.time.... |
| 392a0 | 20 20 20 20 20 20 22 69 74 73 20 61 20 66 69 6e 65 20 74 69 6d 65 22 0d 0a 20 20 20 20 65 6e 64 | ......"its.a.fine.time"......end |
| 392c0 | 0d 0a 65 6e 64 0d 0a 0d 0a 70 75 74 73 20 46 69 6e 65 54 69 6d 65 2e 74 69 6d 65 20 23 3d 3e 20 | ..end....puts.FineTime.time.#=>. |
| 392e0 | 22 69 74 73 20 61 20 66 69 6e 65 20 74 69 6d 65 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | "its.a.fine.time"......#.@@PLEAC |
| 39300 | 40 40 5f 31 32 2e 31 32 0d 0a 64 65 66 20 65 76 65 6e 5f 6f 6e 6c 79 28 6e 29 0d 0a 20 20 20 20 | @@_12.12..def.even_only(n)...... |
| 39320 | 72 61 69 73 65 20 22 23 7b 6e 7d 20 69 73 20 6e 6f 74 20 65 76 65 6e 22 20 69 66 20 28 6e 20 26 | raise."#{n}.is.not.even".if.(n.& |
| 39340 | 20 31 29 20 21 3d 20 30 20 20 23 20 6f 6e 65 20 77 61 79 20 74 6f 20 74 65 73 74 0d 0a 20 20 20 | .1).!=.0..#.one.way.to.test..... |
| 39360 | 20 23 20 2e 2e 2e 0d 0a 65 6e 64 0d 0a 64 65 66 20 65 76 65 6e 5f 6f 6e 6c 79 28 6e 29 0d 0a 20 | .#......end..def.even_only(n)... |
| 39380 | 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 20 22 23 7b 6e 7d 20 69 73 20 6e 6f 74 20 65 76 65 | ...$stderr.puts."#{n}.is.not.eve |
| 393a0 | 6e 22 20 69 66 20 28 6e 20 26 20 31 29 20 21 3d 20 30 0d 0a 20 20 20 20 23 20 2e 2e 2e 0d 0a 65 | n".if.(n.&.1).!=.0......#......e |
| 393c0 | 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 32 2e 31 37 0d 0a 23 20 54 68 65 | nd......#.@@PLEAC@@_12.17..#.The |
| 393e0 | 20 6c 69 62 72 61 72 79 20 61 72 63 68 69 76 65 20 66 6f 72 20 72 75 62 79 20 69 73 20 63 61 6c | .library.archive.for.ruby.is.cal |
| 39400 | 6c 65 64 20 52 75 62 79 20 41 70 70 6c 69 63 61 74 69 6f 6e 20 61 72 63 68 69 76 65 2c 0d 0a 23 | led.Ruby.Application.archive,..# |
| 39420 | 20 6f 72 20 73 68 6f 72 74 65 72 20 52 41 41 2c 20 61 6e 64 20 63 61 6e 20 62 65 20 66 6f 75 6e | .or.shorter.RAA,.and.can.be.foun |
| 39440 | 64 20 61 74 20 68 74 74 70 3a 2f 2f 72 61 61 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2e 0d 0a | d.at.http://raa.ruby-lang.org... |
| 39460 | 23 20 41 20 74 79 70 69 63 61 6c 20 6c 69 62 72 61 72 79 20 69 73 20 69 6e 73 74 61 6c 6c 65 64 | #.A.typical.library.is.installed |
| 39480 | 20 6c 69 6b 65 20 74 68 69 73 3a 0d 0a 23 20 25 20 67 75 6e 7a 69 70 20 73 6f 6d 65 2d 6d 6f 64 | .like.this:..#.%.gunzip.some-mod |
| 394a0 | 75 6c 65 2d 34 2e 35 34 2e 74 61 72 2e 67 7a 0d 0a 23 20 25 20 74 61 72 20 78 66 20 73 6f 6d 65 | ule-4.54.tar.gz..#.%.tar.xf.some |
| 394c0 | 2d 6d 6f 64 75 6c 65 2d 34 2e 35 34 2e 74 61 72 0d 0a 23 20 25 20 63 64 20 73 6f 6d 65 2d 6d 6f | -module-4.54.tar..#.%.cd.some-mo |
| 394e0 | 64 75 6c 65 2d 34 2e 35 34 2e 74 61 72 0d 0a 23 20 25 20 72 75 62 79 20 69 6e 73 74 61 6c 6c 2e | dule-4.54.tar..#.%.ruby.install. |
| 39500 | 72 62 20 63 6f 6e 66 69 67 0d 0a 23 20 25 20 72 75 62 79 20 69 6e 73 74 61 6c 6c 2e 72 62 20 73 | rb.config..#.%.ruby.install.rb.s |
| 39520 | 65 74 75 70 0d 0a 23 20 67 65 74 20 73 75 70 65 72 75 73 65 72 20 70 72 65 76 69 6c 65 67 65 73 | etup..#.get.superuser.previleges |
| 39540 | 20 68 65 72 65 20 69 66 20 6e 65 65 64 65 64 20 66 6f 72 20 6e 65 78 74 20 73 74 65 70 0d 0a 23 | .here.if.needed.for.next.step..# |
| 39560 | 20 25 20 72 75 62 79 20 69 6e 73 74 61 6c 6c 2e 72 62 20 69 6e 73 74 61 6c 6c 0d 0a 0d 0a 23 20 | .%.ruby.install.rb.install....#. |
| 39580 | 53 6f 6d 65 20 6d 6f 64 75 6c 65 73 20 75 73 65 20 61 20 64 69 66 66 65 72 65 6e 74 20 70 72 6f | Some.modules.use.a.different.pro |
| 395a0 | 63 65 73 73 2c 0d 0a 23 20 79 6f 75 20 73 68 6f 75 6c 64 20 66 69 6e 64 20 64 65 74 61 69 6c 73 | cess,..#.you.should.find.details |
| 395c0 | 20 69 6e 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 0d 0a 23 20 48 65 72 65 20 69 73 | .in.the.documentation..#.Here.is |
| 395e0 | 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20 73 75 63 68 20 61 20 64 69 66 66 65 72 65 6e 74 20 | .an.example.of.such.a.different. |
| 39600 | 70 72 6f 63 65 73 73 0d 0a 23 20 25 20 72 75 62 79 20 65 78 74 63 6f 6e 66 2e 72 62 0d 0a 23 20 | process..#.%.ruby.extconf.rb..#. |
| 39620 | 25 20 6d 61 6b 65 0d 0a 23 20 25 20 6d 61 6b 65 20 69 6e 73 74 61 6c 6c 0d 0a 0d 0a 23 20 49 66 | %.make..#.%.make.install....#.If |
| 39640 | 20 79 6f 75 20 77 61 6e 74 20 74 68 65 20 6d 6f 64 75 6c 65 20 69 6e 73 74 61 6c 6c 65 64 20 69 | .you.want.the.module.installed.i |
| 39660 | 6e 20 79 6f 75 72 20 6f 77 6e 20 64 69 72 65 63 74 6f 72 79 3a 0d 0a 23 20 46 6f 72 20 72 75 62 | n.your.own.directory:..#.For.rub |
| 39680 | 79 20 76 65 72 73 69 6f 6e 20 73 70 65 63 69 66 69 63 20 6c 69 62 72 61 72 69 65 73 0d 0a 23 20 | y.version.specific.libraries..#. |
| 396a0 | 25 20 72 75 62 79 20 69 6e 73 74 61 6c 6c 2e 72 62 20 63 6f 6e 66 69 67 20 2d 2d 73 69 74 65 2d | %.ruby.install.rb.config.--site- |
| 396c0 | 72 75 62 79 3d 7e 2f 6c 69 62 0d 0a 23 20 46 6f 72 20 76 65 72 73 69 6f 6e 20 69 6e 64 65 70 65 | ruby=~/lib..#.For.version.indepe |
| 396e0 | 6e 64 65 6e 74 20 6c 69 62 72 61 72 69 65 73 0d 0a 23 20 25 20 72 75 62 79 20 69 6e 73 74 61 6c | ndent.libraries..#.%.ruby.instal |
| 39700 | 6c 2e 72 62 20 63 6f 6e 66 69 67 20 2d 2d 73 69 74 65 2d 72 75 62 79 2d 63 6f 6d 6d 6f 6e 3d 7e | l.rb.config.--site-ruby-common=~ |
| 39720 | 2f 6c 69 62 0d 0a 0d 0a 23 20 49 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 70 6f 73 73 | /lib....#.Information.about.poss |
| 39740 | 69 62 6c 65 20 6f 70 74 69 6f 6e 73 20 66 6f 72 20 63 6f 6e 66 69 67 0d 0a 23 20 25 20 72 75 62 | ible.options.for.config..#.%.rub |
| 39760 | 79 20 69 6e 73 74 61 6c 6c 2e 72 62 20 2d 2d 68 65 6c 70 0d 0a 0d 0a 23 20 49 66 20 79 6f 75 20 | y.install.rb.--help....#.If.you. |
| 39780 | 68 61 76 65 20 79 6f 75 72 20 6f 77 6e 20 63 6f 6d 70 6c 65 74 65 20 64 69 73 74 72 69 62 75 74 | have.your.own.complete.distribut |
| 397a0 | 69 6f 6e 0d 0a 23 20 25 20 72 75 62 79 20 69 6e 73 74 61 6c 6c 2e 72 62 20 2d 2d 70 72 65 66 69 | ion..#.%.ruby.install.rb.--prefi |
| 397c0 | 78 3d 70 61 74 68 3d 7e 2f 72 75 62 79 2d 70 72 69 76 61 74 65 0d 0a 0d 0a 0d 0a 23 20 40 40 50 | x=path=~/ruby-private......#.@@P |
| 397e0 | 4c 45 41 43 40 40 5f 31 33 2e 30 0d 0a 23 20 43 6c 61 73 73 65 73 20 61 6e 64 20 6f 62 6a 65 63 | LEAC@@_13.0..#.Classes.and.objec |
| 39800 | 74 73 20 69 6e 20 52 75 62 79 20 61 72 65 20 72 61 74 68 65 72 20 73 74 72 61 69 67 74 68 66 6f | ts.in.Ruby.are.rather.straigthfo |
| 39820 | 72 77 61 72 64 0d 0a 63 6c 61 73 73 20 50 65 72 73 6f 6e 0d 0a 20 20 20 20 23 20 43 6c 61 73 73 | rward..class.Person......#.Class |
| 39840 | 20 76 61 72 69 61 62 6c 65 73 20 28 61 6c 73 6f 20 63 61 6c 6c 65 64 20 73 74 61 74 69 63 20 61 | .variables.(also.called.static.a |
| 39860 | 74 74 72 69 62 75 74 65 73 29 20 61 72 65 20 70 72 65 66 69 78 65 64 20 62 79 20 40 40 0d 0a 20 | ttributes).are.prefixed.by.@@... |
| 39880 | 20 20 20 40 40 70 65 72 73 6f 6e 5f 63 6f 75 6e 74 65 72 3d 30 0d 0a 0d 0a 20 20 20 20 23 20 6f | ...@@person_counter=0........#.o |
| 398a0 | 62 6a 65 63 74 20 63 6f 6e 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 | bject.constructor......def.initi |
| 398c0 | 61 6c 69 7a 65 28 61 67 65 2c 20 6e 61 6d 65 2c 20 61 6c 69 76 65 20 3d 20 74 72 75 65 29 20 20 | alize(age,.name,.alive.=.true).. |
| 398e0 | 20 20 20 23 20 44 65 66 61 75 6c 74 20 61 72 67 20 6c 69 6b 65 20 69 6e 20 43 2b 2b 0d 0a 20 20 | ...#.Default.arg.like.in.C++.... |
| 39900 | 20 20 20 20 20 20 40 61 67 65 2c 20 40 6e 61 6d 65 2c 20 40 61 6c 69 76 65 20 3d 20 61 67 65 2c | ......@age,.@name,.@alive.=.age, |
| 39920 | 20 6e 61 6d 65 2c 20 61 6c 69 76 65 20 20 23 20 4f 62 6a 65 63 74 20 61 74 74 72 69 62 75 74 65 | .name,.alive..#.Object.attribute |
| 39940 | 73 20 61 72 65 20 70 72 65 66 69 78 65 64 20 62 79 20 27 40 27 0d 0a 20 20 20 20 20 20 20 20 40 | s.are.prefixed.by.'@'..........@ |
| 39960 | 40 70 65 72 73 6f 6e 5f 63 6f 75 6e 74 65 72 20 2b 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 20 20 | @person_counter.+=.1............ |
| 39980 | 23 20 54 68 65 72 65 20 69 73 20 6e 6f 20 27 2b 2b 27 20 6f 70 65 72 61 74 6f 72 20 69 6e 20 52 | #.There.is.no.'++'.operator.in.R |
| 399a0 | 75 62 79 2e 20 54 68 65 20 27 2b 2b 27 2f 27 2d 2d 27 20 20 6f 70 65 72 61 74 6f 72 73 20 61 72 | uby..The.'++'/'--'..operators.ar |
| 399c0 | 65 20 69 6e 20 66 61 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 68 69 64 64 65 6e 20 61 73 | e.in.fact............#.hidden.as |
| 399e0 | 73 69 67 6e 6d 65 6e 74 73 20 77 68 69 63 68 20 61 66 66 65 63 74 20 76 61 72 69 61 62 6c 65 73 | signments.which.affect.variables |
| 39a00 | 2c 20 6e 6f 74 20 6f 62 6a 65 63 74 73 2e 20 59 6f 75 20 63 61 6e 6e 6f 74 20 61 63 63 6f 6d 70 | ,.not.objects..You.cannot.accomp |
| 39a20 | 6c 69 73 68 0d 0a 20 20 20 20 20 20 20 20 20 20 23 20 61 73 73 69 67 6e 6d 65 6e 74 20 76 69 61 | lish............#.assignment.via |
| 39a40 | 20 6d 65 74 68 6f 64 2e 20 53 69 6e 63 65 20 65 76 65 72 79 74 68 69 6e 67 20 69 6e 20 52 75 62 | .method..Since.everything.in.Rub |
| 39a60 | 79 20 69 73 20 6f 62 6a 65 63 74 2c 20 27 2b 2b 27 20 61 6e 64 20 27 2d 2d 27 0d 0a 20 20 20 20 | y.is.object,.'++'.and.'--'...... |
| 39a80 | 20 20 20 20 20 20 23 20 63 6f 6e 74 72 61 64 69 63 74 20 52 75 62 79 20 4f 4f 20 69 64 65 6f 6c | ......#.contradict.Ruby.OO.ideol |
| 39aa0 | 6f 67 79 2e 20 49 6e 73 74 65 61 64 20 27 2d 3d 27 20 61 6e 64 20 27 2b 3d 27 20 61 72 65 20 75 | ogy..Instead.'-='.and.'+='.are.u |
| 39ac0 | 73 65 64 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 | sed.......end........attr_access |
| 39ae0 | 6f 72 20 3a 6e 61 6d 65 2c 20 3a 61 67 65 20 20 20 23 20 54 68 69 73 20 63 72 65 61 74 65 73 20 | or.:name,.:age...#.This.creates. |
| 39b00 | 73 65 74 74 65 72 20 61 6e 64 20 67 65 74 74 65 72 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 40 6e | setter.and.getter.methods.for.@n |
| 39b20 | 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ame............................. |
| 39b40 | 20 20 20 20 20 23 20 61 6e 64 20 40 61 67 65 2e 20 53 65 65 20 31 33 2e 33 20 66 6f 72 20 64 65 | .....#.and.@age..See.13.3.for.de |
| 39b60 | 74 61 69 6c 65 73 2e 0d 0a 0d 0a 20 20 20 20 23 20 6d 65 74 68 6f 64 73 20 6d 6f 64 69 66 79 69 | tailes.........#.methods.modifyi |
| 39b80 | 6e 67 20 74 68 65 20 72 65 63 65 69 76 65 72 20 6f 62 6a 65 63 74 20 75 73 75 61 6c 6c 79 20 68 | ng.the.receiver.object.usually.h |
| 39ba0 | 61 76 65 20 74 68 65 20 27 21 27 20 73 75 66 66 69 78 0d 0a 20 20 20 20 64 65 66 20 64 69 65 21 | ave.the.'!'.suffix......def.die! |
| 39bc0 | 0d 0a 20 20 20 20 20 20 20 20 40 61 6c 69 76 65 20 3d 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 | ..........@alive.=.false........ |
| 39be0 | 20 20 70 75 74 73 20 22 23 7b 40 6e 61 6d 65 7d 20 68 61 73 20 64 69 65 64 20 61 74 20 74 68 65 | ..puts."#{@name}.has.died.at.the |
| 39c00 | 20 61 67 65 20 6f 66 20 23 7b 40 61 67 65 7d 2e 22 0d 0a 20 20 20 20 20 20 20 20 40 61 6c 69 76 | .age.of.#{@age}."..........@aliv |
| 39c20 | 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 6b 69 6c 6c 28 61 6e 6f 74 68 | e......end........def.kill(anoth |
| 39c40 | 65 72 50 65 72 73 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 70 72 69 6e 74 20 40 6e 61 6d 65 2c 20 | erPerson)..........print.@name,. |
| 39c60 | 27 20 69 73 20 6b 69 6c 6c 69 6e 67 20 27 2c 20 61 6e 6f 74 68 65 72 50 65 72 73 6f 6e 2e 6e 61 | '.is.killing.',.anotherPerson.na |
| 39c80 | 6d 65 2c 20 22 2e 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 61 6e 6f 74 68 65 72 50 65 72 73 6f 6e | me,.".\n"..........anotherPerson |
| 39ca0 | 2e 64 69 65 21 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 6d 65 74 68 6f 64 73 20 | .die!......end........#.methods. |
| 39cc0 | 75 73 65 64 20 61 73 20 71 75 65 72 69 65 73 0d 0a 20 20 20 20 23 20 75 73 75 61 6c 6c 79 20 68 | used.as.queries......#.usually.h |
| 39ce0 | 61 76 65 20 74 68 65 20 27 3f 27 20 73 75 66 66 69 78 0d 0a 20 20 20 20 64 65 66 20 61 6c 69 76 | ave.the.'?'.suffix......def.aliv |
| 39d00 | 65 3f 0d 0a 20 20 20 20 20 20 20 20 40 61 6c 69 76 65 20 26 26 20 74 72 75 65 0d 0a 20 20 20 20 | e?..........@alive.&&.true...... |
| 39d20 | 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 79 65 61 72 5f 6f 66 5f 62 69 72 74 68 0d 0a 20 20 | end........def.year_of_birth.... |
| 39d40 | 20 20 20 20 20 20 54 69 6d 65 2e 6e 6f 77 2e 79 65 61 72 20 2d 20 40 61 67 65 0d 0a 20 20 20 20 | ......Time.now.year.-.@age...... |
| 39d60 | 65 6e 64 0d 0a 0d 0a 20 20 20 20 23 20 43 6c 61 73 73 20 6d 65 74 68 6f 64 20 28 61 6c 73 6f 20 | end........#.Class.method.(also. |
| 39d80 | 63 61 6c 6c 65 64 20 73 74 61 74 69 63 20 6d 65 74 68 6f 64 29 0d 0a 20 20 20 20 64 65 66 20 50 | called.static.method)......def.P |
| 39da0 | 65 72 73 6f 6e 2e 6e 75 6d 62 65 72 5f 6f 66 5f 70 65 6f 70 6c 65 0d 0a 20 20 20 20 20 20 20 20 | erson.number_of_people.......... |
| 39dc0 | 40 40 70 65 72 73 6f 6e 5f 63 6f 75 6e 74 65 72 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a | @@person_counter......end..end.. |
| 39de0 | 0d 0a 23 20 55 73 69 6e 67 20 74 68 65 20 63 6c 61 73 73 3a 0d 0a 23 20 43 72 65 61 74 65 20 6f | ..#.Using.the.class:..#.Create.o |
| 39e00 | 62 6a 65 63 74 73 20 6f 66 20 63 6c 61 73 73 20 50 65 72 73 6f 6e 0d 0a 6c 65 63 74 65 72 20 3d | bjects.of.class.Person..lecter.= |
| 39e20 | 20 50 65 72 73 6f 6e 2e 6e 65 77 28 34 37 2c 20 27 48 61 6e 6e 69 62 61 6c 27 29 0d 0a 73 74 61 | .Person.new(47,.'Hannibal')..sta |
| 39e40 | 72 6c 69 6e 67 20 3d 20 50 65 72 73 6f 6e 2e 6e 65 77 28 32 39 2c 20 27 43 6c 61 72 69 63 65 27 | rling.=.Person.new(29,.'Clarice' |
| 39e60 | 2c 20 74 72 75 65 29 0d 0a 70 61 7a 7a 69 20 3d 20 50 65 72 73 6f 6e 2e 6e 65 77 28 34 30 2c 20 | ,.true)..pazzi.=.Person.new(40,. |
| 39e80 | 27 52 69 6e 61 6c 64 6f 27 2c 20 74 72 75 65 29 0d 0a 0d 0a 23 20 43 61 6c 6c 69 6e 67 20 61 20 | 'Rinaldo',.true)....#.Calling.a. |
| 39ea0 | 63 6c 61 73 73 20 6d 65 74 68 6f 64 0d 0a 70 72 69 6e 74 20 22 54 68 65 72 65 20 61 72 65 20 22 | class.method..print."There.are." |
| 39ec0 | 2c 20 50 65 72 73 6f 6e 2e 6e 75 6d 62 65 72 5f 6f 66 5f 70 65 6f 70 6c 65 2c 20 22 20 50 65 72 | ,.Person.number_of_people,.".Per |
| 39ee0 | 73 6f 6e 20 6f 62 6a 65 63 74 73 5c 6e 22 0d 0a 0d 0a 70 72 69 6e 74 20 70 61 7a 7a 69 2e 6e 61 | son.objects\n"....print.pazzi.na |
| 39f00 | 6d 65 2c 20 27 20 69 73 20 27 2c 20 28 70 61 7a 7a 69 2e 61 6c 69 76 65 3f 29 20 3f 20 27 61 6c | me,.'.is.',.(pazzi.alive?).?.'al |
| 39f20 | 69 76 65 27 20 3a 20 27 64 65 61 64 27 2c 20 22 2e 5c 6e 22 0d 0a 6c 65 63 74 65 72 2e 6b 69 6c | ive'.:.'dead',.".\n"..lecter.kil |
| 39f40 | 6c 28 70 61 7a 7a 69 29 0d 0a 70 72 69 6e 74 20 70 61 7a 7a 69 2e 6e 61 6d 65 2c 20 27 20 69 73 | l(pazzi)..print.pazzi.name,.'.is |
| 39f60 | 20 27 2c 20 28 70 61 7a 7a 69 2e 61 6c 69 76 65 3f 29 20 3f 20 27 61 6c 69 76 65 27 20 3a 20 27 | .',.(pazzi.alive?).?.'alive'.:.' |
| 39f80 | 64 65 61 64 27 2c 20 22 2e 5c 6e 22 0d 0a 0d 0a 70 72 69 6e 74 20 73 74 61 72 6c 69 6e 67 2e 6e | dead',.".\n"....print.starling.n |
| 39fa0 | 61 6d 65 20 2c 20 27 20 77 61 73 20 62 6f 72 6e 20 69 6e 20 27 2c 20 73 74 61 72 6c 69 6e 67 2e | ame.,.'.was.born.in.',.starling. |
| 39fc0 | 79 65 61 72 5f 6f 66 5f 62 69 72 74 68 2c 20 22 5c 6e 22 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 | year_of_birth,."\n"......#.@@PLE |
| 39fe0 | 41 43 40 40 5f 31 33 2e 31 0d 0a 23 20 49 66 20 79 6f 75 20 64 6f 6e 27 74 20 6e 65 65 64 20 61 | AC@@_13.1..#.If.you.don't.need.a |
| 3a000 | 6e 79 20 69 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 63 6f 6e 73 74 72 75 | ny.initialisation.in.the.constru |
| 3a020 | 63 74 6f 72 2c 0d 0a 23 20 79 6f 75 20 64 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 77 72 69 74 65 | ctor,..#.you.don't.need.to.write |
| 3a040 | 20 61 20 63 6f 6e 73 74 72 75 63 74 6f 72 2e 0d 0a 63 6c 61 73 73 20 4d 79 43 6c 61 73 73 0d 0a | .a.constructor...class.MyClass.. |
| 3a060 | 65 6e 64 0d 0a 0d 0a 63 6c 61 73 73 20 4d 79 43 6c 61 73 73 0d 0a 20 20 20 20 64 65 66 20 69 6e | end....class.MyClass......def.in |
| 3a080 | 69 74 69 61 6c 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 40 73 74 61 72 74 20 3d 20 54 69 6d 65 2e | itialize..........@start.=.Time. |
| 3a0a0 | 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 40 61 67 65 20 3d 20 30 0d 0a 20 20 20 20 65 6e 64 0d 0a | new..........@age.=.0......end.. |
| 3a0c0 | 65 6e 64 0d 0a 0d 0a 63 6c 61 73 73 20 4d 79 43 6c 61 73 73 0d 0a 20 20 20 20 64 65 66 20 69 6e | end....class.MyClass......def.in |
| 3a0e0 | 69 74 69 61 6c 69 7a 65 28 69 6e 69 74 68 61 73 68 29 0d 0a 20 20 20 20 20 20 20 20 40 73 74 61 | itialize(inithash)..........@sta |
| 3a100 | 72 74 20 3d 20 54 69 6d 65 2e 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 40 61 67 65 20 3d 20 30 0d | rt.=.Time.new..........@age.=.0. |
| 3a120 | 0a 20 20 20 20 20 20 20 20 66 6f 72 20 6b 65 79 2c 20 76 61 6c 75 65 20 69 6e 20 69 6e 69 74 68 | .........for.key,.value.in.inith |
| 3a140 | 61 73 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 5f 76 61 72 69 61 62 | ash..............instance_variab |
| 3a160 | 6c 65 5f 73 65 74 28 22 40 23 7b 6b 65 79 7d 22 2c 20 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 | le_set("@#{key}",.value)........ |
| 3a180 | 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 | ..end......end..end....#.@@PLEAC |
| 3a1a0 | 40 40 5f 31 33 2e 32 0d 0a 23 20 4f 62 6a 65 63 74 73 20 61 72 65 20 64 65 73 74 72 6f 79 65 64 | @@_13.2..#.Objects.are.destroyed |
| 3a1c0 | 20 62 79 20 74 68 65 20 67 61 72 62 61 67 65 20 63 6f 6c 6c 65 63 74 6f 72 2e 0d 0a 23 20 54 68 | .by.the.garbage.collector...#.Th |
| 3a1e0 | 65 20 74 69 6d 65 20 6f 66 20 64 65 73 74 72 6f 79 69 6e 67 20 69 73 20 6e 6f 74 20 70 72 65 64 | e.time.of.destroying.is.not.pred |
| 3a200 | 69 63 74 61 62 6c 65 2e 0d 0a 23 20 54 68 65 20 72 75 62 79 20 67 61 72 62 61 67 65 20 63 6f 6c | ictable...#.The.ruby.garbage.col |
| 3a220 | 6c 65 63 74 6f 72 20 63 61 6e 20 68 61 6e 64 6c 65 20 63 69 72 63 75 6c 61 72 20 72 65 66 65 72 | lector.can.handle.circular.refer |
| 3a240 | 65 6e 63 65 73 2c 0d 0a 23 20 73 6f 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6e 65 65 64 20 74 6f | ences,..#.so.there.is.no.need.to |
| 3a260 | 20 77 72 69 74 65 20 64 65 73 74 72 75 63 74 6f 72 20 66 6f 72 20 74 68 61 74 2e 0d 0a 0d 0a 23 | .write.destructor.for.that.....# |
| 3a280 | 20 54 68 65 72 65 20 69 73 20 6e 6f 20 64 69 72 65 63 74 20 73 75 70 70 6f 72 74 20 66 6f 72 20 | .There.is.no.direct.support.for. |
| 3a2a0 | 64 65 73 74 72 75 63 74 6f 72 2e 0d 0a 23 20 59 6f 75 20 63 61 6e 20 63 61 6c 6c 20 61 20 63 75 | destructor...#.You.can.call.a.cu |
| 3a2c0 | 73 74 6f 6d 20 66 75 6e 63 74 69 6f 6e 2c 20 6f 72 20 6d 6f 72 65 20 73 70 65 63 69 66 69 63 20 | stom.function,.or.more.specific. |
| 3a2e0 | 61 20 70 72 6f 63 20 6f 62 6a 65 63 74 2c 20 77 68 65 6e 20 74 68 65 0d 0a 23 20 67 61 72 62 61 | a.proc.object,.when.the..#.garba |
| 3a300 | 67 65 20 63 6f 6c 6c 65 63 74 6f 72 20 69 73 20 61 62 6f 75 74 20 74 6f 20 64 65 73 74 72 75 63 | ge.collector.is.about.to.destruc |
| 3a320 | 74 20 74 68 65 20 6f 62 6a 65 63 74 2c 20 62 75 74 20 69 74 20 69 73 20 75 6e 70 72 65 64 69 63 | t.the.object,.but.it.is.unpredic |
| 3a340 | 74 61 62 6c 65 0d 0a 23 20 77 68 65 6e 20 74 68 69 73 20 6f 63 63 75 72 73 2e 0d 0a 23 20 41 6c | table..#.when.this.occurs...#.Al |
| 3a360 | 73 6f 20 69 66 20 73 75 63 68 20 61 20 66 69 6e 61 6c 69 7a 65 72 20 6f 62 6a 65 63 74 20 68 61 | so.if.such.a.finalizer.object.ha |
| 3a380 | 73 20 61 20 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 6f 72 69 67 6e 61 6c 20 6f 62 6a | s.a.reference.to.the.orignal.obj |
| 3a3a0 | 65 63 74 2c 0d 0a 23 20 74 68 69 73 20 6d 61 79 20 70 72 65 76 65 6e 74 20 74 68 65 20 6f 72 69 | ect,..#.this.may.prevent.the.ori |
| 3a3c0 | 67 69 6e 61 6c 20 6f 62 6a 65 63 74 20 74 6f 20 67 65 74 20 67 61 72 62 61 67 65 20 63 6f 6c 6c | ginal.object.to.get.garbage.coll |
| 3a3e0 | 65 63 74 65 64 2e 0d 0a 23 20 42 65 63 61 75 73 65 20 6f 66 20 74 68 69 73 20 70 72 6f 62 6c 65 | ected...#.Because.of.this.proble |
| 3a400 | 6d 20 74 68 65 20 66 69 6e 61 6c 69 7a 65 20 6d 65 74 68 6f 64 20 62 65 6c 6f 77 20 69 73 0d 0a | m.the.finalize.method.below.is.. |
| 3a420 | 23 20 61 20 63 6c 61 73 73 20 6d 65 74 68 6f 64 20 61 6e 64 20 6e 6f 74 20 61 20 69 6e 73 74 61 | #.a.class.method.and.not.a.insta |
| 3a440 | 6e 63 65 20 6d 65 74 68 6f 64 2e 0d 0a 23 20 53 6f 20 69 66 20 79 6f 75 20 6e 65 65 64 20 74 6f | nce.method...#.So.if.you.need.to |
| 3a460 | 20 66 72 65 65 20 72 65 73 6f 75 72 63 65 73 20 66 6f 72 20 61 6e 20 6f 62 6a 65 63 74 2c 20 6c | .free.resources.for.an.object,.l |
| 3a480 | 69 6b 65 0d 0a 23 20 63 6c 6f 73 69 6e 67 20 61 20 73 6f 63 6b 65 74 20 6f 72 20 6b 69 6c 6c 20 | ike..#.closing.a.socket.or.kill. |
| 3a4a0 | 61 20 73 70 61 77 6e 65 64 20 73 75 62 70 72 6f 63 65 73 73 2c 0d 0a 23 20 79 6f 75 20 73 68 6f | a.spawned.subprocess,..#.you.sho |
| 3a4c0 | 75 6c 64 20 64 6f 20 69 74 20 65 78 70 6c 69 63 69 74 6c 79 2e 0d 0a 0d 0a 63 6c 61 73 73 20 4d | uld.do.it.explicitly.....class.M |
| 3a4e0 | 79 43 6c 61 73 73 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 0d 0a 20 20 20 20 | yClass......def.initialize...... |
| 3a500 | 20 20 20 20 4f 62 6a 65 63 74 53 70 61 63 65 2e 64 65 66 69 6e 65 5f 66 69 6e 61 6c 69 7a 65 72 | ....ObjectSpace.define_finalizer |
| 3a520 | 28 73 65 6c 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (self,.......................... |
| 3a540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6d 65 74 68 6f 64 28 3a | .............self.class.method(: |
| 3a560 | 66 69 6e 61 6c 69 7a 65 29 2e 74 6f 5f 70 72 6f 63 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 | finalize).to_proc)......end..... |
| 3a580 | 20 64 65 66 20 4d 79 43 6c 61 73 73 2e 66 69 6e 61 6c 69 7a 65 28 69 64 29 0d 0a 20 20 20 20 20 | .def.MyClass.finalize(id)....... |
| 3a5a0 | 20 20 20 70 75 74 73 20 22 4f 62 6a 65 63 74 20 23 7b 69 64 7d 20 64 79 69 6e 67 20 61 74 20 23 | ...puts."Object.#{id}.dying.at.# |
| 3a5c0 | 7b 54 69 6d 65 2e 6e 65 77 7d 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 74 | {Time.new}"......end..end....#.t |
| 3a5e0 | 65 73 74 20 63 6f 64 65 0d 0a 33 2e 74 69 6d 65 73 20 7b 0d 0a 20 20 20 20 4d 79 43 6c 61 73 73 | est.code..3.times.{......MyClass |
| 3a600 | 2e 6e 65 77 0d 0a 7d 0d 0a 4f 62 6a 65 63 74 53 70 61 63 65 2e 67 61 72 62 61 67 65 5f 63 6f 6c | .new..}..ObjectSpace.garbage_col |
| 3a620 | 6c 65 63 74 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 33 0d 0a 23 20 59 6f | lect......#.@@PLEAC@@_13.3..#.Yo |
| 3a640 | 75 20 63 61 6e 20 77 72 69 74 65 20 67 65 74 74 65 72 20 61 6e 64 20 73 65 74 74 65 72 20 6d 65 | u.can.write.getter.and.setter.me |
| 3a660 | 74 68 6f 64 73 20 69 6e 20 61 20 6e 61 74 75 72 61 6c 20 77 61 79 3a 0d 0a 63 6c 61 73 73 20 50 | thods.in.a.natural.way:..class.P |
| 3a680 | 65 72 73 6f 6e 0d 0a 20 20 20 20 64 65 66 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 40 6e 61 | erson......def.name..........@na |
| 3a6a0 | 6d 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 6e 61 6d 65 3d 28 6e 61 6d 65 29 | me......end......def.name=(name) |
| 3a6c0 | 0d 0a 20 20 20 20 20 20 20 20 40 6e 61 6d 65 20 3d 20 6e 61 6d 65 0d 0a 20 20 20 20 65 6e 64 0d | ..........@name.=.name......end. |
| 3a6e0 | 0a 65 6e 64 0d 0a 0d 0a 23 20 42 75 74 20 74 68 65 72 65 20 69 73 20 61 20 62 65 74 74 65 72 20 | .end....#.But.there.is.a.better. |
| 3a700 | 61 6e 64 20 73 68 6f 72 74 65 72 20 77 61 79 0d 0a 63 6c 61 73 73 20 50 65 72 73 6f 6e 0d 0a 20 | and.shorter.way..class.Person... |
| 3a720 | 20 20 20 61 74 74 72 5f 72 65 61 64 65 72 20 3a 61 67 65 0d 0a 20 20 20 20 61 74 74 72 5f 77 72 | ...attr_reader.:age......attr_wr |
| 3a740 | 69 74 65 72 20 3a 6e 61 6d 65 0d 0a 20 20 20 20 23 20 61 74 74 72 5f 72 65 61 64 65 72 20 61 6e | iter.:name......#.attr_reader.an |
| 3a760 | 64 20 61 74 74 72 5f 77 72 69 74 65 72 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 6d 65 74 68 6f | d.attr_writer.are.actually.metho |
| 3a780 | 64 73 20 69 6e 20 63 6c 61 73 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 23 20 77 68 69 63 68 20 73 | ds.in.class.Class......#.which.s |
| 3a7a0 | 65 74 20 67 65 74 74 65 72 20 61 6e 64 20 73 65 74 74 65 72 20 6d 65 74 68 6f 64 73 20 66 6f 72 | et.getter.and.setter.methods.for |
| 3a7c0 | 20 79 6f 75 2e 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 68 65 72 65 20 69 73 20 61 6c 73 6f 20 61 74 | .you...end....#.There.is.also.at |
| 3a7e0 | 74 72 5f 61 63 63 65 73 73 6f 72 20 74 6f 20 63 72 65 61 74 65 20 62 6f 74 68 20 73 65 74 74 65 | tr_accessor.to.create.both.sette |
| 3a800 | 72 73 20 61 6e 64 20 67 65 74 74 65 72 73 0d 0a 63 6c 61 73 73 20 50 65 72 73 6f 6e 0d 0a 20 20 | rs.and.getters..class.Person.... |
| 3a820 | 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 61 67 65 2c 20 3a 6e 61 6d 65 0d 0a 65 6e 64 | ..attr_accessor.:age,.:name..end |
| 3a840 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 34 0d 0a 63 6c 61 73 73 20 50 65 | ......#.@@PLEAC@@_13.4..class.Pe |
| 3a860 | 72 73 6f 6e 0d 0a 20 20 20 20 23 20 43 6c 61 73 73 20 76 61 72 69 61 62 6c 65 73 20 28 61 6c 73 | rson......#.Class.variables.(als |
| 3a880 | 6f 20 63 61 6c 6c 65 64 20 73 74 61 74 69 63 20 61 74 74 72 69 62 75 74 65 73 29 20 61 72 65 20 | o.called.static.attributes).are. |
| 3a8a0 | 70 72 65 66 69 78 65 64 20 62 79 20 40 40 0d 0a 20 20 20 20 40 40 70 65 72 73 6f 6e 5f 63 6f 75 | prefixed.by.@@......@@person_cou |
| 3a8c0 | 6e 74 65 72 20 3d 20 30 0d 0a 0d 0a 20 20 20 20 64 65 66 20 50 65 72 73 6f 6e 2e 70 6f 70 75 6c | nter.=.0........def.Person.popul |
| 3a8e0 | 61 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 40 40 70 65 72 73 6f 6e 5f 63 6f 75 6e 74 65 72 0d | ation..........@@person_counter. |
| 3a900 | 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 0d 0a 20 20 | .....end......def.initialize.... |
| 3a920 | 20 20 20 20 20 20 40 40 70 65 72 73 6f 6e 5f 63 6f 75 6e 74 65 72 20 2b 3d 20 31 0d 0a 20 20 20 | ......@@person_counter.+=.1..... |
| 3a940 | 20 20 20 20 20 4f 62 6a 65 63 74 53 70 61 63 65 2e 64 65 66 69 6e 65 5f 66 69 6e 61 6c 69 7a 65 | .....ObjectSpace.define_finalize |
| 3a960 | 72 28 73 65 6c 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r(self,......................... |
| 3a980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 61 73 73 2e 6d 65 74 68 6f 64 28 | ..............self.class.method( |
| 3a9a0 | 3a 66 69 6e 61 6c 69 7a 65 29 2e 74 6f 5f 70 72 6f 63 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 | :finalize).to_proc)......end.... |
| 3a9c0 | 20 20 64 65 66 20 50 65 72 73 6f 6e 2e 66 69 6e 61 6c 69 7a 65 28 69 64 29 0d 0a 20 20 20 20 20 | ..def.Person.finalize(id)....... |
| 3a9e0 | 20 20 20 40 40 70 65 72 73 6f 6e 5f 63 6f 75 6e 74 65 72 20 2d 3d 20 31 0d 0a 20 20 20 20 65 6e | ...@@person_counter.-=.1......en |
| 3aa00 | 64 0d 0a 65 6e 64 0d 0a 70 65 6f 70 6c 65 20 3d 20 5b 5d 0d 0a 31 30 2e 74 69 6d 65 73 20 7b 0d | d..end..people.=.[]..10.times.{. |
| 3aa20 | 0a 20 20 20 20 70 65 6f 70 6c 65 2e 70 75 73 68 28 50 65 72 73 6f 6e 2e 6e 65 77 29 0d 0a 7d 0d | .....people.push(Person.new)..}. |
| 3aa40 | 0a 70 72 69 6e 74 66 28 22 54 68 65 72 65 20 61 72 65 20 25 64 20 70 65 6f 70 6c 65 20 61 6c 69 | .printf("There.are.%d.people.ali |
| 3aa60 | 76 65 22 2c 20 50 65 72 73 6f 6e 2e 70 6f 70 75 6c 61 74 69 6f 6e 29 0d 0a 0d 0a 0d 0a 46 69 78 | ve",.Person.population)......Fix |
| 3aa80 | 65 64 41 72 72 61 79 2e 63 6c 61 73 73 5f 6d 61 78 5f 62 6f 75 6e 64 73 20 3d 20 31 30 30 0d 0a | edArray.class_max_bounds.=.100.. |
| 3aaa0 | 61 6c 70 68 61 20 3d 20 46 69 78 65 64 41 72 72 61 79 2e 6e 65 77 0d 0a 70 75 74 73 20 22 42 6f | alpha.=.FixedArray.new..puts."Bo |
| 3aac0 | 75 6e 64 20 6f 6e 20 61 6c 70 68 61 20 69 73 20 23 7b 61 6c 70 68 61 2e 6d 61 78 5f 62 6f 75 6e | und.on.alpha.is.#{alpha.max_boun |
| 3aae0 | 64 73 7d 22 0d 0a 0d 0a 62 65 74 61 20 3d 20 46 69 78 65 64 41 72 72 61 79 2e 6e 65 77 0d 0a 62 | ds}"....beta.=.FixedArray.new..b |
| 3ab00 | 65 74 61 2e 6d 61 78 5f 62 6f 75 6e 64 73 20 3d 20 35 30 20 20 20 20 20 20 20 20 20 20 20 20 20 | eta.max_bounds.=.50............. |
| 3ab20 | 20 20 20 20 20 20 20 23 20 63 61 6c 6c 73 20 74 68 65 20 69 6e 73 74 61 6e 63 65 20 6d 65 74 68 | .......#.calls.the.instance.meth |
| 3ab40 | 6f 64 0d 0a 62 65 74 61 2e 63 6c 61 73 73 2e 63 6c 61 73 73 5f 6d 61 78 5f 62 6f 75 6e 64 73 20 | od..beta.class.class_max_bounds. |
| 3ab60 | 3d 20 35 30 20 20 20 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 74 69 76 65 2c 20 63 61 6c 6c 73 | =.50........#.alternative,.calls |
| 3ab80 | 20 74 68 65 20 63 6c 61 73 73 20 6d 65 74 68 6f 64 0d 0a 70 75 74 73 20 22 42 6f 75 6e 64 20 6f | .the.class.method..puts."Bound.o |
| 3aba0 | 6e 20 61 6c 70 68 61 20 69 73 20 23 7b 61 6c 70 68 61 2e 6d 61 78 5f 62 6f 75 6e 64 73 7d 22 0d | n.alpha.is.#{alpha.max_bounds}". |
| 3abc0 | 0a 0d 0a 63 6c 61 73 73 20 46 69 78 65 64 41 72 72 61 79 0d 0a 20 20 20 20 40 40 62 6f 75 6e 64 | ...class.FixedArray......@@bound |
| 3abe0 | 73 20 3d 20 37 0d 0a 0d 0a 20 20 20 20 64 65 66 20 6d 61 78 5f 62 6f 75 6e 64 73 0d 0a 20 20 20 | s.=.7........def.max_bounds..... |
| 3ac00 | 20 20 20 20 20 40 40 6d 61 78 5f 62 6f 75 6e 64 73 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 | .....@@max_bounds......end...... |
| 3ac20 | 23 20 69 6e 73 74 61 6e 63 65 20 6d 65 74 68 6f 64 2c 20 77 68 69 63 68 20 73 65 74 73 20 74 68 | #.instance.method,.which.sets.th |
| 3ac40 | 65 20 63 6c 61 73 73 20 76 61 72 69 61 62 6c 65 0d 0a 20 20 20 20 64 65 66 20 6d 61 78 5f 62 6f | e.class.variable......def.max_bo |
| 3ac60 | 75 6e 64 73 3d 28 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 40 40 6d 61 78 5f 62 6f 75 6e | unds=(value)..........@@max_boun |
| 3ac80 | 64 73 20 3d 20 76 61 6c 75 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 23 20 63 6c 61 73 73 | ds.=.value......end......#.class |
| 3aca0 | 20 6d 65 74 68 6f 64 2e 20 54 68 69 73 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 | .method..This.can.only.be.called |
| 3acc0 | 20 6f 6e 20 61 20 63 6c 61 73 73 2c 0d 0a 20 20 20 20 23 20 62 75 74 20 6e 6f 74 20 6f 6e 20 74 | .on.a.class,......#.but.not.on.t |
| 3ace0 | 68 65 20 69 6e 73 74 61 6e 63 65 73 0d 0a 20 20 20 20 64 65 66 20 46 69 78 65 64 41 72 72 61 79 | he.instances......def.FixedArray |
| 3ad00 | 2e 63 6c 61 73 73 5f 6d 61 78 5f 62 6f 75 6e 64 73 3d 28 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 | .class_max_bounds=(value)....... |
| 3ad20 | 20 20 20 40 40 6d 61 78 5f 62 6f 75 6e 64 73 20 3d 20 76 61 6c 75 65 0d 0a 20 20 20 20 65 6e 64 | ...@@max_bounds.=.value......end |
| 3ad40 | 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 35 0d 0a 50 65 72 | ..end......#.@@PLEAC@@_13.5..Per |
| 3ad60 | 73 6f 6e 53 74 72 75 63 74 20 3d 20 53 74 72 75 63 74 2e 6e 65 77 28 22 50 65 72 73 6f 6e 22 2c | sonStruct.=.Struct.new("Person", |
| 3ad80 | 20 3a 6e 61 6d 65 2c 20 3a 61 67 65 2c 20 3a 70 65 65 72 73 29 0d 0a 23 20 63 72 65 61 74 65 73 | .:name,.:age,.:peers)..#.creates |
| 3ada0 | 20 61 20 63 6c 61 73 73 20 22 50 65 72 73 6f 6e 3a 3a 53 74 72 75 63 74 22 2c 20 77 68 69 63 68 | .a.class."Person::Struct",.which |
| 3adc0 | 20 69 73 20 61 63 63 65 73 73 69 61 62 6c 65 20 77 69 74 68 20 74 68 65 0d 0a 23 20 63 6f 6e 73 | .is.accessiable.with.the..#.cons |
| 3ade0 | 74 61 6e 74 20 22 50 65 72 73 6f 6e 53 74 72 75 63 74 22 0d 0a 70 20 3d 20 50 65 72 73 6f 6e 53 | tant."PersonStruct"..p.=.PersonS |
| 3ae00 | 74 72 75 63 74 2e 6e 65 77 0d 0a 70 20 3d 20 53 74 72 75 63 74 3a 3a 50 65 72 73 6f 6e 2e 6e 65 | truct.new..p.=.Struct::Person.ne |
| 3ae20 | 77 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 | w......................#.alterna |
| 3ae40 | 74 69 76 65 20 75 73 69 6e 67 20 74 68 65 20 63 6c 61 73 73 6e 61 6d 65 0d 0a 70 2e 6e 61 6d 65 | tive.using.the.classname..p.name |
| 3ae60 | 20 3d 20 22 4a 61 73 6f 6e 20 53 6d 79 74 68 65 22 0d 0a 70 2e 61 67 65 20 3d 20 31 33 0d 0a 70 | .=."Jason.Smythe"..p.age.=.13..p |
| 3ae80 | 2e 70 65 65 72 73 20 3d 20 5b 22 57 69 6c 62 75 72 22 2c 20 22 52 61 6c 70 68 22 2c 20 22 46 72 | .peers.=.["Wilbur",."Ralph",."Fr |
| 3aea0 | 65 64 22 5d 0d 0a 70 5b 3a 70 65 65 72 73 5d 20 3d 20 5b 22 57 69 6c 62 75 72 22 2c 20 22 52 61 | ed"]..p[:peers].=.["Wilbur",."Ra |
| 3aec0 | 6c 70 68 22 2c 20 22 46 72 65 64 22 5d 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 74 69 76 65 20 | lph",."Fred"].....#.alternative. |
| 3aee0 | 61 63 63 65 73 73 20 75 73 69 6e 67 20 73 79 6d 62 6f 6c 0d 0a 70 5b 22 70 65 65 72 73 22 5d 20 | access.using.symbol..p["peers"]. |
| 3af00 | 3d 20 5b 22 57 69 6c 62 75 72 22 2c 20 22 52 61 6c 70 68 22 2c 20 22 46 72 65 64 22 5d 20 20 20 | =.["Wilbur",."Ralph",."Fred"]... |
| 3af20 | 20 23 20 61 6c 74 65 72 6e 61 74 69 76 65 20 61 63 63 65 73 73 20 75 73 69 6e 67 20 6e 61 6d 65 | .#.alternative.access.using.name |
| 3af40 | 20 6f 66 20 66 69 65 6c 64 0d 0a 70 5b 32 5d 20 3d 20 5b 22 57 69 6c 62 75 72 22 2c 20 22 52 61 | .of.field..p[2].=.["Wilbur",."Ra |
| 3af60 | 6c 70 68 22 2c 20 22 46 72 65 64 22 5d 20 20 20 20 20 20 20 20 20 20 23 20 61 6c 74 65 72 6e 61 | lph",."Fred"]..........#.alterna |
| 3af80 | 74 69 76 65 20 61 63 63 65 73 73 20 75 73 69 6e 67 20 69 6e 64 65 78 20 6f 66 20 66 69 65 6c 64 | tive.access.using.index.of.field |
| 3afa0 | 0d 0a 70 75 74 73 20 22 41 74 20 61 67 65 20 23 7b 70 2e 61 67 65 7d 2c 20 23 7b 70 2e 6e 61 6d | ..puts."At.age.#{p.age},.#{p.nam |
| 3afc0 | 65 7d 27 73 20 66 69 72 73 74 20 66 72 69 65 6e 64 20 69 73 20 23 7b 70 2e 70 65 65 72 73 5b 30 | e}'s.first.friend.is.#{p.peers[0 |
| 3afe0 | 5d 7d 22 0d 0a 0d 0a 23 20 54 68 65 20 66 69 65 6c 64 73 20 6f 66 20 61 20 73 74 72 75 63 74 20 | ]}"....#.The.fields.of.a.struct. |
| 3b000 | 68 61 76 65 20 6e 6f 20 73 70 65 63 69 61 6c 20 74 79 70 65 2c 20 6c 69 6b 65 20 6f 74 68 65 72 | have.no.special.type,.like.other |
| 3b020 | 20 72 75 62 79 20 76 61 72 69 61 62 6c 65 73 0d 0a 23 20 79 6f 75 20 63 61 6e 20 70 75 74 20 61 | .ruby.variables..#.you.can.put.a |
| 3b040 | 6e 79 20 6f 62 6a 65 63 74 73 20 69 6e 2e 20 54 68 65 72 65 66 6f 72 65 20 74 68 65 20 64 69 73 | ny.objects.in..Therefore.the.dis |
| 3b060 | 63 75 73 73 69 6f 6e 73 20 68 6f 77 20 74 6f 20 73 70 65 63 69 66 79 0d 0a 23 20 74 68 65 20 74 | cussions.how.to.specify..#.the.t |
| 3b080 | 79 70 65 73 20 6f 66 20 74 68 65 20 66 69 65 6c 64 73 20 64 6f 20 6e 6f 74 20 61 70 70 6c 79 20 | ypes.of.the.fields.do.not.apply. |
| 3b0a0 | 74 6f 20 72 75 62 79 2e 0d 0a 0d 0a 46 61 6d 69 6c 79 53 74 72 75 63 74 20 3d 20 53 74 72 75 63 | to.ruby.....FamilyStruct.=.Struc |
| 3b0c0 | 74 2e 6e 65 77 28 22 46 61 6d 69 6c 79 22 2c 20 3a 68 65 61 64 2c 20 3a 61 64 64 72 65 73 73 2c | t.new("Family",.:head,.:address, |
| 3b0e0 | 20 3a 6d 65 6d 62 65 72 73 29 0d 0a 66 6f 6c 6b 73 20 3d 20 46 61 6d 69 6c 79 53 74 72 75 63 74 | .:members)..folks.=.FamilyStruct |
| 3b100 | 2e 6e 65 77 0d 0a 66 6f 6c 6b 73 2e 68 65 61 64 20 3d 20 50 65 72 73 6f 6e 53 74 72 75 63 74 2e | .new..folks.head.=.PersonStruct. |
| 3b120 | 6e 65 77 0d 0a 64 61 64 20 3d 20 66 6f 6c 6b 73 2e 68 65 61 64 0d 0a 64 61 64 2e 6e 61 6d 65 20 | new..dad.=.folks.head..dad.name. |
| 3b140 | 3d 20 22 4a 6f 68 6e 22 0d 0a 64 61 64 2e 61 67 65 20 3d 20 33 34 0d 0a 0d 0a 23 20 73 75 70 70 | =."John"..dad.age.=.34....#.supp |
| 3b160 | 6c 79 20 6f 66 20 6f 77 6e 20 61 63 63 65 73 73 6f 72 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 | ly.of.own.accessor.method.for.th |
| 3b180 | 65 20 73 74 72 75 63 74 20 66 6f 72 20 65 72 72 6f 72 20 63 68 65 63 6b 69 6e 67 0d 0a 63 6c 61 | e.struct.for.error.checking..cla |
| 3b1a0 | 73 73 20 50 65 72 73 6f 6e 53 74 72 75 63 74 0d 0a 20 20 20 20 64 65 66 20 61 67 65 3d 28 76 61 | ss.PersonStruct......def.age=(va |
| 3b1c0 | 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20 69 66 20 21 76 61 6c 75 65 2e 6b 69 6e 64 5f 6f 66 3f | lue)..........if.!value.kind_of? |
| 3b1e0 | 28 49 6e 74 65 67 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 28 41 72 67 | (Integer)..............raise(Arg |
| 3b200 | 75 6d 65 6e 74 45 72 72 6f 72 2c 20 22 41 67 65 20 23 7b 76 61 6c 75 65 7d 20 69 73 6e 27 74 20 | umentError,."Age.#{value}.isn't. |
| 3b220 | 61 6e 20 49 6e 74 65 67 65 72 22 29 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 69 66 20 76 61 6c 75 | an.Integer")..........elsif.valu |
| 3b240 | 65 20 3e 20 31 35 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 61 69 73 65 28 41 72 67 75 6d | e.>.150..............raise(Argum |
| 3b260 | 65 6e 74 45 72 72 6f 72 2c 20 22 41 67 65 20 23 7b 76 61 6c 75 65 7d 20 69 73 20 75 6e 72 65 61 | entError,."Age.#{value}.is.unrea |
| 3b280 | 73 6f 6e 61 62 6c 65 22 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 | sonable")..........end.......... |
| 3b2a0 | 40 61 67 65 20 3d 20 76 61 6c 75 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a | @age.=.value......end..end...... |
| 3b2c0 | 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 36 0d 0a 23 20 54 68 65 20 72 75 62 79 20 4f 62 6a | #.@@PLEAC@@_13.6..#.The.ruby.Obj |
| 3b2e0 | 65 63 74 20 63 6c 61 73 73 20 64 65 66 69 6e 65 73 20 61 20 64 75 70 20 61 6e 64 20 61 20 63 6c | ect.class.defines.a.dup.and.a.cl |
| 3b300 | 6f 6e 65 20 6d 65 74 68 6f 64 2e 0d 0a 23 20 54 68 65 20 64 75 70 20 6d 65 74 68 6f 64 20 69 73 | one.method...#.The.dup.method.is |
| 3b320 | 20 72 65 63 6f 6d 6d 65 6e 64 65 64 20 66 6f 72 20 70 72 6f 74 6f 74 79 70 65 20 6f 62 6a 65 63 | .recommended.for.prototype.objec |
| 3b340 | 74 20 63 72 65 61 74 69 6f 6e 2e 0d 0a 23 20 54 68 65 20 64 65 66 61 75 6c 74 20 69 6d 70 6c 65 | t.creation...#.The.default.imple |
| 3b360 | 6d 65 6e 74 61 74 69 6f 6e 20 6d 61 6b 65 73 20 61 20 73 68 61 6c 6c 6f 77 20 63 6f 70 79 2c 0d | mentation.makes.a.shallow.copy,. |
| 3b380 | 0a 23 20 62 75 74 20 65 61 63 68 20 63 6c 61 73 73 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 69 | .#.but.each.class.can.override.i |
| 3b3a0 | 74 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 6f 20 6d 61 6b 65 20 61 20 64 65 65 70 20 63 6f | t,.for.example.to.make.a.deep.co |
| 3b3c0 | 70 79 2e 0d 0a 0d 0a 23 20 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 63 61 6c 6c 20 27 6e 65 | py.....#.If.you.want.to.call.'ne |
| 3b3e0 | 77 27 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 74 68 65 20 69 6e 73 74 61 6e 63 65 73 2c 0d 0a 23 | w'.directly.on.the.instances,..# |
| 3b400 | 20 79 6f 75 20 63 61 6e 20 63 72 65 61 74 65 20 61 20 69 6e 73 74 61 6e 63 65 20 6d 65 74 68 6f | .you.can.create.a.instance.metho |
| 3b420 | 64 20 22 6e 65 77 22 2c 20 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 61 20 6e 65 77 20 64 75 70 | d."new",.which.returns.a.new.dup |
| 3b440 | 6c 69 63 61 74 65 2e 0d 0a 23 20 54 68 69 73 20 6d 65 74 68 6f 64 20 69 73 20 64 69 73 74 69 6e | licate...#.This.method.is.distin |
| 3b460 | 63 74 20 66 72 6f 6d 20 74 68 65 20 63 6c 61 73 73 20 6d 65 74 68 6f 64 20 6e 65 77 2e 0d 0a 23 | ct.from.the.class.method.new...# |
| 3b480 | 0d 0a 63 6c 61 73 73 20 41 0d 0a 20 20 20 20 64 65 66 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 | ..class.A......def.new.......... |
| 3b4a0 | 64 75 70 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 6f 62 31 20 3d 20 41 2e 6e 65 77 | dup......end..end....ob1.=.A.new |
| 3b4c0 | 0d 0a 23 20 6c 61 74 65 72 20 6f 6e 0d 0a 6f 62 32 20 3d 20 6f 62 31 2e 6e 65 77 0d 0a 0d 0a 0d | ..#.later.on..ob2.=.ob1.new..... |
| 3b4e0 | 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 37 0d 0a 6d 65 74 68 6e 61 6d 65 20 3d 20 27 66 | .#.@@PLEAC@@_13.7..methname.=.'f |
| 3b500 | 6c 69 63 6b 65 72 27 0d 0a 6f 62 6a 2e 73 65 6e 64 28 6d 65 74 68 6e 61 6d 65 2c 20 31 30 29 20 | licker'..obj.send(methname,.10). |
| 3b520 | 20 20 20 20 20 23 20 63 61 6c 6c 73 20 6f 62 6a 2e 66 6c 69 63 6b 65 72 28 31 30 29 0d 0a 0d 0a | .....#.calls.obj.flicker(10).... |
| 3b540 | 23 20 63 61 6c 6c 20 74 68 72 65 65 20 6d 65 74 68 6f 64 73 20 6f 6e 20 74 68 65 20 6f 62 6a 65 | #.call.three.methods.on.the.obje |
| 3b560 | 63 74 2c 20 62 79 20 6e 61 6d 65 0d 0a 5b 27 73 74 61 72 74 27 2c 20 27 72 75 6e 27 2c 20 27 73 | ct,.by.name..['start',.'run',.'s |
| 3b580 | 74 6f 70 27 5d 2e 65 61 63 68 20 64 6f 20 7c 6d 65 74 68 6f 64 5f 73 74 72 69 6e 67 7c 0d 0a 20 | top'].each.do.|method_string|... |
| 3b5a0 | 20 20 20 6f 62 6a 2e 73 65 6e 64 28 6d 65 74 68 6f 64 5f 73 74 72 69 6e 67 29 0d 0a 65 6e 64 0d | ...obj.send(method_string)..end. |
| 3b5c0 | 0a 0d 0a 23 20 41 6e 6f 74 68 65 72 20 77 61 79 20 69 73 20 74 6f 20 63 72 65 61 74 65 20 61 20 | ...#.Another.way.is.to.create.a. |
| 3b5e0 | 4d 65 74 68 6f 64 20 6f 62 6a 65 63 74 0d 0a 6d 65 74 68 6f 64 5f 6f 62 6a 20 3d 20 6f 62 6a 2e | Method.object..method_obj.=.obj. |
| 3b600 | 6d 65 74 68 6f 64 28 27 66 6c 69 63 6b 65 72 27 29 0d 0a 23 20 41 6e 64 20 74 68 65 6e 20 63 61 | method('flicker')..#.And.then.ca |
| 3b620 | 6c 6c 20 69 74 0d 0a 6d 65 74 68 6f 64 5f 6f 62 6a 2e 63 61 6c 6c 28 31 30 29 0d 0a 0d 0a 0d 0a | ll.it..method_obj.call(10)...... |
| 3b640 | 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 38 0d 0a 23 20 41 6c 6c 20 63 6c 61 73 73 65 73 20 | #.@@PLEAC@@_13.8..#.All.classes. |
| 3b660 | 69 6e 20 52 75 62 79 20 69 6e 68 65 72 69 74 20 66 72 6f 6d 20 63 6c 61 73 73 20 4f 62 6a 65 63 | in.Ruby.inherit.from.class.Objec |
| 3b680 | 74 0d 0a 23 20 61 6e 64 20 74 68 75 73 20 61 6c 6c 20 6f 62 6a 65 63 74 73 20 73 68 61 72 65 20 | t..#.and.thus.all.objects.share. |
| 3b6a0 | 6d 65 74 68 6f 64 73 20 64 65 66 69 6e 65 64 20 69 6e 20 74 68 69 73 20 63 6c 61 73 73 0d 0a 0d | methods.defined.in.this.class... |
| 3b6c0 | 0a 23 20 74 68 65 20 63 6c 61 73 73 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 0d 0a 70 75 74 73 | .#.the.class.of.the.object..puts |
| 3b6e0 | 20 61 6e 79 5f 6f 62 6a 65 63 74 2e 74 79 70 65 0d 0a 0d 0a 23 20 52 75 62 79 20 63 6c 61 73 73 | .any_object.type....#.Ruby.class |
| 3b700 | 65 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 6f 62 6a 65 63 74 73 20 6f 66 20 63 6c 61 73 73 | es.are.actually.objects.of.class |
| 3b720 | 20 43 6c 61 73 73 20 61 6e 64 20 74 68 65 79 0d 0a 23 20 72 65 73 70 6f 6e 64 20 74 6f 20 6d 65 | .Class.and.they..#.respond.to.me |
| 3b740 | 74 68 6f 64 73 20 64 65 66 69 6e 65 64 20 69 6e 20 4f 62 6a 65 63 74 20 63 6c 61 73 73 20 61 73 | thods.defined.in.Object.class.as |
| 3b760 | 20 77 65 6c 6c 0d 0a 0d 0a 23 20 74 68 65 20 73 75 70 65 72 63 6c 61 73 73 20 6f 66 20 74 68 69 | .well....#.the.superclass.of.thi |
| 3b780 | 73 20 63 6c 61 73 73 0d 0a 70 75 74 73 20 61 6e 79 5f 6f 62 6a 65 63 74 2e 63 6c 61 73 73 2e 73 | s.class..puts.any_object.class.s |
| 3b7a0 | 75 70 65 72 63 6c 61 73 73 0d 0a 0d 0a 23 20 61 73 6b 20 61 6e 20 6f 62 6a 65 63 74 20 77 68 65 | uperclass....#.ask.an.object.whe |
| 3b7c0 | 74 68 65 72 20 69 74 20 69 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 70 61 72 74 69 63 | ther.it.is.an.instance.of.partic |
| 3b7e0 | 75 6c 61 72 20 63 6c 61 73 73 0d 0a 6e 20 3d 20 34 2e 37 0d 0a 70 75 74 73 20 6e 2e 69 6e 73 74 | ular.class..n.=.4.7..puts.n.inst |
| 3b800 | 61 6e 63 65 5f 6f 66 3f 28 46 6c 6f 61 74 29 20 20 20 20 23 20 74 72 75 65 0d 0a 70 75 74 73 20 | ance_of?(Float)....#.true..puts. |
| 3b820 | 6e 2e 69 6e 73 74 61 6e 63 65 5f 6f 66 3f 28 4e 75 6d 65 72 69 63 29 20 20 23 20 66 61 6c 73 65 | n.instance_of?(Numeric)..#.false |
| 3b840 | 0d 0a 0d 0a 23 20 61 73 6b 20 61 6e 20 6f 62 6a 65 63 74 20 77 68 65 74 68 65 72 20 69 74 20 69 | ....#.ask.an.object.whether.it.i |
| 3b860 | 73 20 61 6e 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 63 6c 61 73 73 2c 20 6f 6e 65 20 6f 66 20 74 | s.an.instance.of.class,.one.of.t |
| 3b880 | 68 65 0d 0a 23 20 73 75 70 65 72 63 6c 61 73 73 65 73 20 6f 66 20 74 68 65 20 6f 62 6a 65 63 74 | he..#.superclasses.of.the.object |
| 3b8a0 | 2c 20 6f 72 20 6d 6f 64 75 6c 65 73 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 69 74 0d 0a 70 75 74 | ,.or.modules.included.in.it..put |
| 3b8c0 | 73 20 6e 2e 6b 69 6e 64 5f 6f 66 3f 28 46 6c 6f 61 74 29 20 20 20 20 20 20 20 23 20 74 72 75 65 | s.n.kind_of?(Float).......#.true |
| 3b8e0 | 20 28 74 68 65 20 63 6c 61 73 73 29 0d 0a 70 75 74 73 20 6e 2e 6b 69 6e 64 5f 6f 66 3f 28 4e 75 | .(the.class)..puts.n.kind_of?(Nu |
| 3b900 | 6d 65 72 69 63 29 20 20 20 20 20 23 20 74 72 75 65 20 28 61 6e 20 61 6e 63 65 73 74 6f 72 20 63 | meric).....#.true.(an.ancestor.c |
| 3b920 | 6c 61 73 73 29 0d 0a 70 75 74 73 20 6e 2e 6b 69 6e 64 5f 6f 66 3f 28 43 6f 6d 70 61 72 61 62 6c | lass)..puts.n.kind_of?(Comparabl |
| 3b940 | 65 29 20 20 23 20 74 72 75 65 20 28 61 20 6d 69 78 69 6e 20 6d 6f 64 75 6c 65 29 0d 0a 70 75 74 | e)..#.true.(a.mixin.module)..put |
| 3b960 | 73 20 6e 2e 6b 69 6e 64 5f 6f 66 3f 28 53 74 72 69 6e 67 29 20 20 20 20 20 20 23 20 66 61 6c 73 | s.n.kind_of?(String)......#.fals |
| 3b980 | 65 0d 0a 0d 0a 23 20 61 73 6b 20 61 6e 20 6f 62 6a 65 63 74 20 77 68 65 74 68 65 72 20 69 74 20 | e....#.ask.an.object.whether.it. |
| 3b9a0 | 63 61 6e 20 72 65 73 70 6f 6e 64 20 74 6f 20 61 20 70 61 72 74 69 63 75 6c 61 72 20 6d 65 74 68 | can.respond.to.a.particular.meth |
| 3b9c0 | 6f 64 0d 0a 70 75 74 73 20 6e 2e 72 65 73 70 6f 6e 64 5f 74 6f 3f 28 27 2b 27 29 20 20 20 20 20 | od..puts.n.respond_to?('+')..... |
| 3b9e0 | 20 23 20 74 72 75 65 0d 0a 70 75 74 73 20 6e 2e 72 65 73 70 6f 6e 64 5f 74 6f 3f 28 27 6c 65 6e | .#.true..puts.n.respond_to?('len |
| 3ba00 | 67 74 68 27 29 20 23 20 66 61 6c 73 65 0d 0a 0d 0a 23 20 61 6c 6c 20 6d 65 74 68 6f 64 73 20 61 | gth').#.false....#.all.methods.a |
| 3ba20 | 6e 20 6f 62 6a 65 63 74 20 63 61 6e 20 72 65 73 70 6f 6e 64 20 74 6f 0d 0a 27 6a 75 73 74 20 61 | n.object.can.respond.to..'just.a |
| 3ba40 | 20 73 74 72 69 6e 67 27 2e 6d 65 74 68 6f 64 73 2e 65 61 63 68 20 7b 20 7c 6d 7c 20 70 75 74 73 | .string'.methods.each.{.|m|.puts |
| 3ba60 | 20 6d 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 39 0d 0a 23 20 41 63 | .m.}......#.@@PLEAC@@_13.9..#.Ac |
| 3ba80 | 74 75 61 6c 6c 79 20 61 6e 79 20 63 6c 61 73 73 20 69 6e 20 52 75 62 79 20 69 73 20 69 6e 68 65 | tually.any.class.in.Ruby.is.inhe |
| 3baa0 | 72 69 74 61 62 6c 65 0d 0a 63 6c 61 73 73 20 50 65 72 73 6f 6e 0d 0a 20 20 20 20 61 74 74 72 5f | ritable..class.Person......attr_ |
| 3bac0 | 61 63 63 65 73 73 6f 72 20 3a 61 67 65 2c 20 3a 6e 61 6d 65 0d 0a 20 20 20 20 64 65 66 20 69 6e | accessor.:age,.:name......def.in |
| 3bae0 | 69 74 69 61 6c 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 40 6e 61 6d 65 0d 0a 20 20 20 20 20 20 20 | itialize..........@name......... |
| 3bb00 | 20 40 61 67 65 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .@age......end..end..#---------- |
| 3bb20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 64 75 64 65 20 3d 20 50 65 72 73 | -------------------..dude.=.Pers |
| 3bb40 | 6f 6e 2e 6e 65 77 0d 0a 64 75 64 65 2e 6e 61 6d 65 20 3d 20 27 4a 61 73 6f 6e 27 0d 0a 64 75 64 | on.new..dude.name.=.'Jason'..dud |
| 3bb60 | 65 2e 61 67 65 20 3d 20 32 33 0d 0a 70 72 69 6e 74 66 20 22 25 73 20 69 73 20 61 67 65 20 25 64 | e.age.=.23..printf."%s.is.age.%d |
| 3bb80 | 2e 5c 6e 22 2c 20 64 75 64 65 2e 6e 61 6d 65 2c 20 64 75 64 65 2e 61 67 65 0d 0a 23 2d 2d 2d 2d | .\n",.dude.name,.dude.age..#---- |
| 3bba0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 49 6e 68 | -------------------------..#.Inh |
| 3bbc0 | 65 72 69 74 69 6e 67 20 66 72 6f 6d 20 50 65 72 73 6f 6e 0d 0a 63 6c 61 73 73 20 45 6d 70 6c 6f | eriting.from.Person..class.Emplo |
| 3bbe0 | 79 65 65 20 3c 20 50 65 72 73 6f 6e 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 | yee.<.Person......attr_accessor. |
| 3bc00 | 3a 73 61 6c 61 72 79 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | :salary..end..#----------------- |
| 3bc20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 65 6d 70 6c 20 3d 20 45 6d 70 6c 6f 79 65 65 2e 6e 65 | ------------..empl.=.Employee.ne |
| 3bc40 | 77 0d 0a 65 6d 70 6c 2e 6e 61 6d 65 20 3d 20 27 4a 61 73 6f 6e 27 0d 0a 65 6d 70 6c 2e 61 67 65 | w..empl.name.=.'Jason'..empl.age |
| 3bc60 | 20 3d 20 32 33 0d 0a 65 6d 70 6c 2e 73 61 6c 61 72 79 20 3d 20 32 30 30 0d 0a 70 72 69 6e 74 66 | .=.23..empl.salary.=.200..printf |
| 3bc80 | 20 22 25 73 20 69 73 20 61 67 65 20 25 64 2c 20 74 68 65 20 73 61 6c 61 72 79 20 69 73 20 25 64 | ."%s.is.age.%d,.the.salary.is.%d |
| 3bca0 | 2e 5c 6e 22 2c 20 65 6d 70 6c 2e 6e 61 6d 65 2c 20 65 6d 70 6c 2e 61 67 65 2c 20 65 6d 70 6c 2e | .\n",.empl.name,.empl.age,.empl. |
| 3bcc0 | 73 61 6c 61 72 79 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | salary..#----------------------- |
| 3bce0 | 2d 2d 2d 2d 2d 2d 0d 0a 23 20 41 6e 79 20 62 75 69 6c 74 2d 69 6e 20 63 6c 61 73 73 20 63 61 6e | ------..#.Any.built-in.class.can |
| 3bd00 | 20 62 65 20 69 6e 68 65 72 69 74 65 64 20 74 68 65 20 73 61 6d 65 20 77 61 79 0d 0a 63 6c 61 73 | .be.inherited.the.same.way..clas |
| 3bd20 | 73 20 57 65 69 72 64 53 74 72 69 6e 67 20 3c 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 64 65 66 20 | s.WeirdString.<.String......def. |
| 3bd40 | 69 6e 69 74 69 61 6c 69 7a 65 28 6f 62 6a 29 0d 0a 20 20 20 20 20 20 20 20 73 75 70 65 72 20 6f | initialize(obj)..........super.o |
| 3bd60 | 62 6a 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 65 66 20 2b 28 61 6e 6f 74 68 65 72 4f 62 | bj......end......def.+(anotherOb |
| 3bd80 | 6a 29 20 20 20 23 20 2b 20 6d 65 74 68 6f 64 20 69 6e 20 74 68 69 73 20 63 6c 61 73 73 20 69 73 | j)...#.+.method.in.this.class.is |
| 3bda0 | 20 6f 76 65 72 72 69 64 64 65 6e 0d 0a 20 20 20 20 20 20 20 20 23 20 74 6f 20 72 65 74 75 72 6e | .overridden..........#.to.return |
| 3bdc0 | 20 74 68 65 20 73 75 6d 20 6f 66 20 73 74 72 69 6e 67 20 6c 65 6e 67 74 68 73 0d 0a 20 20 20 20 | .the.sum.of.string.lengths...... |
| 3bde0 | 20 20 20 20 73 65 6c 66 2e 6c 65 6e 67 74 68 20 2b 20 61 6e 6f 74 68 65 72 4f 62 6a 2e 6c 65 6e | ....self.length.+.anotherObj.len |
| 3be00 | 67 74 68 20 20 23 20 27 73 65 6c 66 27 20 63 61 6e 20 62 65 20 6f 6d 69 74 74 65 64 0d 0a 20 20 | gth..#.'self'.can.be.omitted.... |
| 3be20 | 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..end..end..#------------------- |
| 3be40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 61 20 3d 20 57 65 69 72 64 53 74 72 69 6e 67 2e 6e 65 77 28 | ----------..a.=.WeirdString.new( |
| 3be60 | 27 68 65 6c 6c 6f 27 29 0d 0a 62 20 3d 20 57 65 69 72 64 53 74 72 69 6e 67 2e 6e 65 77 28 27 62 | 'hello')..b.=.WeirdString.new('b |
| 3be80 | 79 65 27 29 0d 0a 0d 0a 70 75 74 73 20 61 20 2b 20 62 20 20 20 20 23 20 74 68 65 20 6f 76 65 72 | ye')....puts.a.+.b....#.the.over |
| 3bea0 | 72 69 64 64 65 6e 20 2b 0d 0a 23 3d 3e 20 38 0d 0a 70 75 74 73 20 61 2e 6c 65 6e 67 74 68 20 23 | ridden.+..#=>.8..puts.a.length.# |
| 3bec0 | 20 6d 65 74 68 6f 64 20 66 72 6f 6d 20 74 68 65 20 73 75 70 65 72 63 6c 61 73 73 2c 20 53 74 72 | .method.from.the.superclass,.Str |
| 3bee0 | 69 6e 67 0d 0a 23 3d 3e 20 35 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 31 | ing..#=>.5......#.@@PLEAC@@_13.1 |
| 3bf00 | 31 0d 0a 23 20 49 6e 20 72 75 62 79 20 79 6f 75 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 74 68 | 1..#.In.ruby.you.can.override.th |
| 3bf20 | 65 20 6d 65 74 68 6f 64 5f 6d 69 73 73 69 6e 67 20 6d 65 74 68 6f 64 0d 0a 23 20 74 6f 20 68 61 | e.method_missing.method..#.to.ha |
| 3bf40 | 76 65 20 61 20 73 6f 6c 75 74 69 6f 6e 20 73 69 6d 69 6c 61 72 20 74 6f 20 70 65 72 6c 73 20 41 | ve.a.solution.similar.to.perls.A |
| 3bf60 | 55 54 4f 4c 4f 41 44 2e 0d 0a 63 6c 61 73 73 20 50 65 72 73 6f 6e 0d 0a 0d 0a 20 20 20 20 64 65 | UTOLOAD...class.Person........de |
| 3bf80 | 66 20 69 6e 69 74 69 61 6c 69 7a 65 0d 0a 20 20 20 20 20 20 20 20 40 6f 6b 5f 66 69 65 6c 64 73 | f.initialize..........@ok_fields |
| 3bfa0 | 20 3d 20 25 77 28 6e 61 6d 65 20 61 67 65 20 70 65 65 72 73 20 70 61 72 65 6e 74 29 0d 0a 20 20 | .=.%w(name.age.peers.parent).... |
| 3bfc0 | 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 76 61 6c 69 64 5f 61 74 74 72 69 62 75 74 65 | ..end........def.valid_attribute |
| 3bfe0 | 3f 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 40 6f 6b 5f 66 69 65 6c 64 73 2e 69 6e 63 6c | ?(name)..........@ok_fields.incl |
| 3c000 | 75 64 65 3f 28 6e 61 6d 65 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 6d | ude?(name)......end........def.m |
| 3c020 | 65 74 68 6f 64 5f 6d 69 73 73 69 6e 67 28 6e 61 6d 65 73 79 6d 62 6f 6c 2c 20 2a 70 61 72 61 6d | ethod_missing(namesymbol,.*param |
| 3c040 | 73 29 0d 0a 20 20 20 20 20 20 20 20 6e 61 6d 65 20 3d 20 6e 61 6d 65 73 79 6d 62 6f 6c 2e 74 6f | s)..........name.=.namesymbol.to |
| 3c060 | 5f 73 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 66 20 6e 61 6d 65 20 3d 7e 20 2f 5e | _s..........return.if.name.=~./^ |
| 3c080 | 41 2d 5a 2f 0d 0a 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 2e 74 6f 5f 73 5b 2d 31 5d 20 3d | A-Z/..........if.name.to_s[-1].= |
| 3c0a0 | 3d 20 28 27 3d 27 5b 30 5d 29 20 20 20 20 20 20 20 23 20 77 65 20 68 61 76 65 20 61 20 73 65 74 | =.('='[0]).......#.we.have.a.set |
| 3c0c0 | 74 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 73 53 65 74 74 65 72 20 3d 20 74 72 75 65 | ter..............isSetter.=.true |
| 3c0e0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2e 73 75 62 21 28 2f 3d 24 2f 2c 20 27 27 | ..............name.sub!(/=$/,.'' |
| 3c100 | 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 69 66 20 76 61 6c 69 64 | )..........end..........if.valid |
| 3c120 | 5f 61 74 74 72 69 62 75 74 65 3f 28 6e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 | _attribute?(name)..............i |
| 3c140 | 66 20 69 73 53 65 74 74 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 | f.isSetter..................inst |
| 3c160 | 61 6e 63 65 5f 76 61 72 69 61 62 6c 65 5f 73 65 74 28 22 40 23 7b 6e 61 6d 65 7d 22 2c 20 2a 70 | ance_variable_set("@#{name}",.*p |
| 3c180 | 61 72 61 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 | arams)..............else........ |
| 3c1a0 | 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 61 6e 63 65 5f 76 61 72 69 61 62 6c 65 5f 67 65 74 28 | ..........instance_variable_get( |
| 3c1c0 | 22 40 23 7b 6e 61 6d 65 7d 22 2c 20 2a 70 61 72 61 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | "@#{name}",.*params)............ |
| 3c1e0 | 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | ..end..........else............. |
| 3c200 | 20 23 20 69 66 20 6e 6f 20 61 6e 6e 65 73 74 6f 72 20 69 73 20 72 65 73 70 6f 6e 73 69 62 6c 65 | .#.if.no.annestor.is.responsible |
| 3c220 | 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 74 68 65 20 4f 62 6a 65 63 74 20 63 6c 61 73 | ,..............#.the.Object.clas |
| 3c240 | 73 20 77 69 6c 6c 20 74 68 72 6f 77 20 61 20 4e 6f 4d 65 74 68 6f 64 45 72 72 6f 72 20 65 78 63 | s.will.throw.a.NoMethodError.exc |
| 3c260 | 65 70 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 75 70 65 72 28 6e 61 6d 65 73 79 | eption..............super(namesy |
| 3c280 | 6d 62 6f 6c 2c 20 2a 70 61 72 61 6d 73 29 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 | mbol,.*params)..........end..... |
| 3c2a0 | 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 6b 69 64 | .end........def.new..........kid |
| 3c2c0 | 20 3d 20 50 65 72 73 6f 6e 2e 6e 65 77 0d 0a 20 20 20 20 20 20 20 20 6b 69 64 2e 70 61 72 65 6e | .=.Person.new..........kid.paren |
| 3c2e0 | 74 20 3d 20 73 65 6c 66 0d 0a 20 20 20 20 20 20 20 20 6b 69 64 0d 0a 20 20 20 20 65 6e 64 0d 0a | t.=.self..........kid......end.. |
| 3c300 | 0d 0a 65 6e 64 0d 0a 0d 0a 64 61 64 20 3d 20 50 65 72 73 6f 6e 2e 6e 65 77 0d 0a 64 61 64 2e 6e | ..end....dad.=.Person.new..dad.n |
| 3c320 | 61 6d 65 20 3d 20 22 4a 61 73 6f 6e 22 0d 0a 64 61 64 2e 61 67 65 20 3d 20 32 33 0d 0a 6b 69 64 | ame.=."Jason"..dad.age.=.23..kid |
| 3c340 | 20 3d 20 64 61 64 2e 6e 65 77 0d 0a 6b 69 64 2e 6e 61 6d 65 20 3d 20 22 52 61 63 68 65 6c 22 0d | .=.dad.new..kid.name.=."Rachel". |
| 3c360 | 0a 6b 69 64 2e 61 67 65 20 3d 20 32 0d 0a 70 75 74 73 20 22 4b 69 64 27 73 20 70 61 72 65 6e 74 | .kid.age.=.2..puts."Kid's.parent |
| 3c380 | 20 69 73 20 23 7b 6b 69 64 2e 70 61 72 65 6e 74 2e 6e 61 6d 65 7d 22 0d 0a 70 75 74 73 20 64 61 | .is.#{kid.parent.name}"..puts.da |
| 3c3a0 | 64 0d 0a 70 75 74 73 20 6b 69 64 0d 0a 0d 0a 63 6c 61 73 73 20 45 6d 70 6c 6f 79 65 65 20 3c 20 | d..puts.kid....class.Employee.<. |
| 3c3c0 | 50 65 72 73 6f 6e 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 0d 0a 20 20 20 20 | Person......def.initialize...... |
| 3c3e0 | 20 20 20 20 73 75 70 65 72 0d 0a 20 20 20 20 20 20 20 20 40 6f 6b 5f 66 69 65 6c 64 73 2e 70 75 | ....super..........@ok_fields.pu |
| 3c400 | 73 68 28 22 73 61 6c 61 72 79 22 2c 20 22 62 6f 73 73 22 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 | sh("salary",."boss")......end... |
| 3c420 | 20 20 20 64 65 66 20 6f 6b 5f 66 69 65 6c 64 73 0d 0a 20 20 20 20 20 20 20 20 40 6f 6b 5f 66 69 | ...def.ok_fields..........@ok_fi |
| 3c440 | 65 6c 64 73 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 | elds......end..end......#.@@PLEA |
| 3c460 | 43 40 40 5f 31 33 2e 31 33 0d 0a 23 20 54 68 65 20 72 75 62 79 20 67 61 72 62 61 67 65 20 63 6f | C@@_13.13..#.The.ruby.garbage.co |
| 3c480 | 6c 6c 65 63 74 6f 72 20 70 72 65 74 65 6e 64 73 20 74 6f 20 63 6f 70 65 20 77 69 74 68 20 63 69 | llector.pretends.to.cope.with.ci |
| 3c4a0 | 72 63 75 6c 61 72 20 73 74 72 75 63 74 75 72 65 73 2e 0d 0a 23 20 59 6f 75 20 63 61 6e 20 74 65 | rcular.structures...#.You.can.te |
| 3c4c0 | 73 74 20 69 74 20 77 69 74 68 20 74 68 69 73 20 63 6f 64 65 3a 0d 0a 63 6c 61 73 73 20 52 69 6e | st.it.with.this.code:..class.Rin |
| 3c4e0 | 67 4e 6f 64 65 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 6e 65 78 74 0d 0a | gNode......attr_accessor.:next.. |
| 3c500 | 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 70 72 65 76 0d 0a 20 20 20 20 61 74 74 | ....attr_accessor.:prev......att |
| 3c520 | 72 5f 72 65 61 64 65 72 20 3a 6e 61 6d 65 0d 0a 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 | r_reader.:name........def.initia |
| 3c540 | 6c 69 7a 65 28 61 4e 61 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 40 6e 61 6d 65 20 3d 20 61 4e 61 | lize(aName)..........@name.=.aNa |
| 3c560 | 6d 65 0d 0a 20 20 20 20 20 20 20 20 4f 62 6a 65 63 74 53 70 61 63 65 2e 64 65 66 69 6e 65 5f 66 | me..........ObjectSpace.define_f |
| 3c580 | 69 6e 61 6c 69 7a 65 72 28 73 65 6c 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | inalizer(self,.................. |
| 3c5a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 6c 61 73 73 2e | .....................self.class. |
| 3c5c0 | 6d 65 74 68 6f 64 28 3a 66 69 6e 61 6c 69 7a 65 29 2e 74 6f 5f 70 72 6f 63 29 0d 0a 20 20 20 20 | method(:finalize).to_proc)...... |
| 3c5e0 | 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 52 69 6e 67 4e 6f 64 65 2e 66 69 6e 61 6c 69 7a 65 | end........def.RingNode.finalize |
| 3c600 | 28 69 64 29 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 4e 6f 64 65 20 23 7b 69 64 7d 20 64 | (id)..........puts."Node.#{id}.d |
| 3c620 | 79 69 6e 67 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 52 69 6e 67 4e 6f | ying"......end........def.RingNo |
| 3c640 | 64 65 2e 73 68 6f 77 5f 61 6c 6c 5f 6f 62 6a 65 63 74 73 0d 0a 20 20 20 20 20 20 20 20 4f 62 6a | de.show_all_objects..........Obj |
| 3c660 | 65 63 74 53 70 61 63 65 2e 65 61 63 68 5f 6f 62 6a 65 63 74 20 7b 7c 69 64 7c 0d 0a 20 20 20 20 | ectSpace.each_object.{|id|...... |
| 3c680 | 20 20 20 20 20 20 20 20 70 75 74 73 20 69 64 2e 6e 61 6d 65 20 69 66 20 69 64 2e 63 6c 61 73 73 | ........puts.id.name.if.id.class |
| 3c6a0 | 20 3d 3d 20 52 69 6e 67 4e 6f 64 65 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6e 64 | .==.RingNode..........}......end |
| 3c6c0 | 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 63 72 65 61 74 65 5f 74 65 73 74 0d 0a 20 20 20 20 61 20 | ..end....def.create_test......a. |
| 3c6e0 | 3d 20 52 69 6e 67 4e 6f 64 65 2e 6e 65 77 28 22 4e 6f 64 65 20 41 22 29 0d 0a 20 20 20 20 62 20 | =.RingNode.new("Node.A")......b. |
| 3c700 | 3d 20 52 69 6e 67 4e 6f 64 65 2e 6e 65 77 28 22 4e 6f 64 65 20 42 22 29 0d 0a 20 20 20 20 63 20 | =.RingNode.new("Node.B")......c. |
| 3c720 | 3d 20 52 69 6e 67 4e 6f 64 65 2e 6e 65 77 28 22 4e 6f 64 65 20 43 22 29 0d 0a 20 20 20 20 61 2e | =.RingNode.new("Node.C")......a. |
| 3c740 | 6e 65 78 74 20 3d 20 62 0d 0a 20 20 20 20 62 2e 6e 65 78 74 20 3d 20 63 0d 0a 20 20 20 20 63 2e | next.=.b......b.next.=.c......c. |
| 3c760 | 6e 65 78 74 20 3d 20 61 0d 0a 20 20 20 20 61 2e 70 72 65 76 20 3d 20 63 0d 0a 20 20 20 20 63 2e | next.=.a......a.prev.=.c......c. |
| 3c780 | 70 72 65 76 20 3d 20 62 0d 0a 20 20 20 20 62 2e 70 72 65 76 20 3d 20 61 0d 0a 0d 0a 20 20 20 20 | prev.=.b......b.prev.=.a........ |
| 3c7a0 | 61 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 62 20 3d 20 6e 69 6c 0d 0a 20 20 20 20 63 20 3d 20 6e 69 | a.=.nil......b.=.nil......c.=.ni |
| 3c7c0 | 6c 0d 0a 65 6e 64 0d 0a 0d 0a 63 72 65 61 74 65 5f 74 65 73 74 0d 0a 52 69 6e 67 4e 6f 64 65 2e | l..end....create_test..RingNode. |
| 3c7e0 | 73 68 6f 77 5f 61 6c 6c 5f 6f 62 6a 65 63 74 73 0d 0a 4f 62 6a 65 63 74 53 70 61 63 65 2e 67 61 | show_all_objects..ObjectSpace.ga |
| 3c800 | 72 62 61 67 65 5f 63 6f 6c 6c 65 63 74 0d 0a 70 75 74 73 20 22 41 66 74 65 72 20 67 61 72 62 61 | rbage_collect..puts."After.garba |
| 3c820 | 67 65 20 63 6f 6c 6c 65 63 74 69 6f 6e 22 0d 0a 52 69 6e 67 4e 6f 64 65 2e 73 68 6f 77 5f 61 6c | ge.collection"..RingNode.show_al |
| 3c840 | 6c 5f 6f 62 6a 65 63 74 73 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 33 2e 31 34 | l_objects......#.@@PLEAC@@_13.14 |
| 3c860 | 0d 0a 63 6c 61 73 73 20 53 74 72 69 6e 67 0d 0a 20 20 20 20 64 65 66 20 3c 3d 3e 28 6f 74 68 65 | ..class.String......def.<=>(othe |
| 3c880 | 72 29 0d 0a 20 20 20 20 20 20 20 20 73 65 6c 66 2e 63 61 73 65 63 6d 70 20 6f 74 68 65 72 0d 0a | r)..........self.casecmp.other.. |
| 3c8a0 | 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 68 65 72 65 20 69 73 20 6e 6f 20 77 61 | ....end..end....#.There.is.no.wa |
| 3c8c0 | 79 20 74 6f 20 64 69 72 65 63 74 6c 79 20 6f 76 65 72 6c 6f 61 64 20 74 68 65 20 27 22 22 27 20 | y.to.directly.overload.the.'""'. |
| 3c8e0 | 28 73 74 72 69 6e 67 69 66 79 29 0d 0a 23 20 6f 70 65 72 61 74 6f 72 20 69 6e 20 52 75 62 79 2e | (stringify)..#.operator.in.Ruby. |
| 3c900 | 20 20 48 6f 77 65 76 65 72 2c 20 62 79 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 20 63 6c 61 73 73 65 | ..However,.by.convention,.classe |
| 3c920 | 73 20 77 68 69 63 68 0d 0a 23 20 63 61 6e 20 72 65 61 73 6f 6e 61 62 6c 79 20 62 65 20 63 6f 6e | s.which..#.can.reasonably.be.con |
| 3c940 | 76 65 72 74 65 64 20 74 6f 20 61 20 53 74 72 69 6e 67 20 77 69 6c 6c 20 64 65 66 69 6e 65 20 61 | verted.to.a.String.will.define.a |
| 3c960 | 0d 0a 23 20 27 74 6f 5f 73 27 20 6d 65 74 68 6f 64 20 61 73 20 69 6e 20 74 68 65 20 54 69 6d 65 | ..#.'to_s'.method.as.in.the.Time |
| 3c980 | 4e 75 6d 62 65 72 20 63 6c 61 73 73 20 64 65 66 69 6e 65 64 20 62 65 6c 6f 77 2e 0d 0a 23 20 54 | Number.class.defined.below...#.T |
| 3c9a0 | 68 65 20 27 70 75 74 73 27 20 6d 65 74 68 6f 64 20 77 69 6c 6c 20 61 75 74 6f 6d 61 74 63 61 6c | he.'puts'.method.will.automatcal |
| 3c9c0 | 6c 79 20 63 61 6c 6c 20 61 6e 20 6f 62 6a 65 63 74 27 73 0d 0a 23 20 27 74 6f 5f 73 27 20 6d 65 | ly.call.an.object's..#.'to_s'.me |
| 3c9e0 | 74 68 6f 64 20 61 73 20 69 73 20 64 65 6d 6f 6e 73 74 72 61 74 65 64 20 62 65 6c 6f 77 2e 0d 0a | thod.as.is.demonstrated.below... |
| 3ca00 | 23 20 46 75 72 74 68 65 72 6d 6f 72 65 2c 20 69 66 20 61 20 63 6c 61 73 73 20 64 65 66 69 6e 65 | #.Furthermore,.if.a.class.define |
| 3ca20 | 73 20 61 20 74 6f 5f 73 74 72 20 6d 65 74 68 6f 64 2c 20 61 6e 20 6f 62 6a 65 63 74 20 6f 66 20 | s.a.to_str.method,.an.object.of. |
| 3ca40 | 74 68 61 74 0d 0a 23 20 63 6c 61 73 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 6d 6f 73 74 20 61 | that..#.class.can.be.used.most.a |
| 3ca60 | 6e 79 20 70 6c 61 63 65 20 77 68 65 72 65 20 74 68 65 20 69 6e 74 65 72 70 72 65 74 65 72 20 69 | ny.place.where.the.interpreter.i |
| 3ca80 | 73 20 6c 6f 6f 6b 69 6e 67 0d 0a 23 20 66 6f 72 20 61 20 53 74 72 69 6e 67 20 76 61 6c 75 65 2e | s.looking..#.for.a.String.value. |
| 3caa0 | 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ....#--------------------------- |
| 3cac0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 4e 4f 54 45 3a 20 52 75 62 79 20 68 61 73 20 61 | ------------..#.NOTE:.Ruby.has.a |
| 3cae0 | 20 62 75 69 6c 74 69 6e 20 54 69 6d 65 20 63 6c 61 73 73 20 77 68 69 63 68 20 77 6f 75 6c 64 20 | .builtin.Time.class.which.would. |
| 3cb00 | 75 73 75 61 6c 6c 79 20 62 65 20 75 73 65 64 0d 0a 23 20 74 6f 20 6d 61 6e 69 70 75 6c 61 74 65 | usually.be.used..#.to.manipulate |
| 3cb20 | 20 74 69 6d 65 20 6f 62 6a 65 63 74 73 2c 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 | .time.objects,.the.following.is. |
| 3cb40 | 73 75 70 70 6c 69 65 64 20 66 6f 72 0d 0a 23 20 65 64 75 63 61 74 69 6f 6e 61 6c 20 70 75 72 70 | supplied.for..#.educational.purp |
| 3cb60 | 6f 73 65 73 20 74 6f 20 64 65 6d 6f 6e 73 74 72 61 74 65 20 6f 70 65 72 61 74 6f 72 20 6f 76 65 | oses.to.demonstrate.operator.ove |
| 3cb80 | 72 6c 6f 61 64 69 6e 67 2e 0d 0a 23 0d 0a 63 6c 61 73 73 20 54 69 6d 65 4e 75 6d 62 65 72 0d 0a | rloading...#..class.TimeNumber.. |
| 3cba0 | 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 20 3a 68 6f 75 72 73 2c 3a 6d 69 6e 75 74 | ....attr_accessor..:hours,:minut |
| 3cbc0 | 65 73 2c 3a 73 65 63 6f 6e 64 73 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 | es,:seconds......def.initialize( |
| 3cbe0 | 20 68 6f 75 72 73 2c 20 6d 69 6e 75 74 65 73 2c 20 73 65 63 6f 6e 64 73 29 0d 0a 20 20 20 20 20 | .hours,.minutes,.seconds)....... |
| 3cc00 | 20 20 20 40 68 6f 75 72 73 20 3d 20 68 6f 75 72 73 0d 0a 20 20 20 20 20 20 20 20 40 6d 69 6e 75 | ...@hours.=.hours..........@minu |
| 3cc20 | 74 65 73 20 3d 20 6d 69 6e 75 74 65 73 0d 0a 20 20 20 20 20 20 20 20 40 73 65 63 6f 6e 64 73 20 | tes.=.minutes..........@seconds. |
| 3cc40 | 3d 20 73 65 63 6f 6e 64 73 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 74 6f | =.seconds......end........def.to |
| 3cc60 | 5f 73 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 70 72 69 6e 74 66 28 20 22 25 64 3a | _s..........return.sprintf(."%d: |
| 3cc80 | 25 30 32 64 3a 25 30 32 64 22 2c 20 40 68 6f 75 72 73 2c 20 40 6d 69 6e 75 74 65 73 2c 20 40 73 | %02d:%02d",.@hours,.@minutes,.@s |
| 3cca0 | 65 63 6f 6e 64 73 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 74 6f 5f 73 | econds)......end........def.to_s |
| 3ccc0 | 74 72 0d 0a 20 20 20 20 20 20 20 20 74 6f 5f 73 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 | tr..........to_s......end....... |
| 3cce0 | 20 64 65 66 20 2b 28 20 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 20 73 65 63 6f 6e 64 73 20 | .def.+(.other)..........seconds. |
| 3cd00 | 3d 20 40 73 65 63 6f 6e 64 73 20 2b 20 6f 74 68 65 72 2e 73 65 63 6f 6e 64 73 0d 0a 20 20 20 20 | =.@seconds.+.other.seconds...... |
| 3cd20 | 20 20 20 20 6d 69 6e 75 74 65 73 20 3d 20 40 6d 69 6e 75 74 65 73 20 2b 20 6f 74 68 65 72 2e 6d | ....minutes.=.@minutes.+.other.m |
| 3cd40 | 69 6e 75 74 65 73 0d 0a 20 20 20 20 20 20 20 20 68 6f 75 72 73 20 3d 20 40 68 6f 75 72 73 20 2b | inutes..........hours.=.@hours.+ |
| 3cd60 | 20 6f 74 68 65 72 2e 68 6f 75 72 73 0d 0a 20 20 20 20 20 20 20 20 69 66 20 73 65 63 6f 6e 64 73 | .other.hours..........if.seconds |
| 3cd80 | 20 3e 3d 20 36 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 65 63 6f 6e 64 73 20 25 3d 20 36 | .>=.60..............seconds.%=.6 |
| 3cda0 | 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6e 75 74 65 73 20 2b 3d 20 31 0d 0a 20 20 20 | 0..............minutes.+=.1..... |
| 3cdc0 | 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 69 66 20 6d 69 6e 75 74 65 73 20 3e 3d 20 | .....end..........if.minutes.>=. |
| 3cde0 | 36 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6e 75 74 65 73 20 25 3d 20 36 30 0d 0a 20 | 60..............minutes.%=.60... |
| 3ce00 | 20 20 20 20 20 20 20 20 20 20 20 68 6f 75 72 73 20 2b 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 65 | ...........hours.+=.1..........e |
| 3ce20 | 6e 64 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 54 69 6d 65 4e 75 6d 62 65 72 2e 6e 65 | nd..........return.TimeNumber.ne |
| 3ce40 | 77 28 68 6f 75 72 73 2c 20 6d 69 6e 75 74 65 73 2c 20 73 65 63 6f 6e 64 73 29 0d 0a 20 20 20 20 | w(hours,.minutes,.seconds)...... |
| 3ce60 | 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 2d 28 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 | end........def.-(other)......... |
| 3ce80 | 20 72 61 69 73 65 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 0d 0a 20 20 20 20 | .raise.NotImplementedError...... |
| 3cea0 | 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 2a 28 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 | end........def.*(other)......... |
| 3cec0 | 20 72 61 69 73 65 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 0d 0a 20 20 20 20 | .raise.NotImplementedError...... |
| 3cee0 | 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 2f 28 20 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 | end........def./(.other)........ |
| 3cf00 | 20 20 72 61 69 73 65 20 4e 6f 74 49 6d 70 6c 65 6d 65 6e 74 65 64 45 72 72 6f 72 0d 0a 20 20 20 | ..raise.NotImplementedError..... |
| 3cf20 | 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 74 31 20 3d 20 54 69 6d 65 4e 75 6d 62 65 72 2e 6e 65 77 | .end..end....t1.=.TimeNumber.new |
| 3cf40 | 28 30 2c 20 35 38 2c 20 35 39 29 0d 0a 73 65 63 20 3d 20 54 69 6d 65 4e 75 6d 62 65 72 2e 6e 65 | (0,.58,.59)..sec.=.TimeNumber.ne |
| 3cf60 | 77 28 30 2c 20 30 2c 20 31 29 0d 0a 6d 69 6e 20 3d 20 54 69 6d 65 4e 75 6d 62 65 72 2e 6e 65 77 | w(0,.0,.1)..min.=.TimeNumber.new |
| 3cf80 | 28 30 2c 20 31 2c 20 30 29 0d 0a 70 75 74 73 20 74 31 20 2b 20 73 65 63 20 2b 20 6d 69 6e 20 2b | (0,.1,.0)..puts.t1.+.sec.+.min.+ |
| 3cfa0 | 20 6d 69 6e 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .min....#----------------------- |
| 3cfc0 | 2d 2d 2d 2d 2d 2d 0d 0a 23 20 53 74 72 4e 75 6d 20 63 6c 61 73 73 20 65 78 61 6d 70 6c 65 3a 20 | ------..#.StrNum.class.example:. |
| 3cfe0 | 52 75 62 79 27 73 20 62 75 69 6c 74 69 6e 20 53 74 72 69 6e 67 20 63 6c 61 73 73 20 61 6c 72 65 | Ruby's.builtin.String.class.alre |
| 3d000 | 61 64 79 20 68 61 73 20 74 68 65 0d 0a 23 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 6f 75 74 6c | ady.has.the..#.capabilities.outl |
| 3d020 | 69 6e 65 64 20 69 6e 20 53 74 72 4e 75 6d 20 50 65 72 6c 20 65 78 61 6d 70 6c 65 2c 20 68 6f 77 | ined.in.StrNum.Perl.example,.how |
| 3d040 | 65 76 65 72 20 74 68 65 20 27 2a 27 20 6f 70 65 72 61 74 6f 72 0d 0a 23 20 6f 6e 20 52 75 62 79 | ever.the.'*'.operator..#.on.Ruby |
| 3d060 | 27 73 20 53 74 72 69 6e 67 20 63 6c 61 73 73 20 61 63 74 73 20 64 69 66 66 65 72 65 6e 74 6c 79 | 's.String.class.acts.differently |
| 3d080 | 3a 20 49 74 20 63 72 65 61 74 65 73 20 61 20 73 74 72 69 6e 67 20 77 68 69 63 68 0d 0a 23 20 69 | :.It.creates.a.string.which..#.i |
| 3d0a0 | 73 20 74 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 74 72 69 6e 67 20 72 65 70 65 61 74 65 64 20 4e | s.the.original.string.repeated.N |
| 3d0c0 | 20 74 69 6d 65 73 2e 0d 0a 23 0d 0a 23 20 55 73 69 6e 67 20 52 75 62 79 27 73 20 53 74 72 69 6e | .times...#..#.Using.Ruby's.Strin |
| 3d0e0 | 67 20 63 6c 61 73 73 20 61 73 20 69 73 20 69 6e 20 74 68 69 73 20 65 78 61 6d 70 6c 65 3a 0d 0a | g.class.as.is.in.this.example:.. |
| 3d100 | 78 20 3d 20 22 52 65 64 22 3b 20 79 20 3d 20 22 42 6c 61 63 6b 22 0d 0a 7a 20 3d 20 78 2b 79 0d | x.=."Red";.y.=."Black"..z.=.x+y. |
| 3d120 | 0a 72 20 3d 20 7a 2a 33 20 23 20 72 20 69 73 20 22 52 65 64 42 6c 61 63 6b 52 65 64 42 6c 61 63 | .r.=.z*3.#.r.is."RedBlackRedBlac |
| 3d140 | 6b 52 65 64 42 6c 61 63 6b 22 0d 0a 70 75 74 73 20 22 76 61 6c 75 65 73 20 61 72 65 20 23 7b 78 | kRedBlack"..puts."values.are.#{x |
| 3d160 | 7d 2c 20 23 7b 79 7d 2c 20 23 7b 7a 7d 2c 20 61 6e 64 20 23 7b 72 7d 22 0d 0a 70 72 69 6e 74 20 | },.#{y},.#{z},.and.#{r}"..print. |
| 3d180 | 22 23 7b 78 7d 20 69 73 20 22 2c 20 78 20 3c 20 79 20 3f 20 22 4c 54 22 20 3a 20 22 47 45 22 2c | "#{x}.is.",.x.<.y.?."LT".:."GE", |
| 3d1a0 | 20 22 20 23 7b 79 7d 5c 6e 22 0d 0a 23 20 70 72 69 6e 74 73 3a 0d 0a 23 20 76 61 6c 75 65 73 20 | .".#{y}\n"..#.prints:..#.values. |
| 3d1c0 | 61 72 65 20 52 65 64 2c 20 42 6c 61 63 6b 2c 20 52 65 64 42 6c 61 63 6b 2c 20 61 6e 64 20 52 65 | are.Red,.Black,.RedBlack,.and.Re |
| 3d1e0 | 64 42 6c 61 63 6b 52 65 64 42 6c 61 63 6b 52 65 64 42 6c 61 63 6b 0d 0a 23 20 52 65 64 20 69 73 | dBlackRedBlackRedBlack..#.Red.is |
| 3d200 | 20 47 45 20 42 6c 61 63 6b 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .GE.Black....#------------------ |
| 3d220 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 63 6c 61 73 73 20 46 69 78 4e 75 6d 0d 0a 20 20 20 20 52 | -----------..class.FixNum......R |
| 3d240 | 45 47 45 58 20 3d 20 2f 28 5c 2e 5c 64 2a 29 2f 0d 0a 20 20 20 20 44 45 46 41 55 4c 54 5f 50 4c | EGEX.=./(\.\d*)/......DEFAULT_PL |
| 3d260 | 41 43 45 53 20 3d 20 30 0d 0a 20 20 20 20 61 74 74 72 5f 61 63 63 65 73 73 6f 72 20 3a 76 61 6c | ACES.=.0......attr_accessor.:val |
| 3d280 | 75 65 2c 20 3a 70 6c 61 63 65 73 0d 0a 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 | ue,.:places......def.initialize( |
| 3d2a0 | 76 61 6c 75 65 2c 20 70 6c 61 63 65 73 20 3d 20 6e 69 6c 29 0d 0a 20 20 20 20 20 20 20 20 40 76 | value,.places.=.nil)..........@v |
| 3d2c0 | 61 6c 75 65 20 3d 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 69 66 20 70 6c 61 63 65 73 0d | alue.=.value..........if.places. |
| 3d2e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 70 6c 61 63 65 73 20 3d 20 70 6c 61 63 65 73 0d 0a 20 | .............@places.=.places... |
| 3d300 | 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 20 3d 20 52 45 47 | .......else..............m.=.REG |
| 3d320 | 45 58 2e 6d 61 74 63 68 28 76 61 6c 75 65 2e 74 6f 5f 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | EX.match(value.to_s)............ |
| 3d340 | 20 20 69 66 20 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 70 6c 61 63 65 73 20 | ..if.m..................@places. |
| 3d360 | 3d 20 6d 5b 30 5d 2e 6c 65 6e 67 74 68 20 2d 20 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 | =.m[0].length.-.1..............e |
| 3d380 | 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 40 70 6c 61 63 65 73 20 3d 20 44 | lse..................@places.=.D |
| 3d3a0 | 45 46 41 55 4c 54 5f 50 4c 41 43 45 53 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a | EFAULT_PLACES..............end.. |
| 3d3c0 | 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 | ........end......end........def. |
| 3d3e0 | 2b 28 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 20 46 69 78 4e 75 6d 2e 6e 65 77 28 40 76 61 | +(other)..........FixNum.new(@va |
| 3d400 | 6c 75 65 20 2b 20 6f 74 68 65 72 2e 76 61 6c 75 65 2c 20 6d 61 78 28 40 70 6c 61 63 65 73 2c 20 | lue.+.other.value,.max(@places,. |
| 3d420 | 6f 74 68 65 72 2e 70 6c 61 63 65 73 29 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 | other.places))......end........d |
| 3d440 | 65 66 20 2a 28 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 20 46 69 78 4e 75 6d 2e 6e 65 77 28 | ef.*(other)..........FixNum.new( |
| 3d460 | 40 76 61 6c 75 65 20 2a 20 6f 74 68 65 72 2e 76 61 6c 75 65 2c 20 6d 61 78 28 40 70 6c 61 63 65 | @value.*.other.value,.max(@place |
| 3d480 | 73 2c 20 6f 74 68 65 72 2e 70 6c 61 63 65 73 29 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 | s,.other.places))......end...... |
| 3d4a0 | 20 20 64 65 66 20 2f 28 6f 74 68 65 72 29 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 44 69 | ..def./(other)..........puts."Di |
| 3d4c0 | 76 69 64 65 3a 20 23 7b 40 76 61 6c 75 65 2e 74 6f 5f 66 2f 6f 74 68 65 72 2e 76 61 6c 75 65 2e | vide:.#{@value.to_f/other.value. |
| 3d4e0 | 74 6f 5f 66 7d 22 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 46 69 78 4e 75 6d 2e | to_f}"..........result.=.FixNum. |
| 3d500 | 6e 65 77 28 40 76 61 6c 75 65 2e 74 6f 5f 66 2f 6f 74 68 65 72 2e 76 61 6c 75 65 2e 74 6f 5f 66 | new(@value.to_f/other.value.to_f |
| 3d520 | 29 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 2e 70 6c 61 63 65 73 20 3d 20 6d 61 78 28 72 | )..........result.places.=.max(r |
| 3d540 | 65 73 75 6c 74 2e 70 6c 61 63 65 73 2c 6f 74 68 65 72 2e 70 6c 61 63 65 73 29 0d 0a 20 20 20 20 | esult.places,other.places)...... |
| 3d560 | 20 20 20 20 72 65 73 75 6c 74 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 74 | ....result......end........def.t |
| 3d580 | 6f 5f 73 0d 0a 20 20 20 20 20 20 20 20 73 70 72 69 6e 74 66 28 22 53 54 52 25 73 3a 20 25 2e 2a | o_s..........sprintf("STR%s:.%.* |
| 3d5a0 | 66 22 2c 20 73 65 6c 66 2e 63 6c 61 73 73 2e 74 6f 5f 73 20 2c 20 40 70 6c 61 63 65 73 2c 20 40 | f",.self.class.to_s.,.@places,.@ |
| 3d5c0 | 76 61 6c 75 65 29 20 20 20 23 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 | value)...#.......end........def. |
| 3d5e0 | 74 6f 5f 73 74 72 0d 0a 20 20 20 20 20 20 20 20 74 6f 5f 73 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d | to_str..........to_s......end... |
| 3d600 | 0a 20 20 20 20 64 65 66 20 74 6f 5f 69 20 23 63 6f 6e 76 65 72 74 20 74 6f 20 69 6e 74 0d 0a 20 | .....def.to_i.#convert.to.int... |
| 3d620 | 20 20 20 20 20 20 20 40 76 61 6c 75 65 2e 74 6f 5f 69 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 | .......@value.to_i......end..... |
| 3d640 | 20 20 20 64 65 66 20 74 6f 5f 66 20 23 63 6f 6e 76 65 72 74 20 74 6f 20 66 6c 6f 61 74 60 0d 0a | ...def.to_f.#convert.to.float`.. |
| 3d660 | 20 20 20 20 20 20 20 20 40 76 61 6c 75 65 2e 74 6f 5f 66 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a | ........@value.to_f......end.... |
| 3d680 | 20 20 20 20 70 72 69 76 61 74 65 0d 0a 20 20 20 20 64 65 66 20 6d 61 78 28 61 2c 62 29 0d 0a 20 | ....private......def.max(a,b)... |
| 3d6a0 | 20 20 20 20 20 20 20 61 20 3e 20 62 20 3f 20 61 20 3a 20 62 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 | .......a.>.b.?.a.:.b......end..e |
| 3d6c0 | 6e 64 0d 0a 0d 0a 64 65 66 20 64 65 6d 6f 28 29 0d 0a 20 20 20 20 78 20 3d 20 46 69 78 4e 75 6d | nd....def.demo()......x.=.FixNum |
| 3d6e0 | 2e 6e 65 77 28 34 30 29 0d 0a 20 20 20 20 79 20 3d 20 46 69 78 4e 75 6d 2e 6e 65 77 28 31 32 2c | .new(40)......y.=.FixNum.new(12, |
| 3d700 | 20 30 29 0d 0a 0d 0a 20 20 20 20 70 75 74 73 20 22 73 75 6d 20 6f 66 20 23 7b 78 7d 20 61 6e 64 | .0)........puts."sum.of.#{x}.and |
| 3d720 | 20 23 7b 79 7d 20 69 73 20 20 23 7b 78 2b 79 7d 22 0d 0a 20 20 20 20 70 75 74 73 20 22 70 72 6f | .#{y}.is..#{x+y}"......puts."pro |
| 3d740 | 64 75 63 74 20 6f 66 20 23 7b 78 7d 20 61 6e 64 20 23 7b 79 7d 20 69 73 20 23 7b 78 2a 79 7d 22 | duct.of.#{x}.and.#{y}.is.#{x*y}" |
| 3d760 | 0d 0a 0d 0a 20 20 20 20 7a 20 3d 20 78 2f 79 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 7a 7d 20 | ........z.=.x/y......puts."#{z}. |
| 3d780 | 68 61 73 20 23 7b 7a 2e 70 6c 61 63 65 73 7d 20 70 6c 61 63 65 73 22 0d 0a 20 20 20 20 75 6e 6c | has.#{z.places}.places"......unl |
| 3d7a0 | 65 73 73 20 7a 2e 70 6c 61 63 65 73 0d 0a 20 20 20 20 20 20 20 20 7a 2e 70 6c 61 63 65 73 20 3d | ess.z.places..........z.places.= |
| 3d7c0 | 20 32 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 70 75 74 73 20 22 64 69 76 20 6f 66 20 | .2......end........puts."div.of. |
| 3d7e0 | 23 7b 78 7d 20 62 79 20 23 7b 79 7d 20 69 73 20 23 7b 7a 7d 22 0d 0a 20 20 20 20 70 75 74 73 20 | #{x}.by.#{y}.is.#{z}"......puts. |
| 3d800 | 22 73 71 75 61 72 65 20 6f 66 20 74 68 61 74 20 69 73 20 20 23 7b 7a 2a 7a 7d 22 0d 0a 65 6e 64 | "square.of.that.is..#{z*z}"..end |
| 3d820 | 0d 0a 0d 0a 69 66 20 5f 5f 46 49 4c 45 5f 5f 20 3d 3d 20 24 30 0d 0a 20 20 20 20 64 65 6d 6f 28 | ....if.__FILE__.==.$0......demo( |
| 3d840 | 29 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 34 2e 31 0d 0a 23 20 | )..end......#.@@PLEAC@@_14.1..#. |
| 3d860 | 54 68 65 72 65 20 61 72 65 20 64 62 6d 2c 20 73 64 62 6d 2c 20 67 64 62 6d 20 6d 6f 64 75 6c 65 | There.are.dbm,.sdbm,.gdbm.module |
| 3d880 | 73 0d 0a 23 20 61 6e 64 20 74 68 65 20 62 64 62 20 6d 6f 64 75 6c 65 20 66 6f 72 20 61 63 63 65 | s..#.and.the.bdb.module.for.acce |
| 3d8a0 | 73 73 69 6e 67 20 74 68 65 20 62 65 72 6b 65 6c 65 79 20 64 62 0d 0a 23 20 73 64 62 6d 20 73 65 | ssing.the.berkeley.db..#.sdbm.se |
| 3d8c0 | 65 6d 20 74 6f 20 62 65 20 61 76 61 69 6c 61 62 6c 65 20 6f 6e 20 74 68 65 20 6d 6f 73 74 20 73 | em.to.be.available.on.the.most.s |
| 3d8e0 | 79 73 74 65 6d 73 2c 0d 0a 23 20 73 6f 20 77 65 20 75 73 65 20 69 74 20 68 65 72 65 0d 0a 23 0d | ystems,..#.so.we.use.it.here..#. |
| 3d900 | 0a 72 65 71 75 69 72 65 20 22 73 64 62 6d 22 0d 0a 53 44 42 4d 2e 6f 70 65 6e 28 22 66 69 6c 65 | .require."sdbm"..SDBM.open("file |
| 3d920 | 6e 61 6d 65 22 2c 20 30 36 36 36 29 20 7b 20 7c 64 62 6f 62 6a 7c 0d 0a 20 20 20 20 23 20 72 61 | name",.0666).{.|dbobj|......#.ra |
| 3d940 | 69 73 65 73 20 65 78 63 65 70 74 69 6f 6e 20 69 66 20 6f 70 65 6e 20 65 72 72 6f 72 0d 0a 0d 0a | ises.exception.if.open.error.... |
| 3d960 | 20 20 20 20 23 20 74 68 65 20 72 65 74 75 72 6e 65 64 20 73 64 62 6d 2d 64 62 6f 62 6a 20 68 61 | ....#.the.returned.sdbm-dbobj.ha |
| 3d980 | 73 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 6d 65 74 68 6f 64 73 20 6f 66 20 61 20 68 61 73 68 0d | s.most.of.the.methods.of.a.hash. |
| 3d9a0 | 0a 20 20 20 20 76 20 3d 20 64 62 6f 62 6a 5b 22 6b 65 79 22 5d 0d 0a 20 20 20 20 64 62 6f 62 6a | .....v.=.dbobj["key"]......dbobj |
| 3d9c0 | 5b 22 6b 65 79 22 5d 20 3d 20 22 6e 65 77 76 61 6c 75 65 22 0d 0a 20 20 20 20 69 66 20 64 62 6f | ["key"].=."newvalue"......if.dbo |
| 3d9e0 | 62 6a 2e 68 61 73 5f 6b 65 79 3f 28 22 6b 65 79 22 29 0d 0a 20 20 20 20 20 20 20 20 23 20 2e 2e | bj.has_key?("key")..........#... |
| 3da00 | 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 64 62 6f 62 6a 2e 64 65 6c 65 74 65 28 22 6b 65 | .......end......dbobj.delete("ke |
| 3da20 | 79 32 22 29 0d 0a 7d 0d 0a 23 20 64 61 74 61 62 61 73 65 20 69 73 20 6f 70 65 6e 20 6f 6e 6c 79 | y2")..}..#.database.is.open.only |
| 3da40 | 20 69 6e 73 69 64 65 20 74 68 65 20 62 6c 6f 63 6b 2e 0d 0a 0d 0a 23 20 49 74 20 69 73 20 61 6c | .inside.the.block.....#.It.is.al |
| 3da60 | 73 6f 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 75 73 65 20 61 20 6f 70 65 6e 20 2e 2e 20 63 6c 6f | so.possible.to.use.a.open....clo |
| 3da80 | 73 65 20 70 61 69 72 3a 0d 0a 64 62 6f 62 6a 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 22 66 69 6c | se.pair:..dbobj.=.SDBM.open("fil |
| 3daa0 | 65 6e 61 6d 65 22 2c 20 30 36 36 36 29 0d 0a 23 2e 2e 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 | ename",.0666)..#...do.something. |
| 3dac0 | 77 69 74 68 20 64 62 6f 62 6a 0d 0a 64 62 6f 62 6a 2e 63 6c 6f 73 65 0d 0a 0d 0a 23 21 2f 75 73 | with.dbobj..dbobj.close....#!/us |
| 3dae0 | 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 75 73 65 72 73 74 61 74 73 20 2d 20 67 65 6e | r/bin/ruby.-w..#.userstats.-.gen |
| 3db00 | 65 72 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20 6f 6e 20 77 68 6f 20 69 73 20 6c 6f 67 67 65 | erate.statistics.on.who.is.logge |
| 3db20 | 64 20 69 6e 0d 0a 23 20 63 61 6c 6c 20 77 69 74 68 20 75 73 65 72 6e 61 6d 65 73 20 61 73 20 61 | d.in..#.call.with.usernames.as.a |
| 3db40 | 72 67 75 6d 65 6e 74 20 74 6f 20 64 69 73 70 6c 61 79 20 74 68 65 20 74 6f 74 61 6c 73 0d 0a 23 | rgument.to.display.the.totals..# |
| 3db60 | 20 66 6f 72 20 74 68 65 20 67 69 76 65 6e 20 75 73 65 72 6e 61 6d 65 73 2c 20 63 61 6c 6c 20 77 | .for.the.given.usernames,.call.w |
| 3db80 | 69 74 68 20 22 41 4c 4c 22 20 74 6f 20 64 69 73 70 6c 61 79 20 61 6c 6c 20 75 73 65 72 73 0d 0a | ith."ALL".to.display.all.users.. |
| 3dba0 | 0d 0a 72 65 71 75 69 72 65 20 22 73 64 62 6d 22 0d 0a 66 69 6c 65 6e 61 6d 65 20 3d 20 27 2f 74 | ..require."sdbm"..filename.=.'/t |
| 3dbc0 | 6d 70 2f 75 73 65 72 73 74 61 74 73 2e 64 62 27 0d 0a 53 44 42 4d 2e 6f 70 65 6e 28 66 69 6c 65 | mp/userstats.db'..SDBM.open(file |
| 3dbe0 | 6e 61 6d 65 2c 20 30 36 36 36 29 20 7b 20 7c 64 62 6f 62 6a 7c 0d 0a 20 20 20 20 69 66 20 41 52 | name,.0666).{.|dbobj|......if.AR |
| 3dc00 | 47 56 2e 6c 65 6e 67 74 68 20 3e 20 30 0d 0a 20 20 20 20 20 20 20 20 69 66 20 41 52 47 56 5b 30 | GV.length.>.0..........if.ARGV[0 |
| 3dc20 | 5d 20 3d 3d 20 22 41 4c 4c 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 41 52 47 56 20 69 | ].==."ALL"..............#.ARGV.i |
| 3dc40 | 73 20 63 6f 6e 73 74 61 6e 74 2c 20 73 6f 20 77 65 20 6e 65 65 64 20 74 68 65 20 76 61 72 69 61 | s.constant,.so.we.need.the.varia |
| 3dc60 | 62 6c 65 20 75 73 65 72 6c 69 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6c 69 | ble.userlist..............userli |
| 3dc80 | 73 74 20 3d 20 64 62 6f 62 6a 2e 6b 65 79 73 28 29 2e 73 6f 72 74 28 29 0d 0a 20 20 20 20 20 20 | st.=.dbobj.keys().sort()........ |
| 3dca0 | 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6c 69 73 74 20 3d 20 41 | ..else..............userlist.=.A |
| 3dcc0 | 52 47 56 0d 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 75 73 65 72 6c 69 | RGV..........end..........userli |
| 3dce0 | 73 74 2e 65 61 63 68 20 7b 20 7c 75 73 65 72 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 | st.each.{.|user|..............pr |
| 3dd00 | 69 6e 74 20 22 23 7b 75 73 65 72 7d 5c 74 23 7b 64 62 6f 62 6a 5b 75 73 65 72 5d 7d 5c 6e 22 0d | int."#{user}\t#{dbobj[user]}\n". |
| 3dd20 | 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 77 68 | .........}......else..........wh |
| 3dd40 | 6f 20 3d 20 60 77 68 6f 60 0d 0a 20 20 20 20 20 20 20 20 77 68 6f 2e 73 70 6c 69 74 28 22 5c 6e | o.=.`who`..........who.split("\n |
| 3dd60 | 22 29 2e 65 61 63 68 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 64 | ").each.{.|line|..............md |
| 3dd80 | 20 3d 20 2f 5e 28 5c 53 2b 29 2f 2e 6d 61 74 63 68 28 6c 69 6e 65 29 0d 0a 20 20 20 20 20 20 20 | .=./^(\S+)/.match(line)......... |
| 3dda0 | 20 20 20 20 20 72 61 69 73 65 20 22 42 61 64 20 6c 69 6e 65 20 66 72 6f 6d 20 77 68 6f 3a 20 23 | .....raise."Bad.line.from.who:.# |
| 3ddc0 | 7b 6c 69 6e 65 7d 22 20 75 6e 6c 65 73 73 20 6d 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 | {line}".unless.md..............# |
| 3dde0 | 20 73 64 62 6d 20 73 74 6f 72 65 73 20 6f 6e 6c 79 20 73 74 72 69 6e 67 73 2c 20 73 6f 20 22 2b | .sdbm.stores.only.strings,.so."+ |
| 3de00 | 3d 22 20 64 6f 65 73 6e 27 74 20 77 6f 72 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | =".doesn't.work,..............#. |
| 3de20 | 77 65 20 6e 65 65 64 20 74 6f 20 63 6f 6e 76 65 72 74 20 74 68 65 6d 20 65 78 70 69 63 69 74 6c | we.need.to.convert.them.expicitl |
| 3de40 | 79 20 62 61 63 6b 20 74 6f 20 69 6e 74 65 67 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | y.back.to.integer............... |
| 3de60 | 69 66 20 64 62 6f 62 6a 2e 68 61 73 5f 6b 65 79 3f 28 6d 64 5b 30 5d 29 0d 0a 20 20 20 20 20 20 | if.dbobj.has_key?(md[0])........ |
| 3de80 | 20 20 20 20 20 20 20 20 20 20 64 62 6f 62 6a 5b 6d 64 5b 30 5d 5d 20 3d 20 64 62 6f 62 6a 5b 6d | ..........dbobj[md[0]].=.dbobj[m |
| 3dea0 | 64 5b 30 5d 5d 2e 74 6f 5f 69 20 2b 20 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 | d[0]].to_i.+.1..............else |
| 3dec0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 62 6f 62 6a 5b 6d 64 5b 30 5d 5d 20 3d | ..................dbobj[md[0]].= |
| 3dee0 | 20 22 31 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 7d | ."1"..............end..........} |
| 3df00 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 34 | ......end..}......#.@@PLEAC@@_14 |
| 3df20 | 2e 32 0d 0a 23 20 75 73 69 6e 67 20 6f 70 65 6e 20 61 6e 64 20 63 6c 65 61 72 0d 0a 64 62 6f 62 | .2..#.using.open.and.clear..dbob |
| 3df40 | 6a 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 22 66 69 6c 65 6e 61 6d 65 22 2c 20 30 36 36 36 29 0d | j.=.SDBM.open("filename",.0666). |
| 3df60 | 0a 64 62 6f 62 6a 2e 63 6c 65 61 72 28 29 0d 0a 64 62 6f 62 6a 2e 63 6c 6f 73 65 28 29 0d 0a 23 | .dbobj.clear()..dbobj.close()..# |
| 3df80 | 20 64 65 6c 65 74 69 6e 67 20 66 69 6c 65 20 61 6e 64 20 72 65 63 72 65 61 74 69 6e 67 20 69 74 | .deleting.file.and.recreating.it |
| 3dfa0 | 0d 0a 23 20 74 68 65 20 66 69 6c 65 6e 61 6d 65 73 20 64 65 70 65 6e 64 20 6f 6e 20 74 68 65 20 | ..#.the.filenames.depend.on.the. |
| 3dfc0 | 66 6c 61 76 6f 72 20 6f 66 20 64 62 6d 20 79 6f 75 20 75 73 65 2c 0d 0a 23 20 66 6f 72 20 65 78 | flavor.of.dbm.you.use,..#.for.ex |
| 3dfe0 | 61 6d 70 6c 65 20 73 64 62 6d 20 68 61 73 20 74 77 6f 20 66 69 6c 65 73 20 6e 61 6d 65 64 20 66 | ample.sdbm.has.two.files.named.f |
| 3e000 | 69 6c 65 6e 61 6d 65 2e 70 61 67 20 61 6e 64 20 66 69 6c 65 6e 61 6d 65 2e 64 69 72 2c 0d 0a 23 | ilename.pag.and.filename.dir,..# |
| 3e020 | 20 73 6f 20 79 6f 75 20 6e 65 65 64 20 74 6f 20 64 65 6c 65 74 65 20 62 6f 74 68 20 66 69 6c 65 | .so.you.need.to.delete.both.file |
| 3e040 | 73 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 46 69 6c 65 2e 64 65 6c 65 74 65 28 22 66 69 6c 65 6e | s..begin......File.delete("filen |
| 3e060 | 61 6d 65 22 29 0d 0a 20 20 20 20 23 20 72 61 69 73 65 73 20 45 78 63 65 70 74 69 6f 6e 20 69 66 | ame")......#.raises.Exception.if |
| 3e080 | 20 6e 6f 74 20 65 78 69 73 74 0d 0a 20 20 20 20 64 62 6f 62 6a 20 3d 20 53 44 42 4d 2e 6f 70 65 | .not.exist......dbobj.=.SDBM.ope |
| 3e0a0 | 6e 28 22 66 69 6c 65 6e 61 6d 65 22 2c 20 30 36 36 36 29 0d 0a 72 65 73 63 75 65 0d 0a 20 20 20 | n("filename",.0666)..rescue..... |
| 3e0c0 | 20 23 20 61 64 64 20 65 72 72 6f 72 20 68 61 6e 64 6c 69 6e 67 20 68 65 72 65 0d 0a 65 6e 64 0d | .#.add.error.handling.here..end. |
| 3e0e0 | 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 34 2e 33 0d 0a 23 20 73 64 62 6d 32 67 64 | .....#.@@PLEAC@@_14.3..#.sdbm2gd |
| 3e100 | 62 6d 3a 20 63 6f 6e 76 65 72 74 73 20 73 64 62 6d 20 64 61 74 61 62 61 73 65 20 74 6f 20 61 20 | bm:.converts.sdbm.database.to.a. |
| 3e120 | 67 64 62 6d 20 64 61 74 61 62 61 73 65 0d 0a 72 65 71 75 69 72 65 20 22 73 64 62 6d 22 0d 0a 72 | gdbm.database..require."sdbm"..r |
| 3e140 | 65 71 75 69 72 65 20 22 67 64 62 6d 22 0d 0a 0d 0a 75 6e 6c 65 73 73 20 41 52 47 56 2e 6c 65 6e | equire."gdbm"....unless.ARGV.len |
| 3e160 | 67 74 68 20 3d 3d 20 32 0d 0a 20 20 20 20 66 61 69 6c 20 22 75 73 61 67 65 3a 20 73 64 62 6d 32 | gth.==.2......fail."usage:.sdbm2 |
| 3e180 | 67 64 62 6d 20 69 6e 66 69 6c 65 20 6f 75 74 66 69 6c 65 22 0d 0a 65 6e 64 0d 0a 69 6e 66 69 6c | gdbm.infile.outfile"..end..infil |
| 3e1a0 | 65 20 3d 20 41 52 47 56 5b 30 5d 0d 0a 6f 75 74 66 69 6c 65 20 3d 20 41 52 47 56 5b 31 5d 0d 0a | e.=.ARGV[0]..outfile.=.ARGV[1].. |
| 3e1c0 | 0d 0a 73 64 62 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 69 6e 66 69 6c 65 29 0d 0a 67 64 62 20 3d | ..sdb.=.SDBM.open(infile)..gdb.= |
| 3e1e0 | 20 47 44 42 4d 2e 6f 70 65 6e 28 6f 75 74 66 69 6c 65 2c 20 30 36 36 36 29 0d 0a 73 64 62 2e 65 | .GDBM.open(outfile,.0666)..sdb.e |
| 3e200 | 61 63 68 20 7b 20 7c 6b 65 79 2c 20 76 61 6c 7c 0d 0a 20 20 20 20 67 64 62 5b 6b 65 79 5d 20 3d | ach.{.|key,.val|......gdb[key].= |
| 3e220 | 20 76 61 6c 0d 0a 7d 0d 0a 67 64 62 2e 63 6c 6f 73 65 0d 0a 73 64 62 2e 63 6c 6f 73 65 0d 0a 0d | .val..}..gdb.close..sdb.close... |
| 3e240 | 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 34 2e 34 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f | ...#.@@PLEAC@@_14.4..#!/usr/bin/ |
| 3e260 | 72 75 62 79 20 2d 77 0d 0a 23 20 64 62 6d 6d 65 72 67 65 3a 20 6d 65 72 67 65 73 20 74 77 6f 20 | ruby.-w..#.dbmmerge:.merges.two. |
| 3e280 | 64 62 6d 20 64 61 74 61 62 61 73 65 73 0d 0a 72 65 71 75 69 72 65 20 22 73 64 62 6d 22 0d 0a 0d | dbm.databases..require."sdbm"... |
| 3e2a0 | 0a 75 6e 6c 65 73 73 20 41 52 47 56 2e 6c 65 6e 67 74 68 20 3d 3d 20 33 0d 0a 20 20 20 20 66 61 | .unless.ARGV.length.==.3......fa |
| 3e2c0 | 69 6c 20 22 75 73 61 67 65 3a 20 64 62 6d 6d 65 72 67 65 20 69 6e 64 62 31 20 69 6e 64 62 32 20 | il."usage:.dbmmerge.indb1.indb2. |
| 3e2e0 | 6f 75 74 64 62 22 0d 0a 65 6e 64 0d 0a 69 6e 66 69 6c 65 31 20 3d 20 41 52 47 56 5b 30 5d 0d 0a | outdb"..end..infile1.=.ARGV[0].. |
| 3e300 | 69 6e 66 69 6c 65 32 20 3d 20 41 52 47 56 5b 30 5d 0d 0a 6f 75 74 66 69 6c 65 20 3d 20 41 52 47 | infile2.=.ARGV[0]..outfile.=.ARG |
| 3e320 | 56 5b 32 5d 0d 0a 0d 0a 69 6e 31 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 69 6e 66 69 6c 65 31 2c | V[2]....in1.=.SDBM.open(infile1, |
| 3e340 | 20 6e 69 6c 29 0d 0a 69 6e 32 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 69 6e 66 69 6c 65 32 2c 20 | .nil)..in2.=.SDBM.open(infile2,. |
| 3e360 | 6e 69 6c 29 0d 0a 6f 75 74 64 62 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 6f 75 74 66 69 6c 65 2c | nil)..outdb.=.SDBM.open(outfile, |
| 3e380 | 20 30 36 36 36 29 0d 0a 0d 0a 5b 69 6e 31 2c 20 69 6e 32 5d 2e 65 61 63 68 20 7b 20 7c 69 6e 64 | .0666)....[in1,.in2].each.{.|ind |
| 3e3a0 | 62 7c 0d 0a 20 20 20 20 69 6e 64 62 2e 65 61 63 68 20 7b 20 7c 6b 65 79 2c 20 76 61 6c 7c 0d 0a | b|......indb.each.{.|key,.val|.. |
| 3e3c0 | 20 20 20 20 20 20 20 20 69 66 20 6f 75 74 64 62 2e 68 61 73 5f 6b 65 79 3f 28 6b 65 79 29 0d 0a | ........if.outdb.has_key?(key).. |
| 3e3e0 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 63 69 64 65 20 77 68 69 63 68 20 76 61 6c 75 65 | ............#.decide.which.value |
| 3e400 | 20 74 6f 20 73 65 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 74 20 6f 75 74 64 | .to.set...............#.set.outd |
| 3e420 | 62 5b 6b 65 79 5d 20 69 66 20 6e 65 63 65 73 73 61 72 79 0d 0a 20 20 20 20 20 20 20 20 65 6c 73 | b[key].if.necessary..........els |
| 3e440 | 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6f 75 74 64 62 5b 6b 65 79 5d 20 3d 20 76 61 6c 0d | e..............outdb[key].=.val. |
| 3e460 | 0a 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 69 6e 31 2e 63 6c 6f 73 | .........end......}..}..in1.clos |
| 3e480 | 65 0d 0a 69 6e 32 2e 63 6c 6f 73 65 0d 0a 6f 75 74 64 62 2e 63 6c 6f 73 65 0d 0a 0d 0a 0d 0a 23 | e..in2.close..outdb.close......# |
| 3e4a0 | 20 40 40 50 4c 45 41 43 40 40 5f 31 34 2e 37 0d 0a 23 20 77 65 20 77 72 69 74 65 20 61 20 74 69 | .@@PLEAC@@_14.7..#.we.write.a.ti |
| 3e4c0 | 65 20 6d 65 74 68 6f 64 20 74 68 61 74 20 65 78 74 65 6e 64 73 20 74 68 65 20 41 72 72 61 79 20 | e.method.that.extends.the.Array. |
| 3e4e0 | 63 6c 61 73 73 2e 0d 0a 23 20 49 74 20 72 65 61 64 73 20 74 68 65 20 66 69 6c 65 20 69 6e 74 6f | class...#.It.reads.the.file.into |
| 3e500 | 20 74 68 65 20 6d 65 6d 6f 72 79 2c 20 65 78 65 63 75 74 65 73 20 74 68 65 20 63 6f 64 65 20 62 | .the.memory,.executes.the.code.b |
| 3e520 | 6c 6f 63 6b 0d 0a 23 20 69 6e 20 77 68 69 63 68 20 79 6f 75 20 63 61 6e 20 6d 61 6e 69 70 75 6c | lock..#.in.which.you.can.manipul |
| 3e540 | 61 74 65 20 74 68 65 20 61 72 72 61 79 20 61 73 20 6e 65 65 64 65 64 2c 20 61 6e 64 20 77 72 69 | ate.the.array.as.needed,.and.wri |
| 3e560 | 74 65 73 0d 0a 23 20 74 68 65 20 61 72 72 61 79 20 62 61 63 6b 20 74 6f 20 74 68 65 20 66 69 6c | tes..#.the.array.back.to.the.fil |
| 3e580 | 65 20 61 66 74 65 72 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 62 6c 6f 63 6b 20 65 78 65 | e.after.the.end.of.the.block.exe |
| 3e5a0 | 63 75 74 69 6f 6e 0d 0a 63 6c 61 73 73 20 41 72 72 61 79 0d 0a 20 20 20 20 64 65 66 20 74 69 65 | cution..class.Array......def.tie |
| 3e5c0 | 28 66 69 6c 65 6e 61 6d 65 2c 20 66 6c 61 67 73 29 0d 0a 20 20 20 20 20 20 20 20 46 69 6c 65 2e | (filename,.flags)..........File. |
| 3e5e0 | 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 66 6c 61 67 73 29 20 7b 20 7c 66 7c 0d 0a 20 20 20 | open(filename,.flags).{.|f|..... |
| 3e600 | 20 20 20 20 20 20 20 20 20 66 2e 65 61 63 68 5f 6c 69 6e 65 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 | .........f.each_line.{.|line|... |
| 3e620 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6c 66 2e 70 75 73 68 28 6c 69 6e 65 2e 63 68 | ...............self.push(line.ch |
| 3e640 | 6f 6d 70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | omp)..............}............. |
| 3e660 | 20 79 69 65 6c 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 66 2e 72 65 77 69 6e 64 0d 0a 20 20 | .yield..............f.rewind.... |
| 3e680 | 20 20 20 20 20 20 20 20 20 20 65 61 63 68 20 7b 20 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 20 20 20 | ..........each.{.|line|......... |
| 3e6a0 | 20 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........if.line................ |
| 3e6c0 | 20 20 20 20 20 20 66 2e 70 75 74 73 28 6c 69 6e 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ......f.puts(line).............. |
| 3e6e0 | 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 2e | ....else......................f. |
| 3e700 | 70 75 74 73 20 22 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 | puts.""..................end.... |
| 3e720 | 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6e 64 0d | ..........}..........}......end. |
| 3e740 | 0a 65 6e 64 0d 0a 0d 0a 61 72 72 61 79 20 3d 20 41 72 72 61 79 2e 6e 65 77 0d 0a 61 72 72 61 79 | .end....array.=.Array.new..array |
| 3e760 | 2e 74 69 65 28 22 2f 74 6d 70 2f 74 65 78 74 66 69 6c 65 2e 74 78 74 22 2c 20 46 69 6c 65 3a 3a | .tie("/tmp/textfile.txt",.File:: |
| 3e780 | 52 44 57 52 7c 46 69 6c 65 3a 3a 43 52 45 41 54 29 20 7b 0d 0a 20 20 20 20 61 72 72 61 79 5b 34 | RDWR|File::CREAT).{......array[4 |
| 3e7a0 | 5d 20 3d 20 22 61 20 6e 65 77 20 6c 69 6e 65 20 34 22 0d 0a 7d 0d 0a 0d 0a 23 20 54 68 65 20 74 | ].=."a.new.line.4"..}....#.The.t |
| 3e7c0 | 69 65 64 20 61 72 72 61 79 20 63 61 6e 20 62 65 20 6d 61 6e 69 70 75 6c 61 74 65 64 20 6c 69 6b | ied.array.can.be.manipulated.lik |
| 3e7e0 | 65 20 61 20 6e 6f 72 6d 61 6c 20 61 72 72 61 79 2c 0d 0a 23 20 73 6f 20 74 68 65 72 65 20 69 73 | e.a.normal.array,..#.so.there.is |
| 3e800 | 20 6e 6f 20 6e 65 65 64 20 66 6f 72 20 61 20 73 70 65 63 69 61 6c 20 41 50 49 2c 20 61 6e 64 20 | .no.need.for.a.special.API,.and. |
| 3e820 | 74 68 65 20 72 65 63 6e 6f 5f 64 65 6d 6f 20 70 72 6f 67 72 61 6d 0d 0a 23 20 74 6f 20 64 65 6d | the.recno_demo.program..#.to.dem |
| 3e840 | 6f 6e 73 74 72 61 74 65 20 69 73 20 41 50 49 20 69 73 20 75 73 65 6c 65 73 73 0d 0a 0d 0a 0d 0a | onstrate.is.API.is.useless...... |
| 3e860 | 23 20 74 69 65 64 20 61 72 72 61 79 20 64 65 6d 6f 3a 20 73 68 6f 77 20 68 6f 77 20 74 6f 20 75 | #.tied.array.demo:.show.how.to.u |
| 3e880 | 73 65 20 61 72 72 61 79 20 77 69 74 68 20 61 20 74 69 65 64 20 66 69 6c 65 0d 0a 66 69 6c 65 6e | se.array.with.a.tied.file..filen |
| 3e8a0 | 61 6d 65 20 3d 20 22 64 62 5f 66 69 6c 65 2e 74 78 74 22 0d 0a 6c 69 6e 65 73 20 3d 20 41 72 72 | ame.=."db_file.txt"..lines.=.Arr |
| 3e8c0 | 61 79 2e 6e 65 77 0d 0a 46 69 6c 65 2e 75 6e 6c 69 6e 6b 28 66 69 6c 65 6e 61 6d 65 29 20 69 66 | ay.new..File.unlink(filename).if |
| 3e8e0 | 20 46 69 6c 65 2e 65 78 69 73 74 73 3f 28 66 69 6c 65 6e 61 6d 65 29 0d 0a 6c 69 6e 65 73 2e 74 | .File.exists?(filename)..lines.t |
| 3e900 | 69 65 28 66 69 6c 65 6e 61 6d 65 2c 20 46 69 6c 65 3a 3a 52 44 57 52 20 7c 20 46 69 6c 65 3a 3a | ie(filename,.File::RDWR.|.File:: |
| 3e920 | 43 52 45 41 54 29 20 7b 0d 0a 20 20 20 20 23 20 66 69 72 73 74 20 63 72 65 61 74 65 20 61 20 74 | CREAT).{......#.first.create.a.t |
| 3e940 | 65 78 74 66 69 6c 65 20 74 6f 20 70 6c 61 79 20 77 69 74 68 0d 0a 20 20 20 20 6c 69 6e 65 73 5b | extfile.to.play.with......lines[ |
| 3e960 | 30 5d 20 3d 20 22 7a 65 72 6f 22 0d 0a 20 20 20 20 6c 69 6e 65 73 5b 31 5d 20 3d 20 22 6f 6e 65 | 0].=."zero"......lines[1].=."one |
| 3e980 | 22 0d 0a 20 20 20 20 6c 69 6e 65 73 5b 32 5d 20 3d 20 22 74 77 6f 22 0d 0a 20 20 20 20 6c 69 6e | "......lines[2].=."two"......lin |
| 3e9a0 | 65 73 5b 33 5d 20 3d 20 22 74 68 72 65 65 22 0d 0a 20 20 20 20 6c 69 6e 65 73 5b 34 5d 20 3d 20 | es[3].=."three"......lines[4].=. |
| 3e9c0 | 22 66 6f 75 72 22 0d 0a 0d 0a 20 20 20 20 23 20 70 72 69 6e 74 20 74 68 65 20 72 65 63 6f 72 64 | "four"........#.print.the.record |
| 3e9e0 | 73 20 69 6e 20 6f 72 64 65 72 2e 0d 0a 20 20 20 20 23 20 4f 70 70 6f 73 65 64 20 74 6f 20 70 65 | s.in.order.......#.Opposed.to.pe |
| 3ea00 | 72 6c 2c 20 74 68 65 20 74 69 65 64 20 61 72 72 61 79 20 62 65 68 61 76 65 73 20 65 78 61 63 74 | rl,.the.tied.array.behaves.exact |
| 3ea20 | 6c 79 20 61 73 20 61 20 6e 6f 72 6d 61 6c 20 61 72 72 61 79 0d 0a 20 20 20 20 70 75 74 73 20 22 | ly.as.a.normal.array......puts." |
| 3ea40 | 5c 6e 4f 72 69 67 69 6e 61 6c 22 0d 0a 20 20 20 20 66 6f 72 20 69 20 69 6e 20 30 2e 2e 28 6c 69 | \nOriginal"......for.i.in.0..(li |
| 3ea60 | 6e 65 73 2e 6c 65 6e 67 74 68 2d 31 29 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 23 7b 69 | nes.length-1)..........puts."#{i |
| 3ea80 | 7d 3a 20 23 7b 6c 69 6e 65 73 5b 69 5d 7d 22 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 | }:.#{lines[i]}"......end........ |
| 3eaa0 | 23 75 73 65 20 70 75 73 68 20 61 6e 64 20 70 6f 70 0d 0a 20 20 20 20 61 20 3d 20 6c 69 6e 65 73 | #use.push.and.pop......a.=.lines |
| 3eac0 | 2e 70 6f 70 0d 0a 20 20 20 20 6c 69 6e 65 73 2e 70 75 73 68 28 22 6c 61 73 74 22 29 0d 0a 20 20 | .pop......lines.push("last").... |
| 3eae0 | 20 20 70 75 74 73 28 22 54 68 65 20 6c 61 73 74 20 6c 69 6e 65 20 77 61 73 20 5b 23 7b 61 7d 5d | ..puts("The.last.line.was.[#{a}] |
| 3eb00 | 22 29 0d 0a 0d 0a 20 20 20 20 23 75 73 65 20 73 68 69 66 74 20 61 6e 64 20 75 6e 73 68 69 66 74 | ")........#use.shift.and.unshift |
| 3eb20 | 0d 0a 20 20 20 20 61 20 3d 20 6c 69 6e 65 73 2e 73 68 69 66 74 0d 0a 20 20 20 20 6c 69 6e 65 73 | ......a.=.lines.shift......lines |
| 3eb40 | 2e 75 6e 73 68 69 66 74 28 22 66 69 72 73 74 22 29 0d 0a 20 20 20 20 70 75 74 73 28 22 54 68 65 | .unshift("first")......puts("The |
| 3eb60 | 20 66 69 72 73 74 20 6c 69 6e 65 20 77 61 73 20 5b 23 7b 61 7d 5d 22 29 0d 0a 0d 0a 20 20 20 20 | .first.line.was.[#{a}]")........ |
| 3eb80 | 23 20 61 64 64 20 72 65 63 6f 72 64 20 61 66 74 65 72 20 72 65 63 6f 72 64 20 32 0d 0a 20 20 20 | #.add.record.after.record.2..... |
| 3eba0 | 20 69 20 3d 20 32 0d 0a 20 20 20 20 6c 69 6e 65 73 2e 69 6e 73 65 72 74 28 69 20 2b 20 31 2c 20 | .i.=.2......lines.insert(i.+.1,. |
| 3ebc0 | 22 4e 65 77 62 69 65 22 29 0d 0a 0d 0a 20 20 20 20 23 20 61 64 64 20 72 65 63 6f 72 64 20 62 65 | "Newbie")........#.add.record.be |
| 3ebe0 | 66 6f 72 65 20 72 65 63 6f 72 64 20 6f 6e 65 0d 0a 20 20 20 20 69 20 3d 20 31 0d 0a 20 20 20 20 | fore.record.one......i.=.1...... |
| 3ec00 | 6c 69 6e 65 73 2e 69 6e 73 65 72 74 28 69 2c 20 22 4e 65 77 20 4f 6e 65 22 29 0d 0a 0d 0a 20 20 | lines.insert(i,."New.One")...... |
| 3ec20 | 20 20 23 20 64 65 6c 65 74 65 20 72 65 63 6f 72 64 20 33 0d 0a 20 20 20 20 6c 69 6e 65 73 2e 64 | ..#.delete.record.3......lines.d |
| 3ec40 | 65 6c 65 74 65 5f 61 74 28 33 29 0d 0a 0d 0a 20 20 20 20 23 6e 6f 77 20 70 72 69 6e 74 20 74 68 | elete_at(3)........#now.print.th |
| 3ec60 | 65 20 72 65 63 6f 72 64 73 20 69 6e 20 72 65 76 65 72 73 65 20 6f 72 64 65 72 0d 0a 20 20 20 20 | e.records.in.reverse.order...... |
| 3ec80 | 70 75 74 73 20 22 5c 6e 52 65 76 65 72 73 65 22 0d 0a 20 20 20 20 28 6c 69 6e 65 73 2e 6c 65 6e | puts."\nReverse"......(lines.len |
| 3eca0 | 67 74 68 20 2d 20 31 29 2e 64 6f 77 6e 74 6f 28 30 29 7b 20 7c 69 7c 0d 0a 20 20 20 20 20 20 20 | gth.-.1).downto(0){.|i|......... |
| 3ecc0 | 20 70 75 74 73 20 22 23 7b 69 7d 3a 20 23 7b 6c 69 6e 65 73 5b 69 5d 7d 22 0d 0a 20 20 20 20 7d | .puts."#{i}:.#{lines[i]}"......} |
| 3ece0 | 0d 0a 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 34 2e 38 0d 0a 23 20 65 | ....}......#.@@PLEAC@@_14.8..#.e |
| 3ed00 | 78 61 6d 70 6c 65 20 74 6f 20 73 74 6f 72 65 20 63 6f 6d 70 6c 65 78 20 64 61 74 61 20 69 6e 20 | xample.to.store.complex.data.in. |
| 3ed20 | 61 20 64 61 74 61 62 61 73 65 0d 0a 23 20 75 73 65 73 20 6d 61 72 73 68 61 6c 6c 20 66 72 6f 6d | a.database..#.uses.marshall.from |
| 3ed40 | 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 72 61 72 79 0d 0a 72 65 71 75 69 72 65 20 22 | .the.standard.library..require." |
| 3ed60 | 73 64 62 6d 22 0d 0a 64 62 20 3d 20 53 44 42 4d 2e 6f 70 65 6e 28 22 70 6c 65 61 63 31 34 2d 38 | sdbm"..db.=.SDBM.open("pleac14-8 |
| 3ed80 | 2d 64 61 74 61 62 61 73 65 22 2c 20 30 36 36 36 29 0d 0a 0d 0a 23 20 63 6f 6e 76 65 72 74 20 74 | -database",.0666)....#.convert.t |
| 3eda0 | 68 65 20 4f 62 6a 65 63 74 73 20 69 6e 74 6f 20 73 74 72 69 6e 67 73 20 61 6e 64 20 62 61 63 6b | he.Objects.into.strings.and.back |
| 3edc0 | 20 62 79 20 75 73 69 6e 67 20 74 68 65 20 4d 61 72 73 68 61 6c 20 6d 6f 64 75 6c 65 2e 0d 0a 23 | .by.using.the.Marshal.module...# |
| 3ede0 | 20 4d 6f 73 74 20 6e 6f 72 6d 61 6c 20 6f 62 6a 65 63 74 73 20 63 61 6e 20 62 65 20 63 6f 6e 76 | .Most.normal.objects.can.be.conv |
| 3ee00 | 65 72 74 65 64 20 6f 75 74 20 6f 66 20 74 68 65 20 62 6f 78 2c 0d 0a 23 20 62 75 74 20 6e 6f 74 | erted.out.of.the.box,..#.but.not |
| 3ee20 | 20 73 70 65 63 69 61 6c 20 74 68 69 6e 67 73 20 6c 69 6b 65 20 70 72 6f 63 65 64 75 72 65 20 6f | .special.things.like.procedure.o |
| 3ee40 | 62 6a 65 63 74 73 2c 0d 0a 23 20 49 4f 20 69 6e 73 74 61 6e 63 65 20 76 61 72 69 61 62 6c 65 73 | bjects,..#.IO.instance.variables |
| 3ee60 | 2c 20 73 69 6e 67 6c 65 74 6f 6e 20 6f 62 6a 65 63 74 73 0d 0a 0d 0a 64 62 5b 22 54 6f 6d 20 43 | ,.singleton.objects....db["Tom.C |
| 3ee80 | 68 72 69 73 74 69 61 6e 73 65 6e 22 5d 20 3d 20 4d 61 72 73 68 61 6c 2e 64 75 6d 70 28 5b 22 62 | hristiansen"].=.Marshal.dump(["b |
| 3eea0 | 6f 6f 6b 20 61 75 74 68 6f 72 22 2c 20 20 22 74 63 68 72 69 73 74 40 70 65 72 6c 2e 63 6f 6d 22 | ook.author",.."tchrist@perl.com" |
| 3eec0 | 5d 29 0d 0a 64 62 5b 22 54 6f 6d 20 42 6f 75 74 65 6c 6c 22 5d 20 3d 20 4d 61 72 73 68 61 6c 2e | ])..db["Tom.Boutell"].=.Marshal. |
| 3eee0 | 64 75 6d 70 28 5b 22 73 68 61 72 65 77 61 72 65 20 61 75 74 68 6f 72 22 2c 0d 0a 22 62 6f 75 74 | dump(["shareware.author",.."bout |
| 3ef00 | 65 6c 6c 40 62 6f 75 74 65 6c 6c 2e 63 6f 6d 22 5d 29 0d 0a 0d 0a 6e 61 6d 65 31 20 3d 20 22 54 | ell@boutell.com"])....name1.=."T |
| 3ef20 | 6f 6d 20 43 68 72 69 73 74 69 61 6e 73 65 6e 22 0d 0a 6e 61 6d 65 32 20 3d 20 22 54 6f 6d 20 42 | om.Christiansen"..name2.=."Tom.B |
| 3ef40 | 6f 75 74 65 6c 6c 22 0d 0a 0d 0a 74 6f 6d 31 20 3d 20 4d 61 72 73 68 61 6c 2e 6c 6f 61 64 28 64 | outell"....tom1.=.Marshal.load(d |
| 3ef60 | 62 5b 6e 61 6d 65 31 5d 29 0d 0a 74 6f 6d 32 20 3d 20 4d 61 72 73 68 61 6c 2e 6c 6f 61 64 28 64 | b[name1])..tom2.=.Marshal.load(d |
| 3ef80 | 62 5b 6e 61 6d 65 32 5d 29 0d 0a 0d 0a 70 75 74 73 20 22 54 77 6f 20 54 6f 6d 69 6e 67 3a 20 23 | b[name2])....puts."Two.Toming:.# |
| 3efa0 | 7b 74 6f 6d 31 7d 20 23 7b 74 6f 6d 32 7d 22 0d 0a 0d 0a 69 66 20 74 6f 6d 31 5b 30 5d 20 3d 3d | {tom1}.#{tom2}"....if.tom1[0].== |
| 3efc0 | 20 74 6f 6d 32 5b 30 5d 20 26 26 20 74 6f 6d 31 5b 31 5d 20 3d 3d 20 74 6f 6d 32 5b 31 5d 0d 0a | .tom2[0].&&.tom1[1].==.tom2[1].. |
| 3efe0 | 20 20 20 70 75 74 73 20 22 59 6f 75 27 72 65 20 68 61 76 69 6e 67 20 72 75 6e 74 69 6d 65 20 66 | ...puts."You're.having.runtime.f |
| 3f000 | 75 6e 20 77 69 74 68 20 6f 6e 65 20 54 6f 6d 20 6d 61 64 65 20 74 77 6f 2e 22 0d 0a 65 6c 73 65 | un.with.one.Tom.made.two."..else |
| 3f020 | 0d 0a 20 20 20 70 75 74 73 20 22 4e 6f 20 74 77 6f 20 54 6f 6d 73 20 61 72 65 20 65 76 65 72 20 | .....puts."No.two.Toms.are.ever. |
| 3f040 | 61 6c 69 6b 65 22 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 6f 20 63 68 61 6e 67 65 20 70 61 72 74 73 | alike"..end....#.To.change.parts |
| 3f060 | 20 6f 66 20 61 6e 20 65 6e 74 72 79 2c 20 67 65 74 20 74 68 65 20 77 68 6f 6c 65 20 65 6e 74 72 | .of.an.entry,.get.the.whole.entr |
| 3f080 | 79 2c 20 63 68 61 6e 67 65 20 74 68 65 20 70 61 72 74 73 2c 0d 0a 23 20 61 6e 64 20 73 61 76 65 | y,.change.the.parts,..#.and.save |
| 3f0a0 | 20 74 68 65 20 77 68 6f 6c 65 20 65 6e 74 72 79 20 62 61 63 6b 0d 0a 65 6e 74 72 79 20 3d 20 4d | .the.whole.entry.back..entry.=.M |
| 3f0c0 | 61 72 73 68 61 6c 2e 6c 6f 61 64 28 64 62 5b 22 54 6f 6d 20 42 6f 75 74 65 6c 6c 22 5d 29 0d 0a | arshal.load(db["Tom.Boutell"]).. |
| 3f0e0 | 65 6e 74 72 79 5b 30 5d 20 3d 20 22 50 6f 65 74 20 50 72 6f 67 72 61 6d 6d 65 72 22 0d 0a 64 62 | entry[0].=."Poet.Programmer"..db |
| 3f100 | 5b 22 54 6f 6d 20 42 6f 75 74 65 6c 6c 22 5d 20 3d 20 4d 61 72 73 68 61 6c 2e 64 75 6d 70 28 65 | ["Tom.Boutell"].=.Marshal.dump(e |
| 3f120 | 6e 74 72 79 29 0d 0a 64 62 2e 63 6c 6f 73 65 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 | ntry)..db.close......#.@@PLEAC@@ |
| 3f140 | 5f 31 34 2e 39 0d 0a 23 20 65 78 61 6d 70 6c 65 20 74 6f 20 6d 61 6b 65 20 64 61 74 61 20 70 65 | _14.9..#.example.to.make.data.pe |
| 3f160 | 72 73 69 73 74 65 6e 74 0d 0a 23 20 75 73 65 73 20 4d 61 72 73 68 61 6c 20 66 72 6f 6d 20 74 68 | rsistent..#.uses.Marshal.from.th |
| 3f180 | 65 20 73 74 61 6e 64 61 72 64 20 6c 69 62 0d 0a 23 20 53 74 6f 72 65 73 20 74 68 65 20 64 61 74 | e.standard.lib..#.Stores.the.dat |
| 3f1a0 | 61 20 69 6e 20 61 20 73 69 6d 70 6c 65 20 66 69 6c 65 2c 0d 0a 23 20 73 65 65 20 31 34 2e 38 20 | a.in.a.simple.file,..#.see.14.8. |
| 3f1c0 | 6f 6e 20 68 6f 77 20 74 6f 20 73 74 6f 72 65 20 69 74 20 69 6e 20 61 20 64 62 6d 20 66 69 6c 65 | on.how.to.store.it.in.a.dbm.file |
| 3f1e0 | 0d 0a 0d 0a 23 20 54 68 65 20 42 45 47 49 4e 20 62 6c 6f 63 6b 20 69 73 20 65 78 65 63 75 74 65 | ....#.The.BEGIN.block.is.execute |
| 3f200 | 64 20 62 65 66 6f 72 65 20 74 68 65 20 72 65 73 74 20 6f 66 20 74 68 65 20 73 63 72 69 70 74 0d | d.before.the.rest.of.the.script. |
| 3f220 | 0a 23 20 77 65 20 75 73 65 20 67 6c 6f 62 61 6c 20 76 61 72 69 61 62 6c 65 73 20 68 65 72 65 20 | .#.we.use.global.variables.here. |
| 3f240 | 62 65 63 61 75 73 65 20 6c 6f 63 61 6c 20 76 61 72 69 61 62 6c 65 73 0d 0a 23 20 77 69 6c 6c 20 | because.local.variables..#.will. |
| 3f260 | 67 6f 20 6f 75 74 20 6f 66 20 73 63 6f 70 65 20 61 6e 64 20 61 72 65 20 6e 6f 74 20 61 63 63 65 | go.out.of.scope.and.are.not.acce |
| 3f280 | 73 73 69 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 6d 61 69 6e 20 73 63 72 69 70 74 0d 0a 0d 0a 42 | ssible.from.the.main.script....B |
| 3f2a0 | 45 47 49 4e 20 7b 0d 0a 20 20 20 24 70 65 72 73 69 73 74 65 6e 74 5f 73 74 6f 72 65 20 3d 20 22 | EGIN.{.....$persistent_store.=." |
| 3f2c0 | 70 65 72 73 69 74 65 6e 63 65 2e 64 61 74 22 0d 0a 20 20 20 62 65 67 69 6e 0d 0a 20 20 20 20 20 | persitence.dat".....begin....... |
| 3f2e0 | 46 69 6c 65 2e 6f 70 65 6e 28 24 70 65 72 73 69 73 74 65 6e 74 5f 73 74 6f 72 65 29 20 64 6f 20 | File.open($persistent_store).do. |
| 3f300 | 7c 66 7c 0d 0a 20 20 20 20 20 20 20 24 73 74 72 69 6e 67 76 61 72 69 61 62 6c 65 31 20 3d 20 4d | |f|.........$stringvariable1.=.M |
| 3f320 | 61 72 73 68 61 6c 2e 6c 6f 61 64 28 66 29 0d 0a 20 20 20 20 20 20 20 24 61 72 72 61 79 76 61 72 | arshal.load(f).........$arrayvar |
| 3f340 | 69 61 62 6c 65 32 20 3d 20 4d 61 72 73 68 61 6c 2e 6c 6f 61 64 28 66 29 0d 0a 20 20 20 20 20 65 | iable2.=.Marshal.load(f).......e |
| 3f360 | 6e 64 0d 0a 20 20 20 72 65 73 63 75 65 0d 0a 20 20 20 20 20 70 75 74 73 20 22 43 61 6e 20 6e 6f | nd.....rescue.......puts."Can.no |
| 3f380 | 74 20 6f 70 65 6e 20 23 7b 24 70 65 72 73 69 73 74 65 6e 74 5f 73 74 6f 72 65 7d 22 0d 0a 20 20 | t.open.#{$persistent_store}".... |
| 3f3a0 | 20 20 20 23 20 49 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 69 66 20 74 68 69 73 20 73 63 72 69 | ...#.Initialisation.if.this.scri |
| 3f3c0 | 70 74 20 72 75 6e 73 20 74 68 65 20 66 69 72 73 74 20 74 69 6d 65 0d 0a 20 20 20 20 20 24 73 74 | pt.runs.the.first.time.......$st |
| 3f3e0 | 72 69 6e 67 76 61 72 69 61 62 6c 65 31 20 3d 20 22 22 0d 0a 20 20 20 20 20 24 61 72 72 61 79 76 | ringvariable1.=."".......$arrayv |
| 3f400 | 61 72 69 61 62 6c 65 32 20 3d 20 5b 5d 0d 0a 20 20 20 65 6e 64 0d 0a 7d 0d 0a 0d 0a 45 4e 44 20 | ariable2.=.[].....end..}....END. |
| 3f420 | 7b 0d 0a 20 20 20 46 69 6c 65 2e 6f 70 65 6e 28 24 70 65 72 73 69 73 74 65 6e 74 5f 73 74 6f 72 | {.....File.open($persistent_stor |
| 3f440 | 65 2c 20 22 77 2b 22 29 20 64 6f 20 7c 66 7c 0d 0a 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 64 75 | e,."w+").do.|f|.......Marshal.du |
| 3f460 | 6d 70 28 24 73 74 72 69 6e 67 76 61 72 69 61 62 6c 65 31 2c 20 66 29 0d 0a 20 20 20 20 20 4d 61 | mp($stringvariable1,.f).......Ma |
| 3f480 | 72 73 68 61 6c 2e 64 75 6d 70 28 24 61 72 72 61 79 76 61 72 69 61 62 6c 65 32 2c 20 66 29 0d 0a | rshal.dump($arrayvariable2,.f).. |
| 3f4a0 | 20 20 20 65 6e 64 0d 0a 7d 0d 0a 0d 0a 23 20 73 69 6d 70 6c 65 20 74 65 73 74 20 70 72 6f 67 72 | ...end..}....#.simple.test.progr |
| 3f4c0 | 61 6d 0d 0a 70 75 74 73 20 24 73 74 72 69 6e 67 76 61 72 69 61 62 6c 65 31 0d 0a 70 75 74 73 20 | am..puts.$stringvariable1..puts. |
| 3f4e0 | 24 61 72 72 61 79 76 61 72 69 61 62 6c 65 32 0d 0a 24 73 74 72 69 6e 67 76 61 72 69 61 62 6c 65 | $arrayvariable2..$stringvariable |
| 3f500 | 31 20 3d 20 22 48 65 6c 6c 6f 20 57 6f 72 6c 64 22 0d 0a 24 61 72 72 61 79 76 61 72 69 61 62 6c | 1.=."Hello.World"..$arrayvariabl |
| 3f520 | 65 32 2e 70 75 73 68 28 35 29 0d 0a 70 75 74 73 20 24 73 74 72 69 6e 67 76 61 72 69 61 62 6c 65 | e2.push(5)..puts.$stringvariable |
| 3f540 | 31 0d 0a 70 75 74 73 20 24 61 72 72 61 79 76 61 72 69 61 62 6c 65 32 0d 0a 0d 0a 0d 0a 23 20 40 | 1..puts.$arrayvariable2......#.@ |
| 3f560 | 40 50 4c 45 41 43 40 40 5f 31 34 2e 31 30 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 | @PLEAC@@_14.10..#!/usr/bin/ruby. |
| 3f580 | 2d 77 0d 0a 23 20 52 75 62 79 20 68 61 73 20 61 20 64 62 69 20 6d 6f 64 75 6c 65 20 77 69 74 68 | -w..#.Ruby.has.a.dbi.module.with |
| 3f5a0 | 20 61 6e 20 61 72 63 68 69 74 65 63 74 75 72 65 20 73 69 6d 69 6c 61 72 0d 0a 23 20 74 6f 20 74 | .an.architecture.similar..#.to.t |
| 3f5c0 | 68 65 20 50 65 72 6c 20 64 62 69 20 6d 6f 64 75 6c 65 3a 20 74 68 65 20 64 62 69 20 6d 6f 64 75 | he.Perl.dbi.module:.the.dbi.modu |
| 3f5e0 | 6c 65 20 70 72 6f 76 69 64 65 73 20 61 6e 20 75 6e 69 66 69 65 64 0d 0a 23 20 69 6e 74 65 72 66 | le.provides.an.unified..#.interf |
| 3f600 | 61 63 65 20 61 6e 64 20 75 73 65 73 20 73 70 65 63 69 61 6c 69 7a 65 64 20 64 72 69 76 65 72 73 | ace.and.uses.specialized.drivers |
| 3f620 | 20 66 6f 72 20 65 61 63 68 20 64 62 6d 73 20 76 65 6e 64 6f 72 0d 0a 23 0d 0a 62 65 67 69 6e 0d | .for.each.dbms.vendor..#..begin. |
| 3f640 | 0a 20 20 20 20 44 42 49 2e 63 6f 6e 6e 65 63 74 28 22 44 42 49 3a 64 72 69 76 65 72 3a 64 72 69 | .....DBI.connect("DBI:driver:dri |
| 3f660 | 76 65 72 73 70 65 63 69 66 69 63 22 2c 20 22 75 73 65 72 6e 61 6d 65 22 2c 20 22 61 75 74 68 22 | verspecific",."username",."auth" |
| 3f680 | 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 7c 64 62 68 7c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 62 | ).{..........|dbh|............db |
| 3f6a0 | 68 2e 64 6f 28 53 51 4c 31 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 64 62 68 2e 70 72 65 70 61 72 | h.do(SQL1)............dbh.prepar |
| 3f6c0 | 65 28 53 51 4c 32 29 7b 20 7c 73 74 68 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 68 2e | e(SQL2){.|sth|..............sth. |
| 3f6e0 | 65 78 65 63 75 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 68 2e 66 65 74 63 68 20 7b | execute..............sth.fetch.{ |
| 3f700 | 7c 72 6f 77 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 2e 2e 2e 0d 0a 20 20 | |row|..................#........ |
| 3f720 | 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 20 23 20 65 6e 64 20 6f 66 20 | ..........}..........}.#.end.of. |
| 3f740 | 62 6c 6f 63 6b 20 66 69 6e 69 73 68 65 73 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 20 68 61 6e | block.finishes.the.statement.han |
| 3f760 | 64 6c 65 0d 0a 20 20 20 20 7d 20 23 20 65 6e 64 20 6f 66 20 62 6c 6f 63 6b 20 63 6c 6f 73 65 73 | dle......}.#.end.of.block.closes |
| 3f780 | 20 74 68 65 20 64 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 72 65 73 63 75 65 | .the.database.connection..rescue |
| 3f7a0 | 20 44 42 49 3a 3a 44 61 74 61 62 61 73 65 45 72 72 6f 72 20 3d 3e 20 65 0d 0a 20 20 20 20 70 75 | .DBI::DatabaseError.=>.e......pu |
| 3f7c0 | 74 73 20 22 64 62 69 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 22 0d 0a 20 20 20 20 70 75 74 | ts."dbi.error.occurred"......put |
| 3f7e0 | 73 20 22 45 72 72 6f 72 20 63 6f 64 65 3a 20 23 7b 65 2e 65 72 72 7d 22 0d 0a 20 20 20 20 70 75 | s."Error.code:.#{e.err}"......pu |
| 3f800 | 74 73 20 22 45 72 72 6f 72 20 6d 65 73 73 61 67 65 3a 20 23 7b 65 2e 65 72 72 73 74 72 7d 22 0d | ts."Error.message:.#{e.errstr}". |
| 3f820 | 0a 65 6e 64 0d 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 64 62 | .end....#!/usr/bin/ruby.-w..#.db |
| 3f840 | 75 73 65 72 73 20 2d 20 65 78 61 6d 70 6c 65 20 66 6f 72 20 6d 79 73 71 6c 20 77 68 69 63 68 20 | users.-.example.for.mysql.which. |
| 3f860 | 63 72 65 61 74 65 73 20 61 20 74 61 62 6c 65 2c 0d 0a 23 20 66 69 6c 6c 73 20 69 74 20 77 69 74 | creates.a.table,..#.fills.it.wit |
| 3f880 | 68 20 76 61 6c 75 65 73 2c 20 72 65 74 72 69 65 76 65 73 20 74 68 65 20 76 61 6c 75 65 73 20 62 | h.values,.retrieves.the.values.b |
| 3f8a0 | 61 63 6b 2c 0d 0a 23 20 61 6e 64 20 66 69 6e 61 6c 6c 79 20 64 65 73 74 72 6f 79 73 20 74 68 65 | ack,..#.and.finally.destroys.the |
| 3f8c0 | 20 74 61 62 6c 65 2e 0d 0a 0d 0a 72 65 71 75 69 72 65 20 22 64 62 69 22 0d 0a 0d 0a 23 20 72 65 | .table.....require."dbi"....#.re |
| 3f8e0 | 70 6c 61 63 65 6d 65 6e 74 20 66 6f 72 20 74 68 65 20 55 73 65 72 3a 3a 70 77 6e 74 20 6d 6f 64 | placement.for.the.User::pwnt.mod |
| 3f900 | 75 6c 65 0d 0a 64 65 66 20 67 65 74 70 77 65 6e 74 0d 0a 20 20 20 20 72 65 73 75 6c 74 20 3d 20 | ule..def.getpwent......result.=. |
| 3f920 | 5b 5d 0d 0a 20 20 20 20 46 69 6c 65 2e 6f 70 65 6e 28 22 2f 65 74 63 2f 70 61 73 73 77 64 22 29 | []......File.open("/etc/passwd") |
| 3f940 | 20 7b 7c 66 69 6c 65 7c 0d 0a 20 20 20 20 20 20 20 20 66 69 6c 65 2e 65 61 63 68 5f 6c 69 6e 65 | .{|file|..........file.each_line |
| 3f960 | 20 7b 7c 6c 69 6e 65 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 20 69 66 20 6c 69 | .{|line|..............next.if.li |
| 3f980 | 6e 65 2e 6d 61 74 63 68 28 2f 5e 23 2f 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 73 | ne.match(/^#/)..............cols |
| 3f9a0 | 20 3d 20 6c 69 6e 65 2e 73 70 6c 69 74 28 22 3a 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .=.line.split(":").............. |
| 3f9c0 | 72 65 73 75 6c 74 2e 70 75 73 68 28 5b 63 6f 6c 73 5b 32 5d 2c 20 63 6f 6c 73 5b 30 5d 5d 29 0d | result.push([cols[2],.cols[0]]). |
| 3f9e0 | 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 72 65 73 75 6c 74 0d 0a 65 | .........}......}......result..e |
| 3fa00 | 6e 64 0d 0a 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 44 42 49 2e 63 6f 6e 6e 65 63 74 28 22 44 42 | nd....begin......DBI.connect("DB |
| 3fa20 | 49 3a 4d 79 73 71 6c 3a 70 6c 65 61 63 64 61 74 61 62 61 73 65 22 2c 20 22 70 6c 65 61 63 22 2c | I:Mysql:pleacdatabase",."pleac", |
| 3fa40 | 20 22 70 6c 65 61 63 70 61 73 73 77 6f 72 64 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 7c 63 6f | ."pleacpassword").{..........|co |
| 3fa60 | 6e 6e 7c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 64 6f 28 22 43 52 45 41 54 45 20 54 | nn|............conn.do("CREATE.T |
| 3fa80 | 41 42 4c 45 20 75 73 65 72 73 20 28 75 69 64 20 49 4e 54 2c 20 6c 6f 67 69 6e 20 43 48 41 52 28 | ABLE.users.(uid.INT,.login.CHAR( |
| 3faa0 | 38 29 29 22 29 0d 0a 0d 0a 20 20 20 20 20 20 20 20 75 73 65 72 73 20 3d 20 67 65 74 70 77 65 6e | 8))")............users.=.getpwen |
| 3fac0 | 74 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 70 72 65 70 61 72 65 28 22 49 4e 53 45 52 | t............conn.prepare("INSER |
| 3fae0 | 54 20 49 4e 54 4f 20 75 73 65 72 73 20 56 41 4c 55 45 53 20 28 3f 2c 3f 29 22 29 20 7b 7c 73 74 | T.INTO.users.VALUES.(?,?)").{|st |
| 3fb00 | 68 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 73 2e 65 61 63 68 20 7b 7c 65 6e 74 | h|..............users.each.{|ent |
| 3fb20 | 72 79 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 68 2e 65 78 65 63 75 74 65 | ry|..................sth.execute |
| 3fb40 | 28 65 6e 74 72 79 5b 30 5d 2c 20 65 6e 74 72 79 5b 31 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | (entry[0],.entry[1])............ |
| 3fb60 | 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 65 | ..}..........}............conn.e |
| 3fb80 | 78 65 63 75 74 65 28 22 53 45 4c 45 43 54 20 75 69 64 2c 20 6c 6f 67 69 6e 20 46 52 4f 4d 20 75 | xecute("SELECT.uid,.login.FROM.u |
| 3fba0 | 73 65 72 73 20 57 48 45 52 45 20 75 69 64 20 3c 20 35 30 22 29 20 7b 7c 73 74 68 7c 0d 0a 20 20 | sers.WHERE.uid.<.50").{|sth|.... |
| 3fbc0 | 20 20 20 20 20 20 20 20 20 20 73 74 68 2e 66 65 74 63 68 20 7b 7c 72 6f 77 7c 0d 0a 20 20 20 20 | ..........sth.fetch.{|row|...... |
| 3fbe0 | 20 20 20 20 20 20 20 20 20 20 20 20 70 75 74 73 20 72 6f 77 2e 63 6f 6c 6c 65 63 74 20 7b 7c 63 | ............puts.row.collect.{|c |
| 3fc00 | 6f 6c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 63 6f 6c 2e | ol|......................if.col. |
| 3fc20 | 6e 69 6c 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 28 | nil?.........................."( |
| 3fc40 | 6e 75 6c 6c 29 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 | null)"......................else |
| 3fc60 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 0d 0a 20 | ..........................col... |
| 3fc80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 | ...................end.......... |
| 3fca0 | 20 20 20 20 20 20 20 20 7d 2e 6a 6f 69 6e 28 22 2c 20 22 29 0d 0a 20 20 20 20 20 20 20 20 20 20 | ........}.join(",.")............ |
| 3fcc0 | 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 63 6f 6e 6e 2e 64 | ..}..........}............conn.d |
| 3fce0 | 6f 28 22 44 52 4f 50 20 54 41 42 4c 45 20 75 73 65 72 73 22 29 0d 0a 20 20 20 20 7d 0d 0a 72 65 | o("DROP.TABLE.users")......}..re |
| 3fd00 | 73 63 75 65 20 44 42 49 3a 3a 44 61 74 61 62 61 73 65 45 72 72 6f 72 20 3d 3e 20 65 0d 0a 20 20 | scue.DBI::DatabaseError.=>.e.... |
| 3fd20 | 20 20 70 75 74 73 20 22 64 62 69 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 22 0d 0a 20 20 20 | ..puts."dbi.error.occurred"..... |
| 3fd40 | 20 70 75 74 73 20 22 45 72 72 6f 72 20 63 6f 64 65 3a 20 23 7b 65 2e 65 72 72 7d 22 0d 0a 20 20 | .puts."Error.code:.#{e.err}".... |
| 3fd60 | 20 20 70 75 74 73 20 22 45 72 72 6f 72 20 6d 65 73 73 61 67 65 3a 20 23 7b 65 2e 65 72 72 73 74 | ..puts."Error.message:.#{e.errst |
| 3fd80 | 72 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 35 2e 31 0d 0a | r}"..end......#.@@PLEAC@@_15.1.. |
| 3fda0 | 23 20 54 68 69 73 20 74 65 73 74 20 70 72 6f 67 72 61 6d 20 64 65 6d 6f 6e 73 74 72 61 74 65 73 | #.This.test.program.demonstrates |
| 3fdc0 | 20 70 61 72 73 69 6e 67 20 70 72 6f 67 72 61 6d 20 61 72 67 75 6d 65 6e 74 73 2e 0d 0a 23 20 49 | .parsing.program.arguments...#.I |
| 3fde0 | 74 20 75 73 65 73 20 74 68 65 20 6f 70 74 70 61 72 73 65 20 6c 69 62 72 61 72 79 2c 20 77 68 69 | t.uses.the.optparse.library,.whi |
| 3fe00 | 63 68 20 69 73 20 69 6e 63 6c 75 64 65 64 20 77 69 74 68 20 72 75 62 79 20 31 2e 38 0d 0a 23 20 | ch.is.included.with.ruby.1.8..#. |
| 3fe20 | 49 74 20 68 61 6e 64 6c 65 73 20 63 6c 61 73 73 69 63 20 75 6e 69 78 20 73 74 79 6c 65 20 61 6e | It.handles.classic.unix.style.an |
| 3fe40 | 64 20 67 6e 75 20 73 74 79 6c 65 20 6f 70 74 69 6f 6e 73 0d 0a 72 65 71 75 69 72 65 20 27 6f 70 | d.gnu.style.options..require.'op |
| 3fe60 | 74 70 61 72 73 65 27 0d 0a 0d 0a 40 64 65 62 75 67 6d 6f 64 65 20 3d 20 66 61 6c 73 65 0d 0a 40 | tparse'....@debugmode.=.false..@ |
| 3fe80 | 76 65 72 62 6f 73 65 20 3d 20 66 61 6c 73 65 0d 0a 0d 0a 41 52 47 56 2e 6f 70 74 69 6f 6e 73 20 | verbose.=.false....ARGV.options. |
| 3fea0 | 64 6f 20 7c 6f 70 74 73 7c 0d 0a 20 20 20 20 6f 70 74 73 2e 62 61 6e 6e 65 72 20 3d 20 22 55 73 | do.|opts|......opts.banner.=."Us |
| 3fec0 | 61 67 65 3a 20 72 75 62 79 20 23 7b 24 30 7d 20 5b 4f 50 54 49 4f 4e 53 5d 20 49 4e 50 55 54 46 | age:.ruby.#{$0}.[OPTIONS].INPUTF |
| 3fee0 | 49 4c 45 53 22 0d 0a 0d 0a 20 20 20 20 6f 70 74 73 2e 6f 6e 28 22 2d 68 22 2c 20 22 2d 2d 68 65 | ILES"........opts.on("-h",."--he |
| 3ff00 | 6c 70 22 2c 20 22 73 68 6f 77 20 74 68 69 73 20 6d 65 73 73 61 67 65 22 29 20 7b 0d 0a 20 20 20 | lp",."show.this.message").{..... |
| 3ff20 | 20 20 20 20 20 70 75 74 73 20 6f 70 74 73 0d 0a 20 20 20 20 20 20 20 20 65 78 69 74 0d 0a 20 20 | .....puts.opts..........exit.... |
| 3ff40 | 20 20 7d 0d 0a 20 20 20 20 23 20 54 68 65 20 4f 70 74 69 6f 6e 50 61 72 73 65 72 23 6f 6e 20 6d | ..}......#.The.OptionParser#on.m |
| 3ff60 | 65 74 68 6f 64 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 61 20 73 70 65 63 69 66 69 63 61 | ethod.is.called.with.a.specifica |
| 3ff80 | 74 69 6f 6e 20 6f 66 20 73 68 6f 72 74 0d 0a 20 20 20 20 23 20 6f 70 74 69 6f 6e 73 2c 20 6f 66 | tion.of.short......#.options,.of |
| 3ffa0 | 20 6c 6f 6e 67 20 6f 70 74 69 6f 6e 73 2c 20 61 20 64 61 74 61 20 74 79 70 65 20 73 70 65 7a 69 | .long.options,.a.data.type.spezi |
| 3ffc0 | 66 69 63 61 74 69 6f 6e 20 61 6e 64 20 75 73 65 72 20 68 65 6c 70 0d 0a 20 20 20 20 23 20 6d 65 | fication.and.user.help......#.me |
| 3ffe0 | 73 73 61 67 65 73 20 66 6f 72 20 74 68 69 73 20 6f 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 23 20 54 | ssages.for.this.option.......#.T |
| 40000 | 68 65 20 6d 65 74 68 6f 64 20 61 6e 61 6c 79 73 65 73 20 74 68 65 20 67 69 76 65 6e 20 70 61 72 | he.method.analyses.the.given.par |
| 40020 | 61 6d 65 74 65 72 20 61 6e 64 20 64 65 63 69 64 65 73 20 77 68 61 74 20 69 74 20 69 73 2c 0d 0a | ameter.and.decides.what.it.is,.. |
| 40040 | 20 20 20 20 23 20 73 6f 20 79 6f 75 20 63 61 6e 20 6c 65 61 76 65 20 6f 75 74 20 74 68 65 20 6c | ....#.so.you.can.leave.out.the.l |
| 40060 | 6f 6e 67 20 6f 70 74 69 6f 6e 20 69 66 20 79 6f 75 20 64 6f 6e 27 74 20 6e 65 65 64 20 69 74 0d | ong.option.if.you.don't.need.it. |
| 40080 | 0a 20 20 20 20 6f 70 74 73 2e 6f 6e 28 22 2d 76 22 2c 20 22 2d 2d 5b 6e 6f 2d 5d 76 65 72 62 6f | .....opts.on("-v",."--[no-]verbo |
| 400a0 | 73 65 3d 5b 46 4c 41 47 5d 22 2c 20 54 72 75 65 43 6c 61 73 73 2c 20 22 72 75 6e 20 76 65 72 62 | se=[FLAG]",.TrueClass,."run.verb |
| 400c0 | 6f 73 6c 79 22 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 7c 40 76 65 72 62 6f 73 65 7c 20 20 20 23 | osly").{..........|@verbose|...# |
| 400e0 | 20 73 65 74 73 20 40 76 65 72 62 6f 73 65 20 74 6f 20 74 72 75 65 20 6f 72 20 66 61 6c 73 65 0d | .sets.@verbose.to.true.or.false. |
| 40100 | 0a 20 20 20 20 7d 0d 0a 20 20 20 20 6f 70 74 73 2e 6f 6e 28 22 2d 44 22 2c 20 22 2d 2d 44 45 42 | .....}......opts.on("-D",."--DEB |
| 40120 | 55 47 22 2c 20 54 72 75 65 43 6c 61 73 73 2c 20 22 74 75 72 6e 73 20 6f 6e 20 64 65 62 75 67 20 | UG",.TrueClass,."turns.on.debug. |
| 40140 | 6d 6f 64 65 22 20 29 7b 0d 0a 20 20 20 20 20 20 20 20 7c 40 64 65 62 75 67 6d 6f 64 65 7c 20 20 | mode".){..........|@debugmode|.. |
| 40160 | 20 23 20 73 65 74 73 20 40 64 65 62 75 67 6d 6f 64 65 20 74 6f 20 74 72 75 65 0d 0a 20 20 20 20 | .#.sets.@debugmode.to.true...... |
| 40180 | 7d 0d 0a 20 20 20 20 6f 70 74 73 2e 6f 6e 28 22 2d 63 22 2c 20 22 2d 2d 63 6f 75 6e 74 3d 4e 55 | }......opts.on("-c",."--count=NU |
| 401a0 | 4d 42 45 52 22 2c 20 49 6e 74 65 67 65 72 2c 20 22 68 6f 77 20 6d 61 6e 79 20 74 69 6d 65 73 20 | MBER",.Integer,."how.many.times. |
| 401c0 | 77 65 20 64 6f 20 69 74 22 20 29 7b 0d 0a 20 20 20 20 20 20 20 20 7c 40 63 6f 75 6e 74 7c 20 20 | we.do.it".){..........|@count|.. |
| 401e0 | 20 20 20 20 23 20 73 65 74 73 20 40 63 6f 75 6e 74 20 74 6f 20 67 69 76 65 6e 20 69 6e 74 65 67 | ....#.sets.@count.to.given.integ |
| 40200 | 65 72 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 6f 70 74 73 2e 6f 6e 28 22 2d 6f 22 2c 20 22 2d 2d | er......}......opts.on("-o",."-- |
| 40220 | 6f 75 74 70 75 74 3d 46 49 4c 45 22 2c 20 53 74 72 69 6e 67 2c 20 22 66 69 6c 65 20 74 6f 20 77 | output=FILE",.String,."file.to.w |
| 40240 | 72 69 74 65 20 6f 75 74 70 75 74 20 74 6f 22 29 7b 0d 0a 20 20 20 20 20 20 20 20 7c 40 6f 75 74 | rite.output.to"){..........|@out |
| 40260 | 70 75 74 66 69 6c 65 7c 20 20 20 23 20 73 65 74 73 20 40 6f 75 74 70 75 74 66 69 6c 65 20 74 6f | putfile|...#.sets.@outputfile.to |
| 40280 | 20 67 69 76 65 6e 20 73 74 72 69 6e 67 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 6f 70 74 73 2e 70 | .given.string......}......opts.p |
| 402a0 | 61 72 73 65 21 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 65 78 61 6d 70 6c 65 20 74 6f 20 75 73 65 20 74 | arse!..end....#.example.to.use.t |
| 402c0 | 68 65 20 6f 70 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 6d 61 69 6e 20 70 72 6f 67 72 61 6d 0d 0a | he.options.in.the.main.program.. |
| 402e0 | 70 75 74 73 20 22 56 65 72 62 6f 73 65 20 69 73 20 6f 6e 22 20 69 66 20 40 76 65 72 62 6f 73 65 | puts."Verbose.is.on".if.@verbose |
| 40300 | 0d 0a 70 75 74 73 20 22 44 65 62 75 67 6d 6f 64 65 20 69 73 20 6f 6e 22 20 69 66 20 40 64 65 62 | ..puts."Debugmode.is.on".if.@deb |
| 40320 | 75 67 6d 6f 64 65 0d 0a 70 75 74 73 20 22 4f 75 74 66 69 6c 65 20 69 73 20 23 7b 40 6f 75 74 70 | ugmode..puts."Outfile.is.#{@outp |
| 40340 | 75 74 66 69 6c 65 7d 22 20 69 66 20 64 65 66 69 6e 65 64 3f 20 40 6f 75 74 70 75 74 66 69 6c 65 | utfile}".if.defined?.@outputfile |
| 40360 | 0d 0a 70 75 74 73 20 22 43 6f 75 6e 74 20 69 73 20 23 7b 40 63 6f 75 6e 74 7d 22 20 69 66 20 64 | ..puts."Count.is.#{@count}".if.d |
| 40380 | 65 66 69 6e 65 64 3f 20 40 63 6f 75 6e 74 0d 0a 41 52 47 56 2e 65 61 63 68 20 7b 20 7c 70 61 72 | efined?.@count..ARGV.each.{.|par |
| 403a0 | 61 6d 7c 0d 0a 20 20 20 20 70 75 74 73 20 22 47 6f 74 20 70 61 72 61 6d 65 74 65 72 20 23 7b 70 | am|......puts."Got.parameter.#{p |
| 403c0 | 61 72 61 6d 7d 22 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 35 2e 34 0d | aram}"..}......#.@@PLEAC@@_15.4. |
| 403e0 | 0a 62 75 66 20 3d 20 22 5c 30 22 20 2a 20 38 0d 0a 24 73 74 64 6f 75 74 2e 69 6f 63 74 6c 28 30 | .buf.=."\0".*.8..$stdout.ioctl(0 |
| 40400 | 78 35 34 31 33 2c 20 62 75 66 29 0d 0a 77 73 5f 72 6f 77 2c 20 77 73 5f 63 6f 6c 2c 20 77 73 5f | x5413,.buf)..ws_row,.ws_col,.ws_ |
| 40420 | 78 70 69 78 65 6c 2c 20 77 73 5f 79 70 69 78 65 6c 20 3d 20 62 75 66 2e 75 6e 70 61 63 6b 28 22 | xpixel,.ws_ypixel.=.buf.unpack(" |
| 40440 | 53 34 22 29 0d 0a 0d 0a 72 61 69 73 65 20 22 59 6f 75 20 6d 75 73 74 20 68 61 76 65 20 61 74 20 | S4")....raise."You.must.have.at. |
| 40460 | 6c 65 61 73 74 20 32 30 20 63 68 61 72 61 63 74 65 72 73 22 20 75 6e 6c 65 73 73 20 77 73 5f 63 | least.20.characters".unless.ws_c |
| 40480 | 6f 6c 20 3e 3d 20 32 30 0d 0a 6d 61 78 20 3d 20 30 0d 0a 76 61 6c 75 65 73 20 3d 20 28 31 2e 2e | ol.>=.20..max.=.0..values.=.(1.. |
| 404a0 | 35 29 2e 63 6f 6c 6c 65 63 74 20 7b 20 72 61 6e 64 28 32 30 29 20 7d 20 20 23 20 67 65 6e 65 72 | 5).collect.{.rand(20).}..#.gener |
| 404c0 | 61 74 65 20 61 6e 20 61 72 72 61 79 5b 35 5d 20 6f 66 20 72 61 6e 64 20 76 61 6c 75 65 73 0d 0a | ate.an.array[5].of.rand.values.. |
| 404e0 | 66 6f 72 20 69 20 69 6e 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 6d 61 78 20 3d 20 69 20 69 66 20 | for.i.in.values......max.=.i.if. |
| 40500 | 6d 61 78 20 3c 20 69 0d 0a 65 6e 64 0d 0a 72 61 74 69 6f 20 3d 20 46 6c 6f 61 74 28 77 73 5f 63 | max.<.i..end..ratio.=.Float(ws_c |
| 40520 | 6f 6c 2d 31 32 29 2f 6d 61 78 20 20 20 20 20 20 20 20 20 20 23 20 63 68 61 72 73 20 70 65 72 20 | ol-12)/max..........#.chars.per. |
| 40540 | 75 6e 69 74 0d 0a 66 6f 72 20 69 20 69 6e 20 76 61 6c 75 65 73 0d 0a 20 20 20 20 70 72 69 6e 74 | unit..for.i.in.values......print |
| 40560 | 66 20 22 25 38 2e 31 66 20 25 73 5c 6e 22 2c 20 69 2c 20 22 2a 22 20 2a 20 28 72 61 74 69 6f 2a | f."%8.1f.%s\n",.i,."*".*.(ratio* |
| 40580 | 69 29 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 67 69 76 65 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 3a | i)..end....#.gives,.for.example: |
| 405a0 | 0d 0a 23 20 20 20 31 35 2e 30 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ..#...15.0.********************* |
| 405c0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 23 20 20 20 31 30 2e 30 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | **********..#...10.0.*********** |
| 405e0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 23 20 20 20 20 35 2e 30 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d | **********..#....5.0.**********. |
| 40600 | 0a 23 20 20 20 31 34 2e 30 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | .#...14.0.********************** |
| 40620 | 2a 2a 2a 2a 2a 2a 2a 0d 0a 23 20 20 20 31 38 2e 30 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | *******..#...18.0.************** |
| 40640 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 0d 0a 0d 0a 23 20 | ************************......#. |
| 40660 | 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 31 0d 0a 6f 75 74 70 75 74 20 3d 20 60 70 72 6f 67 72 61 | @@PLEAC@@_16.1..output.=.`progra |
| 40680 | 6d 20 61 72 67 73 60 20 20 20 20 20 20 20 23 20 63 6f 6c 6c 65 63 74 20 6f 75 74 70 75 74 20 69 | m.args`.......#.collect.output.i |
| 406a0 | 6e 74 6f 20 6f 6e 65 20 6d 75 6c 74 69 6c 69 6e 65 20 73 74 72 69 6e 67 0d 0a 6f 75 74 70 75 74 | nto.one.multiline.string..output |
| 406c0 | 20 3d 20 60 70 72 6f 67 72 61 6d 20 61 72 67 73 60 2e 73 70 6c 69 74 20 23 20 63 6f 6c 6c 65 63 | .=.`program.args`.split.#.collec |
| 406e0 | 74 20 6f 75 74 70 75 74 20 69 6e 74 6f 20 61 72 72 61 79 2c 20 6f 6e 65 20 6c 69 6e 65 20 70 65 | t.output.into.array,.one.line.pe |
| 40700 | 72 0d 0a 65 6c 65 6d 65 6e 74 0d 0a 0d 0a 72 65 61 64 6d 65 20 3d 20 49 4f 2e 70 6f 70 65 6e 28 | r..element....readme.=.IO.popen( |
| 40720 | 22 6c 73 22 29 0d 0a 6f 75 74 70 75 74 20 3d 20 22 22 0d 0a 77 68 69 6c 65 20 72 65 61 64 6d 65 | "ls")..output.=.""..while.readme |
| 40740 | 2e 67 65 74 73 20 64 6f 0d 0a 20 20 20 20 6f 75 74 70 75 74 20 2b 3d 20 24 5f 0d 0a 65 6e 64 0d | .gets.do......output.+=.$_..end. |
| 40760 | 0a 72 65 61 64 6d 65 2e 63 6c 6f 73 65 0d 0a 0d 0a 60 66 73 63 6b 20 2d 79 20 2f 64 65 76 2f 72 | .readme.close....`fsck.-y./dev/r |
| 40780 | 73 64 31 61 60 20 20 23 20 42 41 44 20 41 4e 44 20 53 43 41 52 59 20 69 6e 20 50 65 72 6c 20 62 | sd1a`..#.BAD.AND.SCARY.in.Perl.b |
| 407a0 | 65 63 61 75 73 65 20 69 74 27 73 20 6d 61 6e 61 67 65 64 20 62 79 20 74 68 65 20 73 68 65 6c 6c | ecause.it's.managed.by.the.shell |
| 407c0 | 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 49 20 64 6f 6e 6e | ........................#.I.donn |
| 407e0 | 61 20 69 6e 20 52 75 62 79 20 2e 2e 2e 0d 0a 0d 0a 23 20 73 6f 20 74 68 65 20 22 63 6c 65 61 6e | a.in.Ruby........#.so.the."clean |
| 40800 | 20 61 6e 64 20 73 65 63 75 72 65 22 20 76 65 72 73 69 6f 6e 0d 0a 72 65 61 64 6d 65 2c 20 77 72 | .and.secure".version..readme,.wr |
| 40820 | 69 74 65 6d 65 20 3d 20 49 4f 2e 70 69 70 65 0d 0a 70 69 64 20 3d 20 66 6f 72 6b 20 7b 0d 0a 20 | iteme.=.IO.pipe..pid.=.fork.{... |
| 40840 | 20 20 20 23 20 63 68 69 6c 64 0d 0a 20 20 20 20 24 73 74 64 6f 75 74 20 3d 20 77 72 69 74 65 6d | ...#.child......$stdout.=.writem |
| 40860 | 65 0d 0a 20 20 20 20 72 65 61 64 6d 65 2e 63 6c 6f 73 65 0d 0a 20 20 20 20 65 78 65 63 28 27 66 | e......readme.close......exec('f |
| 40880 | 69 6e 64 27 2c 20 27 2e 2e 27 29 0d 0a 7d 0d 0a 23 20 70 61 72 65 6e 74 0d 0a 50 72 6f 63 65 73 | ind',.'..')..}..#.parent..Proces |
| 408a0 | 73 2e 77 61 69 74 70 69 64 28 70 69 64 2c 20 30 29 0d 0a 77 72 69 74 65 6d 65 2e 63 6c 6f 73 65 | s.waitpid(pid,.0)..writeme.close |
| 408c0 | 0d 0a 77 68 69 6c 65 20 72 65 61 64 6d 65 2e 67 65 74 73 20 64 6f 0d 0a 20 20 20 20 23 20 64 6f | ..while.readme.gets.do......#.do |
| 408e0 | 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 24 5f 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 | .something.with.$_..end......#.@ |
| 40900 | 40 50 4c 45 41 43 40 40 5f 31 36 2e 32 0d 0a 73 74 61 74 75 73 20 3d 20 73 79 73 74 65 6d 28 22 | @PLEAC@@_16.2..status.=.system(" |
| 40920 | 78 65 6d 61 63 73 20 23 7b 6d 79 66 69 6c 65 7d 22 29 0d 0a 0d 0a 73 74 61 74 75 73 20 3d 20 73 | xemacs.#{myfile}")....status.=.s |
| 40940 | 79 73 74 65 6d 28 22 78 65 6d 61 63 73 22 2c 20 6d 79 66 69 6c 65 29 0d 0a 0d 0a 73 79 73 74 65 | ystem("xemacs",.myfile)....syste |
| 40960 | 6d 28 22 63 6d 64 31 20 61 72 67 73 20 7c 20 63 6d 64 32 20 7c 20 63 6d 64 33 20 3e 6f 75 74 66 | m("cmd1.args.|.cmd2.|.cmd3.>outf |
| 40980 | 69 6c 65 22 29 0d 0a 73 79 73 74 65 6d 28 22 63 6d 64 20 61 72 67 73 20 3c 69 6e 66 69 6c 65 20 | ile")..system("cmd.args.<infile. |
| 409a0 | 3e 6f 75 74 66 69 6c 65 20 32 3e 65 72 72 66 69 6c 65 22 29 0d 0a 0d 0a 23 20 73 74 6f 70 20 69 | >outfile.2>errfile")....#.stop.i |
| 409c0 | 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 66 61 69 6c 73 0d 0a 72 61 69 73 65 20 22 24 70 72 6f | f.the.command.fails..raise."$pro |
| 409e0 | 67 72 61 6d 20 65 78 69 74 65 64 20 66 75 6e 6e 79 3a 20 23 7b 24 3f 7d 22 20 75 6e 6c 65 73 73 | gram.exited.funny:.#{$?}".unless |
| 40a00 | 20 73 79 73 74 65 6d 28 22 63 6d 64 22 2c 20 22 61 72 67 73 31 22 2c 20 22 61 72 67 73 32 22 29 | .system("cmd",."args1",."args2") |
| 40a20 | 0d 0a 0d 0a 23 20 67 65 74 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 73 69 67 6e 61 | ....#.get.the.value.of.the.signa |
| 40a40 | 6c 20 73 65 6e 74 20 74 6f 20 74 68 65 20 63 68 69 6c 64 0d 0a 23 20 65 76 65 6e 20 69 66 20 69 | l.sent.to.the.child..#.even.if.i |
| 40a60 | 74 20 69 73 20 61 20 53 49 47 49 4e 54 20 6f 72 20 53 49 47 51 55 49 54 0d 0a 73 79 73 74 65 6d | t.is.a.SIGINT.or.SIGQUIT..system |
| 40a80 | 28 61 72 67 6c 69 73 74 29 0d 0a 72 61 69 73 65 20 22 70 72 6f 67 72 61 6d 20 6b 69 6c 6c 65 64 | (arglist)..raise."program.killed |
| 40aa0 | 20 62 79 20 73 69 67 6e 61 6c 20 23 7b 24 3f 7d 22 20 69 66 20 28 24 3f 20 26 20 31 32 37 29 20 | .by.signal.#{$?}".if.($?.&.127). |
| 40ac0 | 21 3d 20 30 0d 0a 0d 0a 70 69 64 20 3d 20 66 6f 72 6b 20 7b 0d 0a 20 20 20 20 74 72 61 70 28 22 | !=.0....pid.=.fork.{......trap(" |
| 40ae0 | 53 49 47 49 4e 54 22 2c 20 22 49 47 4e 4f 52 45 22 29 0d 0a 20 20 20 20 65 78 65 63 28 22 73 6c | SIGINT",."IGNORE")......exec("sl |
| 40b00 | 65 65 70 22 2c 20 22 31 30 22 29 0d 0a 7d 0d 0a 74 72 61 70 20 28 22 53 49 47 49 4e 54 22 29 20 | eep",."10")..}..trap.("SIGINT"). |
| 40b20 | 7b 0d 0a 20 20 20 20 70 75 74 73 20 22 54 73 6b 20 74 73 6b 2c 20 6e 6f 20 70 72 6f 63 65 73 73 | {......puts."Tsk.tsk,.no.process |
| 40b40 | 20 69 6e 74 65 72 72 75 70 74 75 73 22 0d 0a 7d 0d 0a 50 72 6f 63 65 73 73 2e 77 61 69 74 70 69 | .interruptus"..}..Process.waitpi |
| 40b60 | 64 28 70 69 64 2c 20 30 29 0d 0a 0d 0a 23 20 52 75 62 79 20 64 6f 65 73 6e 27 74 20 70 65 72 6d | d(pid,.0)....#.Ruby.doesn't.perm |
| 40b80 | 69 74 20 74 6f 20 6c 69 65 20 74 6f 20 74 68 65 20 70 72 6f 67 72 61 6d 20 63 61 6c 6c 65 64 20 | it.to.lie.to.the.program.called. |
| 40ba0 | 62 79 20 61 20 27 73 79 73 74 65 6d 27 2e 0d 0a 23 20 28 69 65 20 73 70 65 63 69 66 79 20 77 68 | by.a.'system'...#.(ie.specify.wh |
| 40bc0 | 61 74 20 72 65 74 75 72 6e 20 61 72 67 76 5b 30 5d 20 69 6e 20 43 2c 20 24 30 20 69 6e 20 50 65 | at.return.argv[0].in.C,.$0.in.Pe |
| 40be0 | 72 6c 2f 52 75 62 79 20 2e 2e 2e 29 0d 0a 23 20 41 20 28 64 69 72 74 79 29 20 77 61 79 20 69 73 | rl/Ruby....)..#.A.(dirty).way.is |
| 40c00 | 20 74 6f 20 63 72 65 61 74 65 20 61 20 6c 69 6e 6b 20 28 75 6e 64 65 72 20 55 6e 69 78 29 2c 20 | .to.create.a.link.(under.Unix),. |
| 40c20 | 72 75 6e 20 74 68 69 73 20 6c 69 6e 6b 20 61 6e 64 0d 0a 23 20 65 72 61 73 65 20 69 74 2e 20 53 | run.this.link.and..#.erase.it..S |
| 40c40 | 6f 6d 65 62 6f 64 79 20 68 61 73 20 61 20 62 65 73 74 20 69 64 65 61 20 3f 0d 0a 0d 0a 0d 0a 23 | omebody.has.a.best.idea.?......# |
| 40c60 | 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 33 0d 0a 65 78 65 63 28 22 61 72 63 68 69 76 65 20 2a | .@@PLEAC@@_16.3..exec("archive.* |
| 40c80 | 2e 64 61 74 61 22 29 0d 0a 0d 0a 65 78 65 63 28 22 61 72 63 68 69 76 65 22 2c 20 22 61 63 63 6f | .data")....exec("archive",."acco |
| 40ca0 | 75 6e 74 69 6e 67 2e 64 61 74 61 22 29 0d 0a 0d 0a 65 78 65 63 28 22 61 72 63 68 69 76 65 20 61 | unting.data")....exec("archive.a |
| 40cc0 | 63 63 6f 75 6e 74 69 6e 67 2e 64 61 74 61 22 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 | ccounting.data")......#.@@PLEAC@ |
| 40ce0 | 40 5f 31 36 2e 34 0d 0a 23 20 72 65 61 64 20 74 68 65 20 6f 75 74 70 75 74 20 6f 66 20 61 20 70 | @_16.4..#.read.the.output.of.a.p |
| 40d00 | 72 6f 67 72 61 6d 0d 0a 49 4f 2e 70 6f 70 65 6e 28 22 6c 73 22 29 20 7b 7c 72 65 61 64 6d 65 7c | rogram..IO.popen("ls").{|readme| |
| 40d20 | 0d 0a 20 20 20 20 77 68 69 6c 65 20 72 65 61 64 6d 65 2e 67 65 74 73 20 64 6f 0d 0a 20 20 20 20 | ......while.readme.gets.do...... |
| 40d40 | 20 20 20 20 23 20 2e 2e 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 7d 0d 0a 23 20 6f 72 0d 0a 72 65 61 | ....#..........end..}..#.or..rea |
| 40d60 | 64 6d 65 20 3d 20 49 4f 2e 70 6f 70 65 6e 28 22 6c 73 22 29 0d 0a 77 68 69 6c 65 20 72 65 61 64 | dme.=.IO.popen("ls")..while.read |
| 40d80 | 6d 65 2e 67 65 74 73 20 64 6f 0d 0a 20 20 20 20 23 20 2e 2e 2e 0d 0a 65 6e 64 0d 0a 72 65 61 64 | me.gets.do......#......end..read |
| 40da0 | 6d 65 2e 63 6c 6f 73 65 0d 0a 0d 0a 23 20 22 77 72 69 74 65 22 20 69 6e 20 61 20 70 72 6f 67 72 | me.close....#."write".in.a.progr |
| 40dc0 | 61 6d 0d 0a 49 4f 2e 70 6f 70 65 6e 28 22 63 6d 64 20 61 72 67 73 22 2c 22 77 22 29 20 7b 7c 70 | am..IO.popen("cmd.args","w").{|p |
| 40de0 | 69 70 65 7c 0d 0a 20 20 20 20 70 69 70 65 2e 70 75 74 73 28 22 64 61 74 61 22 29 0d 0a 20 20 20 | ipe|......pipe.puts("data")..... |
| 40e00 | 20 70 69 70 65 2e 70 75 74 73 28 22 66 6f 6f 22 29 0d 0a 7d 0d 0a 0d 0a 23 20 63 6c 6f 73 65 20 | .pipe.puts("foo")..}....#.close. |
| 40e20 | 77 61 69 74 20 66 6f 72 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 70 72 6f 63 65 73 73 0d | wait.for.the.end.of.the.process. |
| 40e40 | 0a 72 65 61 64 20 3d 20 49 4f 2e 70 6f 70 65 6e 28 22 73 6c 65 65 70 20 31 30 30 30 30 22 29 20 | .read.=.IO.popen("sleep.10000"). |
| 40e60 | 23 20 63 68 69 6c 64 20 67 6f 65 73 20 74 6f 20 73 6c 65 65 70 0d 0a 72 65 61 64 2e 63 6c 6f 73 | #.child.goes.to.sleep..read.clos |
| 40e80 | 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 61 6e 64 20 74 68 65 20 | e.....................#.and.the. |
| 40ea0 | 70 61 72 65 6e 74 20 67 6f 65 73 20 74 6f 20 6c 61 6c 61 20 6c 61 6e 64 0d 0a 0d 0a 77 72 69 74 | parent.goes.to.lala.land....writ |
| 40ec0 | 65 6d 65 20 3d 20 49 4f 2e 70 6f 70 65 6e 28 22 63 6d 64 20 61 72 67 73 22 2c 20 22 77 22 29 0d | eme.=.IO.popen("cmd.args",."w"). |
| 40ee0 | 0a 77 72 69 74 65 6d 65 2e 70 75 74 73 20 22 68 65 6c 6c 6f 22 20 23 20 70 72 6f 67 72 61 6d 20 | .writeme.puts."hello".#.program. |
| 40f00 | 77 69 6c 6c 20 67 65 74 20 68 65 6c 6c 6f 5c 6e 20 6f 6e 20 53 54 44 49 4e 0d 0a 77 72 69 74 65 | will.get.hello\n.on.STDIN..write |
| 40f20 | 6d 65 2e 63 6c 6f 73 65 20 20 20 20 20 20 20 20 23 20 70 72 6f 67 72 61 6d 20 77 69 6c 6c 20 67 | me.close........#.program.will.g |
| 40f40 | 65 74 20 45 4f 46 20 6f 6e 20 53 54 44 49 4e 0d 0a 0d 0a 23 20 73 65 6e 64 20 69 6e 20 61 20 70 | et.EOF.on.STDIN....#.send.in.a.p |
| 40f60 | 61 67 65 72 20 28 65 67 20 6c 65 73 73 29 20 61 6c 6c 20 6f 75 74 70 75 74 0d 0a 24 73 74 64 6f | ager.(eg.less).all.output..$stdo |
| 40f80 | 75 74 20 3d 20 49 4f 2e 70 6f 70 65 6e 28 22 2f 75 73 72 2f 62 69 6e 2f 6c 65 73 73 22 2c 22 77 | ut.=.IO.popen("/usr/bin/less","w |
| 40fa0 | 22 29 0d 0a 70 72 69 6e 74 20 22 68 75 67 65 20 73 74 72 69 6e 67 5c 6e 22 20 2a 20 31 30 30 30 | ")..print."huge.string\n".*.1000 |
| 40fc0 | 30 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 35 0d 0a 23 2d 2d 2d 2d 2d 2d | 0......#.@@PLEAC@@_16.5..#------ |
| 40fe0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 64 65 66 20 68 65 61 | -----------------------..def.hea |
| 41000 | 64 28 6c 69 6e 65 73 20 3d 20 32 30 29 0d 0a 20 20 20 20 70 69 64 20 3d 20 6f 70 65 6e 28 22 7c | d(lines.=.20)......pid.=.open("| |
| 41020 | 2d 22 2c 22 77 22 29 0d 0a 20 20 20 20 69 66 20 70 69 64 20 3d 3d 20 6e 69 6c 0d 0a 20 20 20 20 | -","w")......if.pid.==.nil...... |
| 41040 | 20 20 20 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 77 68 | ....return......else..........wh |
| 41060 | 69 6c 65 20 67 65 74 73 28 29 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 69 64 2e 70 | ile.gets().do..............pid.p |
| 41080 | 72 69 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 73 20 2d 3d 20 31 0d 0a 20 20 | rint..............lines.-=.1.... |
| 410a0 | 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 20 69 66 20 6c 69 6e 65 73 20 3d 3d 20 30 0d 0a 20 | ..........break.if.lines.==.0... |
| 410c0 | 20 20 20 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 65 78 69 74 0d 0a 65 | .......end......end......exit..e |
| 410e0 | 6e 64 0d 0a 0d 0a 68 65 61 64 28 31 30 30 29 0d 0a 77 68 69 6c 65 20 67 65 74 73 28 29 20 64 6f | nd....head(100)..while.gets().do |
| 41100 | 0d 0a 20 20 20 20 70 72 69 6e 74 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ......print..end..#------------- |
| 41120 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 31 3a 20 3e 20 57 65 6c 63 6f 6d 65 20 74 | ----------------..1:.>.Welcome.t |
| 41140 | 6f 20 4c 69 6e 75 78 2c 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 33 33 20 6f 6e 20 61 20 69 36 38 | o.Linux,.version.2.0.33.on.a.i68 |
| 41160 | 36 0d 0a 0d 0a 32 3a 20 3e 0d 0a 0d 0a 33 3a 20 3e 20 20 20 20 20 22 54 68 65 20 73 6f 66 74 77 | 6....2:.>....3:.>....."The.softw |
| 41180 | 61 72 65 20 72 65 71 75 69 72 65 64 20 60 57 69 6e 64 6f 77 73 20 39 35 20 6f 72 20 62 65 74 74 | are.required.`Windows.95.or.bett |
| 411a0 | 65 72 27 2c 0d 0a 0d 0a 34 3a 20 3e 20 20 20 20 20 20 73 6f 20 49 20 69 6e 73 74 61 6c 6c 65 64 | er',....4:.>......so.I.installed |
| 411c0 | 20 4c 69 6e 75 78 2e 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .Linux."..#--------------------- |
| 411e0 | 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 3e 20 31 3a 20 57 65 6c 63 6f 6d 65 20 74 6f 20 4c 69 6e 75 78 2c | --------..>.1:.Welcome.to.Linux, |
| 41200 | 20 4b 65 72 6e 65 6c 20 76 65 72 73 69 6f 6e 20 32 2e 30 2e 33 33 20 6f 6e 20 61 20 69 36 38 36 | .Kernel.version.2.0.33.on.a.i686 |
| 41220 | 0d 0a 0d 0a 3e 20 32 3a 0d 0a 0d 0a 3e 20 33 3a 20 20 20 20 20 22 54 68 65 20 73 6f 66 74 77 61 | ....>.2:....>.3:....."The.softwa |
| 41240 | 72 65 20 72 65 71 75 69 72 65 64 20 60 57 69 6e 64 6f 77 73 20 39 35 20 6f 72 20 62 65 74 74 65 | re.required.`Windows.95.or.bette |
| 41260 | 72 27 2c 0d 0a 0d 0a 3e 20 34 3a 20 20 20 20 20 20 73 6f 20 49 20 69 6e 73 74 61 6c 6c 65 64 20 | r',....>.4:......so.I.installed. |
| 41280 | 4c 69 6e 75 78 2e 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | Linux."..#---------------------- |
| 412a0 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 0d 0a 23 20 71 6e 75 6d | -------..#!/usr/bin/ruby..#.qnum |
| 412c0 | 63 61 74 20 2d 20 64 65 6d 6f 20 61 64 64 69 74 69 76 65 20 6f 75 74 70 75 74 20 66 69 6c 74 65 | cat.-.demo.additive.output.filte |
| 412e0 | 72 73 0d 0a 0d 0a 64 65 66 20 6e 75 6d 62 65 72 28 29 0d 0a 20 20 20 20 70 69 64 20 3d 20 6f 70 | rs....def.number()......pid.=.op |
| 41300 | 65 6e 28 22 7c 2d 22 2c 22 77 22 29 0d 0a 20 20 20 20 69 66 20 70 69 64 20 3d 3d 20 6e 69 6c 0d | en("|-","w")......if.pid.==.nil. |
| 41320 | 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 | .........return......else....... |
| 41340 | 20 20 20 77 68 69 6c 65 20 67 65 74 73 28 29 20 64 6f 20 70 69 64 2e 70 72 69 6e 74 66 28 22 25 | ...while.gets().do.pid.printf("% |
| 41360 | 64 3a 20 25 73 22 2c 20 24 2e 2c 20 24 5f 29 3b 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 | d:.%s",.$.,.$_);.end......end... |
| 41380 | 20 20 20 65 78 69 74 0d 0a 65 6e 64 0d 0a 0d 0a 64 65 66 20 71 75 6f 74 65 28 29 0d 0a 20 20 20 | ...exit..end....def.quote()..... |
| 413a0 | 20 70 69 64 20 3d 20 6f 70 65 6e 28 22 7c 2d 22 2c 22 77 22 29 0d 0a 20 20 20 20 69 66 20 70 69 | .pid.=.open("|-","w")......if.pi |
| 413c0 | 64 20 3d 3d 20 6e 69 6c 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 0d 0a 20 20 20 20 65 6c | d.==.nil..........return......el |
| 413e0 | 73 65 0d 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 67 65 74 73 28 29 20 64 6f 20 70 69 64 2e | se..........while.gets().do.pid. |
| 41400 | 70 72 69 6e 74 20 22 3e 20 23 7b 24 5f 7d 22 20 65 6e 64 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 | print.">.#{$_}".end......end.... |
| 41420 | 20 20 65 78 69 74 0d 0a 65 6e 64 0d 0a 0d 0a 6e 75 6d 62 65 72 28 29 0d 0a 71 75 6f 74 65 28 29 | ..exit..end....number()..quote() |
| 41440 | 0d 0a 0d 0a 77 68 69 6c 65 20 67 65 74 73 28 29 20 64 6f 0d 0a 20 20 20 20 70 72 69 6e 74 0d 0a | ....while.gets().do......print.. |
| 41460 | 65 6e 64 0d 0a 24 73 74 64 6f 75 74 2e 63 6c 6f 73 65 0d 0a 65 78 69 74 0d 0a 0d 0a 0d 0a 23 20 | end..$stdout.close..exit......#. |
| 41480 | 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 36 0d 0a 41 52 47 56 2e 6d 61 70 21 20 7b 20 7c 61 72 67 | @@PLEAC@@_16.6..ARGV.map!.{.|arg |
| 414a0 | 7c 0d 0a 20 20 20 20 61 72 67 20 3d 7e 20 2f 5c 2e 28 67 7a 7c 5a 29 24 2f 20 3f 20 22 7c 67 7a | |......arg.=~./\.(gz|Z)$/.?."|gz |
| 414c0 | 69 70 20 2d 64 63 20 23 7b 61 72 67 7d 22 20 3a 20 61 72 67 0d 0a 7d 0d 0a 66 6f 72 20 66 69 6c | ip.-dc.#{arg}".:.arg..}..for.fil |
| 414e0 | 65 20 69 6e 20 41 52 47 56 0d 0a 20 20 20 20 66 68 20 3d 20 6f 70 65 6e 28 66 69 6c 65 29 0d 0a | e.in.ARGV......fh.=.open(file).. |
| 41500 | 20 20 20 20 77 68 69 6c 65 20 66 68 2e 67 65 74 73 28 29 20 64 6f 0d 0a 20 20 20 20 20 20 20 20 | ....while.fh.gets().do.......... |
| 41520 | 23 20 2e 2e 2e 2e 2e 2e 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d | #..............end..end..#------ |
| 41540 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 41 52 47 56 2e 6d 61 | -----------------------..ARGV.ma |
| 41560 | 70 21 20 7b 20 7c 61 72 67 7c 0d 0a 20 20 20 20 61 72 67 20 3d 7e 20 25 72 23 5e 5c 77 2b 3a 2f | p!.{.|arg|......arg.=~.%r#^\w+:/ |
| 41580 | 2f 23 20 3f 20 22 7c 47 45 54 20 23 7b 61 72 67 7d 22 20 3a 20 61 72 67 20 20 20 23 0d 0a 7d 0d | /#.?."|GET.#{arg}".:.arg...#..}. |
| 415a0 | 0a 66 6f 72 20 66 69 6c 65 20 69 6e 20 41 52 47 56 0d 0a 20 20 20 20 66 68 20 3d 20 6f 70 65 6e | .for.file.in.ARGV......fh.=.open |
| 415c0 | 28 66 69 6c 65 29 0d 0a 20 20 20 20 77 68 69 6c 65 20 66 68 2e 67 65 74 73 28 29 20 64 6f 0d 0a | (file)......while.fh.gets().do.. |
| 415e0 | 20 20 20 20 20 20 20 20 23 20 2e 2e 2e 2e 2e 2e 2e 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d | ........#..............end..end. |
| 41600 | 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d | .#-----------------------------. |
| 41620 | 0a 70 77 64 69 6e 66 6f 20 3d 20 28 60 64 6f 6d 61 69 6e 6e 61 6d 65 60 20 3d 7e 20 2f 5e 28 5c | .pwdinfo.=.(`domainname`.=~./^(\ |
| 41640 | 28 6e 6f 6e 65 5c 29 29 3f 24 2f 29 20 3f 20 27 2f 65 74 63 2f 70 61 73 73 77 64 27 20 3a 20 27 | (none\))?$/).?.'/etc/passwd'.:.' |
| 41660 | 7c 79 70 63 61 74 20 20 70 61 73 73 77 64 27 3b 0d 0a 70 77 64 20 3d 20 6f 70 65 6e 28 70 77 64 | |ypcat..passwd';..pwd.=.open(pwd |
| 41680 | 69 6e 66 6f 29 3b 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | info);..#----------------------- |
| 416a0 | 2d 2d 2d 2d 2d 2d 0d 0a 70 75 74 73 20 22 46 69 6c 65 2c 20 70 6c 65 61 73 65 3f 20 22 3b 0d 0a | ------..puts."File,.please?.";.. |
| 416c0 | 66 69 6c 65 20 3d 20 67 65 74 73 28 29 2e 63 68 6f 6d 70 28 29 3b 0d 0a 66 68 20 3d 20 6f 70 65 | file.=.gets().chomp();..fh.=.ope |
| 416e0 | 6e 28 66 69 6c 65 29 3b 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 37 0d 0a | n(file);......#.@@PLEAC@@_16.7.. |
| 41700 | 6f 75 74 70 75 74 20 3d 20 60 63 6d 64 20 32 3e 26 31 60 20 20 20 20 20 20 20 20 20 20 20 20 20 | output.=.`cmd.2>&1`............. |
| 41720 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 62 61 63 6b 74 69 63 6b 73 0d | ...............#.with.backticks. |
| 41740 | 0a 23 20 6f 72 0d 0a 70 68 20 3d 20 6f 70 65 6e 28 22 7c 63 6d 64 20 32 3e 26 31 22 29 20 20 20 | .#.or..ph.=.open("|cmd.2>&1")... |
| 41760 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 61 6e 20 | ......................#.with.an. |
| 41780 | 6f 70 65 6e 20 70 69 70 65 0d 0a 77 68 69 6c 65 20 70 68 2e 67 65 74 73 28 29 20 7b 20 7d 20 20 | open.pipe..while.ph.gets().{.}.. |
| 417a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 6c 75 73 | ..........................#.plus |
| 417c0 | 20 61 20 72 65 61 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .a.read..#---------------------- |
| 417e0 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 6f 75 74 70 75 74 20 3d 20 60 63 6d 64 20 32 3e 2f 64 65 76 2f 6e 75 | -------..output.=.`cmd.2>/dev/nu |
| 41800 | 6c 6c 60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 62 | ll`.....................#.with.b |
| 41820 | 61 63 6b 74 69 63 6b 73 0d 0a 23 20 6f 72 0d 0a 70 68 20 3d 20 6f 70 65 6e 28 22 7c 63 6d 64 20 | ackticks..#.or..ph.=.open("|cmd. |
| 41840 | 32 3e 2f 64 65 76 2f 6e 75 6c 6c 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 | 2>/dev/null")..................# |
| 41860 | 20 77 69 74 68 20 61 6e 20 6f 70 65 6e 20 70 69 70 65 0d 0a 77 68 69 6c 65 20 70 68 2e 67 65 74 | .with.an.open.pipe..while.ph.get |
| 41880 | 73 28 29 20 7b 20 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s().{.}......................... |
| 418a0 | 20 20 20 23 20 70 6c 75 73 20 61 20 72 65 61 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ...#.plus.a.read..#------------- |
| 418c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6f 75 74 70 75 74 20 3d 20 60 63 6d 64 20 | ----------------..output.=.`cmd. |
| 418e0 | 32 3e 26 31 20 31 3e 2f 64 65 76 2f 6e 75 6c 6c 60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 2>&1.1>/dev/null`............... |
| 41900 | 20 23 20 77 69 74 68 20 62 61 63 6b 74 69 63 6b 73 0d 0a 23 20 6f 72 0d 0a 70 68 20 3d 20 6f 70 | .#.with.backticks..#.or..ph.=.op |
| 41920 | 65 6e 28 22 7c 63 6d 64 20 32 3e 26 31 20 31 3e 2f 64 65 76 2f 6e 75 6c 6c 22 29 20 20 20 20 20 | en("|cmd.2>&1.1>/dev/null")..... |
| 41940 | 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 61 6e 20 6f 70 65 6e 20 70 69 70 65 0d 0a 77 68 69 | ........#.with.an.open.pipe..whi |
| 41960 | 6c 65 20 70 68 2e 67 65 74 73 28 29 20 7b 20 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | le.ph.gets().{.}................ |
| 41980 | 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 6c 75 73 20 61 20 72 65 61 64 0d 0a 23 2d 2d 2d 2d | ............#.plus.a.read..#---- |
| 419a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 6f 75 74 70 75 | -------------------------..outpu |
| 419c0 | 74 20 3d 20 60 63 6d 64 20 33 3e 26 31 20 31 3e 26 32 20 32 3e 26 33 20 33 3e 26 2d 60 20 20 20 | t.=.`cmd.3>&1.1>&2.2>&3.3>&-`... |
| 419e0 | 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 62 61 63 6b 74 69 63 6b 73 0d 0a 23 20 6f 72 | ..........#.with.backticks..#.or |
| 41a00 | 0d 0a 70 68 20 3d 20 6f 70 65 6e 28 22 7c 63 6d 64 20 33 3e 26 31 20 31 3e 26 32 20 32 3e 26 33 | ..ph.=.open("|cmd.3>&1.1>&2.2>&3 |
| 41a20 | 20 33 3e 26 2d 22 29 20 20 20 20 20 20 20 20 20 20 23 20 77 69 74 68 20 61 6e 20 6f 70 65 6e 20 | .3>&-")..........#.with.an.open. |
| 41a40 | 70 69 70 65 0d 0a 77 68 69 6c 65 20 70 68 2e 67 65 74 73 28 29 20 7b 20 7d 20 20 20 20 20 20 20 | pipe..while.ph.gets().{.}....... |
| 41a60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 70 6c 75 73 20 61 20 72 65 | .....................#.plus.a.re |
| 41a80 | 61 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ad..#--------------------------- |
| 41aa0 | 2d 2d 0d 0a 73 79 73 74 65 6d 28 22 70 72 6f 67 72 61 6d 20 61 72 67 73 20 31 3e 2f 74 6d 70 2f | --..system("program.args.1>/tmp/ |
| 41ac0 | 70 72 6f 67 72 61 6d 2e 73 74 64 6f 75 74 20 32 3e 2f 74 6d 70 2f 70 72 6f 67 72 61 6d 2e 73 74 | program.stdout.2>/tmp/program.st |
| 41ae0 | 64 65 72 72 22 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | derr")..#----------------------- |
| 41b00 | 2d 2d 2d 2d 2d 2d 0d 0a 6f 75 74 70 75 74 20 3d 20 60 63 6d 64 20 33 3e 26 31 20 31 3e 26 32 20 | ------..output.=.`cmd.3>&1.1>&2. |
| 41b20 | 32 3e 26 33 20 33 3e 26 2d 60 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | 2>&3.3>&-`..#------------------- |
| 41b40 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 64 33 20 3d 20 66 64 31 0d 0a 66 64 31 20 3d 20 66 64 32 | ----------..fd3.=.fd1..fd1.=.fd2 |
| 41b60 | 0d 0a 66 64 32 20 3d 20 66 64 33 0d 0a 66 64 33 20 3d 20 75 6e 64 65 66 0d 0a 23 2d 2d 2d 2d 2d | ..fd2.=.fd3..fd3.=.undef..#----- |
| 41b80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 73 79 73 74 65 6d | ------------------------..system |
| 41ba0 | 28 22 70 72 6f 67 20 61 72 67 73 20 31 3e 74 6d 70 66 69 6c 65 20 32 3e 26 31 22 29 0d 0a 73 79 | ("prog.args.1>tmpfile.2>&1")..sy |
| 41bc0 | 73 74 65 6d 28 22 70 72 6f 67 20 61 72 67 73 20 32 3e 26 31 20 31 3e 74 6d 70 66 69 6c 65 22 29 | stem("prog.args.2>&1.1>tmpfile") |
| 41be0 | 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#----------------------------- |
| 41c00 | 0d 0a 23 20 73 79 73 74 65 6d 20 28 22 70 72 6f 67 20 61 72 67 73 20 31 3e 74 6d 70 66 69 6c 65 | ..#.system.("prog.args.1>tmpfile |
| 41c20 | 20 32 3e 26 31 22 29 0d 0a 66 64 31 20 3d 20 22 74 6d 70 66 69 6c 65 22 20 20 20 20 20 20 20 20 | .2>&1")..fd1.=."tmpfile"........ |
| 41c40 | 20 20 23 20 63 68 61 6e 67 65 20 73 74 64 6f 75 74 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 66 69 | ..#.change.stdout.destination.fi |
| 41c60 | 72 73 74 0d 0a 66 64 32 20 3d 20 66 64 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 | rst..fd2.=.fd1................#. |
| 41c80 | 6e 6f 77 20 70 6f 69 6e 74 20 73 74 64 65 72 72 20 74 68 65 72 65 2c 20 74 6f 6f 0d 0a 23 2d 2d | now.point.stderr.there,.too..#-- |
| 41ca0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 73 | ---------------------------..#.s |
| 41cc0 | 79 73 74 65 6d 28 22 70 72 6f 67 20 61 72 67 73 20 32 3e 26 31 20 31 3e 74 6d 70 66 69 6c 65 22 | ystem("prog.args.2>&1.1>tmpfile" |
| 41ce0 | 29 0d 0a 66 64 32 20 3d 20 66 64 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 74 | )..fd2.=.fd1................#.st |
| 41d00 | 64 65 72 72 20 73 61 6d 65 20 64 65 73 74 69 6e 61 74 69 6f 6e 20 61 73 20 73 74 64 6f 75 74 0d | derr.same.destination.as.stdout. |
| 41d20 | 0a 66 64 31 20 3d 20 22 74 6d 70 66 69 6c 65 22 20 20 20 20 20 20 20 20 20 20 23 20 62 75 74 20 | .fd1.=."tmpfile"..........#.but. |
| 41d40 | 63 68 61 6e 67 65 20 73 74 64 6f 75 74 20 64 65 73 74 69 6e 61 74 69 6f 6e 0d 0a 23 2d 2d 2d 2d | change.stdout.destination..#---- |
| 41d60 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 49 74 20 | -------------------------..#.It. |
| 41d80 | 69 73 20 6f 66 74 65 6e 20 62 65 74 74 65 72 20 6e 6f 74 20 74 6f 20 72 65 6c 79 20 6f 6e 20 74 | is.often.better.not.to.rely.on.t |
| 41da0 | 68 65 20 73 68 65 6c 6c 2c 0d 0a 23 20 62 65 63 61 75 73 65 20 6f 66 20 70 6f 72 74 61 62 69 6c | he.shell,..#.because.of.portabil |
| 41dc0 | 69 74 79 2c 20 70 6f 73 73 69 62 6c 65 20 73 65 63 75 72 69 74 79 20 70 72 6f 62 6c 65 6d 73 0d | ity,.possible.security.problems. |
| 41de0 | 0a 23 20 61 6e 64 20 62 69 67 67 65 72 20 72 65 73 6f 75 72 63 65 20 75 73 61 67 65 2e 20 53 6f | .#.and.bigger.resource.usage..So |
| 41e00 | 2c 20 69 74 20 69 73 20 6f 66 74 65 6e 20 62 65 74 74 65 72 20 74 6f 20 75 73 65 20 74 68 65 20 | ,.it.is.often.better.to.use.the. |
| 41e20 | 6f 70 65 6e 33 20 6c 69 62 72 61 72 79 2e 0d 0a 23 20 53 65 65 20 62 65 6c 6f 77 20 66 6f 72 20 | open3.library...#.See.below.for. |
| 41e40 | 61 6e 20 65 78 61 6d 70 6c 65 2e 0d 0a 23 20 6f 70 65 6e 69 6e 67 20 73 74 64 69 6e 2c 20 73 74 | an.example...#.opening.stdin,.st |
| 41e60 | 64 6f 75 74 2c 20 73 74 64 65 72 72 0d 0a 72 65 71 75 69 72 65 20 22 6f 70 65 6e 33 22 0d 0a 73 | dout,.stderr..require."open3"..s |
| 41e80 | 74 64 69 6e 2c 20 73 74 64 6f 75 74 2c 20 73 74 64 65 72 72 20 3d 20 4f 70 65 6e 33 2e 70 6f 70 | tdin,.stdout,.stderr.=.Open3.pop |
| 41ea0 | 65 6e 28 27 63 6d 64 27 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 38 0d | en('cmd')......#.@@PLEAC@@_16.8. |
| 41ec0 | 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d | .#-----------------------------. |
| 41ee0 | 0a 23 20 43 6f 6e 74 72 61 72 79 20 74 6f 20 70 65 72 6c 2c 20 77 65 20 64 6f 6e 27 74 20 6e 65 | .#.Contrary.to.perl,.we.don't.ne |
| 41f00 | 65 64 20 74 6f 20 75 73 65 20 61 20 6d 6f 64 75 6c 65 20 69 6e 20 52 75 62 79 0d 0a 66 68 20 3d | ed.to.use.a.module.in.Ruby..fh.= |
| 41f20 | 20 4b 65 72 6e 65 6c 2e 6f 70 65 6e 28 22 7c 22 20 2b 20 70 72 6f 67 72 61 6d 2c 20 22 77 2b 22 | .Kernel.open("|".+.program,."w+" |
| 41f40 | 29 0d 0a 66 68 2e 70 75 74 73 20 22 68 65 72 65 27 73 20 79 6f 75 72 20 69 6e 70 75 74 5c 6e 22 | )..fh.puts."here's.your.input\n" |
| 41f60 | 0d 0a 6f 75 74 70 75 74 20 3d 20 66 68 2e 67 65 74 73 28 29 0d 0a 66 68 2e 63 6c 6f 73 65 28 29 | ..output.=.fh.gets()..fh.close() |
| 41f80 | 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ..#----------------------------- |
| 41fa0 | 0d 0a 4b 65 72 6e 65 6c 2e 6f 70 65 6e 28 22 7c 70 72 6f 67 72 61 6d 22 29 2c 22 77 2b 22 29 20 | ..Kernel.open("|program"),"w+"). |
| 41fc0 | 20 20 20 23 20 52 49 47 48 54 20 21 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ...#.RIGHT.!..#----------------- |
| 41fe0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 52 75 62 79 20 68 61 73 20 61 6c 72 65 61 64 79 | ------------..#.Ruby.has.already |
| 42000 | 20 6f 62 6a 65 63 74 20 6d 65 74 68 6f 64 73 20 66 6f 72 20 49 2f 4f 20 68 61 6e 64 6c 65 73 0d | .object.methods.for.I/O.handles. |
| 42020 | 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d | .#-----------------------------. |
| 42040 | 0a 62 65 67 69 6e 0d 0a 20 20 20 20 66 68 20 3d 20 4b 65 72 6e 65 6c 2e 6f 70 65 6e 28 22 7c 22 | .begin......fh.=.Kernel.open("|" |
| 42060 | 20 2b 20 70 72 6f 67 72 61 6d 5f 61 6e 64 5f 6f 70 74 69 6f 6e 73 2c 20 22 77 2b 22 29 0d 0a 72 | .+.program_and_options,."w+")..r |
| 42080 | 65 73 63 75 65 0d 0a 20 20 20 20 69 66 20 28 24 40 20 7e 3d 20 2f 5e 6f 70 65 6e 2f 29 0d 0a 20 | escue......if.($@.~=./^open/)... |
| 420a0 | 20 20 20 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 20 22 6f 70 65 6e 20 66 61 69 6c 65 64 | .......$stderr.puts."open.failed |
| 420c0 | 20 3a 20 23 7b 24 21 7d 20 5c 6e 20 23 7b 24 40 7d 20 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 62 | .:.#{$!}.\n.#{$@}.\n"..........b |
| 420e0 | 72 65 61 6b 0d 0a 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 72 61 69 73 65 20 20 20 20 20 20 23 20 | reak......end......raise......#. |
| 42100 | 72 65 72 61 69 73 65 20 75 6e 66 6f 72 73 65 65 6e 20 65 78 63 65 70 74 69 6f 6e 0d 0a 65 6e 64 | reraise.unforseen.exception..end |
| 42120 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 31 33 0d 0a 23 25 20 6b 69 6c 6c | ......#.@@PLEAC@@_16.13..#%.kill |
| 42140 | 20 2d 6c 0d 0a 23 48 55 50 20 49 4e 54 20 51 55 49 54 20 49 4c 4c 20 54 52 41 50 20 41 42 52 54 | .-l..#HUP.INT.QUIT.ILL.TRAP.ABRT |
| 42160 | 20 42 55 53 20 46 50 45 20 4b 49 4c 4c 20 55 53 52 31 20 53 45 47 56 20 55 53 52 32 20 50 49 50 | .BUS.FPE.KILL.USR1.SEGV.USR2.PIP |
| 42180 | 45 0d 0a 23 41 4c 52 4d 20 54 45 52 4d 20 43 48 4c 44 20 43 4f 4e 54 20 53 54 4f 50 20 54 53 54 | E..#ALRM.TERM.CHLD.CONT.STOP.TST |
| 421a0 | 50 20 54 54 49 4e 20 54 54 4f 55 20 55 52 47 20 58 43 50 55 20 58 46 53 5a 20 56 54 41 4c 52 4d | P.TTIN.TTOU.URG.XCPU.XFSZ.VTALRM |
| 421c0 | 0d 0a 23 50 52 4f 46 20 57 49 4e 43 48 20 50 4f 4c 4c 20 50 57 52 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | ..#PROF.WINCH.POLL.PWR..#------- |
| 421e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 25 20 72 75 62 79 20 | ----------------------..#%.ruby. |
| 42200 | 2d 65 20 27 70 75 74 73 20 53 69 67 6e 61 6c 2e 6c 69 73 74 2e 6b 65 79 73 2e 6a 6f 69 6e 28 22 | -e.'puts.Signal.list.keys.join(" |
| 42220 | 20 22 29 27 0d 0a 23 50 57 52 20 55 53 52 31 20 42 55 53 20 55 53 52 32 20 54 45 52 4d 20 53 45 | .")'..#PWR.USR1.BUS.USR2.TERM.SE |
| 42240 | 47 56 20 4b 49 4c 4c 20 50 4f 4c 4c 20 53 54 4f 50 20 53 59 53 20 54 52 41 50 20 49 4f 54 20 48 | GV.KILL.POLL.STOP.SYS.TRAP.IOT.H |
| 42260 | 55 50 20 49 4e 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | UP.INT.......................... |
| 42280 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 422a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0d 0a 23 57 49 4e 43 48 20 58 43 50 55 20 54 | ................#..#WINCH.XCPU.T |
| 422c0 | 54 49 4e 20 43 4c 44 20 54 53 54 50 20 46 50 45 20 49 4f 20 54 54 4f 55 20 50 52 4f 46 20 43 48 | TIN.CLD.TSTP.FPE.IO.TTOU.PROF.CH |
| 422e0 | 4c 44 20 43 4f 4e 54 20 50 49 50 45 20 41 42 52 54 0d 0a 23 56 54 41 4c 52 4d 20 51 55 49 54 20 | LD.CONT.PIPE.ABRT..#VTALRM.QUIT. |
| 42300 | 49 4c 4c 20 58 46 53 5a 20 55 52 47 20 41 4c 52 4d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ILL.XFSZ.URG.ALRM..#------------ |
| 42320 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 41 66 74 65 72 20 74 68 61 74 2c | -----------------..#.After.that, |
| 42340 | 20 74 68 65 20 70 65 72 6c 20 73 63 72 69 70 74 20 63 72 65 61 74 65 20 61 6e 20 68 61 73 68 20 | .the.perl.script.create.an.hash. |
| 42360 | 65 71 75 69 76 61 6c 65 6e 74 20 74 6f 20 53 69 67 6e 61 6c 2e 6c 69 73 74 2c 0d 0a 23 20 61 6e | equivalent.to.Signal.list,..#.an |
| 42380 | 64 20 61 6e 20 61 72 72 61 79 2e 20 54 68 65 20 61 72 72 61 79 20 63 61 6e 20 62 65 20 6f 62 74 | d.an.array..The.array.can.be.obt |
| 423a0 | 61 69 6e 65 64 20 62 79 20 3a 0d 0a 73 69 67 6e 61 6d 65 20 3d 20 5b 5d 0d 0a 53 69 67 6e 61 6c | ained.by.:..signame.=.[]..Signal |
| 423c0 | 2e 6c 69 73 74 2e 65 61 63 68 20 7b 20 7c 6e 61 6d 65 2c 20 69 7c 20 73 69 67 6e 61 6d 65 5b 69 | .list.each.{.|name,.i|.signame[i |
| 423e0 | 5d 20 3d 20 6e 61 6d 65 20 7d 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 31 | ].=.name.}......#.@@PLEAC@@_16.1 |
| 42400 | 34 0d 0a 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 39 2c 20 70 69 64 29 20 20 20 20 20 20 20 20 20 | 4..Process.kill(9,.pid)......... |
| 42420 | 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 6e 64 20 24 70 69 64 20 61 20 73 69 67 6e 61 6c 20 | ...........#.send.$pid.a.signal. |
| 42440 | 39 0d 0a 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 2d 31 2c 20 50 72 6f 63 65 73 73 2e 67 65 74 70 | 9..Process.kill(-1,.Process.getp |
| 42460 | 67 72 70 28 29 29 20 20 20 20 20 23 20 73 65 6e 64 20 77 68 6f 6c 65 20 6a 6f 62 20 61 20 73 69 | grp()).....#.send.whole.job.a.si |
| 42480 | 67 6e 61 6c 20 31 0d 0a 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 22 55 53 52 31 22 2c 20 24 24 29 | gnal.1..Process.kill("USR1",.$$) |
| 424a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 73 65 6e 64 20 6d 79 73 65 6c 66 20 61 20 | ................#.send.myself.a. |
| 424c0 | 53 49 47 55 53 52 31 0d 0a 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 22 48 55 50 22 2c 20 70 69 64 | SIGUSR1..Process.kill("HUP",.pid |
| 424e0 | 31 2c 20 70 69 64 32 2c 20 70 69 64 33 29 20 20 20 23 20 73 65 6e 64 20 61 20 53 49 47 48 55 50 | 1,.pid2,.pid3)...#.send.a.SIGHUP |
| 42500 | 20 74 6f 20 70 72 6f 63 65 73 73 65 73 20 69 6e 20 40 70 69 64 73 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | .to.processes.in.@pids..#------- |
| 42520 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 62 65 67 69 6e 0d 0a 20 | ----------------------..begin... |
| 42540 | 20 20 20 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 30 2c 20 6d 69 6e 69 6f 6e 29 0d 0a 20 20 20 20 | ...Process.kill(0,.minion)...... |
| 42560 | 70 75 74 73 20 22 23 7b 6d 69 6e 69 6f 6e 7d 20 69 73 20 61 6c 69 76 65 21 22 0d 0a 72 65 73 63 | puts."#{minion}.is.alive!"..resc |
| 42580 | 75 65 20 45 72 72 6e 6f 3a 3a 45 50 45 52 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ue.Errno::EPERM................. |
| 425a0 | 20 20 20 20 23 20 63 68 61 6e 67 65 64 20 75 69 64 0d 0a 20 20 20 20 70 75 74 73 20 22 23 7b 6d | ....#.changed.uid......puts."#{m |
| 425c0 | 69 6e 69 6f 6e 7d 20 68 61 73 20 65 73 63 61 70 65 64 20 6d 79 20 63 6f 6e 74 72 6f 6c 21 22 3b | inion}.has.escaped.my.control!"; |
| 425e0 | 0d 0a 72 65 73 63 75 65 20 45 72 72 6e 6f 3a 3a 45 53 52 43 48 0d 0a 20 20 20 20 70 75 74 73 20 | ..rescue.Errno::ESRCH......puts. |
| 42600 | 22 23 7b 6d 69 6e 69 6f 6e 7d 20 69 73 20 64 65 63 65 61 73 65 64 2e 22 3b 20 20 20 20 20 20 23 | "#{minion}.is.deceased.";......# |
| 42620 | 20 6f 72 20 7a 6f 6d 62 69 65 64 0d 0a 72 65 73 63 75 65 0d 0a 20 20 20 20 70 75 74 73 20 22 4f | .or.zombied..rescue......puts."O |
| 42640 | 64 64 3b 20 49 20 63 6f 75 6c 64 6e 27 74 20 63 68 65 63 6b 20 74 68 65 20 73 74 61 74 75 73 20 | dd;.I.couldn't.check.the.status. |
| 42660 | 6f 66 20 23 7b 6d 69 6e 69 6f 6e 7d 20 3a 20 23 7b 24 21 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a | of.#{minion}.:.#{$!}"..end...... |
| 42680 | 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 31 35 0d 0a 4b 65 72 6e 65 6c 2e 74 72 61 70 28 22 | #.@@PLEAC@@_16.15..Kernel.trap(" |
| 426a0 | 51 55 49 54 22 2c 20 67 6f 74 5f 73 69 67 5f 71 75 69 74 29 20 20 20 20 20 20 20 23 20 67 6f 74 | QUIT",.got_sig_quit).......#.got |
| 426c0 | 5f 73 69 67 5f 71 75 69 74 20 3d 20 50 72 6f 63 2e 6e 65 77 20 7b 20 70 75 74 73 20 22 51 75 69 | _sig_quit.=.Proc.new.{.puts."Qui |
| 426e0 | 74 5c 6e 22 20 7d 0d 0a 74 72 61 70 28 22 50 49 50 45 22 2c 20 22 67 6f 74 5f 73 69 67 5f 71 75 | t\n".}..trap("PIPE",."got_sig_qu |
| 42700 | 69 74 22 29 20 20 20 20 20 20 20 20 20 20 20 20 23 20 64 65 66 20 67 6f 74 5f 73 69 67 5f 70 69 | it")............#.def.got_sig_pi |
| 42720 | 70 65 20 2e 2e 2e 0d 0a 74 72 61 70 28 22 49 4e 54 22 29 20 7b 20 6f 75 63 68 2b 2b 20 7d 20 20 | pe......trap("INT").{.ouch++.}.. |
| 42740 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 6e 63 72 65 6d 65 6e 74 20 6f 75 63 68 | ................#.increment.ouch |
| 42760 | 20 66 6f 72 20 65 76 65 72 79 20 53 49 47 49 4e 54 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .for.every.SIGINT..#------------ |
| 42780 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 74 72 61 70 28 22 49 4e 54 22 2c 20 22 | -----------------..trap("INT",." |
| 427a0 | 49 47 4e 4f 52 45 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 69 67 6e | IGNORE")...................#.ign |
| 427c0 | 6f 72 65 20 74 68 65 20 73 69 67 6e 61 6c 20 49 4e 54 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ore.the.signal.INT..#----------- |
| 427e0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 74 72 61 70 28 22 53 54 4f 50 22 2c | ------------------..trap("STOP", |
| 42800 | 20 22 44 45 46 41 55 4c 54 22 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 72 65 | ."DEFAULT").................#.re |
| 42820 | 73 74 6f 72 65 20 64 65 66 61 75 6c 74 20 53 54 4f 50 20 73 69 67 6e 61 6c 20 68 61 6e 64 6c 69 | store.default.STOP.signal.handli |
| 42840 | 6e 67 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 31 36 0d 0a 23 20 74 68 65 | ng......#.@@PLEAC@@_16.16..#.the |
| 42860 | 20 73 69 67 6e 61 6c 20 68 61 6e 64 6c 65 72 0d 0a 64 65 66 20 64 69 6e 67 0d 0a 20 20 20 20 74 | .signal.handler..def.ding......t |
| 42880 | 72 61 70 28 22 49 4e 54 22 2c 20 22 64 69 6e 67 22 29 0d 0a 20 20 20 20 70 75 74 73 20 22 5c 61 | rap("INT",."ding")......puts."\a |
| 428a0 | 45 6e 74 65 72 20 79 6f 75 72 20 6e 61 6d 65 21 22 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 70 72 6f 6d | Enter.your.name!"..end....#.prom |
| 428c0 | 70 74 20 66 6f 72 20 6e 61 6d 65 2c 20 6f 76 65 72 72 69 64 69 6e 67 20 53 49 47 49 4e 54 0d 0a | pt.for.name,.overriding.SIGINT.. |
| 428e0 | 64 65 66 20 67 65 74 5f 6e 61 6d 65 0d 0a 20 20 20 20 73 61 76 65 20 3d 20 74 72 61 70 28 22 49 | def.get_name......save.=.trap("I |
| 42900 | 4e 54 22 2c 20 22 64 69 6e 67 22 29 0d 0a 0d 0a 20 20 20 20 70 75 74 73 20 22 4b 69 6e 64 6c 79 | NT",."ding")........puts."Kindly |
| 42920 | 20 53 74 72 61 6e 67 65 72 2c 20 70 6c 65 61 73 65 20 65 6e 74 65 72 20 79 6f 75 72 20 6e 61 6d | .Stranger,.please.enter.your.nam |
| 42940 | 65 3a 20 22 0d 0a 20 20 20 20 6e 61 6d 65 20 3d 20 67 65 74 73 28 29 2e 63 68 6f 6d 70 28 29 0d | e:."......name.=.gets().chomp(). |
| 42960 | 0a 20 20 20 20 74 72 61 70 28 22 49 4e 54 22 2c 20 73 61 76 65 29 0d 0a 20 20 20 20 6e 61 6d 65 | .....trap("INT",.save)......name |
| 42980 | 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 36 2e 32 31 0d 0a 23 20 | ..end......#.@@PLEAC@@_16.21..#. |
| 429a0 | 69 6d 70 6c 65 6d 65 6e 74 65 64 20 74 68 61 6e 6b 73 20 74 6f 20 68 74 74 70 3a 2f 2f 62 6c 61 | implemented.thanks.to.http://bla |
| 429c0 | 64 65 2e 6e 61 67 61 6f 6b 61 75 74 2e 61 63 2e 6a 70 2f 63 67 69 2d 62 69 6e 2f 73 63 61 74 2e | de.nagaokaut.ac.jp/cgi-bin/scat. |
| 429e0 | 72 62 2f 72 75 62 79 2f 72 75 62 79 2d 74 61 6c 6b 2f 31 37 36 30 0d 0a 72 65 71 75 69 72 65 20 | rb/ruby/ruby-talk/1760..require. |
| 42a00 | 27 74 69 6d 65 6f 75 74 27 0d 0a 0d 0a 23 20 77 65 27 6c 6c 20 64 6f 20 73 6f 6d 65 74 68 69 6e | 'timeout'....#.we'll.do.somethin |
| 42a20 | 67 20 76 61 73 74 6c 79 20 6d 6f 72 65 20 75 73 65 66 75 6c 20 74 68 61 6e 20 63 6f 6f 6b 62 6f | g.vastly.more.useful.than.cookbo |
| 42a40 | 6f 6b 20 74 6f 20 64 65 6d 6f 6e 73 74 72 61 74 65 20 74 69 6d 65 6f 75 74 73 0d 0a 62 65 67 69 | ok.to.demonstrate.timeouts..begi |
| 42a60 | 6e 0d 0a 20 20 20 20 74 69 6d 65 6f 75 74 28 35 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 77 61 69 | n......timeout(5).{..........wai |
| 42a80 | 74 73 65 63 20 3d 20 72 61 6e 64 28 31 30 29 0d 0a 20 20 20 20 20 20 20 20 70 75 74 73 20 22 4c | tsec.=.rand(10)..........puts."L |
| 42aa0 | 65 74 27 73 20 73 65 65 20 69 66 20 61 20 73 6c 65 65 70 20 6f 66 20 23 7b 77 61 69 74 73 65 63 | et's.see.if.a.sleep.of.#{waitsec |
| 42ac0 | 7d 20 73 65 63 6f 6e 64 73 20 69 73 20 6c 6f 6e 67 65 72 20 74 68 61 6e 20 35 20 73 65 63 6f 6e | }.seconds.is.longer.than.5.secon |
| 42ae0 | 64 73 2e 2e 2e 22 0d 0a 20 20 20 20 20 20 20 20 73 79 73 74 65 6d 28 22 73 6c 65 65 70 20 23 7b | ds..."..........system("sleep.#{ |
| 42b00 | 77 61 69 74 73 65 63 7d 22 29 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 70 75 74 73 20 22 54 69 6d | waitsec}")......}......puts."Tim |
| 42b20 | 65 6f 75 74 20 64 69 64 6e 27 74 20 6f 63 63 75 72 22 0d 0a 72 65 73 63 75 65 20 54 69 6d 65 6f | eout.didn't.occur"..rescue.Timeo |
| 42b40 | 75 74 3a 3a 45 72 72 6f 72 0d 0a 20 20 20 20 70 75 74 73 20 22 54 69 6d 65 64 20 6f 75 74 21 22 | ut::Error......puts."Timed.out!" |
| 42b60 | 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 37 2e 31 0d 0a 23 20 41 | ..end......#.@@PLEAC@@_17.1..#.A |
| 42b80 | 20 62 61 73 69 63 20 54 43 50 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 0d 0a 72 65 | .basic.TCP.client.connection..re |
| 42ba0 | 71 75 69 72 65 20 27 73 6f 63 6b 65 74 27 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 74 20 3d 20 54 | quire.'socket'..begin......t.=.T |
| 42bc0 | 43 50 53 6f 63 6b 65 74 2e 6e 65 77 28 27 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 27 | CPSocket.new('www.ruby-lang.org' |
| 42be0 | 2c 20 27 77 77 77 27 29 0d 0a 72 65 73 63 75 65 0d 0a 20 20 20 20 70 75 74 73 20 22 65 72 72 6f | ,.'www')..rescue......puts."erro |
| 42c00 | 72 3a 20 23 7b 24 21 7d 22 0d 0a 65 6c 73 65 0d 0a 20 20 20 20 23 20 2e 2e 2e 20 64 6f 20 73 6f | r:.#{$!}"..else......#.....do.so |
| 42c20 | 6d 65 74 68 69 6e 67 20 77 69 74 68 20 74 68 65 20 73 6f 63 6b 65 74 0d 0a 20 20 20 20 74 2e 70 | mething.with.the.socket......t.p |
| 42c40 | 72 69 6e 74 20 22 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 30 5c 6e 5c 6e 22 0d 0a 20 20 20 20 61 | rint."GET./.HTTP/1.0\n\n"......a |
| 42c60 | 6e 73 77 65 72 20 3d 20 74 2e 67 65 74 73 28 6e 69 6c 29 0d 0a 20 20 20 20 23 20 61 6e 64 20 74 | nswer.=.t.gets(nil)......#.and.t |
| 42c80 | 65 72 6d 69 6e 61 74 65 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 77 65 27 | erminate.the.connection.when.we' |
| 42ca0 | 72 65 20 64 6f 6e 65 0d 0a 20 20 20 20 74 2e 63 6c 6f 73 65 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 55 | re.done......t.close..end....#.U |
| 42cc0 | 73 69 6e 67 20 74 68 65 20 65 76 69 6c 20 6c 6f 77 20 6c 65 76 65 6c 20 73 6f 63 6b 65 74 20 41 | sing.the.evil.low.level.socket.A |
| 42ce0 | 50 49 0d 0a 72 65 71 75 69 72 65 20 27 73 6f 63 6b 65 74 27 0d 0a 23 20 63 72 65 61 74 65 20 61 | PI..require.'socket'..#.create.a |
| 42d00 | 20 73 6f 63 6b 65 74 0d 0a 73 20 3d 20 53 6f 63 6b 65 74 2e 6e 65 77 28 53 6f 63 6b 65 74 3a 3a | .socket..s.=.Socket.new(Socket:: |
| 42d20 | 41 46 5f 49 4e 45 54 2c 20 53 6f 63 6b 65 74 3a 3a 53 4f 43 4b 5f 53 54 52 45 41 4d 2c 20 30 29 | AF_INET,.Socket::SOCK_STREAM,.0) |
| 42d40 | 0d 0a 23 20 62 75 69 6c 64 20 74 68 65 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 72 65 6d | ..#.build.the.address.of.the.rem |
| 42d60 | 6f 74 65 20 6d 61 63 68 69 6e 65 0d 0a 73 6f 63 6b 61 64 64 72 5f 73 65 72 76 65 72 20 3d 20 5b | ote.machine..sockaddr_server.=.[ |
| 42d80 | 53 6f 63 6b 65 74 3a 3a 41 46 5f 49 4e 45 54 2c 20 38 30 2c 0d 0a 20 20 20 20 53 6f 63 6b 65 74 | Socket::AF_INET,.80,......Socket |
| 42da0 | 2e 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 28 27 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 | .gethostbyname('www.ruby-lang.or |
| 42dc0 | 67 27 29 5b 33 5d 2c 0d 0a 20 20 20 20 30 2c 20 30 5d 2e 70 61 63 6b 28 22 73 6e 41 34 4e 4e 22 | g')[3],......0,.0].pack("snA4NN" |
| 42de0 | 29 0d 0a 23 20 63 6f 6e 6e 65 63 74 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 73 2e 63 6f 6e 6e 65 | )..#.connect..begin......s.conne |
| 42e00 | 63 74 28 73 6f 63 6b 61 64 64 72 5f 73 65 72 76 65 72 29 0d 0a 72 65 73 63 75 65 0d 0a 20 20 20 | ct(sockaddr_server)..rescue..... |
| 42e20 | 20 70 75 74 73 20 22 65 72 72 6f 72 3a 20 23 7b 24 21 7d 22 0d 0a 65 6c 73 65 0d 0a 20 20 20 20 | .puts."error:.#{$!}"..else...... |
| 42e40 | 23 20 2e 2e 2e 20 64 6f 20 73 6f 6d 65 74 68 69 6e 67 20 77 69 74 68 20 74 68 65 20 73 6f 63 6b | #.....do.something.with.the.sock |
| 42e60 | 65 74 0d 0a 20 20 20 20 73 2e 70 72 69 6e 74 20 22 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 30 5c | et......s.print."GET./.HTTP/1.0\ |
| 42e80 | 6e 5c 6e 22 0d 0a 20 20 20 20 23 20 61 6e 64 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 20 63 6f | n\n"......#.and.terminate.the.co |
| 42ea0 | 6e 6e 65 63 74 69 6f 6e 20 77 68 65 6e 20 77 65 27 72 65 20 64 6f 6e 65 0d 0a 20 20 20 20 73 2e | nnection.when.we're.done......s. |
| 42ec0 | 63 6c 6f 73 65 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 43 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 | close..end....#.TCP.connection.w |
| 42ee0 | 69 74 68 20 6d 61 6e 61 67 65 6d 65 6e 74 20 6f 66 20 65 72 72 6f 72 20 28 44 4e 53 29 0d 0a 72 | ith.management.of.error.(DNS)..r |
| 42f00 | 65 71 75 69 72 65 20 27 73 6f 63 6b 65 74 27 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 63 6c 69 65 | equire.'socket'..begin......clie |
| 42f20 | 6e 74 20 3d 20 54 43 50 53 6f 63 6b 65 74 2e 6e 65 77 28 27 64 6f 65 73 20 6e 6f 74 20 65 78 69 | nt.=.TCPSocket.new('does.not.exi |
| 42f40 | 73 74 73 27 2c 20 27 77 77 77 27 29 0d 0a 72 65 73 63 75 65 0d 0a 20 20 20 20 70 75 74 73 20 22 | sts',.'www')..rescue......puts." |
| 42f60 | 65 72 72 6f 72 3a 20 23 7b 24 21 7d 22 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 54 43 50 20 63 6f 6e 6e | error:.#{$!}"..end....#.TCP.conn |
| 42f80 | 65 63 74 69 6f 6e 20 77 69 74 68 20 61 20 74 69 6d 65 20 6f 75 74 0d 0a 72 65 71 75 69 72 65 20 | ection.with.a.time.out..require. |
| 42fa0 | 27 73 6f 63 6b 65 74 27 0d 0a 72 65 71 75 69 72 65 20 27 74 69 6d 65 6f 75 74 27 0d 0a 62 65 67 | 'socket'..require.'timeout'..beg |
| 42fc0 | 69 6e 0d 0a 20 20 20 20 74 69 6d 65 6f 75 74 28 31 29 20 64 6f 20 23 74 68 65 20 73 65 72 76 65 | in......timeout(1).do.#the.serve |
| 42fe0 | 72 20 68 61 73 20 6f 6e 65 20 73 65 63 6f 6e 64 20 74 6f 20 61 6e 73 77 65 72 0d 0a 20 20 20 20 | r.has.one.second.to.answer...... |
| 43000 | 20 20 20 20 63 6c 69 65 6e 74 20 3d 20 54 43 50 53 6f 63 6b 65 74 2e 6e 65 77 28 27 77 77 77 2e | ....client.=.TCPSocket.new('www. |
| 43020 | 68 6f 73 74 2e 63 6f 6d 27 2c 20 27 77 77 77 27 29 0d 0a 20 20 20 20 65 6e 64 0d 0a 72 65 73 63 | host.com',.'www')......end..resc |
| 43040 | 75 65 0d 0a 20 20 20 20 70 75 74 73 20 22 65 72 72 6f 72 3a 20 23 7b 24 21 7d 22 0d 0a 65 6e 64 | ue......puts."error:.#{$!}"..end |
| 43060 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 37 2e 31 32 0d 0a 72 65 71 75 69 72 65 | ......#.@@PLEAC@@_17.12..require |
| 43080 | 20 27 73 6f 63 6b 65 74 27 0d 0a 0d 0a 63 6c 61 73 73 20 50 72 65 66 6f 72 6b 65 72 0d 0a 20 20 | .'socket'....class.Preforker.... |
| 430a0 | 20 20 61 74 74 72 5f 72 65 61 64 65 72 20 28 3a 63 68 69 6c 64 5f 63 6f 75 6e 74 29 0d 0a 0d 0a | ..attr_reader.(:child_count).... |
| 430c0 | 20 20 20 20 64 65 66 20 69 6e 69 74 69 61 6c 69 7a 65 28 70 72 65 66 6f 72 6b 2c 20 6d 61 78 5f | ....def.initialize(prefork,.max_ |
| 430e0 | 63 6c 69 65 6e 74 73 5f 70 65 72 5f 63 68 69 6c 64 2c 20 70 6f 72 74 2c 20 63 6c 69 65 6e 74 5f | clients_per_child,.port,.client_ |
| 43100 | 68 61 6e 64 6c 65 72 29 0d 0a 20 20 20 20 20 20 20 20 40 70 72 65 66 6f 72 6b 20 3d 20 70 72 65 | handler)..........@prefork.=.pre |
| 43120 | 66 6f 72 6b 0d 0a 20 20 20 20 20 20 20 20 40 6d 61 78 5f 63 6c 69 65 6e 74 73 5f 70 65 72 5f 63 | fork..........@max_clients_per_c |
| 43140 | 68 69 6c 64 20 3d 20 6d 61 78 5f 63 6c 69 65 6e 74 73 5f 70 65 72 5f 63 68 69 6c 64 0d 0a 20 20 | hild.=.max_clients_per_child.... |
| 43160 | 20 20 20 20 20 20 40 70 6f 72 74 20 3d 20 70 6f 72 74 0d 0a 20 20 20 20 20 20 20 20 40 63 68 69 | ......@port.=.port..........@chi |
| 43180 | 6c 64 5f 63 6f 75 6e 74 20 3d 20 30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 40 72 65 61 70 65 72 20 | ld_count.=.0............@reaper. |
| 431a0 | 3d 20 70 72 6f 63 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 70 28 27 43 48 4c 44 | =.proc.{..............trap('CHLD |
| 431c0 | 27 2c 20 40 72 65 61 70 65 72 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 69 64 20 3d 20 50 | ',.@reaper)..............pid.=.P |
| 431e0 | 72 6f 63 65 73 73 2e 77 61 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 63 68 69 6c 64 5f | rocess.wait..............@child_ |
| 43200 | 63 6f 75 6e 74 20 2d 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 | count.-=.1..........}........... |
| 43220 | 20 40 68 75 6e 74 73 6d 61 6e 20 3d 20 70 72 6f 63 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | .@huntsman.=.proc.{............. |
| 43240 | 20 74 72 61 70 28 27 43 48 4c 44 27 2c 20 27 49 47 4e 4f 52 45 27 29 0d 0a 20 20 20 20 20 20 20 | .trap('CHLD',.'IGNORE')......... |
| 43260 | 20 20 20 20 20 74 72 61 70 28 27 49 4e 54 27 2c 20 27 49 47 4e 4f 52 45 27 29 0d 0a 20 20 20 20 | .....trap('INT',.'IGNORE')...... |
| 43280 | 20 20 20 20 20 20 20 20 50 72 6f 63 65 73 73 2e 6b 69 6c 6c 28 27 49 4e 54 27 2c 20 30 29 0d 0a | ........Process.kill('INT',.0).. |
| 432a0 | 20 20 20 20 20 20 20 20 20 20 20 20 65 78 69 74 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 | ............exit..........}..... |
| 432c0 | 20 20 20 20 20 20 20 40 63 6c 69 65 6e 74 5f 68 61 6e 64 6c 65 72 3d 63 6c 69 65 6e 74 5f 68 61 | .......@client_handler=client_ha |
| 432e0 | 6e 64 6c 65 72 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 63 68 69 6c 64 5f | ndler......end........def.child_ |
| 43300 | 68 61 6e 64 6c 65 72 0d 0a 20 20 20 20 20 20 20 20 74 72 61 70 28 27 49 4e 54 27 2c 20 27 45 58 | handler..........trap('INT',.'EX |
| 43320 | 49 54 27 29 0d 0a 20 20 20 20 20 20 20 20 40 63 6c 69 65 6e 74 5f 68 61 6e 64 6c 65 72 2e 73 65 | IT')..........@client_handler.se |
| 43340 | 74 55 70 0d 0a 20 20 20 20 20 20 20 20 23 20 77 69 73 68 3a 20 73 69 67 70 72 6f 63 6d 61 73 6b | tUp..........#.wish:.sigprocmask |
| 43360 | 20 55 4e 62 6c 6f 63 6b 20 53 49 47 49 4e 54 0d 0a 20 20 20 20 20 20 20 20 40 6d 61 78 5f 63 6c | .UNblock.SIGINT..........@max_cl |
| 43380 | 69 65 6e 74 73 5f 70 65 72 5f 63 68 69 6c 64 2e 74 69 6d 65 73 20 7b 0d 0a 20 20 20 20 20 20 20 | ients_per_child.times.{......... |
| 433a0 | 20 20 20 20 20 63 6c 69 65 6e 74 20 3d 20 40 73 65 72 76 65 72 2e 61 63 63 65 70 74 20 6f 72 20 | .....client.=.@server.accept.or. |
| 433c0 | 62 72 65 61 6b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 40 63 6c 69 65 6e 74 5f 68 61 6e 64 6c | break..............@client_handl |
| 433e0 | 65 72 2e 68 61 6e 64 6c 65 5f 72 65 71 75 65 73 74 28 63 6c 69 65 6e 74 29 0d 0a 20 20 20 20 20 | er.handle_request(client)....... |
| 43400 | 20 20 20 20 20 20 20 63 6c 69 65 6e 74 2e 63 6c 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a | .......client.close..........}.. |
| 43420 | 20 20 20 20 20 20 20 20 40 63 6c 69 65 6e 74 5f 68 61 6e 64 6c 65 72 2e 74 65 61 72 44 6f 77 6e | ........@client_handler.tearDown |
| 43440 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 6d 61 6b 65 5f 6e 65 77 5f 63 68 | ......end........def.make_new_ch |
| 43460 | 69 6c 64 0d 0a 20 20 20 20 20 20 20 20 23 20 77 69 73 68 3a 20 73 69 67 70 72 6f 63 6d 61 73 6b | ild..........#.wish:.sigprocmask |
| 43480 | 20 62 6c 6f 63 6b 20 53 49 47 49 4e 54 0d 0a 20 20 20 20 20 20 20 20 40 63 68 69 6c 64 5f 63 6f | .block.SIGINT..........@child_co |
| 434a0 | 75 6e 74 20 2b 3d 20 31 0d 0a 20 20 20 20 20 20 20 20 70 69 64 20 3d 20 66 6f 72 6b 20 64 6f 0d | unt.+=.1..........pid.=.fork.do. |
| 434c0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 5f 68 61 6e 64 6c 65 72 0d 0a 20 20 20 20 | .............child_handler...... |
| 434e0 | 20 20 20 20 65 6e 64 0d 0a 20 20 20 20 20 20 20 20 23 20 77 69 73 68 3a 20 73 69 67 70 72 6f 63 | ....end..........#.wish:.sigproc |
| 43500 | 6d 61 73 6b 20 55 4e 62 6c 6f 63 6b 20 53 49 47 49 4e 54 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a | mask.UNblock.SIGINT......end.... |
| 43520 | 20 20 20 20 64 65 66 20 72 75 6e 0d 0a 20 20 20 20 20 20 20 20 40 73 65 72 76 65 72 20 3d 20 54 | ....def.run..........@server.=.T |
| 43540 | 43 50 73 65 72 76 65 72 2e 6f 70 65 6e 28 40 70 6f 72 74 29 0d 0a 20 20 20 20 20 20 20 20 74 72 | CPserver.open(@port)..........tr |
| 43560 | 61 70 28 27 43 48 4c 44 27 2c 20 40 72 65 61 70 65 72 29 0d 0a 20 20 20 20 20 20 20 20 74 72 61 | ap('CHLD',.@reaper)..........tra |
| 43580 | 70 28 27 49 4e 54 27 2c 20 40 68 75 6e 74 73 6d 61 6e 29 0d 0a 20 20 20 20 20 20 20 20 6c 6f 6f | p('INT',.@huntsman)..........loo |
| 435a0 | 70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 40 70 72 65 66 6f 72 6b 20 2d 20 40 63 68 | p.{..............(@prefork.-.@ch |
| 435c0 | 69 6c 64 5f 63 6f 75 6e 74 29 2e 74 69 6d 65 73 20 7b 20 7c 69 7c 0d 0a 20 20 20 20 20 20 20 20 | ild_count).times.{.|i|.......... |
| 435e0 | 20 20 20 20 20 20 20 20 6d 61 6b 65 5f 6e 65 77 5f 63 68 69 6c 64 0d 0a 20 20 20 20 20 20 20 20 | ........make_new_child.......... |
| 43600 | 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 6c 65 65 70 20 2e 31 0d 0a 20 20 20 | ....}..............sleep..1..... |
| 43620 | 20 20 20 20 20 7d 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 23 2d 2d 2d 2d 2d 2d 2d | .....}......end..end....#------- |
| 43640 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 21 2f 75 73 72 2f 62 | ----------------------..#!/usr/b |
| 43660 | 69 6e 2f 72 75 62 79 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 50 72 65 66 6f 72 6b 65 72 27 0d 0a | in/ruby....require.'Preforker'.. |
| 43680 | 0d 0a 63 6c 61 73 73 20 43 6c 69 65 6e 74 48 61 6e 64 6c 65 72 0d 0a 20 20 20 20 64 65 66 20 73 | ..class.ClientHandler......def.s |
| 436a0 | 65 74 55 70 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 74 65 61 72 44 6f 77 | etUp......end........def.tearDow |
| 436c0 | 6e 0d 0a 20 20 20 20 65 6e 64 0d 0a 0d 0a 20 20 20 20 64 65 66 20 68 61 6e 64 6c 65 5f 72 65 71 | n......end........def.handle_req |
| 436e0 | 75 65 73 74 28 63 6c 69 65 6e 74 29 0d 0a 20 20 20 20 20 20 20 20 23 20 64 6f 20 73 74 75 66 66 | uest(client)..........#.do.stuff |
| 43700 | 0d 0a 20 20 20 20 65 6e 64 0d 0a 65 6e 64 0d 0a 0d 0a 73 65 72 76 65 72 20 3d 20 50 72 65 66 6f | ......end..end....server.=.Prefo |
| 43720 | 72 6b 65 72 2e 6e 65 77 28 31 2c 20 31 30 30 2c 20 33 31 30 32 2c 20 43 6c 69 65 6e 74 48 61 6e | rker.new(1,.100,.3102,.ClientHan |
| 43740 | 64 6c 65 72 2e 6e 65 77 29 0d 0a 73 65 72 76 65 72 2e 72 75 6e 0d 0a 0d 0a 0d 0a 23 20 40 40 50 | dler.new)..server.run......#.@@P |
| 43760 | 4c 45 41 43 40 40 5f 31 38 2e 32 0d 0a 72 65 71 75 69 72 65 20 27 6e 65 74 2f 66 74 70 27 0d 0a | LEAC@@_18.2..require.'net/ftp'.. |
| 43780 | 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 66 74 70 20 3d 20 4e 65 74 3a 3a 46 54 50 3a 3a 6e 65 77 | ..begin......ftp.=.Net::FTP::new |
| 437a0 | 28 22 66 74 70 2e 68 6f 73 74 2e 63 6f 6d 22 29 0d 0a 20 20 20 20 66 74 70 2e 6c 6f 67 69 6e 28 | ("ftp.host.com")......ftp.login( |
| 437c0 | 75 73 65 72 6e 61 6d 65 2c 70 61 73 73 77 6f 72 64 29 0d 0a 20 20 20 20 66 74 70 2e 63 68 64 69 | username,password)......ftp.chdi |
| 437e0 | 72 28 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 66 74 70 2e 67 65 74 28 66 69 6c 65 6e 61 | r(directory)......ftp.get(filena |
| 43800 | 6d 65 29 0d 0a 20 20 20 20 66 74 70 2e 70 75 74 28 66 69 6c 65 6e 61 6d 65 29 0d 0a 72 65 73 63 | me)......ftp.put(filename)..resc |
| 43820 | 75 65 20 4e 65 74 3a 3a 46 54 50 45 72 72 6f 72 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 72 | ue.Net::FTPError......$stderr.pr |
| 43840 | 69 6e 74 20 22 46 54 50 20 66 61 69 6c 65 64 3a 20 22 20 2b 20 24 21 0d 0a 65 6e 73 75 72 65 0d | int."FTP.failed:.".+.$!..ensure. |
| 43860 | 0a 20 20 20 20 66 74 70 2e 63 6c 6f 73 65 28 29 20 69 66 20 66 74 70 0d 0a 65 6e 64 0d 0a 0d 0a | .....ftp.close().if.ftp..end.... |
| 43880 | 23 20 41 20 62 65 74 74 65 72 20 73 6f 6c 75 74 69 6f 6e 20 66 6f 72 20 61 20 6c 6f 63 61 6c 20 | #.A.better.solution.for.a.local. |
| 438a0 | 75 73 65 20 63 6f 75 6c 64 20 62 65 20 3a 0d 0a 4e 65 74 3a 3a 46 54 50 3a 3a 6e 65 77 28 22 66 | use.could.be.:..Net::FTP::new("f |
| 438c0 | 74 70 2e 68 6f 73 74 2e 63 6f 6d 22 29 20 64 6f 20 7c 66 74 70 7c 0d 0a 20 20 20 20 66 74 70 2e | tp.host.com").do.|ftp|......ftp. |
| 438e0 | 6c 6f 67 69 6e 28 75 73 65 72 6e 61 6d 65 2c 70 61 73 73 77 6f 72 64 29 0d 0a 20 20 20 20 66 74 | login(username,password)......ft |
| 43900 | 70 2e 63 68 64 69 72 28 64 69 72 65 63 74 6f 72 79 29 0d 0a 20 20 20 20 66 74 70 2e 67 65 74 28 | p.chdir(directory)......ftp.get( |
| 43920 | 66 69 6c 65 6e 61 6d 65 29 0d 0a 20 20 20 20 66 74 70 2e 70 75 74 28 66 69 6c 65 6e 61 6d 65 29 | filename)......ftp.put(filename) |
| 43940 | 0d 0a 65 6e 64 0d 0a 0d 0a 23 20 49 66 20 79 6f 75 20 68 61 76 65 20 6f 6e 6c 79 20 6f 6e 65 20 | ..end....#.If.you.have.only.one. |
| 43960 | 66 69 6c 65 20 74 6f 20 67 65 74 2c 20 74 68 65 72 65 20 69 73 20 61 20 73 69 6d 70 6c 65 20 73 | file.to.get,.there.is.a.simple.s |
| 43980 | 6f 6c 75 74 69 6f 6e 20 3a 0d 0a 72 65 71 75 69 72 65 20 27 6f 70 65 6e 2d 75 72 69 27 0d 0a 6f | olution.:..require.'open-uri'..o |
| 439a0 | 70 65 6e 28 22 66 74 70 3a 2f 2f 77 77 77 2e 72 75 62 79 2d 6c 61 6e 67 2e 6f 72 67 2f 70 61 74 | pen("ftp://www.ruby-lang.org/pat |
| 439c0 | 68 2f 66 69 6c 65 6e 61 6d 65 22 29 20 64 6f 20 7c 66 68 7c 0d 0a 20 20 20 20 23 20 72 65 61 64 | h/filename").do.|fh|......#.read |
| 439e0 | 20 66 72 6f 6d 20 66 69 6c 65 68 61 6e 64 6c 65 20 66 68 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d | .from.filehandle.fh..end..#----- |
| 43a00 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | -------------------------------- |
| 43a20 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 74 6f 20 77 61 69 74 20 61 20 64 65 66 69 6e 65 64 20 74 69 6d | -------..#.to.wait.a.defined.tim |
| 43a40 | 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2c 0d 0a 23 20 75 73 65 20 74 68 65 | e.for.the.connection,..#.use.the |
| 43a60 | 20 74 69 6d 65 6f 75 74 20 6d 6f 64 75 6c 65 0d 0a 72 65 71 75 69 72 65 20 27 74 69 6d 65 6f 75 | .timeout.module..require.'timeou |
| 43a80 | 74 27 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 74 69 6d 65 6f 75 74 28 33 30 29 7b 0d 0a 20 20 20 | t'..begin......timeout(30){..... |
| 43aa0 | 20 20 20 20 20 66 74 70 20 3d 20 4e 65 74 3a 3a 46 54 50 3a 3a 6e 65 77 28 22 66 74 70 2e 68 6f | .....ftp.=.Net::FTP::new("ftp.ho |
| 43ac0 | 73 74 2e 63 6f 6d 22 29 0d 0a 20 20 20 20 20 20 20 20 66 74 70 2e 64 65 62 75 67 5f 6d 6f 64 65 | st.com")..........ftp.debug_mode |
| 43ae0 | 20 3d 20 74 72 75 65 0d 0a 20 20 20 20 7d 0d 0a 72 65 73 63 75 65 20 4e 65 74 3a 3a 46 54 50 45 | .=.true......}..rescue.Net::FTPE |
| 43b00 | 72 72 6f 72 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 20 22 43 6f 75 6c 64 6e 27 74 | rror......$stderr.puts."Couldn't |
| 43b20 | 20 63 6f 6e 6e 65 63 74 2e 22 0d 0a 72 65 73 63 75 65 20 54 69 6d 65 6f 75 74 3a 3a 45 72 72 6f | .connect."..rescue.Timeout::Erro |
| 43b40 | 72 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 75 74 73 20 22 54 69 6d 65 6f 75 74 20 77 68 69 | r......$stderr.puts."Timeout.whi |
| 43b60 | 6c 65 20 63 6f 6e 6e 65 63 74 69 6e 67 20 74 6f 20 73 65 72 76 65 72 2e 22 0d 0a 65 6e 64 0d 0a | le.connecting.to.server."..end.. |
| 43b80 | 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 66 74 70 2e 6c 6f 67 69 6e 28 29 0d 0a 72 65 73 63 75 65 | ..begin......ftp.login()..rescue |
| 43ba0 | 20 4e 65 74 3a 3a 46 54 50 45 72 72 6f 72 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 72 69 6e | .Net::FTPError......$stderr.prin |
| 43bc0 | 74 20 22 43 6f 75 6c 64 6e 27 74 20 61 75 74 68 65 6e 74 69 66 69 63 61 74 65 2e 5c 6e 22 0d 0a | t."Couldn't.authentificate.\n".. |
| 43be0 | 65 6e 64 0d 0a 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 66 74 70 2e 6c 6f 67 69 6e 28 75 73 65 72 | end....begin......ftp.login(user |
| 43c00 | 6e 61 6d 65 29 0d 0a 72 65 73 63 75 65 20 4e 65 74 3a 3a 46 54 50 45 72 72 6f 72 0d 0a 20 20 20 | name)..rescue.Net::FTPError..... |
| 43c20 | 20 24 73 74 64 65 72 72 2e 70 72 69 6e 74 20 22 53 74 69 6c 6c 20 63 6f 75 6c 64 6e 27 74 20 61 | .$stderr.print."Still.couldn't.a |
| 43c40 | 75 74 68 65 6e 74 69 63 61 74 65 2e 5c 6e 22 0d 0a 65 6e 64 0d 0a 0d 0a 62 65 67 69 6e 0d 0a 20 | uthenticate.\n"..end....begin... |
| 43c60 | 20 20 20 66 74 70 2e 6c 6f 67 69 6e 28 75 73 65 72 6e 61 6d 65 2c 20 70 61 73 73 77 6f 72 64 29 | ...ftp.login(username,.password) |
| 43c80 | 0d 0a 72 65 73 63 75 65 20 4e 65 74 3a 3a 46 54 50 45 72 72 6f 72 0d 0a 20 20 20 20 24 73 74 64 | ..rescue.Net::FTPError......$std |
| 43ca0 | 65 72 72 2e 70 72 69 6e 74 20 22 43 6f 75 6c 64 6e 27 74 20 61 75 74 68 65 6e 74 69 63 61 74 65 | err.print."Couldn't.authenticate |
| 43cc0 | 2c 20 65 76 65 6e 20 77 69 74 68 20 65 78 70 6c 69 63 69 74 0d 0a 20 20 20 20 75 73 65 72 6e 61 | ,.even.with.explicit......userna |
| 43ce0 | 6d 65 20 61 6e 64 20 70 61 73 73 77 6f 72 64 2e 5c 6e 22 0d 0a 65 6e 64 0d 0a 0d 0a 62 65 67 69 | me.and.password.\n"..end....begi |
| 43d00 | 6e 0d 0a 20 20 20 20 66 74 70 2e 6c 6f 67 69 6e 28 75 73 65 72 6e 61 6d 65 2c 20 70 61 73 73 77 | n......ftp.login(username,.passw |
| 43d20 | 6f 72 64 2c 20 61 63 63 6f 75 6e 74 29 0d 0a 72 65 73 63 75 65 20 4e 65 74 3a 3a 46 54 50 45 72 | ord,.account)..rescue.Net::FTPEr |
| 43d40 | 72 6f 72 0d 0a 20 20 20 20 24 73 74 64 65 72 72 2e 70 72 69 6e 74 20 22 4e 6f 20 64 69 63 65 2e | ror......$stderr.print."No.dice. |
| 43d60 | 20 49 74 20 68 61 74 65 73 20 6d 65 2e 5c 6e 22 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | .It.hates.me.\n"..end..#-------- |
| 43d80 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 74 70 2e 70 75 74 28 6c | ---------------------..ftp.put(l |
| 43da0 | 6f 63 61 6c 66 69 6c 65 2c 20 72 65 6d 6f 74 65 66 69 6c 65 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | ocalfile,.remotefile)..#-------- |
| 43dc0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 53 65 6e 64 69 6e 67 | ---------------------..#.Sending |
| 43de0 | 20 64 61 74 61 20 66 72 6f 6d 20 53 54 44 49 4e 20 69 73 20 6e 6f 74 20 64 69 72 65 63 74 6c 79 | .data.from.STDIN.is.not.directly |
| 43e00 | 20 73 75 70 70 6f 72 74 65 64 0d 0a 23 20 62 79 20 74 68 65 20 66 74 70 20 6c 69 62 72 61 72 79 | .supported..#.by.the.ftp.library |
| 43e20 | 20 6d 6f 64 75 6c 65 2e 20 41 20 70 6f 73 73 69 62 6c 65 20 77 61 79 20 74 6f 20 64 6f 20 69 74 | .module..A.possible.way.to.do.it |
| 43e40 | 20 69 73 20 74 6f 20 75 73 65 20 74 68 65 0d 0a 23 20 73 74 6f 72 6c 69 6e 65 73 20 6d 65 74 68 | .is.to.use.the..#.storlines.meth |
| 43e60 | 6f 64 20 64 69 72 65 63 74 6c 79 20 74 6f 20 73 65 6e 64 20 72 61 77 20 63 6f 6d 6d 61 6e 64 73 | od.directly.to.send.raw.commands |
| 43e80 | 20 74 6f 20 74 68 65 20 66 74 70 20 73 65 72 76 65 72 2e 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | .to.the.ftp.server...#---------- |
| 43ea0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 74 70 2e 67 65 74 28 72 65 6d | -------------------..ftp.get(rem |
| 43ec0 | 6f 74 65 66 69 6c 65 2c 20 6c 6f 63 61 6c 66 69 6c 65 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | otefile,.localfile)..#---------- |
| 43ee0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 74 70 2e 67 65 74 28 72 65 6d | -------------------..ftp.get(rem |
| 43f00 | 6f 74 65 66 69 6c 65 29 20 7b 20 7c 64 61 74 61 7c 20 70 75 74 73 20 64 61 74 61 20 7d 0d 0a 23 | otefile).{.|data|.puts.data.}..# |
| 43f20 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 | -----------------------------..f |
| 43f40 | 74 70 2e 63 68 64 69 72 28 22 2f 70 75 62 2f 72 75 62 79 22 29 0d 0a 70 72 69 6e 74 20 22 49 27 | tp.chdir("/pub/ruby")..print."I' |
| 43f60 | 6d 20 69 6e 20 74 68 65 20 64 69 72 65 63 74 6f 72 79 20 22 2c 20 66 74 70 2e 70 77 64 28 29 2c | m.in.the.directory.",.ftp.pwd(), |
| 43f80 | 20 22 5c 6e 22 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ."\n"..#------------------------ |
| 43fa0 | 2d 2d 2d 2d 2d 0d 0a 66 74 70 2e 6d 6b 64 69 72 28 22 2f 70 75 62 2f 72 75 62 79 2f 6e 65 77 5f | -----..ftp.mkdir("/pub/ruby/new_ |
| 43fc0 | 64 69 72 22 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | dir")..#------------------------ |
| 43fe0 | 2d 2d 2d 2d 2d 0d 0a 6c 69 6e 65 73 20 3d 20 66 74 70 2e 6c 73 28 22 2f 70 75 62 2f 72 75 62 79 | -----..lines.=.ftp.ls("/pub/ruby |
| 44000 | 2f 22 29 0d 0a 23 20 3d 3e 20 5b 22 64 72 77 78 72 2d 78 72 2d 78 20 32 20 6d 61 74 7a 20 75 73 | /")..#.=>.["drwxr-xr-x.2.matz.us |
| 44020 | 65 72 73 20 34 30 39 36 20 4a 75 6c 79 20 31 37 20 31 39 39 38 20 31 2e 30 22 2c 20 2e 2e 2e 20 | ers.4096.July.17.1998.1.0",..... |
| 44040 | 5d 0d 0a 0d 0a 6c 61 74 65 73 74 20 3d 20 66 74 70 2e 64 69 72 28 22 2f 70 75 62 2f 72 75 62 79 | ]....latest.=.ftp.dir("/pub/ruby |
| 44060 | 2f 2a 2e 74 67 7a 22 29 2e 73 6f 72 74 2e 6c 61 73 74 0d 0a 0d 0a 66 74 70 2e 6e 6c 73 74 28 22 | /*.tgz").sort.last....ftp.nlst(" |
| 44080 | 2f 70 75 62 2f 72 75 62 79 22 29 0d 0a 23 20 3d 3e 20 5b 22 2f 70 75 62 2f 72 75 62 79 2f 31 2e | /pub/ruby")..#.=>.["/pub/ruby/1. |
| 440a0 | 30 22 2c 20 2e 2e 2e 20 5d 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | 0",.....]..#-------------------- |
| 440c0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 66 74 70 2e 71 75 69 74 28 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 | ---------..ftp.quit()......#.@@P |
| 440e0 | 4c 45 41 43 40 40 5f 31 38 2e 36 0d 0a 72 65 71 75 69 72 65 20 27 6e 65 74 2f 74 65 6c 6e 65 74 | LEAC@@_18.6..require.'net/telnet |
| 44100 | 27 0d 0a 74 20 3d 20 4e 65 74 3a 3a 54 65 6c 6e 65 74 3a 3a 6e 65 77 28 20 22 54 69 6d 65 6f 75 | '..t.=.Net::Telnet::new(."Timeou |
| 44120 | 74 22 20 3d 3e 20 31 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t".=>.10,....................... |
| 44140 | 20 22 50 72 6f 6d 70 74 22 20 20 3d 3e 20 2f 25 2f 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ."Prompt"..=>./%/,.............. |
| 44160 | 20 20 20 20 20 20 20 20 20 20 22 48 6f 73 74 22 20 20 20 20 3d 3e 20 68 6f 73 74 20 29 0d 0a 74 | .........."Host"....=>.host.)..t |
| 44180 | 2e 6c 6f 67 69 6e 28 75 73 65 72 6e 61 6d 65 2c 20 70 61 73 73 77 6f 72 64 29 0d 0a 66 69 6c 65 | .login(username,.password)..file |
| 441a0 | 73 20 3d 20 74 2e 63 6d 64 28 22 6c 73 22 29 0d 0a 74 2e 70 72 69 6e 74 28 22 74 6f 70 22 29 0d | s.=.t.cmd("ls")..t.print("top"). |
| 441c0 | 0a 70 72 6f 63 65 73 73 5f 73 74 72 69 6e 67 20 3d 20 74 2e 77 61 69 74 66 6f 72 28 2f 5c 64 2b | .process_string.=.t.waitfor(/\d+ |
| 441e0 | 20 70 72 6f 63 65 73 73 65 73 2f 29 0d 0a 74 2e 63 6c 6f 73 65 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d | .processes/)..t.close..#-------- |
| 44200 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 2f 5b 24 25 23 3e 5d 20 5c | ---------------------../[$%#>].\ |
| 44220 | 7a 2f 6e 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | z/n..#-------------------------- |
| 44240 | 2d 2d 2d 0d 0a 23 20 49 6e 20 63 61 73 65 20 6f 66 20 61 6e 20 65 72 72 6f 72 2c 20 74 68 65 20 | ---..#.In.case.of.an.error,.the. |
| 44260 | 74 65 6c 6e 65 74 20 6d 6f 64 75 6c 65 20 74 68 72 6f 77 73 20 61 6e 20 65 78 63 65 70 74 69 6f | telnet.module.throws.an.exceptio |
| 44280 | 6e 2e 0d 0a 23 20 46 6f 72 20 63 6f 6e 74 72 6f 6c 20 6f 66 20 74 68 65 20 62 65 68 61 76 69 6f | n...#.For.control.of.the.behavio |
| 442a0 | 72 20 69 6e 20 63 61 73 65 20 6f 66 20 61 6e 20 65 72 72 6f 72 2c 0d 0a 23 20 79 6f 75 20 6a 75 | r.in.case.of.an.error,..#.you.ju |
| 442c0 | 73 74 20 6e 65 65 64 20 74 6f 20 63 61 74 63 68 20 74 68 65 20 65 78 63 65 70 74 69 6f 6e 73 20 | st.need.to.catch.the.exceptions. |
| 442e0 | 61 6e 64 20 64 6f 20 79 6f 75 72 20 63 75 73 74 6f 6d 0d 0a 23 20 65 72 72 6f 72 20 68 61 6e 64 | and.do.your.custom..#.error.hand |
| 44300 | 6c 69 6e 67 2e 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ling...#------------------------ |
| 44320 | 2d 2d 2d 2d 2d 0d 0a 62 65 67 69 6e 0d 0a 20 20 20 20 74 65 6c 6e 65 74 2e 6c 6f 67 69 6e 28 75 | -----..begin......telnet.login(u |
| 44340 | 73 65 72 6e 61 6d 65 2c 20 70 61 73 73 77 6f 72 64 29 0d 0a 72 65 73 63 75 65 20 54 69 6d 65 6f | sername,.password)..rescue.Timeo |
| 44360 | 75 74 45 72 72 6f 72 0d 0a 20 20 20 20 66 61 69 6c 20 22 4c 6f 67 69 6e 20 66 61 69 6c 65 64 20 | utError......fail."Login.failed. |
| 44380 | 21 5c 6e 22 0d 0a 65 6e 64 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | !\n"..end..#-------------------- |
| 443a0 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 74 65 6c 6e 65 74 2e 77 61 69 74 66 6f 72 28 27 2f 2d 2d 6d 6f | ---------..telnet.waitfor('/--mo |
| 443c0 | 72 65 2d 2d 2f 27 29 0d 0a 23 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | re--/')..#---------------------- |
| 443e0 | 2d 2d 2d 2d 2d 2d 2d 0d 0a 74 65 6c 6e 65 74 2e 77 61 69 74 66 6f 72 28 53 74 72 69 6e 67 20 3d | -------..telnet.waitfor(String.= |
| 44400 | 3e 20 27 67 72 65 61 73 79 20 73 6d 6f 6b 65 27 2c 20 54 69 6d 65 6f 75 74 20 3d 3e 20 33 30 29 | >.'greasy.smoke',.Timeout.=>.30) |
| 44420 | 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 38 2e 37 0d 0a 72 65 71 75 69 72 65 20 | ......#.@@PLEAC@@_18.7..require. |
| 44440 | 27 70 69 6e 67 27 0d 0a 0d 0a 70 75 74 73 20 22 23 7b 68 6f 73 74 7d 20 69 73 20 61 6c 69 76 65 | 'ping'....puts."#{host}.is.alive |
| 44460 | 2e 5c 6e 22 20 69 66 20 50 69 6e 67 2e 70 69 6e 67 65 63 68 6f 28 68 6f 73 74 29 3b 0d 0a 23 2d | .\n".if.Ping.pingecho(host);..#- |
| 44480 | 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 23 20 | ----------------------------..#. |
| 444a0 | 74 68 65 20 70 69 6e 67 20 6d 6f 64 75 6c 65 20 6f 6e 6c 79 20 75 73 65 20 54 43 50 20 70 69 6e | the.ping.module.only.use.TCP.pin |
| 444c0 | 67 2c 20 6e 6f 74 20 49 43 4d 50 20 65 76 65 6e 20 69 66 20 77 65 20 61 72 65 20 72 6f 6f 74 0d | g,.not.ICMP.even.if.we.are.root. |
| 444e0 | 0a 69 66 20 50 69 6e 67 2e 70 69 6e 67 65 63 68 6f 28 22 6b 69 6e 67 6b 6f 6e 67 2e 63 6f 6d 22 | .if.Ping.pingecho("kingkong.com" |
| 44500 | 29 0d 0a 20 20 20 20 70 75 74 73 20 22 54 68 65 20 67 69 61 6e 74 20 61 70 65 20 6c 69 76 65 73 | )......puts."The.giant.ape.lives |
| 44520 | 21 5c 6e 22 3b 0d 0a 65 6c 73 65 0d 0a 20 20 20 20 70 75 74 73 20 22 41 6c 6c 20 68 61 69 6c 20 | !\n";..else......puts."All.hail. |
| 44540 | 6d 69 67 68 74 79 20 47 61 6d 65 72 61 2c 20 66 72 69 65 6e 64 20 6f 66 20 63 68 69 6c 64 72 65 | mighty.Gamera,.friend.of.childre |
| 44560 | 6e 21 5c 6e 22 3b 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 39 2e | n!\n";..end......#.@@PLEAC@@_19. |
| 44580 | 31 0d 0a 23 21 2f 75 73 72 2f 6c 6f 63 61 6c 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 68 | 1..#!/usr/local/bin/ruby.-w..#.h |
| 445a0 | 69 77 65 62 20 2d 20 6c 6f 61 64 20 43 47 49 20 63 6c 61 73 73 20 74 6f 20 64 65 63 6f 64 65 20 | iweb.-.load.CGI.class.to.decode. |
| 445c0 | 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 67 69 76 65 6e 20 62 79 20 77 65 62 20 73 65 72 76 65 72 0d | information.given.by.web.server. |
| 445e0 | 0a 0d 0a 72 65 71 75 69 72 65 20 27 63 67 69 27 0d 0a 0d 0a 63 67 69 20 3d 20 43 47 49 2e 6e 65 | ...require.'cgi'....cgi.=.CGI.ne |
| 44600 | 77 28 27 68 74 6d 6c 33 27 29 0d 0a 0d 0a 23 20 67 65 74 20 61 20 70 61 72 61 6d 65 74 65 72 20 | w('html3')....#.get.a.parameter. |
| 44620 | 66 72 6f 6d 20 61 20 66 6f 72 6d 0d 0a 76 61 6c 75 65 20 3d 20 63 67 69 2e 70 61 72 61 6d 73 5b | from.a.form..value.=.cgi.params[ |
| 44640 | 27 50 41 52 41 4d 5f 4e 41 4d 45 27 5d 5b 30 5d 0d 0a 0d 0a 23 20 6f 75 74 70 75 74 20 61 20 64 | 'PARAM_NAME'][0]....#.output.a.d |
| 44660 | 6f 63 75 6d 65 6e 74 0d 0a 63 67 69 2e 6f 75 74 20 7b 0d 0a 20 20 20 20 63 67 69 2e 68 74 6d 6c | ocument..cgi.out.{......cgi.html |
| 44680 | 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 67 69 2e 68 65 61 64 20 7b 20 63 67 69 2e 74 69 74 6c 65 | .{..........cgi.head.{.cgi.title |
| 446a0 | 20 7b 20 22 48 6f 77 64 79 20 74 68 65 72 65 21 22 20 7d 20 7d 20 2b 0d 0a 20 20 20 20 20 20 20 | .{."Howdy.there!".}.}.+......... |
| 446c0 | 20 20 20 20 20 63 67 69 2e 62 6f 64 79 20 7b 20 63 67 69 2e 70 20 7b 20 22 59 6f 75 20 74 79 70 | .....cgi.body.{.cgi.p.{."You.typ |
| 446e0 | 65 64 3a 20 22 20 2b 20 63 67 69 2e 74 74 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ed:.".+.cgi.tt.{................ |
| 44700 | 20 20 20 20 20 20 43 47 49 2e 65 73 63 61 70 65 48 54 4d 4c 28 76 61 6c 75 65 29 20 7d 20 7d 20 | ......CGI.escapeHTML(value).}.}. |
| 44720 | 7d 0d 0a 20 20 20 20 7d 0d 0a 7d 0d 0a 0d 0a 72 65 71 75 69 72 65 20 27 63 67 69 27 0d 0a 63 67 | }......}..}....require.'cgi'..cg |
| 44740 | 69 20 3d 20 43 47 49 2e 6e 65 77 0d 0a 77 68 6f 20 20 20 3d 20 63 67 69 2e 70 61 72 61 6d 5b 22 | i.=.CGI.new..who...=.cgi.param[" |
| 44760 | 4e 61 6d 65 22 5d 5b 30 5d 20 20 20 20 20 23 20 66 69 72 73 74 20 70 61 72 61 6d 20 69 6e 20 6c | Name"][0].....#.first.param.in.l |
| 44780 | 69 73 74 0d 0a 70 68 6f 6e 65 20 3d 20 63 67 69 2e 70 61 72 61 6d 5b 22 4e 75 6d 62 65 72 22 5d | ist..phone.=.cgi.param["Number"] |
| 447a0 | 5b 30 5d 0d 0a 70 69 63 6b 73 20 3d 20 63 67 69 2e 70 61 72 61 6d 5b 22 43 68 6f 69 63 65 73 22 | [0]..picks.=.cgi.param["Choices" |
| 447c0 | 5d 20 20 20 20 20 23 20 63 6f 6d 70 6c 65 74 65 20 6c 69 73 74 0d 0a 0d 0a 70 72 69 6e 74 20 63 | ].....#.complete.list....print.c |
| 447e0 | 67 69 2e 68 65 61 64 65 72 28 20 27 74 79 70 65 27 20 3d 3e 20 27 74 65 78 74 2f 70 6c 61 69 6e | gi.header(.'type'.=>.'text/plain |
| 44800 | 27 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 78 70 69 72 65 73 27 20 | ',....................'expires'. |
| 44820 | 3d 3e 20 54 69 6d 65 2e 6e 6f 77 20 2b 20 28 33 20 2a 20 32 34 20 2a 20 36 30 20 2a 20 36 30 29 | =>.Time.now.+.(3.*.24.*.60.*.60) |
| 44840 | 20 29 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 39 2e 33 0d 0a 23 21 2f 75 73 72 | .)......#.@@PLEAC@@_19.3..#!/usr |
| 44860 | 2f 6c 6f 63 61 6c 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 77 65 62 77 68 6f 61 6d 69 20 | /local/bin/ruby.-w..#.webwhoami. |
| 44880 | 2d 20 73 68 6f 77 20 77 65 62 20 75 73 65 72 27 73 20 69 64 0d 0a 72 65 71 75 69 72 65 20 27 65 | -.show.web.user's.id..require.'e |
| 448a0 | 74 63 27 0d 0a 70 72 69 6e 74 20 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 3a 20 74 65 78 74 2f 70 | tc'..print."Content-Type:.text/p |
| 448c0 | 6c 61 69 6e 5c 6e 5c 6e 22 0d 0a 70 72 69 6e 74 20 22 52 75 6e 6e 69 6e 67 20 61 73 20 22 20 2b | lain\n\n"..print."Running.as.".+ |
| 448e0 | 20 45 74 63 2e 67 65 74 70 77 75 69 64 2e 6e 61 6d 65 20 2b 20 22 5c 6e 22 0d 0a 0d 0a 23 20 25 | .Etc.getpwuid.name.+."\n"....#.% |
| 44900 | 20 72 75 62 79 20 2d 77 63 20 63 67 69 2d 73 63 72 69 70 74 20 20 20 20 20 23 20 6a 75 73 74 20 | .ruby.-wc.cgi-script.....#.just. |
| 44920 | 63 68 65 63 6b 20 73 79 6e 74 61 78 0d 0a 0d 0a 23 20 25 20 72 75 62 79 20 2d 77 20 20 63 67 69 | check.syntax....#.%.ruby.-w..cgi |
| 44940 | 2d 73 63 72 69 70 74 20 20 20 20 20 23 20 70 61 72 61 6d 73 20 66 72 6f 6d 20 73 74 64 69 6e 0d | -script.....#.params.from.stdin. |
| 44960 | 0a 23 20 28 6f 66 66 6c 69 6e 65 20 6d 6f 64 65 3a 20 65 6e 74 65 72 20 6e 61 6d 65 3d 76 61 6c | .#.(offline.mode:.enter.name=val |
| 44980 | 75 65 20 70 61 69 72 73 20 6f 6e 20 73 74 61 6e 64 61 72 64 20 69 6e 70 75 74 29 0d 0a 23 20 6e | ue.pairs.on.standard.input)..#.n |
| 449a0 | 61 6d 65 3d 6a 6f 65 0d 0a 23 20 6e 75 6d 62 65 72 3d 31 30 0d 0a 23 20 5e 44 0d 0a 0d 0a 23 20 | ame=joe..#.number=10..#.^D....#. |
| 449c0 | 25 20 72 75 62 79 20 2d 77 20 20 63 67 69 2d 73 63 72 69 70 74 20 6e 61 6d 65 3d 6a 6f 65 20 6e | %.ruby.-w..cgi-script.name=joe.n |
| 449e0 | 75 6d 62 65 72 3d 31 30 20 20 20 20 20 23 20 72 75 6e 20 77 69 74 68 20 6d 6f 63 6b 20 66 6f 72 | umber=10.....#.run.with.mock.for |
| 44a00 | 6d 20 69 6e 70 75 74 0d 0a 23 20 25 20 72 75 62 79 20 2d 64 20 20 63 67 69 2d 73 63 72 69 70 74 | m.input..#.%.ruby.-d..cgi-script |
| 44a20 | 20 6e 61 6d 65 3d 6a 6f 65 20 6e 75 6d 62 65 72 3d 31 30 20 20 20 20 20 23 20 64 69 74 74 6f 2c | .name=joe.number=10.....#.ditto, |
| 44a40 | 20 75 6e 64 65 72 20 74 68 65 20 64 65 62 75 67 67 65 72 0d 0a 0d 0a 23 20 50 4f 53 54 20 6d 65 | .under.the.debugger....#.POST.me |
| 44a60 | 74 68 6f 64 20 73 63 72 69 70 74 20 69 6e 20 63 73 68 0d 0a 23 20 25 20 28 73 65 74 65 6e 76 20 | thod.script.in.csh..#.%.(setenv. |
| 44a80 | 48 54 54 50 5f 4d 45 54 48 4f 44 20 50 4f 53 54 3b 20 72 75 62 79 20 2d 77 20 63 67 69 2d 73 63 | HTTP_METHOD.POST;.ruby.-w.cgi-sc |
| 44aa0 | 72 69 70 74 20 6e 61 6d 65 3d 6a 6f 65 20 6e 75 6d 62 65 72 3d 31 30 29 0d 0a 23 20 50 4f 53 54 | ript.name=joe.number=10)..#.POST |
| 44ac0 | 20 6d 65 74 68 6f 64 20 73 63 72 69 70 74 20 69 6e 20 73 68 0d 0a 23 20 25 20 48 54 54 50 5f 4d | .method.script.in.sh..#.%.HTTP_M |
| 44ae0 | 45 54 48 4f 44 3d 50 4f 53 54 20 70 65 72 6c 20 2d 77 20 63 67 69 2d 73 63 72 69 70 74 20 6e 61 | ETHOD=POST.perl.-w.cgi-script.na |
| 44b00 | 6d 65 3d 6a 6f 65 20 6e 75 6d 62 65 72 3d 31 30 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 | me=joe.number=10......#.@@PLEAC@ |
| 44b20 | 40 5f 31 39 2e 34 0d 0a 23 20 72 75 62 79 20 68 61 73 20 73 65 76 65 72 61 6c 20 73 65 63 75 72 | @_19.4..#.ruby.has.several.secur |
| 44b40 | 69 74 79 20 6c 65 76 65 6c 73 2c 20 74 68 65 20 6c 65 76 65 6c 20 22 31 22 20 69 73 20 73 69 6d | ity.levels,.the.level."1".is.sim |
| 44b60 | 69 6c 61 72 20 74 6f 20 70 65 72 6c 73 20 74 61 69 6e 74 20 6d 6f 64 65 2e 0d 0a 23 20 49 74 20 | ilar.to.perls.taint.mode...#.It. |
| 44b80 | 63 61 6e 20 62 65 20 73 77 69 74 63 68 65 64 20 6f 6e 20 62 79 20 70 72 6f 76 69 64 69 6e 67 20 | can.be.switched.on.by.providing. |
| 44ba0 | 74 68 65 20 2d 54 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 70 61 72 61 6d 65 74 65 72 0d 0a 23 | the.-T.command.line.parameter..# |
| 44bc0 | 20 6f 72 20 62 79 20 73 65 74 74 69 6e 67 20 24 53 41 46 45 20 74 6f 20 31 2e 20 53 65 74 74 69 | .or.by.setting.$SAFE.to.1..Setti |
| 44be0 | 6e 67 20 24 53 41 46 45 20 74 6f 20 32 2c 33 20 6f 72 20 34 20 72 65 73 74 72 69 63 74 73 20 70 | ng.$SAFE.to.2,3.or.4.restricts.p |
| 44c00 | 6f 73 73 69 62 6c 65 0d 0a 23 20 68 61 72 6d 66 75 6c 20 6f 70 65 72 61 74 69 6f 6e 73 20 66 75 | ossible..#.harmful.operations.fu |
| 44c20 | 72 74 68 65 72 2e 0d 0a 0d 0a 23 21 2f 75 73 72 2f 62 69 6e 2f 72 75 62 79 20 2d 54 0d 0a 24 53 | rther.....#!/usr/bin/ruby.-T..$S |
| 44c40 | 41 46 45 20 3d 20 31 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 41 52 47 56 5b 30 5d 2c 20 22 77 22 29 | AFE.=.1..File.open(ARGV[0],."w") |
| 44c60 | 0d 0a 23 20 72 75 62 79 20 77 61 72 6e 73 20 77 69 74 68 3a 0d 0a 23 20 74 61 69 6e 74 31 2e 72 | ..#.ruby.warns.with:..#.taint1.r |
| 44c80 | 62 3a 32 3a 69 6e 20 60 69 6e 69 74 69 61 6c 69 7a 65 27 3a 20 49 6e 73 65 63 75 72 65 20 6f 70 | b:2:in.`initialize':.Insecure.op |
| 44ca0 | 65 72 61 74 69 6f 6e 20 2d 20 69 6e 69 74 69 61 6c 69 7a 65 20 28 53 65 63 75 72 69 74 79 45 72 | eration.-.initialize.(SecurityEr |
| 44cc0 | 72 6f 72 29 0d 0a 0d 0a 24 53 41 46 45 20 3d 20 31 0d 0a 66 69 6c 65 20 3d 20 41 52 47 56 5b 30 | ror)....$SAFE.=.1..file.=.ARGV[0 |
| 44ce0 | 5d 0d 0a 75 6e 6c 65 73 73 20 2f 5e 28 5b 5c 77 2e 2d 5d 2b 29 24 2f 2e 6d 61 74 63 68 28 66 69 | ]..unless./^([\w.-]+)$/.match(fi |
| 44d00 | 6c 65 29 0d 0a 20 20 20 20 72 61 69 73 65 20 22 66 69 6c 65 6e 61 6d 65 20 23 7b 66 69 6c 65 7d | le)......raise."filename.#{file} |
| 44d20 | 20 68 61 73 20 69 6e 76 61 6c 69 64 20 63 68 61 72 61 63 74 65 72 73 22 0d 0a 65 6e 64 0d 0a 66 | .has.invalid.characters"..end..f |
| 44d40 | 69 6c 65 20 3d 20 24 31 0d 0a 23 20 49 6e 20 72 75 62 79 2c 20 65 76 65 6e 20 74 68 65 20 62 61 | ile.=.$1..#.In.ruby,.even.the.ba |
| 44d60 | 63 6b 20 72 65 66 65 72 65 6e 63 65 20 66 72 6f 6d 20 61 20 72 65 67 75 6c 61 72 20 65 78 70 72 | ck.reference.from.a.regular.expr |
| 44d80 | 65 73 73 69 6f 6e 20 73 74 61 79 73 20 74 61 69 6e 74 65 64 2e 0d 0a 23 20 79 6f 75 20 6e 65 65 | ession.stays.tainted...#.you.nee |
| 44da0 | 64 20 74 6f 20 65 78 70 6c 69 63 69 74 6c 79 20 75 6e 74 61 69 6e 74 20 74 68 65 20 76 61 72 69 | d.to.explicitly.untaint.the.vari |
| 44dc0 | 61 62 6c 65 3a 0d 0a 66 69 6c 65 2e 75 6e 74 61 69 6e 74 0d 0a 46 69 6c 65 2e 6f 70 65 6e 28 66 | able:..file.untaint..File.open(f |
| 44de0 | 69 6c 65 2c 20 22 77 22 29 0d 0a 0d 0a 23 20 52 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 20 65 78 | ile,."w")....#.Race.condition.ex |
| 44e00 | 69 73 74 73 20 6c 69 6b 65 20 69 6e 20 70 65 72 6c 3a 0d 0a 75 6e 6c 65 73 73 20 46 69 6c 65 2e | ists.like.in.perl:..unless.File. |
| 44e20 | 65 78 69 73 74 73 28 66 69 6c 65 6e 61 6d 65 29 20 20 20 20 20 20 20 20 23 20 57 72 6f 6e 67 20 | exists(filename)........#.Wrong. |
| 44e40 | 62 65 63 61 75 73 65 20 6f 66 20 72 61 63 65 20 63 6f 6e 64 69 74 69 6f 6e 0d 0a 20 20 20 20 46 | because.of.race.condition......F |
| 44e60 | 69 6c 65 2e 6f 70 65 6e 28 66 69 6c 65 6e 61 6d 65 2c 20 22 77 22 29 0d 0a 65 6e 64 0d 0a 0d 0a | ile.open(filename,."w")..end.... |
| 44e80 | 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 31 39 2e 31 30 0d 0a 70 72 65 66 65 72 65 6e 63 | ....#.@@PLEAC@@_19.10..preferenc |
| 44ea0 | 65 5f 76 61 6c 75 65 20 3d 20 63 67 69 2e 63 6f 6f 6b 69 65 73 5b 22 70 72 65 66 65 72 65 6e 63 | e_value.=.cgi.cookies["preferenc |
| 44ec0 | 65 20 6e 61 6d 65 22 5d 5b 30 5d 0d 0a 0d 0a 70 61 63 6b 65 64 5f 63 6f 6f 6b 69 65 20 3d 20 43 | e.name"][0]....packed_cookie.=.C |
| 44ee0 | 47 49 3a 3a 43 6f 6f 6b 69 65 2e 6e 65 77 28 22 6e 61 6d 65 22 20 3d 3e 20 22 70 72 65 66 65 72 | GI::Cookie.new("name".=>."prefer |
| 44f00 | 65 6e 63 65 20 6e 61 6d 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ence.name",..................... |
| 44f20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61 6c 75 65 22 20 3d 3e 20 22 77 68 61 74 65 76 65 | ............."value".=>."whateve |
| 44f40 | 72 20 79 6f 75 27 64 20 6c 69 6b 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r.you'd.like",.................. |
| 44f60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 65 78 70 69 72 65 73 22 20 3d 3e 20 54 69 6d | ................"expires".=>.Tim |
| 44f80 | 65 2e 6c 6f 63 61 6c 28 54 69 6d 65 2e 6e 6f 77 2e 79 65 61 72 20 2b 20 32 2c 0d 0a 20 20 20 20 | e.local(Time.now.year.+.2,...... |
| 44fa0 | 54 69 6d 65 2e 6e 6f 77 2e 6d 6f 6e 2c 20 54 69 6d 65 2e 6e 6f 77 2e 64 61 79 2c 20 54 69 6d 65 | Time.now.mon,.Time.now.day,.Time |
| 44fc0 | 2e 6e 6f 77 2e 68 6f 75 72 2c 20 54 69 6d 65 2e 6e 6f 77 2e 6d 69 6e 2c 20 54 69 6d 65 2e 6e 6f | .now.hour,.Time.now.min,.Time.no |
| 44fe0 | 77 2e 73 65 63 29 20 29 0d 0a 0d 0a 63 67 69 2e 68 65 61 64 65 72 28 22 63 6f 6f 6b 69 65 22 20 | w.sec).)....cgi.header("cookie". |
| 45000 | 3d 3e 20 5b 70 61 63 6b 65 64 5f 63 6f 6f 6b 69 65 5d 29 0d 0a 0d 0a 23 21 2f 75 73 72 2f 6c 6f | =>.[packed_cookie])....#!/usr/lo |
| 45020 | 63 61 6c 2f 62 69 6e 2f 72 75 62 79 20 2d 77 0d 0a 23 20 69 63 5f 63 6f 6f 6b 69 65 73 20 2d 20 | cal/bin/ruby.-w..#.ic_cookies.-. |
| 45040 | 73 61 6d 70 6c 65 20 43 47 49 20 73 63 72 69 70 74 20 74 68 61 74 20 75 73 65 73 20 61 20 63 6f | sample.CGI.script.that.uses.a.co |
| 45060 | 6f 6b 69 65 0d 0a 72 65 71 75 69 72 65 20 27 63 67 69 27 0d 0a 0d 0a 63 67 69 20 3d 20 43 47 49 | okie..require.'cgi'....cgi.=.CGI |
| 45080 | 2e 6e 65 77 28 27 68 74 6d 6c 33 27 29 0d 0a 0d 0a 63 6f 6f 6b 6e 61 6d 65 20 3d 20 22 66 61 76 | .new('html3')....cookname.=."fav |
| 450a0 | 6f 72 69 74 65 20 69 63 65 20 63 72 65 61 6d 22 0d 0a 66 61 76 6f 72 69 74 65 20 3d 20 63 67 69 | orite.ice.cream"..favorite.=.cgi |
| 450c0 | 2e 70 61 72 61 6d 73 5b 22 66 6c 61 76 6f 72 22 5d 5b 30 5d 0d 0a 74 61 73 74 79 20 20 20 20 3d | .params["flavor"][0]..tasty....= |
| 450e0 | 20 63 67 69 2e 63 6f 6f 6b 69 65 73 5b 63 6f 6f 6b 6e 61 6d 65 5d 5b 30 5d 20 7c 7c 20 27 6d 69 | .cgi.cookies[cookname][0].||.'mi |
| 45100 | 6e 74 27 0d 0a 0d 0a 75 6e 6c 65 73 73 20 66 61 76 6f 72 69 74 65 0d 0a 20 20 20 20 63 67 69 2e | nt'....unless.favorite......cgi. |
| 45120 | 6f 75 74 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 67 69 2e 68 74 6d 6c 20 7b 0d 0a 20 20 20 20 20 | out.{..........cgi.html.{....... |
| 45140 | 20 20 20 20 20 20 20 63 67 69 2e 68 65 61 64 20 7b 20 63 67 69 2e 74 69 74 6c 65 20 7b 20 22 49 | .......cgi.head.{.cgi.title.{."I |
| 45160 | 63 65 20 43 6f 6f 6b 69 65 73 22 20 7d 20 7d 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 | ce.Cookies".}.}.+..............c |
| 45180 | 67 69 2e 62 6f 64 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 67 69 2e 68 | gi.body.{..................cgi.h |
| 451a0 | 31 20 7b 20 22 48 65 6c 6c 6f 20 49 63 65 20 43 72 65 61 6d 22 20 7d 20 2b 0d 0a 20 20 20 20 20 | 1.{."Hello.Ice.Cream".}.+....... |
| 451c0 | 20 20 20 20 20 20 20 20 20 20 20 63 67 69 2e 68 72 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | ...........cgi.hr.+............. |
| 451e0 | 20 20 20 20 20 63 67 69 2e 66 6f 72 6d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....cgi.form.{................. |
| 45200 | 20 20 20 20 20 63 67 69 2e 70 20 7b 20 22 50 6c 65 61 73 65 20 73 65 6c 65 63 74 20 61 20 66 6c | .....cgi.p.{."Please.select.a.fl |
| 45220 | 61 76 6f 72 3a 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | avor:.".+....................... |
| 45240 | 20 20 20 20 20 20 20 63 67 69 2e 74 65 78 74 5f 66 69 65 6c 64 28 22 66 6c 61 76 6f 72 22 2c 20 | .......cgi.text_field("flavor",. |
| 45260 | 74 61 73 74 79 20 29 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 20 2b 0d 0a | tasty.).}..................}.+.. |
| 45280 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 67 69 2e 68 72 0d 0a 20 20 20 20 20 20 20 20 | ................cgi.hr.......... |
| 452a0 | 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 65 6c 73 65 0d 0a 20 | ....}..........}......}..else... |
| 452c0 | 20 20 20 63 6f 6f 6b 69 65 20 3d 20 43 47 49 3a 3a 43 6f 6f 6b 69 65 2e 6e 65 77 28 20 22 6e 61 | ...cookie.=.CGI::Cookie.new(."na |
| 452e0 | 6d 65 22 20 20 20 20 3d 3e 20 63 6f 6f 6b 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 | me"....=>.cookname,............. |
| 45300 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 76 61 6c 75 65 22 20 20 20 3d 3e 20 | ..................."value"...=>. |
| 45320 | 66 61 76 6f 72 69 74 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | favorite,....................... |
| 45340 | 20 20 20 20 20 20 20 20 20 22 65 78 70 69 72 65 73 22 20 3d 3e 20 54 69 6d 65 2e 6c 6f 63 61 6c | ........."expires".=>.Time.local |
| 45360 | 28 54 69 6d 65 2e 6e 6f 77 2e 79 65 61 72 20 2b 20 32 2c 0d 0a 54 69 6d 65 2e 6e 6f 77 2e 6d 6f | (Time.now.year.+.2,..Time.now.mo |
| 45380 | 6e 2c 20 54 69 6d 65 2e 6e 6f 77 2e 64 61 79 2c 20 54 69 6d 65 2e 6e 6f 77 2e 68 6f 75 72 2c 20 | n,.Time.now.day,.Time.now.hour,. |
| 453a0 | 54 69 6d 65 2e 6e 6f 77 2e 6d 69 6e 2c 20 54 69 6d 65 2e 6e 6f 77 2e 73 65 63 29 20 29 0d 0a 20 | Time.now.min,.Time.now.sec).)... |
| 453c0 | 20 20 20 63 67 69 2e 6f 75 74 28 22 63 6f 6f 6b 69 65 22 20 3d 3e 20 5b 63 6f 6f 6b 69 65 5d 29 | ...cgi.out("cookie".=>.[cookie]) |
| 453e0 | 20 7b 0d 0a 20 20 20 20 20 20 20 20 63 67 69 2e 68 74 6d 6c 20 7b 0d 0a 20 20 20 20 20 20 20 20 | .{..........cgi.html.{.......... |
| 45400 | 20 20 20 20 63 67 69 2e 68 65 61 64 20 7b 20 63 67 69 2e 74 69 74 6c 65 20 7b 20 22 49 63 65 20 | ....cgi.head.{.cgi.title.{."Ice. |
| 45420 | 43 6f 6f 6b 69 65 73 22 20 7d 20 7d 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 67 69 2e | Cookies".}.}.+..............cgi. |
| 45440 | 62 6f 64 79 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 67 69 2e 68 31 20 7b | body.{..................cgi.h1.{ |
| 45460 | 20 22 48 65 6c 6c 6f 20 49 63 65 20 43 72 65 61 6d 22 20 7d 20 2b 0d 0a 20 20 20 20 20 20 20 20 | ."Hello.Ice.Cream".}.+.......... |
| 45480 | 20 20 20 20 20 20 20 20 63 67 69 2e 70 20 7b 20 22 59 6f 75 20 63 68 6f 73 65 20 61 73 20 79 6f | ........cgi.p.{."You.chose.as.yo |
| 454a0 | 75 72 20 66 61 76 6f 72 69 74 65 20 66 6c 61 76 6f 72 20 60 23 7b 66 61 76 6f 72 69 74 65 7d 27 | ur.favorite.flavor.`#{favorite}' |
| 454c0 | 2e 22 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a | .".}..............}..........}.. |
| 454e0 | 20 20 20 20 7d 0d 0a 65 6e 64 0d 0a 0d 0a 0d 0a 23 20 40 40 50 4c 45 41 43 40 40 5f 32 30 2e 39 | ....}..end......#.@@PLEAC@@_20.9 |
| 45500 | 0d 0a 64 65 66 20 74 65 6d 70 6c 61 74 65 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 2c 20 66 69 6c | ..def.templatefile(filename,.fil |
| 45520 | 6c 69 6e 67 73 29 0d 0a 20 20 20 20 61 46 69 6c 65 20 3d 20 46 69 6c 65 2e 6e 65 77 28 66 69 6c | lings)......aFile.=.File.new(fil |
| 45540 | 65 6e 61 6d 65 2c 20 22 72 22 29 0d 0a 20 20 20 20 74 65 78 74 20 3d 20 61 46 69 6c 65 2e 72 65 | ename,."r")......text.=.aFile.re |
| 45560 | 61 64 28 29 0d 0a 20 20 20 20 61 46 69 6c 65 2e 63 6c 6f 73 65 28 29 0d 0a 20 20 20 20 70 61 74 | ad()......aFile.close()......pat |
| 45580 | 74 65 72 6e 20 3d 20 52 65 67 65 78 70 2e 6e 65 77 28 27 25 25 28 2e 2a 3f 29 25 25 27 29 0d 0a | tern.=.Regexp.new('%%(.*?)%%').. |
| 455a0 | 20 20 20 20 74 65 78 74 2e 67 73 75 62 21 28 70 61 74 74 65 72 6e 29 20 7b 0d 0a 20 20 20 20 20 | ....text.gsub!(pattern).{....... |
| 455c0 | 20 20 20 66 69 6c 6c 69 6e 67 73 5b 24 31 5d 20 7c 7c 20 22 22 0d 0a 20 20 20 20 7d 0d 0a 20 20 | ...fillings[$1].||.""......}.... |
| 455e0 | 20 20 74 65 78 74 0d 0a 65 6e 64 0d 0a 0d 0a 66 69 65 6c 64 73 20 3d 20 7b 0d 0a 20 20 20 20 27 | ..text..end....fields.=.{......' |
| 45600 | 75 73 65 72 6e 61 6d 65 27 20 3d 3e 20 77 68 61 74 73 5f 68 69 73 5f 6e 61 6d 65 2c 0d 0a 20 20 | username'.=>.whats_his_name,.... |
| 45620 | 20 20 27 63 6f 75 6e 74 27 20 3d 3e 20 6c 6f 67 69 6e 5f 63 6f 75 6e 74 2c 0d 0a 20 20 20 20 27 | ..'count'.=>.login_count,......' |
| 45640 | 74 6f 74 61 6c 27 20 3d 3e 20 6d 69 6e 75 74 65 73 5f 75 73 65 64 0d 0a 7d 0d 0a 70 75 74 73 20 | total'.=>.minutes_used..}..puts. |
| 45660 | 74 65 6d 70 6c 61 74 65 66 69 6c 65 28 27 73 69 6d 70 6c 65 2e 74 65 6d 70 6c 61 74 65 27 2c 20 | templatefile('simple.template',. |
| 45680 | 66 69 65 6c 64 73 29 0d 0a 0d 0a 23 20 40 40 49 4e 43 4f 4d 50 4c 45 54 45 40 40 0d 0a 23 20 41 | fields)....#.@@INCOMPLETE@@..#.A |
| 456a0 | 6e 20 65 78 61 6d 70 6c 65 20 75 73 69 6e 67 20 64 61 74 61 62 61 73 65 73 20 69 73 20 6d 69 73 | n.example.using.databases.is.mis |
| 456c0 | 73 69 6e 67 0d 0a 0d 0a | sing.... |