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.... |