ripxplore 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/ripxplore.rb +188 -0
- data/doc/classes/A2Dsk.html +226 -0
- data/doc/classes/A2Dsk.src/M000005.html +18 -0
- data/doc/classes/A2Dsk.src/M000006.html +18 -0
- data/doc/classes/A2Dsk.src/M000007.html +18 -0
- data/doc/classes/A2Dsk.src/M000008.html +18 -0
- data/doc/classes/A2Dsk.src/M000009.html +18 -0
- data/doc/classes/A2Dsk.src/M000010.html +22 -0
- data/doc/classes/A2DskDosOrder.html +139 -0
- data/doc/classes/A2DskDosOrder.src/M000242.html +18 -0
- data/doc/classes/A2DskPhysicalOrder.html +139 -0
- data/doc/classes/A2DskPhysicalOrder.src/M000019.html +18 -0
- data/doc/classes/Apple2.html +187 -0
- data/doc/classes/Apple2.src/M000128.html +18 -0
- data/doc/classes/Apple2.src/M000129.html +18 -0
- data/doc/classes/Apple2.src/M000130.html +18 -0
- data/doc/classes/Apple2.src/M000131.html +19 -0
- data/doc/classes/AppleBinary.html +193 -0
- data/doc/classes/AppleBinary.src/M000089.html +20 -0
- data/doc/classes/AppleBinary.src/M000090.html +18 -0
- data/doc/classes/AppleBinary.src/M000091.html +18 -0
- data/doc/classes/AppleBinary.src/M000092.html +18 -0
- data/doc/classes/AppleCPM.html +228 -0
- data/doc/classes/AppleCPM.src/M000243.html +18 -0
- data/doc/classes/AppleCPM.src/M000244.html +18 -0
- data/doc/classes/AppleCPM.src/M000245.html +21 -0
- data/doc/classes/AppleCPM.src/M000246.html +40 -0
- data/doc/classes/AppleDos.html +275 -0
- data/doc/classes/AppleDos.src/M000161.html +18 -0
- data/doc/classes/AppleDos.src/M000162.html +18 -0
- data/doc/classes/AppleDos.src/M000163.html +18 -0
- data/doc/classes/AppleDos.src/M000164.html +86 -0
- data/doc/classes/AppleHiResPic.html +279 -0
- data/doc/classes/AppleHiResPic.src/M000083.html +22 -0
- data/doc/classes/AppleHiResPic.src/M000084.html +18 -0
- data/doc/classes/AppleHiResPic.src/M000085.html +22 -0
- data/doc/classes/AppleHiResPic.src/M000086.html +57 -0
- data/doc/classes/AppleHiResPic.src/M000087.html +18 -0
- data/doc/classes/AppleHiResPic.src/M000088.html +18 -0
- data/doc/classes/AppleText.html +156 -0
- data/doc/classes/AppleText.src/M000142.html +21 -0
- data/doc/classes/AppleText.src/M000143.html +20 -0
- data/doc/classes/AppleWorksWP.html +160 -0
- data/doc/classes/AppleWorksWP.src/M000081.html +20 -0
- data/doc/classes/AppleWorksWP.src/M000082.html +45 -0
- data/doc/classes/Applesoft.html +169 -0
- data/doc/classes/Applesoft.src/M000175.html +21 -0
- data/doc/classes/Applesoft.src/M000176.html +75 -0
- data/doc/classes/Atari800.html +169 -0
- data/doc/classes/Atari800.src/M000177.html +23 -0
- data/doc/classes/Atari800.src/M000178.html +18 -0
- data/doc/classes/Atari800.src/M000179.html +19 -0
- data/doc/classes/AtariBasic.html +215 -0
- data/doc/classes/AtariBasic.src/M000204.html +20 -0
- data/doc/classes/AtariBasic.src/M000205.html +108 -0
- data/doc/classes/AtariBinary.html +193 -0
- data/doc/classes/AtariBinary.src/M000238.html +20 -0
- data/doc/classes/AtariBinary.src/M000239.html +18 -0
- data/doc/classes/AtariBinary.src/M000240.html +18 -0
- data/doc/classes/AtariBinary.src/M000241.html +18 -0
- data/doc/classes/AtariDos.html +186 -0
- data/doc/classes/AtariDos.src/M000047.html +18 -0
- data/doc/classes/AtariDos.src/M000048.html +43 -0
- data/doc/classes/AtariText.html +159 -0
- data/doc/classes/AtariText.src/M000002.html +20 -0
- data/doc/classes/AtariText.src/M000003.html +18 -0
- data/doc/classes/Atr.html +271 -0
- data/doc/classes/Atr.src/M000208.html +18 -0
- data/doc/classes/Atr.src/M000209.html +18 -0
- data/doc/classes/Atr.src/M000210.html +19 -0
- data/doc/classes/Atr.src/M000211.html +18 -0
- data/doc/classes/Atr.src/M000212.html +18 -0
- data/doc/classes/Atr.src/M000213.html +19 -0
- data/doc/classes/Atr.src/M000214.html +19 -0
- data/doc/classes/C64.html +206 -0
- data/doc/classes/C64.src/M000020.html +18 -0
- data/doc/classes/C64.src/M000021.html +31 -0
- data/doc/classes/C64.src/M000022.html +22 -0
- data/doc/classes/C64.src/M000023.html +19 -0
- data/doc/classes/C64.src/M000024.html +19 -0
- data/doc/classes/C64BasicPrg.html +201 -0
- data/doc/classes/C64BasicPrg.src/M000035.html +20 -0
- data/doc/classes/C64BasicPrg.src/M000036.html +59 -0
- data/doc/classes/C64Prg.html +190 -0
- data/doc/classes/C64Prg.src/M000169.html +20 -0
- data/doc/classes/C64Prg.src/M000170.html +18 -0
- data/doc/classes/C64Prg.src/M000171.html +18 -0
- data/doc/classes/C64Prg.src/M000172.html +20 -0
- data/doc/classes/C64PrgText.html +139 -0
- data/doc/classes/C64PrgText.src/M000237.html +18 -0
- data/doc/classes/C64Seq.html +156 -0
- data/doc/classes/C64Seq.src/M000013.html +20 -0
- data/doc/classes/C64Seq.src/M000014.html +18 -0
- data/doc/classes/CPMFile.html +156 -0
- data/doc/classes/CPMFile.src/M000108.html +20 -0
- data/doc/classes/CPMFile.src/M000109.html +18 -0
- data/doc/classes/CbmDos.html +172 -0
- data/doc/classes/CbmDos.src/M000182.html +18 -0
- data/doc/classes/CbmDos.src/M000183.html +42 -0
- data/doc/classes/CbmFile.html +156 -0
- data/doc/classes/CbmFile.src/M000235.html +20 -0
- data/doc/classes/CbmFile.src/M000236.html +18 -0
- data/doc/classes/D64.html +247 -0
- data/doc/classes/D64.src/M000037.html +18 -0
- data/doc/classes/D64.src/M000038.html +18 -0
- data/doc/classes/D64.src/M000039.html +18 -0
- data/doc/classes/D64.src/M000040.html +22 -0
- data/doc/classes/D64.src/M000041.html +18 -0
- data/doc/classes/D64.src/M000042.html +21 -0
- data/doc/classes/D65.html +170 -0
- data/doc/classes/D65.src/M000049.html +22 -0
- data/doc/classes/D65.src/M000050.html +68 -0
- data/doc/classes/DumpUtilities.html +152 -0
- data/doc/classes/DumpUtilities.src/M000077.html +33 -0
- data/doc/classes/DumpUtilities.src/M000078.html +27 -0
- data/doc/classes/FileCache.html +210 -0
- data/doc/classes/FileCache.src/M000135.html +18 -0
- data/doc/classes/FileCache.src/M000136.html +20 -0
- data/doc/classes/FileCache.src/M000137.html +22 -0
- data/doc/classes/FileCache.src/M000138.html +32 -0
- data/doc/classes/FileCacheItem.html +152 -0
- data/doc/classes/FileCacheItem.src/M000165.html +18 -0
- data/doc/classes/FileCacheItem.src/M000166.html +18 -0
- data/doc/classes/FileContainer.html +146 -0
- data/doc/classes/FileContainer.src/M000232.html +26 -0
- data/doc/classes/FileSystem.html +252 -0
- data/doc/classes/FileSystem.src/M000069.html +18 -0
- data/doc/classes/FileSystem.src/M000070.html +18 -0
- data/doc/classes/FileSystem.src/M000071.html +18 -0
- data/doc/classes/FileSystem.src/M000072.html +18 -0
- data/doc/classes/FileSystem.src/M000073.html +18 -0
- data/doc/classes/FileSystem.src/M000074.html +18 -0
- data/doc/classes/FileSystem.src/M000075.html +20 -0
- data/doc/classes/FileSystem.src/M000076.html +25 -0
- data/doc/classes/FileSystemImage.html +430 -0
- data/doc/classes/FileSystemImage.src/M000215.html +19 -0
- data/doc/classes/FileSystemImage.src/M000216.html +41 -0
- data/doc/classes/FileSystemImage.src/M000217.html +27 -0
- data/doc/classes/FileSystemImage.src/M000218.html +18 -0
- data/doc/classes/FileSystemImage.src/M000219.html +18 -0
- data/doc/classes/FileSystemImage.src/M000220.html +18 -0
- data/doc/classes/FileSystemImage.src/M000221.html +22 -0
- data/doc/classes/FileSystemImage.src/M000222.html +19 -0
- data/doc/classes/FileSystemImage.src/M000223.html +18 -0
- data/doc/classes/FileSystemImage.src/M000224.html +18 -0
- data/doc/classes/FileSystemImage.src/M000225.html +18 -0
- data/doc/classes/FileSystemImage.src/M000226.html +18 -0
- data/doc/classes/FileSystemImage.src/M000227.html +20 -0
- data/doc/classes/FileSystemImage.src/M000228.html +22 -0
- data/doc/classes/FileSystemImage.src/M000229.html +22 -0
- data/doc/classes/FileSystemImage.src/M000230.html +18 -0
- data/doc/classes/FileSystemImage.src/M000231.html +23 -0
- data/doc/classes/G64.html +257 -0
- data/doc/classes/G64.src/M000093.html +30 -0
- data/doc/classes/G64.src/M000094.html +18 -0
- data/doc/classes/G64.src/M000095.html +18 -0
- data/doc/classes/G64.src/M000096.html +17 -0
- data/doc/classes/G64.src/M000097.html +18 -0
- data/doc/classes/G64.src/M000098.html +18 -0
- data/doc/classes/G64.src/M000099.html +21 -0
- data/doc/classes/GenericFile.html +157 -0
- data/doc/classes/GenericFile.src/M000167.html +20 -0
- data/doc/classes/GenericFile.src/M000168.html +18 -0
- data/doc/classes/HostSystem.html +225 -0
- data/doc/classes/HostSystem.src/M000025.html +22 -0
- data/doc/classes/HostSystem.src/M000026.html +18 -0
- data/doc/classes/HostSystem.src/M000027.html +18 -0
- data/doc/classes/HostSystem.src/M000028.html +22 -0
- data/doc/classes/HostSystem.src/M000029.html +33 -0
- data/doc/classes/HostSystem.src/M000030.html +18 -0
- data/doc/classes/ImageFormat.html +415 -0
- data/doc/classes/ImageFormat.src/M000144.html +18 -0
- data/doc/classes/ImageFormat.src/M000145.html +18 -0
- data/doc/classes/ImageFormat.src/M000146.html +18 -0
- data/doc/classes/ImageFormat.src/M000147.html +18 -0
- data/doc/classes/ImageFormat.src/M000148.html +18 -0
- data/doc/classes/ImageFormat.src/M000149.html +22 -0
- data/doc/classes/ImageFormat.src/M000150.html +19 -0
- data/doc/classes/ImageFormat.src/M000151.html +18 -0
- data/doc/classes/ImageFormat.src/M000152.html +18 -0
- data/doc/classes/ImageFormat.src/M000153.html +18 -0
- data/doc/classes/ImageFormat.src/M000154.html +18 -0
- data/doc/classes/ImageFormat.src/M000155.html +18 -0
- data/doc/classes/ImageFormat.src/M000156.html +18 -0
- data/doc/classes/ImageFormat.src/M000157.html +18 -0
- data/doc/classes/ImageFormat.src/M000158.html +20 -0
- data/doc/classes/ImageFormat.src/M000159.html +26 -0
- data/doc/classes/ImageFormat.src/M000160.html +18 -0
- data/doc/classes/ImageSniffing.html +152 -0
- data/doc/classes/ImageSniffing.src/M000051.html +57 -0
- data/doc/classes/ImageSniffing.src/M000052.html +131 -0
- data/doc/classes/IntegerBASIC.html +247 -0
- data/doc/classes/IntegerBASIC.src/M000206.html +20 -0
- data/doc/classes/IntegerBASIC.src/M000207.html +86 -0
- data/doc/classes/MBasic.html +182 -0
- data/doc/classes/MBasic.src/M000011.html +20 -0
- data/doc/classes/MBasic.src/M000012.html +22 -0
- data/doc/classes/NADOLDos.html +187 -0
- data/doc/classes/NADOLDos.src/M000180.html +18 -0
- data/doc/classes/NADOLDos.src/M000181.html +52 -0
- data/doc/classes/NADOLFile.html +157 -0
- data/doc/classes/NADOLFile.src/M000045.html +20 -0
- data/doc/classes/NADOLFile.src/M000046.html +18 -0
- data/doc/classes/NADOLTokens.html +170 -0
- data/doc/classes/NADOLTokens.src/M000018.html +41 -0
- data/doc/classes/NativeFileType.html +444 -0
- data/doc/classes/NativeFileType.src/M000110.html +22 -0
- data/doc/classes/NativeFileType.src/M000111.html +18 -0
- data/doc/classes/NativeFileType.src/M000112.html +18 -0
- data/doc/classes/NativeFileType.src/M000113.html +18 -0
- data/doc/classes/NativeFileType.src/M000114.html +18 -0
- data/doc/classes/NativeFileType.src/M000115.html +18 -0
- data/doc/classes/NativeFileType.src/M000116.html +18 -0
- data/doc/classes/NativeFileType.src/M000117.html +23 -0
- data/doc/classes/NativeFileType.src/M000118.html +18 -0
- data/doc/classes/NativeFileType.src/M000119.html +18 -0
- data/doc/classes/NativeFileType.src/M000120.html +24 -0
- data/doc/classes/NativeFileType.src/M000121.html +35 -0
- data/doc/classes/NativeFileType.src/M000122.html +24 -0
- data/doc/classes/NativeFileType.src/M000123.html +18 -0
- data/doc/classes/NativeFileType.src/M000124.html +18 -0
- data/doc/classes/NativeFileType.src/M000125.html +18 -0
- data/doc/classes/NativeFileType.src/M000126.html +20 -0
- data/doc/classes/NativeFileType.src/M000127.html +27 -0
- data/doc/classes/PNG/Canvas.html +273 -0
- data/doc/classes/PNG/Canvas.src/M000196.html +20 -0
- data/doc/classes/PNG/Canvas.src/M000197.html +20 -0
- data/doc/classes/PNG/Canvas.src/M000198.html +20 -0
- data/doc/classes/PNG/Canvas.src/M000199.html +22 -0
- data/doc/classes/PNG/Canvas.src/M000200.html +18 -0
- data/doc/classes/PNG/Canvas.src/M000201.html +73 -0
- data/doc/classes/PNG/Color.html +338 -0
- data/doc/classes/PNG/Color.src/M000189.html +18 -0
- data/doc/classes/PNG/Color.src/M000190.html +16 -0
- data/doc/classes/PNG/Color.src/M000191.html +16 -0
- data/doc/classes/PNG/Color.src/M000192.html +16 -0
- data/doc/classes/PNG/Color.src/M000193.html +16 -0
- data/doc/classes/PNG/Color.src/M000194.html +21 -0
- data/doc/classes/PNG/Color.src/M000195.html +18 -0
- data/doc/classes/PNG.html +229 -0
- data/doc/classes/PNG.src/M000185.html +18 -0
- data/doc/classes/PNG.src/M000186.html +21 -0
- data/doc/classes/PNG.src/M000187.html +26 -0
- data/doc/classes/PNG.src/M000188.html +26 -0
- data/doc/classes/PascalDos.html +203 -0
- data/doc/classes/PascalDos.src/M000132.html +18 -0
- data/doc/classes/PascalDos.src/M000133.html +21 -0
- data/doc/classes/PascalDos.src/M000134.html +62 -0
- data/doc/classes/PascalFile.html +169 -0
- data/doc/classes/PascalFile.src/M000173.html +20 -0
- data/doc/classes/PascalFile.src/M000174.html +18 -0
- data/doc/classes/ProDos.html +164 -0
- data/doc/classes/ProDos.src/M000102.html +18 -0
- data/doc/classes/ProDos.src/M000103.html +22 -0
- data/doc/classes/ProDosFile.html +187 -0
- data/doc/classes/ProDosFile.src/M000015.html +20 -0
- data/doc/classes/ProDosFile.src/M000016.html +18 -0
- data/doc/classes/ProDosFile.src/M000017.html +19 -0
- data/doc/classes/Proc.html +315 -0
- data/doc/classes/Proc.src/M000053.html +21 -0
- data/doc/classes/Proc.src/M000054.html +19 -0
- data/doc/classes/Proc.src/M000055.html +22 -0
- data/doc/classes/Proc.src/M000056.html +22 -0
- data/doc/classes/Proc.src/M000057.html +22 -0
- data/doc/classes/Proc.src/M000058.html +19 -0
- data/doc/classes/Proc.src/M000059.html +16 -0
- data/doc/classes/Proc.src/M000060.html +20 -0
- data/doc/classes/Proc.src/M000061.html +18 -0
- data/doc/classes/Proc.src/M000062.html +16 -0
- data/doc/classes/Proc.src/M000063.html +16 -0
- data/doc/classes/ProcSource.html +146 -0
- data/doc/classes/ProcSource.src/M000248.html +38 -0
- data/doc/classes/ProcSource.src/M000249.html +109 -0
- data/doc/classes/RDoc.html +135 -0
- data/doc/classes/RDoc.src/M000247.html +40 -0
- data/doc/classes/RawDisk.html +157 -0
- data/doc/classes/RawDisk.src/M000100.html +18 -0
- data/doc/classes/RawDisk.src/M000101.html +18 -0
- data/doc/classes/RipXplore.html +124 -0
- data/doc/classes/RipXploreLog.html +167 -0
- data/doc/classes/RipXploreLog.src/M000139.html +18 -0
- data/doc/classes/RipXploreLog.src/M000140.html +20 -0
- data/doc/classes/RipXploreLog.src/M000141.html +18 -0
- data/doc/classes/ScAsm.html +145 -0
- data/doc/classes/ScAsm.src/M000004.html +45 -0
- data/doc/classes/SubclassTracking.html +138 -0
- data/doc/classes/SubclassTracking.src/M000250.html +23 -0
- data/doc/classes/TestFileCache.html +137 -0
- data/doc/classes/TestFileCache.src/M000184.html +21 -0
- data/doc/classes/Trs80.html +157 -0
- data/doc/classes/Trs80.src/M000043.html +18 -0
- data/doc/classes/Trs80.src/M000044.html +18 -0
- data/doc/classes/Trs80Cmd.html +217 -0
- data/doc/classes/Trs80Cmd.src/M000104.html +19 -0
- data/doc/classes/Trs80Cmd.src/M000105.html +24 -0
- data/doc/classes/Trs80Cmd.src/M000106.html +20 -0
- data/doc/classes/Trs80Cmd.src/M000107.html +35 -0
- data/doc/classes/Trs80Jcl.html +156 -0
- data/doc/classes/Trs80Jcl.src/M000233.html +20 -0
- data/doc/classes/Trs80Jcl.src/M000234.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.html +211 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000064.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000065.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000066.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000067.html +18 -0
- data/doc/classes/Trs80Jv1Dsk.src/M000068.html +19 -0
- data/doc/classes/Trs80LevelIIBasic.html +169 -0
- data/doc/classes/Trs80LevelIIBasic.src/M000079.html +20 -0
- data/doc/classes/Trs80LevelIIBasic.src/M000080.html +43 -0
- data/doc/classes/Trs80PascalSource.html +156 -0
- data/doc/classes/Trs80PascalSource.src/M000202.html +20 -0
- data/doc/classes/Trs80PascalSource.src/M000203.html +30 -0
- data/doc/classes/TrsDos.html +255 -0
- data/doc/classes/TrsDos.src/M000031.html +18 -0
- data/doc/classes/TrsDos.src/M000032.html +18 -0
- data/doc/classes/TrsDos.src/M000033.html +18 -0
- data/doc/classes/TrsDos.src/M000034.html +62 -0
- data/doc/created.rid +1 -0
- data/doc/files/bin/ripxplore_rb.html +150 -0
- data/doc/files/lib/DumpUtilities_rb.html +101 -0
- data/doc/files/lib/FileCache_rb.html +110 -0
- data/doc/files/lib/FileContainer_rb.html +101 -0
- data/doc/files/lib/FileSystemImage_rb.html +109 -0
- data/doc/files/lib/FileSystem_rb.html +111 -0
- data/doc/files/lib/HostSystem_rb.html +110 -0
- data/doc/files/lib/ImageFormat_rb.html +111 -0
- data/doc/files/lib/NativeFileType_rb.html +111 -0
- data/doc/files/lib/PatchedPNG_rb.html +116 -0
- data/doc/files/lib/RipXploreLog_rb.html +108 -0
- data/doc/files/lib/RipXplore_rb.html +114 -0
- data/doc/files/lib/SubclassTracking_rb.html +108 -0
- data/doc/files/lib/disassemblers/D65_rb.html +101 -0
- data/doc/files/lib/file_systems/AppleCPM_rb.html +108 -0
- data/doc/files/lib/file_systems/AppleDos_rb.html +108 -0
- data/doc/files/lib/file_systems/AtariDos_rb.html +108 -0
- data/doc/files/lib/file_systems/CbmDos_rb.html +108 -0
- data/doc/files/lib/file_systems/NADOLDos_rb.html +108 -0
- data/doc/files/lib/file_systems/PascalDos_rb.html +108 -0
- data/doc/files/lib/file_systems/ProDos_rb.html +108 -0
- data/doc/files/lib/file_systems/RawDisk_rb.html +108 -0
- data/doc/files/lib/file_systems/TrsDos_rb.html +108 -0
- data/doc/files/lib/host_systems/Apple2_rb.html +109 -0
- data/doc/files/lib/host_systems/Atari800_rb.html +109 -0
- data/doc/files/lib/host_systems/C64_rb.html +109 -0
- data/doc/files/lib/host_systems/Trs80_rb.html +108 -0
- data/doc/files/lib/image_formats/A2Dsk_rb.html +108 -0
- data/doc/files/lib/image_formats/Atr_rb.html +108 -0
- data/doc/files/lib/image_formats/D64_rb.html +108 -0
- data/doc/files/lib/image_formats/G64_rb.html +108 -0
- data/doc/files/lib/image_formats/Trs80Jv1Dsk_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleBinary_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleHiResPic_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleText_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/AppleWorksWP_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/Applesoft_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/IntegerBASIC_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/NADOLFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/PascalFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/ProDosFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/apple2/ScAsm_rb.html +101 -0
- data/doc/files/lib/native_file_types/atari800/AtariBasic_rb.html +108 -0
- data/doc/files/lib/native_file_types/atari800/AtariBinary_rb.html +108 -0
- data/doc/files/lib/native_file_types/atari800/AtariText_rb.html +108 -0
- data/doc/files/lib/native_file_types/c64/C64BasicPrg_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/C64PrgText_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/C64Prg_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/C64Seq_rb.html +109 -0
- data/doc/files/lib/native_file_types/c64/CbmFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/cpm/CPMFile_rb.html +108 -0
- data/doc/files/lib/native_file_types/cpm/MBasic_rb.html +108 -0
- data/doc/files/lib/native_file_types/generic/GenericFile_rb.html +101 -0
- data/doc/files/lib/native_file_types/trs80/Trs80Cmd_rb.html +108 -0
- data/doc/files/lib/native_file_types/trs80/Trs80Jcl_rb.html +108 -0
- data/doc/files/lib/native_file_types/trs80/Trs80LevelIIBasic_rb.html +108 -0
- data/doc/files/lib/native_file_types/trs80/Trs80PascalSource_rb.html +108 -0
- data/doc/files/lib/proc_source_rb.html +182 -0
- data/doc/files/lib/proc_source_rb.src/M000001.html +24 -0
- data/doc/files/lib/rdoc_patch_rb.html +108 -0
- data/doc/files/test/tc_file_cache_rb.html +108 -0
- data/doc/files/test/tc_image_sniffing_rb.html +108 -0
- data/doc/files/test/testhelper_rb.html +129 -0
- data/doc/files/test/ts_test_all_rb.html +108 -0
- data/doc/fr_class_index.html +26 -0
- data/doc/fr_file_index.html +27 -0
- data/doc/fr_method_index.html +26 -0
- data/doc/index.html +24 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/DumpUtilities.rb +34 -0
- data/lib/FileCache.rb +84 -0
- data/lib/FileContainer.rb +45 -0
- data/lib/FileSystem.rb +83 -0
- data/lib/FileSystemImage.rb +176 -0
- data/lib/HostSystem.rb +84 -0
- data/lib/ImageFormat.rb +127 -0
- data/lib/NativeFileType.rb +168 -0
- data/lib/PatchedPNG.rb +303 -0
- data/lib/RipXplore.rb +77 -0
- data/lib/RipXploreLog.rb +63 -0
- data/lib/SubclassTracking.rb +11 -0
- data/lib/disassemblers/D65.rb +181 -0
- data/lib/file_systems/AppleCPM.rb +123 -0
- data/lib/file_systems/AppleDos.rb +211 -0
- data/lib/file_systems/AtariDos.rb +80 -0
- data/lib/file_systems/CbmDos.rb +75 -0
- data/lib/file_systems/NADOLDos.rb +110 -0
- data/lib/file_systems/PascalDos.rb +131 -0
- data/lib/file_systems/ProDos.rb +155 -0
- data/lib/file_systems/RawDisk.rb +45 -0
- data/lib/file_systems/TrsDos.rb +148 -0
- data/lib/host_systems/Apple2.rb +57 -0
- data/lib/host_systems/Atari800.rb +57 -0
- data/lib/host_systems/C64.rb +82 -0
- data/lib/host_systems/Trs80.rb +48 -0
- data/lib/host_systems/a2_symbols.yaml +199 -0
- data/lib/host_systems/atari_800_symbols.yaml +496 -0
- data/lib/host_systems/c64_symbols.yaml +636 -0
- data/lib/image_formats/A2Dsk.rb +77 -0
- data/lib/image_formats/Atr.rb +83 -0
- data/lib/image_formats/D64.rb +87 -0
- data/lib/image_formats/G64.rb +174 -0
- data/lib/image_formats/Trs80Jv1Dsk.rb +65 -0
- data/lib/native_file_types/apple2/AppleBinary.rb +51 -0
- data/lib/native_file_types/apple2/AppleHiResPic.rb +166 -0
- data/lib/native_file_types/apple2/AppleText.rb +43 -0
- data/lib/native_file_types/apple2/AppleWorksWP.rb +68 -0
- data/lib/native_file_types/apple2/Applesoft.rb +115 -0
- data/lib/native_file_types/apple2/IntegerBASIC.rb +217 -0
- data/lib/native_file_types/apple2/NADOLFile.rb +205 -0
- data/lib/native_file_types/apple2/PascalFile.rb +48 -0
- data/lib/native_file_types/apple2/ProDosFile.rb +112 -0
- data/lib/native_file_types/apple2/ScAsm.rb +110 -0
- data/lib/native_file_types/atari800/AtariBasic.rb +396 -0
- data/lib/native_file_types/atari800/AtariBinary.rb +53 -0
- data/lib/native_file_types/atari800/AtariText.rb +49 -0
- data/lib/native_file_types/c64/C64BasicPrg.rb +333 -0
- data/lib/native_file_types/c64/C64Prg.rb +57 -0
- data/lib/native_file_types/c64/C64PrgText.rb +45 -0
- data/lib/native_file_types/c64/C64Seq.rb +47 -0
- data/lib/native_file_types/c64/CbmFile.rb +41 -0
- data/lib/native_file_types/cpm/CPMFile.rb +40 -0
- data/lib/native_file_types/cpm/MBasic.rb +311 -0
- data/lib/native_file_types/generic/GenericFile.rb +43 -0
- data/lib/native_file_types/trs80/Trs80Cmd.rb +130 -0
- data/lib/native_file_types/trs80/Trs80Jcl.rb +43 -0
- data/lib/native_file_types/trs80/Trs80LevelIIBasic.rb +201 -0
- data/lib/native_file_types/trs80/Trs80PascalSource.rb +58 -0
- data/lib/proc_source.rb +238 -0
- data/lib/rdoc_patch.rb +32 -0
- data/test/tc_file_cache.rb +11 -0
- data/test/tc_image_sniffing.rb +165 -0
- data/test/testhelper.rb +14 -0
- data/test/testlog.txt +30755 -0
- data/test/ts_test_all.rb +3 -0
- metadata +601 -0
@@ -0,0 +1,201 @@
|
|
1
|
+
require 'NativeFileType'
|
2
|
+
|
3
|
+
|
4
|
+
class Trs80LevelIIBasic<NativeFileType
|
5
|
+
|
6
|
+
def self.file_system_file_types
|
7
|
+
{
|
8
|
+
TrsDos=>:any
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
#BASIC files should start with 0xFF
|
13
|
+
is_valid_file_if lambda {contents[0]==0xFF}
|
14
|
+
|
15
|
+
#filename should either have no extension, or end /BAS
|
16
|
+
is_valid_file_if lambda {filename=~/\/(BAS|)$/}
|
17
|
+
|
18
|
+
SINGLE_BYTE_TOKENS={
|
19
|
+
0x80=>'END',
|
20
|
+
0x81=>'FOR',
|
21
|
+
0x82=>'RESET',
|
22
|
+
0x83=>'SET',
|
23
|
+
0x84=>'CLS',
|
24
|
+
0x85=>'CMD',
|
25
|
+
0x86=>'RANDOM',
|
26
|
+
0x87=>'NEXT',
|
27
|
+
0x88=>'DATA',
|
28
|
+
0x89=>'INPUT',
|
29
|
+
0x8A=>'DIM',
|
30
|
+
0x8B=>'READ',
|
31
|
+
0x8C=>'LET',
|
32
|
+
0x8D=>'GOTO',
|
33
|
+
0x8E=>'RUN',
|
34
|
+
0x8F=>'IF',
|
35
|
+
0x90=>'RESTORE',
|
36
|
+
0x91=>'GOSUB',
|
37
|
+
0x92=>'RETURN',
|
38
|
+
0x93=>'REM',
|
39
|
+
0x94=>'STOP',
|
40
|
+
0x95=>'ELSE',
|
41
|
+
0x96=>'TRON',
|
42
|
+
0x97=>'TROFF',
|
43
|
+
0x98=>'DEFSTR',
|
44
|
+
0x99=>'DEFINT',
|
45
|
+
0x9A=>'DEFSNG',
|
46
|
+
0x9B=>'DEFDBL',
|
47
|
+
0x9C=>'LINE',
|
48
|
+
0x9D=>'EDIT',
|
49
|
+
0x9E=>'ERROR',
|
50
|
+
0x9F=>'RESUME',
|
51
|
+
0xA0=>'OUT',
|
52
|
+
0xA1=>'ON',
|
53
|
+
0xA2=>'OPEN',
|
54
|
+
0xA3=>'FIELD',
|
55
|
+
0xA4=>'GET',
|
56
|
+
0xA5=>'PUT',
|
57
|
+
0xA6=>'CLOSE',
|
58
|
+
0xA7=>'LOAD',
|
59
|
+
0xA8=>'MERGE',
|
60
|
+
0xA9=>'NAME',
|
61
|
+
0xAA=>'KILL',
|
62
|
+
0xAB=>'LSET',
|
63
|
+
0xAC=>'RSET',
|
64
|
+
0xAD=>'SAVE',
|
65
|
+
0xAE=>'SYSTEM',
|
66
|
+
0xAF=>'LPRINT',
|
67
|
+
0xB0=>'DEF',
|
68
|
+
0xB1=>'POKE',
|
69
|
+
0xB2=>'PRINT',
|
70
|
+
0xB3=>'CONT',
|
71
|
+
0xB4=>'LIST',
|
72
|
+
0xB5=>'LLIST',
|
73
|
+
0xB6=>'DELETE',
|
74
|
+
0xB7=>'AUTO',
|
75
|
+
0xB8=>'CLEAR',
|
76
|
+
0xB9=>'CLOAD',
|
77
|
+
0xBA=>'CSAVE',
|
78
|
+
0xBB=>'NEW',
|
79
|
+
0xBC=>'TAB(',
|
80
|
+
0xBD=>'TO',
|
81
|
+
0xBE=>'FN',
|
82
|
+
0xBF=>'USING',
|
83
|
+
0xC0=>'VARPTR',
|
84
|
+
0xC1=>'USR',
|
85
|
+
0xC2=>'ERL',
|
86
|
+
0xC3=>'ERR',
|
87
|
+
0xC4=>'STRING$',
|
88
|
+
0xC5=>'INSTR',
|
89
|
+
0xC6=>'POINT',
|
90
|
+
0xC7=>'TIME$',
|
91
|
+
0xC8=>'MEM',
|
92
|
+
0xC9=>'INKEY$',
|
93
|
+
0xCA=>'THEN',
|
94
|
+
0xCB=>'NOT',
|
95
|
+
0xCC=>'STEP',
|
96
|
+
0xCD=>'+',
|
97
|
+
0xCE=>'-',
|
98
|
+
0xCF=>'*',
|
99
|
+
0xD0=>'/',
|
100
|
+
0xD1=>'[',
|
101
|
+
0xD2=>'AND',
|
102
|
+
0xD3=>'OR',
|
103
|
+
0xD4=>'>',
|
104
|
+
0xD5=>'=',
|
105
|
+
0xD6=>'<',
|
106
|
+
0xD7=>'SGN',
|
107
|
+
0xD8=>'INT',
|
108
|
+
0xD9=>'ABS',
|
109
|
+
0xDA=>'FRE',
|
110
|
+
0xDB=>'INP',
|
111
|
+
0xDC=>'POS',
|
112
|
+
0xDD=>'SQR',
|
113
|
+
0xDE=>'RND',
|
114
|
+
0xDF=>'LOG',
|
115
|
+
0xE0=>'EXP',
|
116
|
+
0xE1=>'COS',
|
117
|
+
0xE2=>'SIN',
|
118
|
+
0xE3=>'TAN',
|
119
|
+
0xE4=>'ATN',
|
120
|
+
0xE5=>'PEEK',
|
121
|
+
0xE6=>'CVI',
|
122
|
+
0xE7=>'CVS',
|
123
|
+
0xE8=>'CVD',
|
124
|
+
0xE9=>'EOF',
|
125
|
+
0xEA=>'LOC',
|
126
|
+
0xEB=>'LOF',
|
127
|
+
0xEC=>'MKI$',
|
128
|
+
0xED=>'MKS$',
|
129
|
+
0xEE=>'MKD$',
|
130
|
+
0xEF=>'CINT',
|
131
|
+
0xF0=>'CSNG',
|
132
|
+
0xF1=>'CDBL',
|
133
|
+
0xF2=>'FIX',
|
134
|
+
0xF3=>'LEN',
|
135
|
+
0xF4=>'STR$',
|
136
|
+
0xF5=>'VAL',
|
137
|
+
0xF6=>'ASC',
|
138
|
+
0xF7=>'CHR$',
|
139
|
+
0xF8=>'LEFT$',
|
140
|
+
0xF9=>'RIGHT$',
|
141
|
+
0xFA=>'MID$',
|
142
|
+
0xFB=>"'",
|
143
|
+
}
|
144
|
+
|
145
|
+
def to_listing
|
146
|
+
s=""
|
147
|
+
p=1
|
148
|
+
while(p<contents.length-2) && !((contents[p]==0) && (contents[p+1]==0))
|
149
|
+
|
150
|
+
p+=2 #skip the 2 byte pointer to the start of next line
|
151
|
+
line_number=contents[p]+(contents[p+1]<<8)
|
152
|
+
p+=2
|
153
|
+
s+= "#{line_number} "
|
154
|
+
in_quotes=false
|
155
|
+
in_remark=false
|
156
|
+
while(p<contents.length) && (contents[p]!=0)
|
157
|
+
c=contents[p]
|
158
|
+
p+=1
|
159
|
+
in_quotes=!in_quotes if (c.chr=='"')
|
160
|
+
if (in_quotes or in_remark or (c<0x80)) then
|
161
|
+
s+=(c%0x80).chr
|
162
|
+
else
|
163
|
+
token=SINGLE_BYTE_TOKENS[c]
|
164
|
+
s+=(token.nil?) ? sprintf("[%02X]",c):token
|
165
|
+
in_remark=true if (c==0x93)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
s+="\n"
|
169
|
+
p+=1
|
170
|
+
end
|
171
|
+
s
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
end
|
176
|
+
|
177
|
+
|
178
|
+
# == Author
|
179
|
+
# Jonno Downes (jonno@jamtronix.com)
|
180
|
+
#
|
181
|
+
# == Copyright
|
182
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
183
|
+
#
|
184
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
185
|
+
#a copy of this software and associated documentation files (the
|
186
|
+
#"Software"), to deal in the Software without restriction, including
|
187
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
188
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
189
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
190
|
+
#the following conditions:
|
191
|
+
|
192
|
+
# The above copyright notice and this permission notice shall be
|
193
|
+
# included in all copies or substantial portions of the Software.
|
194
|
+
|
195
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
196
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
197
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
198
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
199
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
200
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
201
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'NativeFileType'
|
2
|
+
|
3
|
+
|
4
|
+
class Trs80PascalSource<NativeFileType
|
5
|
+
|
6
|
+
def self.file_system_file_types
|
7
|
+
{
|
8
|
+
TrsDos=>"SRC"
|
9
|
+
}
|
10
|
+
end
|
11
|
+
|
12
|
+
#TRS80 Pascal Source files appear to start with a T and then a 2 byte length marker
|
13
|
+
is_valid_file_if lambda {contents[0]==0x54 && (contents[1,2].unpack('v')[0])<contents.length}
|
14
|
+
|
15
|
+
def to_listing
|
16
|
+
s=""
|
17
|
+
p=1
|
18
|
+
length=contents[1,2].unpack('v')[0]
|
19
|
+
contents[1,length].each_byte do |b|
|
20
|
+
if (b>=0x80) then
|
21
|
+
s<<' '*(b-0x80)
|
22
|
+
elsif b==0x01 then
|
23
|
+
s<<"\n"
|
24
|
+
else
|
25
|
+
s<<b.chr
|
26
|
+
end
|
27
|
+
end
|
28
|
+
s
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
# == Author
|
36
|
+
# Jonno Downes (jonno@jamtronix.com)
|
37
|
+
#
|
38
|
+
# == Copyright
|
39
|
+
# Copyright (c) 2008 Jonno Downes (jonno@jamtronix.com)
|
40
|
+
#
|
41
|
+
#Permission is hereby granted, free of charge, to any person obtaining
|
42
|
+
#a copy of this software and associated documentation files (the
|
43
|
+
#"Software"), to deal in the Software without restriction, including
|
44
|
+
#without limitation the rights to use, copy, modify, merge, publish,
|
45
|
+
#distribute, sublicense, and/or sell copies of the Software, and to
|
46
|
+
#permit persons to whom the Software is furnished to do so, subject to
|
47
|
+
#the following conditions:
|
48
|
+
|
49
|
+
# The above copyright notice and this permission notice shall be
|
50
|
+
# included in all copies or substantial portions of the Software.
|
51
|
+
|
52
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
53
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
54
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
55
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
56
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
57
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
58
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/lib/proc_source.rb
ADDED
@@ -0,0 +1,238 @@
|
|
1
|
+
#this code was written by Florian Gro - downloaded from http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/147706
|
2
|
+
|
3
|
+
|
4
|
+
require 'stringio'
|
5
|
+
require 'irb/ruby-lex'
|
6
|
+
|
7
|
+
# Tell the ruby interpreter to load code lines of required files
|
8
|
+
# into this filename -> lines Hash. This behaviour seems to be
|
9
|
+
# very undocumented and therefore shouldn't really be relied on.
|
10
|
+
SCRIPT_LINES__ = {} unless defined? SCRIPT_LINES__
|
11
|
+
|
12
|
+
module ProcSource
|
13
|
+
def get_lines(filename, start_line = 0)
|
14
|
+
case filename
|
15
|
+
# special "(irb)" descriptor?
|
16
|
+
when "(irb)"
|
17
|
+
IRB.conf[:MAIN_CONTEXT].io.line(start_line .. -1)
|
18
|
+
# special "(eval...)" descriptor?
|
19
|
+
when /^\(eval.+\)$/
|
20
|
+
EVAL_LINES__[filename][start_line .. -1]
|
21
|
+
# regular file
|
22
|
+
else
|
23
|
+
# Ruby already parsed this file? (see disclaimer above)
|
24
|
+
if lines = SCRIPT_LINES__[filename]
|
25
|
+
lines[(start_line - 1) .. -1]
|
26
|
+
# If the file exists we're going to try reading it in
|
27
|
+
elsif File.exist?(filename)
|
28
|
+
begin
|
29
|
+
File.readlines(filename)[(start_line - 1) .. -1]
|
30
|
+
rescue
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def handle(proc)
|
38
|
+
filename, line = proc.source_descriptor
|
39
|
+
lines = get_lines(filename, line) || []
|
40
|
+
|
41
|
+
lexer = RubyLex.new
|
42
|
+
lexer.set_input(StringIO.new(lines.join))
|
43
|
+
|
44
|
+
state = :before_constructor
|
45
|
+
nesting_level = 1
|
46
|
+
start_token, end_token = nil, nil
|
47
|
+
found = false
|
48
|
+
while token = lexer.token
|
49
|
+
# we've not yet found any proc-constructor -- we'll try to find one.
|
50
|
+
if [:before_constructor, :check_more].include?(state)
|
51
|
+
# checking more and newline? -> done
|
52
|
+
if token.is_a?(RubyToken::TkNL) and state == :check_more
|
53
|
+
state = :done
|
54
|
+
break
|
55
|
+
end
|
56
|
+
# token is Proc?
|
57
|
+
if token.is_a?(RubyToken::TkCONSTANT) and
|
58
|
+
token.instance_variable_get(:@name) == "Proc"
|
59
|
+
# method call?
|
60
|
+
if lexer.token.is_a?(RubyToken::TkDOT)
|
61
|
+
method = lexer.token
|
62
|
+
# constructor?
|
63
|
+
if method.is_a?(RubyToken::TkIDENTIFIER) and
|
64
|
+
method.instance_variable_get(:@name) == "new"
|
65
|
+
unless state == :check_more
|
66
|
+
# okay, code will follow soon.
|
67
|
+
state = :before_code
|
68
|
+
else
|
69
|
+
# multiple procs on one line
|
70
|
+
return
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
# token is lambda or proc call?
|
75
|
+
elsif token.is_a?(RubyToken::TkIDENTIFIER) and
|
76
|
+
%w{proc lambda}.include?(token.instance_variable_get(:@name))
|
77
|
+
unless state == :check_more
|
78
|
+
# okay, code will follow soon.
|
79
|
+
state = :before_code
|
80
|
+
else
|
81
|
+
# multiple procs on one line
|
82
|
+
return
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# we're waiting for the code start to appear.
|
87
|
+
elsif state == :before_code
|
88
|
+
if token.is_a?(RubyToken::TkfLBRACE) or token.is_a?(RubyToken::TkDO)
|
89
|
+
# found the code start, update state and remember current token
|
90
|
+
state = :in_code
|
91
|
+
start_token = token
|
92
|
+
end
|
93
|
+
|
94
|
+
# okay, we're inside code
|
95
|
+
elsif state == :in_code
|
96
|
+
if token.is_a?(RubyToken::TkRBRACE) or token.is_a?(RubyToken::TkEND)
|
97
|
+
nesting_level -= 1
|
98
|
+
if nesting_level == 0
|
99
|
+
# we're done!
|
100
|
+
end_token = token
|
101
|
+
# parse another time to check if there are multiple procs on one line
|
102
|
+
# we can't handle that case correctly so we return no source code at all
|
103
|
+
state = :check_more
|
104
|
+
end
|
105
|
+
elsif token.is_a?(RubyToken::TkfLBRACE) or token.is_a?(RubyToken::TkDO) or
|
106
|
+
token.is_a?(RubyToken::TkBEGIN) or token.is_a?(RubyToken::TkCASE) or
|
107
|
+
token.is_a?(RubyToken::TkCLASS) or token.is_a?(RubyToken::TkDEF) or
|
108
|
+
token.is_a?(RubyToken::TkFOR) or token.is_a?(RubyToken::TkIF) or
|
109
|
+
token.is_a?(RubyToken::TkMODULE) or token.is_a?(RubyToken::TkUNLESS) or
|
110
|
+
token.is_a?(RubyToken::TkUNTIL) or token.is_a?(RubyToken::TkWHILE) or
|
111
|
+
token.is_a?(RubyToken::TklBEGIN)
|
112
|
+
nesting_level += 1
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
if start_token and end_token
|
118
|
+
start_line, end_line = start_token.line_no - 1, end_token.line_no - 1
|
119
|
+
source = lines[start_line .. end_line]
|
120
|
+
start_offset = start_token.char_no
|
121
|
+
start_offset += 1 if start_token.is_a?(RubyToken::TkDO)
|
122
|
+
end_offset = -(source.last.length - end_token.char_no)
|
123
|
+
source.first.slice!(0 .. start_offset)
|
124
|
+
source.last.slice!(end_offset .. -1)
|
125
|
+
|
126
|
+
# Can't use .strip because newline at end of code might be important
|
127
|
+
# (Stuff would break when somebody does proc { ... #foo\n})
|
128
|
+
proc.source = source.join.gsub(/^ | $/, "")
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
module_function :handle, :get_lines
|
133
|
+
end
|
134
|
+
|
135
|
+
class Proc
|
136
|
+
def source_descriptor
|
137
|
+
if md = /^#<Proc:0x[0-9A-Fa-f]+@(.+):(\d+)>$/.match(old_inspect)
|
138
|
+
filename, line = md.captures
|
139
|
+
return filename, line.to_i
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
attr_accessor :source
|
144
|
+
def source
|
145
|
+
ProcSource.handle(self) unless @source
|
146
|
+
@source
|
147
|
+
end
|
148
|
+
|
149
|
+
alias :old_inspect :inspect
|
150
|
+
def inspect
|
151
|
+
if source
|
152
|
+
"proc {#{source}}"
|
153
|
+
else
|
154
|
+
old_inspect
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
def ==(other)
|
159
|
+
if self.source and other.source
|
160
|
+
self.source == other.source
|
161
|
+
else
|
162
|
+
self.object_id == other.object_id
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def _dump(depth = 0)
|
167
|
+
if source
|
168
|
+
source
|
169
|
+
else
|
170
|
+
raise(TypeError, "Can't serialize Proc with unknown source code.")
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
def to_yaml(*args)
|
175
|
+
self.source # force @source to be set
|
176
|
+
super.sub("object:Proc", "proc")
|
177
|
+
end
|
178
|
+
|
179
|
+
def self.allocate; from_string ""; end
|
180
|
+
|
181
|
+
def self.from_string(string)
|
182
|
+
result = eval("proc {#{string}}")
|
183
|
+
result.source = string
|
184
|
+
return result
|
185
|
+
end
|
186
|
+
|
187
|
+
def self._load(code)
|
188
|
+
self.from_string(code)
|
189
|
+
end
|
190
|
+
|
191
|
+
def self.marshal_load; end
|
192
|
+
def marshal_load; end
|
193
|
+
end
|
194
|
+
|
195
|
+
require 'yaml'
|
196
|
+
YAML.add_ruby_type(/^proc/) do |type, val|
|
197
|
+
Proc.from_string(val["source"])
|
198
|
+
end
|
199
|
+
|
200
|
+
EVAL_LINES__ = Hash.new
|
201
|
+
|
202
|
+
alias :old_eval :eval
|
203
|
+
def eval(code, *args)
|
204
|
+
context, descriptor, start_line, *more = *args
|
205
|
+
descriptor ||= "(eval#{code.hash})"
|
206
|
+
start_line ||= 0
|
207
|
+
lines ||= code.grep(/.*/)
|
208
|
+
EVAL_LINES__[descriptor] ||= Array.new
|
209
|
+
EVAL_LINES__[descriptor][start_line, lines.length] = lines
|
210
|
+
old_eval(code, context, descriptor, start_line, *more)
|
211
|
+
end
|
212
|
+
|
213
|
+
|
214
|
+
if __FILE__ == $0 then
|
215
|
+
require "pstore"
|
216
|
+
|
217
|
+
code = lambda { puts "Hello World!" }
|
218
|
+
|
219
|
+
File.open("proc.marshalled", "w") { |file| Marshal.dump(code, file) }
|
220
|
+
code = File.open("proc.marshalled") { |file| Marshal.load(file) }
|
221
|
+
|
222
|
+
code.call
|
223
|
+
|
224
|
+
store = PStore.new("proc.pstore")
|
225
|
+
store.transaction do
|
226
|
+
store["proc"] = code
|
227
|
+
end
|
228
|
+
store.transaction do
|
229
|
+
code = store["proc"]
|
230
|
+
end
|
231
|
+
|
232
|
+
code.call
|
233
|
+
|
234
|
+
File.open("proc.yaml", "w") { |file| YAML.dump(code, file) }
|
235
|
+
code = File.open("proc.yaml") { |file| YAML.load(file) }
|
236
|
+
|
237
|
+
code.call
|
238
|
+
end
|
data/lib/rdoc_patch.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'rdoc/usage'
|
2
|
+
|
3
|
+
#due to a bug in rdoc, RDoc.usage won't work correctly when run from a gem executable
|
4
|
+
# see http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/211297
|
5
|
+
# Display usage from the given file
|
6
|
+
|
7
|
+
def RDoc.usage_from_file(input_file, *args)
|
8
|
+
comment = File.open(input_file) do |file|
|
9
|
+
RDoc.find_comment(file)
|
10
|
+
end
|
11
|
+
comment = comment.gsub(/^\s*#/, '')
|
12
|
+
|
13
|
+
markup = SM::SimpleMarkup.new
|
14
|
+
flow_convertor = SM::ToFlow.new
|
15
|
+
|
16
|
+
flow = markup.convert(comment, flow_convertor)
|
17
|
+
|
18
|
+
format = "plain"
|
19
|
+
|
20
|
+
unless args.empty?
|
21
|
+
flow = extract_sections(flow, args)
|
22
|
+
end
|
23
|
+
|
24
|
+
options = RI::Options.instance
|
25
|
+
if args = ENV["RI"]
|
26
|
+
options.parse(args.split)
|
27
|
+
end
|
28
|
+
formatter = options.formatter.new(options, "")
|
29
|
+
formatter.display_flow(flow)
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
require 'testhelper'
|
3
|
+
|
4
|
+
class TestFileCache <Test::Unit::TestCase
|
5
|
+
def test_dynamic_file_download
|
6
|
+
url="http://www.jamtronix.com/dsks/ROBOTSOFDAWN.DSK"
|
7
|
+
@@filecache.purge(url)
|
8
|
+
cache_file=@@filecache.get(url)
|
9
|
+
assert_equal(url,cache_file.path)
|
10
|
+
end
|
11
|
+
end
|