shoesgem 0.1424.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (808) hide show
  1. data/LICENSE +30 -0
  2. data/README.rdoc +31 -0
  3. data/lib/shoes.rb +4 -0
  4. data/shoes/CHANGELOG.txt +21 -0
  5. data/shoes/COPYING.txt +30 -0
  6. data/shoes/README.txt +117 -0
  7. data/shoes/VERSION.txt +1 -0
  8. data/shoes/fonts/Coolvetica.ttf +0 -0
  9. data/shoes/fonts/Lacuna.ttf +0 -0
  10. data/shoes/freetype6.dll +0 -0
  11. data/shoes/lib/shoes/cache.rb +54 -0
  12. data/shoes/lib/shoes/data.rb +39 -0
  13. data/shoes/lib/shoes/help.rb +421 -0
  14. data/shoes/lib/shoes/image.rb +25 -0
  15. data/shoes/lib/shoes/inspect.rb +128 -0
  16. data/shoes/lib/shoes/log.rb +48 -0
  17. data/shoes/lib/shoes/minitar.rb +986 -0
  18. data/shoes/lib/shoes/override.rb +38 -0
  19. data/shoes/lib/shoes/pack.rb +503 -0
  20. data/shoes/lib/shoes/search.rb +46 -0
  21. data/shoes/lib/shoes/setup.rb +329 -0
  22. data/shoes/lib/shoes/shy.rb +131 -0
  23. data/shoes/lib/shoes/shybuilder.rb +44 -0
  24. data/shoes/lib/shoes.rb +522 -0
  25. data/shoes/libcairo-2.dll +0 -0
  26. data/shoes/libeay32.dll +0 -0
  27. data/shoes/libexpat-1.dll +0 -0
  28. data/shoes/libfontconfig-1.dll +0 -0
  29. data/shoes/libgio-2.0-0.dll +0 -0
  30. data/shoes/libglib-2.0-0.dll +0 -0
  31. data/shoes/libgmodule-2.0-0.dll +0 -0
  32. data/shoes/libgobject-2.0-0.dll +0 -0
  33. data/shoes/libgthread-2.0-0.dll +0 -0
  34. data/shoes/libiconv2.dll +0 -0
  35. data/shoes/libjpeg-8.dll +0 -0
  36. data/shoes/libpango-1.0-0.dll +0 -0
  37. data/shoes/libpangocairo-1.0-0.dll +0 -0
  38. data/shoes/libpangoft2-1.0-0.dll +0 -0
  39. data/shoes/libpangowin32-1.0-0.dll +0 -0
  40. data/shoes/libpng14-14.dll +0 -0
  41. data/shoes/libportaudio-2.dll +0 -0
  42. data/shoes/libshoes.dll +0 -0
  43. data/shoes/libssl32.dll +0 -0
  44. data/shoes/libungif4.dll +0 -0
  45. data/shoes/msvcrt-ruby191.dll +0 -0
  46. data/shoes/readline5.dll +0 -0
  47. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/fast_xs.so +0 -0
  48. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/blankslate.rb +63 -0
  49. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/builder.rb +216 -0
  50. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/elements.rb +510 -0
  51. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/htmlinfo.rb +691 -0
  52. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/inspect.rb +103 -0
  53. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/modules.rb +40 -0
  54. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/parse.rb +38 -0
  55. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tag.rb +202 -0
  56. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tags.rb +164 -0
  57. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/traverse.rb +838 -0
  58. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/xchar.rb +94 -0
  59. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot.rb +26 -0
  60. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot_scan.so +0 -0
  61. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/core.rb +135 -0
  62. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/rails.rb +58 -0
  63. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/common.rb +354 -0
  64. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/generator.so +0 -0
  65. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/parser.so +0 -0
  66. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext.rb +13 -0
  67. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/version.rb +9 -0
  68. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json.rb +8 -0
  69. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/constants.rb +49 -0
  70. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/database.rb +721 -0
  71. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/api.rb +152 -0
  72. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/driver.rb +307 -0
  73. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/native/driver.rb +219 -0
  74. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/errors.rb +68 -0
  75. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/pragmas.rb +271 -0
  76. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/resultset.rb +180 -0
  77. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/statement.rb +231 -0
  78. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/translator.rb +109 -0
  79. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/value.rb +57 -0
  80. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/version.rb +16 -0
  81. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3.rb +1 -0
  82. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3_api.so +0 -0
  83. data/shoes/ruby/gems/1.9.1/specifications/hpricot-0.8.1.gemspec +32 -0
  84. data/shoes/ruby/gems/1.9.1/specifications/json-shoes-1.1.3.gemspec +34 -0
  85. data/shoes/ruby/gems/1.9.1/specifications/sqlite3-ruby-1.2.5-x86-mswin32.gemspec +46 -0
  86. data/shoes/ruby/lib/English.rb +155 -0
  87. data/shoes/ruby/lib/Win32API.rb +28 -0
  88. data/shoes/ruby/lib/abbrev.rb +103 -0
  89. data/shoes/ruby/lib/base64.rb +91 -0
  90. data/shoes/ruby/lib/benchmark.rb +573 -0
  91. data/shoes/ruby/lib/bigdecimal/jacobian.rb +85 -0
  92. data/shoes/ruby/lib/bigdecimal/ludcmp.rb +86 -0
  93. data/shoes/ruby/lib/bigdecimal/math.rb +237 -0
  94. data/shoes/ruby/lib/bigdecimal/newton.rb +77 -0
  95. data/shoes/ruby/lib/bigdecimal/util.rb +53 -0
  96. data/shoes/ruby/lib/cgi/cookie.rb +144 -0
  97. data/shoes/ruby/lib/cgi/core.rb +786 -0
  98. data/shoes/ruby/lib/cgi/html.rb +1021 -0
  99. data/shoes/ruby/lib/cgi/session/pstore.rb +111 -0
  100. data/shoes/ruby/lib/cgi/session.rb +537 -0
  101. data/shoes/ruby/lib/cgi/util.rb +181 -0
  102. data/shoes/ruby/lib/cgi.rb +274 -0
  103. data/shoes/ruby/lib/cmath.rb +233 -0
  104. data/shoes/ruby/lib/complex.rb +24 -0
  105. data/shoes/ruby/lib/csv.rb +2320 -0
  106. data/shoes/ruby/lib/date/format.rb +1313 -0
  107. data/shoes/ruby/lib/date.rb +1834 -0
  108. data/shoes/ruby/lib/debug.rb +907 -0
  109. data/shoes/ruby/lib/delegate.rb +311 -0
  110. data/shoes/ruby/lib/digest/hmac.rb +274 -0
  111. data/shoes/ruby/lib/digest/sha2.rb +74 -0
  112. data/shoes/ruby/lib/digest.rb +50 -0
  113. data/shoes/ruby/lib/dl/callback.rb +69 -0
  114. data/shoes/ruby/lib/dl/cparser.rb +109 -0
  115. data/shoes/ruby/lib/dl/func.rb +153 -0
  116. data/shoes/ruby/lib/dl/import.rb +215 -0
  117. data/shoes/ruby/lib/dl/pack.rb +173 -0
  118. data/shoes/ruby/lib/dl/stack.rb +146 -0
  119. data/shoes/ruby/lib/dl/struct.rb +213 -0
  120. data/shoes/ruby/lib/dl/types.rb +40 -0
  121. data/shoes/ruby/lib/dl/value.rb +112 -0
  122. data/shoes/ruby/lib/drb/acl.rb +146 -0
  123. data/shoes/ruby/lib/drb/drb.rb +1778 -0
  124. data/shoes/ruby/lib/drb/eq.rb +16 -0
  125. data/shoes/ruby/lib/drb/extserv.rb +71 -0
  126. data/shoes/ruby/lib/drb/extservm.rb +85 -0
  127. data/shoes/ruby/lib/drb/gw.rb +122 -0
  128. data/shoes/ruby/lib/drb/invokemethod.rb +34 -0
  129. data/shoes/ruby/lib/drb/observer.rb +22 -0
  130. data/shoes/ruby/lib/drb/ssl.rb +190 -0
  131. data/shoes/ruby/lib/drb/timeridconv.rb +91 -0
  132. data/shoes/ruby/lib/drb/unix.rb +108 -0
  133. data/shoes/ruby/lib/drb.rb +2 -0
  134. data/shoes/ruby/lib/e2mmap.rb +172 -0
  135. data/shoes/ruby/lib/erb.rb +902 -0
  136. data/shoes/ruby/lib/fileutils.rb +1592 -0
  137. data/shoes/ruby/lib/find.rb +81 -0
  138. data/shoes/ruby/lib/forwardable.rb +270 -0
  139. data/shoes/ruby/lib/ftsearch/analysis/analyzer.rb +16 -0
  140. data/shoes/ruby/lib/ftsearch/analysis/simple_identifier_analyzer.rb +23 -0
  141. data/shoes/ruby/lib/ftsearch/analysis/whitespace_analyzer.rb +22 -0
  142. data/shoes/ruby/lib/ftsearch/document_map_reader.rb +106 -0
  143. data/shoes/ruby/lib/ftsearch/document_map_writer.rb +46 -0
  144. data/shoes/ruby/lib/ftsearch/field_infos.rb +46 -0
  145. data/shoes/ruby/lib/ftsearch/fragment_writer.rb +114 -0
  146. data/shoes/ruby/lib/ftsearch/fulltext_reader.rb +52 -0
  147. data/shoes/ruby/lib/ftsearch/fulltext_writer.rb +75 -0
  148. data/shoes/ruby/lib/ftsearch/suffix_array_reader.rb +275 -0
  149. data/shoes/ruby/lib/ftsearch/suffix_array_writer.rb +99 -0
  150. data/shoes/ruby/lib/ftsearch/util.rb +21 -0
  151. data/shoes/ruby/lib/getoptlong.rb +610 -0
  152. data/shoes/ruby/lib/gserver.rb +253 -0
  153. data/shoes/ruby/lib/i386-mingw32/bigdecimal.so +0 -0
  154. data/shoes/ruby/lib/i386-mingw32/binject.so +0 -0
  155. data/shoes/ruby/lib/i386-mingw32/bloops.so +0 -0
  156. data/shoes/ruby/lib/i386-mingw32/continuation.so +0 -0
  157. data/shoes/ruby/lib/i386-mingw32/coverage.so +0 -0
  158. data/shoes/ruby/lib/i386-mingw32/curses.so +0 -0
  159. data/shoes/ruby/lib/i386-mingw32/digest/bubblebabble.so +0 -0
  160. data/shoes/ruby/lib/i386-mingw32/digest/md5.so +0 -0
  161. data/shoes/ruby/lib/i386-mingw32/digest/rmd160.so +0 -0
  162. data/shoes/ruby/lib/i386-mingw32/digest/sha1.so +0 -0
  163. data/shoes/ruby/lib/i386-mingw32/digest/sha2.so +0 -0
  164. data/shoes/ruby/lib/i386-mingw32/digest.so +0 -0
  165. data/shoes/ruby/lib/i386-mingw32/dl.so +0 -0
  166. data/shoes/ruby/lib/i386-mingw32/enc/big5.so +0 -0
  167. data/shoes/ruby/lib/i386-mingw32/enc/cp949.so +0 -0
  168. data/shoes/ruby/lib/i386-mingw32/enc/emacs_mule.so +0 -0
  169. data/shoes/ruby/lib/i386-mingw32/enc/encdb.so +0 -0
  170. data/shoes/ruby/lib/i386-mingw32/enc/euc_jp.so +0 -0
  171. data/shoes/ruby/lib/i386-mingw32/enc/euc_kr.so +0 -0
  172. data/shoes/ruby/lib/i386-mingw32/enc/euc_tw.so +0 -0
  173. data/shoes/ruby/lib/i386-mingw32/enc/gb18030.so +0 -0
  174. data/shoes/ruby/lib/i386-mingw32/enc/gb2312.so +0 -0
  175. data/shoes/ruby/lib/i386-mingw32/enc/gbk.so +0 -0
  176. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_1.so +0 -0
  177. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_10.so +0 -0
  178. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_11.so +0 -0
  179. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_13.so +0 -0
  180. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_14.so +0 -0
  181. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_15.so +0 -0
  182. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_16.so +0 -0
  183. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_2.so +0 -0
  184. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_3.so +0 -0
  185. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_4.so +0 -0
  186. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_5.so +0 -0
  187. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_6.so +0 -0
  188. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_7.so +0 -0
  189. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_8.so +0 -0
  190. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_9.so +0 -0
  191. data/shoes/ruby/lib/i386-mingw32/enc/koi8_r.so +0 -0
  192. data/shoes/ruby/lib/i386-mingw32/enc/koi8_u.so +0 -0
  193. data/shoes/ruby/lib/i386-mingw32/enc/shift_jis.so +0 -0
  194. data/shoes/ruby/lib/i386-mingw32/enc/trans/big5.so +0 -0
  195. data/shoes/ruby/lib/i386-mingw32/enc/trans/chinese.so +0 -0
  196. data/shoes/ruby/lib/i386-mingw32/enc/trans/escape.so +0 -0
  197. data/shoes/ruby/lib/i386-mingw32/enc/trans/gb18030.so +0 -0
  198. data/shoes/ruby/lib/i386-mingw32/enc/trans/gbk.so +0 -0
  199. data/shoes/ruby/lib/i386-mingw32/enc/trans/iso2022.so +0 -0
  200. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese.so +0 -0
  201. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_euc.so +0 -0
  202. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_sjis.so +0 -0
  203. data/shoes/ruby/lib/i386-mingw32/enc/trans/korean.so +0 -0
  204. data/shoes/ruby/lib/i386-mingw32/enc/trans/single_byte.so +0 -0
  205. data/shoes/ruby/lib/i386-mingw32/enc/trans/transdb.so +0 -0
  206. data/shoes/ruby/lib/i386-mingw32/enc/trans/utf_16_32.so +0 -0
  207. data/shoes/ruby/lib/i386-mingw32/enc/utf_16be.so +0 -0
  208. data/shoes/ruby/lib/i386-mingw32/enc/utf_16le.so +0 -0
  209. data/shoes/ruby/lib/i386-mingw32/enc/utf_32be.so +0 -0
  210. data/shoes/ruby/lib/i386-mingw32/enc/utf_32le.so +0 -0
  211. data/shoes/ruby/lib/i386-mingw32/enc/windows_1251.so +0 -0
  212. data/shoes/ruby/lib/i386-mingw32/etc.so +0 -0
  213. data/shoes/ruby/lib/i386-mingw32/fcntl.so +0 -0
  214. data/shoes/ruby/lib/i386-mingw32/fiber.so +0 -0
  215. data/shoes/ruby/lib/i386-mingw32/ftsearchrt.so +0 -0
  216. data/shoes/ruby/lib/i386-mingw32/gdbm.so +0 -0
  217. data/shoes/ruby/lib/i386-mingw32/iconv.so +0 -0
  218. data/shoes/ruby/lib/i386-mingw32/io/wait.so +0 -0
  219. data/shoes/ruby/lib/i386-mingw32/json/ext/generator.so +0 -0
  220. data/shoes/ruby/lib/i386-mingw32/json/ext/parser.so +0 -0
  221. data/shoes/ruby/lib/i386-mingw32/mathn/complex.so +0 -0
  222. data/shoes/ruby/lib/i386-mingw32/mathn/rational.so +0 -0
  223. data/shoes/ruby/lib/i386-mingw32/nkf.so +0 -0
  224. data/shoes/ruby/lib/i386-mingw32/openssl.so +0 -0
  225. data/shoes/ruby/lib/i386-mingw32/racc/cparse.so +0 -0
  226. data/shoes/ruby/lib/i386-mingw32/rbconfig.rb +196 -0
  227. data/shoes/ruby/lib/i386-mingw32/readline.so +0 -0
  228. data/shoes/ruby/lib/i386-mingw32/ripper.so +0 -0
  229. data/shoes/ruby/lib/i386-mingw32/sdbm.so +0 -0
  230. data/shoes/ruby/lib/i386-mingw32/socket.so +0 -0
  231. data/shoes/ruby/lib/i386-mingw32/stringio.so +0 -0
  232. data/shoes/ruby/lib/i386-mingw32/strscan.so +0 -0
  233. data/shoes/ruby/lib/i386-mingw32/syck.so +0 -0
  234. data/shoes/ruby/lib/i386-mingw32/win32ole.so +0 -0
  235. data/shoes/ruby/lib/i386-mingw32/zlib.so +0 -0
  236. data/shoes/ruby/lib/io/nonblock.rb +23 -0
  237. data/shoes/ruby/lib/ipaddr.rb +813 -0
  238. data/shoes/ruby/lib/irb/cmd/chws.rb +32 -0
  239. data/shoes/ruby/lib/irb/cmd/fork.rb +38 -0
  240. data/shoes/ruby/lib/irb/cmd/help.rb +36 -0
  241. data/shoes/ruby/lib/irb/cmd/load.rb +66 -0
  242. data/shoes/ruby/lib/irb/cmd/nop.rb +38 -0
  243. data/shoes/ruby/lib/irb/cmd/pushws.rb +38 -0
  244. data/shoes/ruby/lib/irb/cmd/subirb.rb +42 -0
  245. data/shoes/ruby/lib/irb/completion.rb +207 -0
  246. data/shoes/ruby/lib/irb/context.rb +255 -0
  247. data/shoes/ruby/lib/irb/ext/change-ws.rb +61 -0
  248. data/shoes/ruby/lib/irb/ext/history.rb +109 -0
  249. data/shoes/ruby/lib/irb/ext/loader.rb +119 -0
  250. data/shoes/ruby/lib/irb/ext/math-mode.rb +36 -0
  251. data/shoes/ruby/lib/irb/ext/multi-irb.rb +240 -0
  252. data/shoes/ruby/lib/irb/ext/save-history.rb +100 -0
  253. data/shoes/ruby/lib/irb/ext/tracer.rb +60 -0
  254. data/shoes/ruby/lib/irb/ext/use-loader.rb +64 -0
  255. data/shoes/ruby/lib/irb/ext/workspaces.rb +55 -0
  256. data/shoes/ruby/lib/irb/extend-command.rb +272 -0
  257. data/shoes/ruby/lib/irb/frame.rb +66 -0
  258. data/shoes/ruby/lib/irb/help.rb +35 -0
  259. data/shoes/ruby/lib/irb/init.rb +288 -0
  260. data/shoes/ruby/lib/irb/input-method.rb +142 -0
  261. data/shoes/ruby/lib/irb/lc/error.rb +29 -0
  262. data/shoes/ruby/lib/irb/lc/help-message +38 -0
  263. data/shoes/ruby/lib/irb/lc/ja/encoding_aliases.rb +8 -0
  264. data/shoes/ruby/lib/irb/lc/ja/error.rb +27 -0
  265. data/shoes/ruby/lib/irb/lc/ja/help-message +39 -0
  266. data/shoes/ruby/lib/irb/locale.rb +195 -0
  267. data/shoes/ruby/lib/irb/magic-file.rb +36 -0
  268. data/shoes/ruby/lib/irb/notifier.rb +144 -0
  269. data/shoes/ruby/lib/irb/output-method.rb +69 -0
  270. data/shoes/ruby/lib/irb/ruby-lex.rb +1188 -0
  271. data/shoes/ruby/lib/irb/ruby-token.rb +270 -0
  272. data/shoes/ruby/lib/irb/slex.rb +282 -0
  273. data/shoes/ruby/lib/irb/src_encoding.rb +4 -0
  274. data/shoes/ruby/lib/irb/version.rb +15 -0
  275. data/shoes/ruby/lib/irb/workspace.rb +108 -0
  276. data/shoes/ruby/lib/irb/ws-for-case-2.rb +14 -0
  277. data/shoes/ruby/lib/irb/xmp.rb +97 -0
  278. data/shoes/ruby/lib/irb.rb +354 -0
  279. data/shoes/ruby/lib/json/add/core.rb +135 -0
  280. data/shoes/ruby/lib/json/add/rails.rb +58 -0
  281. data/shoes/ruby/lib/json/common.rb +354 -0
  282. data/shoes/ruby/lib/json/editor.rb +1371 -0
  283. data/shoes/ruby/lib/json/ext.rb +15 -0
  284. data/shoes/ruby/lib/json/version.rb +9 -0
  285. data/shoes/ruby/lib/json.rb +297 -0
  286. data/shoes/ruby/lib/kconv.rb +282 -0
  287. data/shoes/ruby/lib/logger.rb +732 -0
  288. data/shoes/ruby/lib/mathn.rb +206 -0
  289. data/shoes/ruby/lib/matrix.rb +1381 -0
  290. data/shoes/ruby/lib/minitest/autorun.rb +9 -0
  291. data/shoes/ruby/lib/minitest/mock.rb +37 -0
  292. data/shoes/ruby/lib/minitest/spec.rb +89 -0
  293. data/shoes/ruby/lib/minitest/unit.rb +497 -0
  294. data/shoes/ruby/lib/mkmf.rb +1958 -0
  295. data/shoes/ruby/lib/monitor.rb +265 -0
  296. data/shoes/ruby/lib/mutex_m.rb +91 -0
  297. data/shoes/ruby/lib/net/ftp.rb +981 -0
  298. data/shoes/ruby/lib/net/http.rb +2399 -0
  299. data/shoes/ruby/lib/net/https.rb +136 -0
  300. data/shoes/ruby/lib/net/imap.rb +3500 -0
  301. data/shoes/ruby/lib/net/pop.rb +1000 -0
  302. data/shoes/ruby/lib/net/protocol.rb +382 -0
  303. data/shoes/ruby/lib/net/smtp.rb +1014 -0
  304. data/shoes/ruby/lib/net/telnet.rb +759 -0
  305. data/shoes/ruby/lib/observer.rb +193 -0
  306. data/shoes/ruby/lib/open-uri.rb +832 -0
  307. data/shoes/ruby/lib/open3.rb +98 -0
  308. data/shoes/ruby/lib/openssl/bn.rb +35 -0
  309. data/shoes/ruby/lib/openssl/buffering.rb +242 -0
  310. data/shoes/ruby/lib/openssl/cipher.rb +65 -0
  311. data/shoes/ruby/lib/openssl/digest.rb +61 -0
  312. data/shoes/ruby/lib/openssl/ssl.rb +178 -0
  313. data/shoes/ruby/lib/openssl/x509.rb +155 -0
  314. data/shoes/ruby/lib/openssl.rb +24 -0
  315. data/shoes/ruby/lib/optparse/date.rb +17 -0
  316. data/shoes/ruby/lib/optparse/shellwords.rb +6 -0
  317. data/shoes/ruby/lib/optparse/time.rb +10 -0
  318. data/shoes/ruby/lib/optparse/uri.rb +6 -0
  319. data/shoes/ruby/lib/optparse/version.rb +70 -0
  320. data/shoes/ruby/lib/optparse.rb +1810 -0
  321. data/shoes/ruby/lib/ostruct.rb +145 -0
  322. data/shoes/ruby/lib/pathname.rb +1099 -0
  323. data/shoes/ruby/lib/pp.rb +532 -0
  324. data/shoes/ruby/lib/prettyprint.rb +896 -0
  325. data/shoes/ruby/lib/prime.rb +471 -0
  326. data/shoes/ruby/lib/profile.rb +10 -0
  327. data/shoes/ruby/lib/profiler.rb +59 -0
  328. data/shoes/ruby/lib/pstore.rb +543 -0
  329. data/shoes/ruby/lib/racc/parser.rb +441 -0
  330. data/shoes/ruby/lib/rake/classic_namespace.rb +8 -0
  331. data/shoes/ruby/lib/rake/clean.rb +33 -0
  332. data/shoes/ruby/lib/rake/gempackagetask.rb +97 -0
  333. data/shoes/ruby/lib/rake/loaders/makefile.rb +35 -0
  334. data/shoes/ruby/lib/rake/packagetask.rb +185 -0
  335. data/shoes/ruby/lib/rake/rake_test_loader.rb +5 -0
  336. data/shoes/ruby/lib/rake/rdoctask.rb +147 -0
  337. data/shoes/ruby/lib/rake/runtest.rb +23 -0
  338. data/shoes/ruby/lib/rake/tasklib.rb +23 -0
  339. data/shoes/ruby/lib/rake/testtask.rb +161 -0
  340. data/shoes/ruby/lib/rake/win32.rb +34 -0
  341. data/shoes/ruby/lib/rake.rb +2465 -0
  342. data/shoes/ruby/lib/rational.rb +19 -0
  343. data/shoes/ruby/lib/rbconfig/datadir.rb +24 -0
  344. data/shoes/ruby/lib/rdoc/code_objects.rb +1061 -0
  345. data/shoes/ruby/lib/rdoc/diagram.rb +340 -0
  346. data/shoes/ruby/lib/rdoc/dot.rb +249 -0
  347. data/shoes/ruby/lib/rdoc/generator/chm/chm.rb +100 -0
  348. data/shoes/ruby/lib/rdoc/generator/chm.rb +113 -0
  349. data/shoes/ruby/lib/rdoc/generator/html/common.rb +24 -0
  350. data/shoes/ruby/lib/rdoc/generator/html/frameless.rb +92 -0
  351. data/shoes/ruby/lib/rdoc/generator/html/hefss.rb +150 -0
  352. data/shoes/ruby/lib/rdoc/generator/html/html.rb +769 -0
  353. data/shoes/ruby/lib/rdoc/generator/html/kilmer.rb +151 -0
  354. data/shoes/ruby/lib/rdoc/generator/html/kilmerfactory.rb +427 -0
  355. data/shoes/ruby/lib/rdoc/generator/html/one_page_html.rb +122 -0
  356. data/shoes/ruby/lib/rdoc/generator/html.rb +445 -0
  357. data/shoes/ruby/lib/rdoc/generator/ri.rb +226 -0
  358. data/shoes/ruby/lib/rdoc/generator/texinfo/class.texinfo.erb +44 -0
  359. data/shoes/ruby/lib/rdoc/generator/texinfo/file.texinfo.erb +6 -0
  360. data/shoes/ruby/lib/rdoc/generator/texinfo/method.texinfo.erb +6 -0
  361. data/shoes/ruby/lib/rdoc/generator/texinfo/texinfo.erb +28 -0
  362. data/shoes/ruby/lib/rdoc/generator/texinfo.rb +81 -0
  363. data/shoes/ruby/lib/rdoc/generator/xml/rdf.rb +113 -0
  364. data/shoes/ruby/lib/rdoc/generator/xml/xml.rb +123 -0
  365. data/shoes/ruby/lib/rdoc/generator/xml.rb +117 -0
  366. data/shoes/ruby/lib/rdoc/generator.rb +1082 -0
  367. data/shoes/ruby/lib/rdoc/known_classes.rb +68 -0
  368. data/shoes/ruby/lib/rdoc/markup/attribute_manager.rb +265 -0
  369. data/shoes/ruby/lib/rdoc/markup/formatter.rb +14 -0
  370. data/shoes/ruby/lib/rdoc/markup/fragments.rb +337 -0
  371. data/shoes/ruby/lib/rdoc/markup/inline.rb +101 -0
  372. data/shoes/ruby/lib/rdoc/markup/lines.rb +152 -0
  373. data/shoes/ruby/lib/rdoc/markup/preprocess.rb +75 -0
  374. data/shoes/ruby/lib/rdoc/markup/to_flow.rb +185 -0
  375. data/shoes/ruby/lib/rdoc/markup/to_html.rb +403 -0
  376. data/shoes/ruby/lib/rdoc/markup/to_html_crossref.rb +148 -0
  377. data/shoes/ruby/lib/rdoc/markup/to_latex.rb +328 -0
  378. data/shoes/ruby/lib/rdoc/markup/to_test.rb +50 -0
  379. data/shoes/ruby/lib/rdoc/markup/to_texinfo.rb +69 -0
  380. data/shoes/ruby/lib/rdoc/markup.rb +378 -0
  381. data/shoes/ruby/lib/rdoc/options.rb +638 -0
  382. data/shoes/ruby/lib/rdoc/parser/c.rb +661 -0
  383. data/shoes/ruby/lib/rdoc/parser/f95.rb +1835 -0
  384. data/shoes/ruby/lib/rdoc/parser/perl.rb +165 -0
  385. data/shoes/ruby/lib/rdoc/parser/ruby.rb +2829 -0
  386. data/shoes/ruby/lib/rdoc/parser/simple.rb +38 -0
  387. data/shoes/ruby/lib/rdoc/parser.rb +142 -0
  388. data/shoes/ruby/lib/rdoc/rdoc.rb +293 -0
  389. data/shoes/ruby/lib/rdoc/ri/cache.rb +187 -0
  390. data/shoes/ruby/lib/rdoc/ri/descriptions.rb +156 -0
  391. data/shoes/ruby/lib/rdoc/ri/display.rb +392 -0
  392. data/shoes/ruby/lib/rdoc/ri/driver.rb +669 -0
  393. data/shoes/ruby/lib/rdoc/ri/formatter.rb +616 -0
  394. data/shoes/ruby/lib/rdoc/ri/paths.rb +99 -0
  395. data/shoes/ruby/lib/rdoc/ri/reader.rb +106 -0
  396. data/shoes/ruby/lib/rdoc/ri/util.rb +79 -0
  397. data/shoes/ruby/lib/rdoc/ri/writer.rb +68 -0
  398. data/shoes/ruby/lib/rdoc/ri.rb +8 -0
  399. data/shoes/ruby/lib/rdoc/stats.rb +115 -0
  400. data/shoes/ruby/lib/rdoc/template.rb +64 -0
  401. data/shoes/ruby/lib/rdoc/tokenstream.rb +33 -0
  402. data/shoes/ruby/lib/rdoc.rb +395 -0
  403. data/shoes/ruby/lib/resolv-replace.rb +63 -0
  404. data/shoes/ruby/lib/resolv.rb +2262 -0
  405. data/shoes/ruby/lib/rexml/attlistdecl.rb +62 -0
  406. data/shoes/ruby/lib/rexml/attribute.rb +188 -0
  407. data/shoes/ruby/lib/rexml/cdata.rb +67 -0
  408. data/shoes/ruby/lib/rexml/child.rb +96 -0
  409. data/shoes/ruby/lib/rexml/comment.rb +80 -0
  410. data/shoes/ruby/lib/rexml/doctype.rb +270 -0
  411. data/shoes/ruby/lib/rexml/document.rb +231 -0
  412. data/shoes/ruby/lib/rexml/dtd/attlistdecl.rb +10 -0
  413. data/shoes/ruby/lib/rexml/dtd/dtd.rb +51 -0
  414. data/shoes/ruby/lib/rexml/dtd/elementdecl.rb +17 -0
  415. data/shoes/ruby/lib/rexml/dtd/entitydecl.rb +56 -0
  416. data/shoes/ruby/lib/rexml/dtd/notationdecl.rb +39 -0
  417. data/shoes/ruby/lib/rexml/element.rb +1246 -0
  418. data/shoes/ruby/lib/rexml/encoding.rb +71 -0
  419. data/shoes/ruby/lib/rexml/encodings/CP-1252.rb +103 -0
  420. data/shoes/ruby/lib/rexml/encodings/EUC-JP.rb +35 -0
  421. data/shoes/ruby/lib/rexml/encodings/ICONV.rb +22 -0
  422. data/shoes/ruby/lib/rexml/encodings/ISO-8859-1.rb +7 -0
  423. data/shoes/ruby/lib/rexml/encodings/ISO-8859-15.rb +72 -0
  424. data/shoes/ruby/lib/rexml/encodings/SHIFT-JIS.rb +37 -0
  425. data/shoes/ruby/lib/rexml/encodings/SHIFT_JIS.rb +1 -0
  426. data/shoes/ruby/lib/rexml/encodings/UNILE.rb +34 -0
  427. data/shoes/ruby/lib/rexml/encodings/US-ASCII.rb +30 -0
  428. data/shoes/ruby/lib/rexml/encodings/UTF-16.rb +35 -0
  429. data/shoes/ruby/lib/rexml/encodings/UTF-8.rb +18 -0
  430. data/shoes/ruby/lib/rexml/entity.rb +166 -0
  431. data/shoes/ruby/lib/rexml/formatters/default.rb +109 -0
  432. data/shoes/ruby/lib/rexml/formatters/pretty.rb +139 -0
  433. data/shoes/ruby/lib/rexml/formatters/transitive.rb +58 -0
  434. data/shoes/ruby/lib/rexml/functions.rb +388 -0
  435. data/shoes/ruby/lib/rexml/instruction.rb +70 -0
  436. data/shoes/ruby/lib/rexml/light/node.rb +196 -0
  437. data/shoes/ruby/lib/rexml/namespace.rb +47 -0
  438. data/shoes/ruby/lib/rexml/node.rb +75 -0
  439. data/shoes/ruby/lib/rexml/output.rb +24 -0
  440. data/shoes/ruby/lib/rexml/parent.rb +166 -0
  441. data/shoes/ruby/lib/rexml/parseexception.rb +51 -0
  442. data/shoes/ruby/lib/rexml/parsers/baseparser.rb +530 -0
  443. data/shoes/ruby/lib/rexml/parsers/lightparser.rb +58 -0
  444. data/shoes/ruby/lib/rexml/parsers/pullparser.rb +196 -0
  445. data/shoes/ruby/lib/rexml/parsers/sax2parser.rb +247 -0
  446. data/shoes/ruby/lib/rexml/parsers/streamparser.rb +46 -0
  447. data/shoes/ruby/lib/rexml/parsers/treeparser.rb +100 -0
  448. data/shoes/ruby/lib/rexml/parsers/ultralightparser.rb +56 -0
  449. data/shoes/ruby/lib/rexml/parsers/xpathparser.rb +698 -0
  450. data/shoes/ruby/lib/rexml/quickpath.rb +263 -0
  451. data/shoes/ruby/lib/rexml/rexml.rb +31 -0
  452. data/shoes/ruby/lib/rexml/sax2listener.rb +97 -0
  453. data/shoes/ruby/lib/rexml/source.rb +258 -0
  454. data/shoes/ruby/lib/rexml/streamlistener.rb +92 -0
  455. data/shoes/ruby/lib/rexml/syncenumerator.rb +32 -0
  456. data/shoes/ruby/lib/rexml/text.rb +404 -0
  457. data/shoes/ruby/lib/rexml/undefinednamespaceexception.rb +8 -0
  458. data/shoes/ruby/lib/rexml/validation/relaxng.rb +559 -0
  459. data/shoes/ruby/lib/rexml/validation/validation.rb +155 -0
  460. data/shoes/ruby/lib/rexml/validation/validationexception.rb +9 -0
  461. data/shoes/ruby/lib/rexml/xmldecl.rb +119 -0
  462. data/shoes/ruby/lib/rexml/xmltokens.rb +18 -0
  463. data/shoes/ruby/lib/rexml/xpath.rb +77 -0
  464. data/shoes/ruby/lib/rexml/xpath_parser.rb +792 -0
  465. data/shoes/ruby/lib/rinda/rinda.rb +283 -0
  466. data/shoes/ruby/lib/rinda/ring.rb +271 -0
  467. data/shoes/ruby/lib/rinda/tuplespace.rb +642 -0
  468. data/shoes/ruby/lib/ripper/core.rb +70 -0
  469. data/shoes/ruby/lib/ripper/filter.rb +70 -0
  470. data/shoes/ruby/lib/ripper/lexer.rb +179 -0
  471. data/shoes/ruby/lib/ripper/sexp.rb +99 -0
  472. data/shoes/ruby/lib/ripper.rb +4 -0
  473. data/shoes/ruby/lib/rss/0.9.rb +427 -0
  474. data/shoes/ruby/lib/rss/1.0.rb +452 -0
  475. data/shoes/ruby/lib/rss/2.0.rb +111 -0
  476. data/shoes/ruby/lib/rss/atom.rb +748 -0
  477. data/shoes/ruby/lib/rss/content/1.0.rb +10 -0
  478. data/shoes/ruby/lib/rss/content/2.0.rb +12 -0
  479. data/shoes/ruby/lib/rss/content.rb +31 -0
  480. data/shoes/ruby/lib/rss/converter.rb +170 -0
  481. data/shoes/ruby/lib/rss/dublincore/1.0.rb +13 -0
  482. data/shoes/ruby/lib/rss/dublincore/2.0.rb +13 -0
  483. data/shoes/ruby/lib/rss/dublincore/atom.rb +17 -0
  484. data/shoes/ruby/lib/rss/dublincore.rb +161 -0
  485. data/shoes/ruby/lib/rss/image.rb +193 -0
  486. data/shoes/ruby/lib/rss/itunes.rb +410 -0
  487. data/shoes/ruby/lib/rss/maker/0.9.rb +467 -0
  488. data/shoes/ruby/lib/rss/maker/1.0.rb +434 -0
  489. data/shoes/ruby/lib/rss/maker/2.0.rb +223 -0
  490. data/shoes/ruby/lib/rss/maker/atom.rb +172 -0
  491. data/shoes/ruby/lib/rss/maker/base.rb +880 -0
  492. data/shoes/ruby/lib/rss/maker/content.rb +21 -0
  493. data/shoes/ruby/lib/rss/maker/dublincore.rb +124 -0
  494. data/shoes/ruby/lib/rss/maker/entry.rb +163 -0
  495. data/shoes/ruby/lib/rss/maker/feed.rb +430 -0
  496. data/shoes/ruby/lib/rss/maker/image.rb +111 -0
  497. data/shoes/ruby/lib/rss/maker/itunes.rb +242 -0
  498. data/shoes/ruby/lib/rss/maker/slash.rb +33 -0
  499. data/shoes/ruby/lib/rss/maker/syndication.rb +18 -0
  500. data/shoes/ruby/lib/rss/maker/taxonomy.rb +118 -0
  501. data/shoes/ruby/lib/rss/maker/trackback.rb +61 -0
  502. data/shoes/ruby/lib/rss/maker.rb +44 -0
  503. data/shoes/ruby/lib/rss/parser.rb +568 -0
  504. data/shoes/ruby/lib/rss/rexmlparser.rb +54 -0
  505. data/shoes/ruby/lib/rss/rss.rb +1313 -0
  506. data/shoes/ruby/lib/rss/slash.rb +49 -0
  507. data/shoes/ruby/lib/rss/syndication.rb +67 -0
  508. data/shoes/ruby/lib/rss/taxonomy.rb +145 -0
  509. data/shoes/ruby/lib/rss/trackback.rb +288 -0
  510. data/shoes/ruby/lib/rss/utils.rb +111 -0
  511. data/shoes/ruby/lib/rss/xml-stylesheet.rb +105 -0
  512. data/shoes/ruby/lib/rss/xml.rb +71 -0
  513. data/shoes/ruby/lib/rss/xmlparser.rb +93 -0
  514. data/shoes/ruby/lib/rss/xmlscanner.rb +121 -0
  515. data/shoes/ruby/lib/rss.rb +19 -0
  516. data/shoes/ruby/lib/rubygems/builder.rb +88 -0
  517. data/shoes/ruby/lib/rubygems/command.rb +406 -0
  518. data/shoes/ruby/lib/rubygems/command_manager.rb +146 -0
  519. data/shoes/ruby/lib/rubygems/commands/build_command.rb +53 -0
  520. data/shoes/ruby/lib/rubygems/commands/cert_command.rb +86 -0
  521. data/shoes/ruby/lib/rubygems/commands/check_command.rb +75 -0
  522. data/shoes/ruby/lib/rubygems/commands/cleanup_command.rb +91 -0
  523. data/shoes/ruby/lib/rubygems/commands/contents_command.rb +74 -0
  524. data/shoes/ruby/lib/rubygems/commands/dependency_command.rb +188 -0
  525. data/shoes/ruby/lib/rubygems/commands/environment_command.rb +128 -0
  526. data/shoes/ruby/lib/rubygems/commands/fetch_command.rb +62 -0
  527. data/shoes/ruby/lib/rubygems/commands/generate_index_command.rb +57 -0
  528. data/shoes/ruby/lib/rubygems/commands/help_command.rb +172 -0
  529. data/shoes/ruby/lib/rubygems/commands/install_command.rb +148 -0
  530. data/shoes/ruby/lib/rubygems/commands/list_command.rb +35 -0
  531. data/shoes/ruby/lib/rubygems/commands/lock_command.rb +110 -0
  532. data/shoes/ruby/lib/rubygems/commands/mirror_command.rb +111 -0
  533. data/shoes/ruby/lib/rubygems/commands/outdated_command.rb +33 -0
  534. data/shoes/ruby/lib/rubygems/commands/pristine_command.rb +93 -0
  535. data/shoes/ruby/lib/rubygems/commands/query_command.rb +233 -0
  536. data/shoes/ruby/lib/rubygems/commands/rdoc_command.rb +82 -0
  537. data/shoes/ruby/lib/rubygems/commands/search_command.rb +37 -0
  538. data/shoes/ruby/lib/rubygems/commands/server_command.rb +48 -0
  539. data/shoes/ruby/lib/rubygems/commands/sources_command.rb +152 -0
  540. data/shoes/ruby/lib/rubygems/commands/specification_command.rb +77 -0
  541. data/shoes/ruby/lib/rubygems/commands/stale_command.rb +27 -0
  542. data/shoes/ruby/lib/rubygems/commands/uninstall_command.rb +73 -0
  543. data/shoes/ruby/lib/rubygems/commands/unpack_command.rb +95 -0
  544. data/shoes/ruby/lib/rubygems/commands/update_command.rb +181 -0
  545. data/shoes/ruby/lib/rubygems/commands/which_command.rb +87 -0
  546. data/shoes/ruby/lib/rubygems/config_file.rb +266 -0
  547. data/shoes/ruby/lib/rubygems/custom_require.rb +46 -0
  548. data/shoes/ruby/lib/rubygems/defaults.rb +89 -0
  549. data/shoes/ruby/lib/rubygems/dependency.rb +119 -0
  550. data/shoes/ruby/lib/rubygems/dependency_installer.rb +258 -0
  551. data/shoes/ruby/lib/rubygems/dependency_list.rb +165 -0
  552. data/shoes/ruby/lib/rubygems/digest/digest_adapter.rb +40 -0
  553. data/shoes/ruby/lib/rubygems/digest/md5.rb +23 -0
  554. data/shoes/ruby/lib/rubygems/digest/sha1.rb +17 -0
  555. data/shoes/ruby/lib/rubygems/digest/sha2.rb +17 -0
  556. data/shoes/ruby/lib/rubygems/doc_manager.rb +214 -0
  557. data/shoes/ruby/lib/rubygems/exceptions.rb +84 -0
  558. data/shoes/ruby/lib/rubygems/ext/builder.rb +56 -0
  559. data/shoes/ruby/lib/rubygems/ext/configure_builder.rb +24 -0
  560. data/shoes/ruby/lib/rubygems/ext/ext_conf_builder.rb +23 -0
  561. data/shoes/ruby/lib/rubygems/ext/rake_builder.rb +27 -0
  562. data/shoes/ruby/lib/rubygems/ext.rb +18 -0
  563. data/shoes/ruby/lib/rubygems/format.rb +87 -0
  564. data/shoes/ruby/lib/rubygems/gem_openssl.rb +83 -0
  565. data/shoes/ruby/lib/rubygems/gem_path_searcher.rb +100 -0
  566. data/shoes/ruby/lib/rubygems/gem_runner.rb +58 -0
  567. data/shoes/ruby/lib/rubygems/indexer/abstract_index_builder.rb +88 -0
  568. data/shoes/ruby/lib/rubygems/indexer/latest_index_builder.rb +35 -0
  569. data/shoes/ruby/lib/rubygems/indexer/marshal_index_builder.rb +17 -0
  570. data/shoes/ruby/lib/rubygems/indexer/master_index_builder.rb +54 -0
  571. data/shoes/ruby/lib/rubygems/indexer/quick_index_builder.rb +50 -0
  572. data/shoes/ruby/lib/rubygems/indexer.rb +370 -0
  573. data/shoes/ruby/lib/rubygems/install_update_options.rb +113 -0
  574. data/shoes/ruby/lib/rubygems/installer.rb +578 -0
  575. data/shoes/ruby/lib/rubygems/local_remote_options.rb +134 -0
  576. data/shoes/ruby/lib/rubygems/old_format.rb +148 -0
  577. data/shoes/ruby/lib/rubygems/package/f_sync_dir.rb +24 -0
  578. data/shoes/ruby/lib/rubygems/package/tar_header.rb +245 -0
  579. data/shoes/ruby/lib/rubygems/package/tar_input.rb +219 -0
  580. data/shoes/ruby/lib/rubygems/package/tar_output.rb +143 -0
  581. data/shoes/ruby/lib/rubygems/package/tar_reader/entry.rb +99 -0
  582. data/shoes/ruby/lib/rubygems/package/tar_reader.rb +86 -0
  583. data/shoes/ruby/lib/rubygems/package/tar_writer.rb +180 -0
  584. data/shoes/ruby/lib/rubygems/package.rb +95 -0
  585. data/shoes/ruby/lib/rubygems/platform.rb +178 -0
  586. data/shoes/ruby/lib/rubygems/remote_fetcher.rb +344 -0
  587. data/shoes/ruby/lib/rubygems/require_paths_builder.rb +15 -0
  588. data/shoes/ruby/lib/rubygems/requirement.rb +163 -0
  589. data/shoes/ruby/lib/rubygems/rubygems_version.rb +6 -0
  590. data/shoes/ruby/lib/rubygems/security.rb +786 -0
  591. data/shoes/ruby/lib/rubygems/server.rb +629 -0
  592. data/shoes/ruby/lib/rubygems/source_index.rb +559 -0
  593. data/shoes/ruby/lib/rubygems/source_info_cache.rb +393 -0
  594. data/shoes/ruby/lib/rubygems/source_info_cache_entry.rb +56 -0
  595. data/shoes/ruby/lib/rubygems/spec_fetcher.rb +249 -0
  596. data/shoes/ruby/lib/rubygems/specification.rb +1262 -0
  597. data/shoes/ruby/lib/rubygems/test_utilities.rb +131 -0
  598. data/shoes/ruby/lib/rubygems/timer.rb +25 -0
  599. data/shoes/ruby/lib/rubygems/uninstaller.rb +242 -0
  600. data/shoes/ruby/lib/rubygems/user_interaction.rb +360 -0
  601. data/shoes/ruby/lib/rubygems/validator.rb +208 -0
  602. data/shoes/ruby/lib/rubygems/version.rb +167 -0
  603. data/shoes/ruby/lib/rubygems/version_option.rb +48 -0
  604. data/shoes/ruby/lib/rubygems.rb +888 -0
  605. data/shoes/ruby/lib/scanf.rb +703 -0
  606. data/shoes/ruby/lib/securerandom.rb +182 -0
  607. data/shoes/ruby/lib/set.rb +1274 -0
  608. data/shoes/ruby/lib/shell/builtin-command.rb +160 -0
  609. data/shoes/ruby/lib/shell/command-processor.rb +593 -0
  610. data/shoes/ruby/lib/shell/error.rb +25 -0
  611. data/shoes/ruby/lib/shell/filter.rb +109 -0
  612. data/shoes/ruby/lib/shell/process-controller.rb +319 -0
  613. data/shoes/ruby/lib/shell/system-command.rb +159 -0
  614. data/shoes/ruby/lib/shell/version.rb +15 -0
  615. data/shoes/ruby/lib/shell.rb +300 -0
  616. data/shoes/ruby/lib/shellwords.rb +156 -0
  617. data/shoes/ruby/lib/singleton.rb +313 -0
  618. data/shoes/ruby/lib/sync.rb +307 -0
  619. data/shoes/ruby/lib/tempfile.rb +218 -0
  620. data/shoes/ruby/lib/test/unit/assertions.rb +122 -0
  621. data/shoes/ruby/lib/test/unit/testcase.rb +12 -0
  622. data/shoes/ruby/lib/test/unit.rb +66 -0
  623. data/shoes/ruby/lib/thread.rb +367 -0
  624. data/shoes/ruby/lib/thwait.rb +168 -0
  625. data/shoes/ruby/lib/time.rb +869 -0
  626. data/shoes/ruby/lib/timeout.rb +108 -0
  627. data/shoes/ruby/lib/tmpdir.rb +138 -0
  628. data/shoes/ruby/lib/tracer.rb +166 -0
  629. data/shoes/ruby/lib/tsort.rb +290 -0
  630. data/shoes/ruby/lib/ubygems.rb +10 -0
  631. data/shoes/ruby/lib/un.rb +304 -0
  632. data/shoes/ruby/lib/uri/common.rb +727 -0
  633. data/shoes/ruby/lib/uri/ftp.rb +198 -0
  634. data/shoes/ruby/lib/uri/generic.rb +1128 -0
  635. data/shoes/ruby/lib/uri/http.rb +100 -0
  636. data/shoes/ruby/lib/uri/https.rb +20 -0
  637. data/shoes/ruby/lib/uri/ldap.rb +190 -0
  638. data/shoes/ruby/lib/uri/ldaps.rb +12 -0
  639. data/shoes/ruby/lib/uri/mailto.rb +266 -0
  640. data/shoes/ruby/lib/uri.rb +29 -0
  641. data/shoes/ruby/lib/weakref.rb +80 -0
  642. data/shoes/ruby/lib/webrick/accesslog.rb +75 -0
  643. data/shoes/ruby/lib/webrick/cgi.rb +260 -0
  644. data/shoes/ruby/lib/webrick/compat.rb +15 -0
  645. data/shoes/ruby/lib/webrick/config.rb +100 -0
  646. data/shoes/ruby/lib/webrick/cookie.rb +110 -0
  647. data/shoes/ruby/lib/webrick/htmlutils.rb +25 -0
  648. data/shoes/ruby/lib/webrick/httpauth/authenticator.rb +79 -0
  649. data/shoes/ruby/lib/webrick/httpauth/basicauth.rb +65 -0
  650. data/shoes/ruby/lib/webrick/httpauth/digestauth.rb +344 -0
  651. data/shoes/ruby/lib/webrick/httpauth/htdigest.rb +91 -0
  652. data/shoes/ruby/lib/webrick/httpauth/htgroup.rb +61 -0
  653. data/shoes/ruby/lib/webrick/httpauth/htpasswd.rb +83 -0
  654. data/shoes/ruby/lib/webrick/httpauth/userdb.rb +29 -0
  655. data/shoes/ruby/lib/webrick/httpauth.rb +45 -0
  656. data/shoes/ruby/lib/webrick/httpproxy.rb +288 -0
  657. data/shoes/ruby/lib/webrick/httprequest.rb +402 -0
  658. data/shoes/ruby/lib/webrick/httpresponse.rb +326 -0
  659. data/shoes/ruby/lib/webrick/https.rb +63 -0
  660. data/shoes/ruby/lib/webrick/httpserver.rb +217 -0
  661. data/shoes/ruby/lib/webrick/httpservlet/abstract.rb +70 -0
  662. data/shoes/ruby/lib/webrick/httpservlet/cgi_runner.rb +47 -0
  663. data/shoes/ruby/lib/webrick/httpservlet/cgihandler.rb +110 -0
  664. data/shoes/ruby/lib/webrick/httpservlet/erbhandler.rb +54 -0
  665. data/shoes/ruby/lib/webrick/httpservlet/filehandler.rb +435 -0
  666. data/shoes/ruby/lib/webrick/httpservlet/prochandler.rb +33 -0
  667. data/shoes/ruby/lib/webrick/httpservlet.rb +22 -0
  668. data/shoes/ruby/lib/webrick/httpstatus.rb +132 -0
  669. data/shoes/ruby/lib/webrick/httputils.rb +392 -0
  670. data/shoes/ruby/lib/webrick/httpversion.rb +49 -0
  671. data/shoes/ruby/lib/webrick/log.rb +88 -0
  672. data/shoes/ruby/lib/webrick/server.rb +210 -0
  673. data/shoes/ruby/lib/webrick/ssl.rb +126 -0
  674. data/shoes/ruby/lib/webrick/utils.rb +175 -0
  675. data/shoes/ruby/lib/webrick/version.rb +13 -0
  676. data/shoes/ruby/lib/webrick.rb +29 -0
  677. data/shoes/ruby/lib/win32/registry.rb +832 -0
  678. data/shoes/ruby/lib/win32/resolv.rb +370 -0
  679. data/shoes/ruby/lib/win32/sspi.rb +330 -0
  680. data/shoes/ruby/lib/win32ole/property.rb +16 -0
  681. data/shoes/ruby/lib/xmlrpc/base64.rb +81 -0
  682. data/shoes/ruby/lib/xmlrpc/client.rb +625 -0
  683. data/shoes/ruby/lib/xmlrpc/config.rb +40 -0
  684. data/shoes/ruby/lib/xmlrpc/create.rb +290 -0
  685. data/shoes/ruby/lib/xmlrpc/datetime.rb +142 -0
  686. data/shoes/ruby/lib/xmlrpc/httpserver.rb +178 -0
  687. data/shoes/ruby/lib/xmlrpc/marshal.rb +76 -0
  688. data/shoes/ruby/lib/xmlrpc/parser.rb +813 -0
  689. data/shoes/ruby/lib/xmlrpc/server.rb +778 -0
  690. data/shoes/ruby/lib/xmlrpc/utils.rb +165 -0
  691. data/shoes/ruby/lib/yaml/baseemitter.rb +242 -0
  692. data/shoes/ruby/lib/yaml/basenode.rb +216 -0
  693. data/shoes/ruby/lib/yaml/constants.rb +45 -0
  694. data/shoes/ruby/lib/yaml/dbm.rb +111 -0
  695. data/shoes/ruby/lib/yaml/encoding.rb +33 -0
  696. data/shoes/ruby/lib/yaml/error.rb +34 -0
  697. data/shoes/ruby/lib/yaml/loader.rb +14 -0
  698. data/shoes/ruby/lib/yaml/rubytypes.rb +446 -0
  699. data/shoes/ruby/lib/yaml/store.rb +43 -0
  700. data/shoes/ruby/lib/yaml/stream.rb +40 -0
  701. data/shoes/ruby/lib/yaml/stringio.rb +83 -0
  702. data/shoes/ruby/lib/yaml/syck.rb +19 -0
  703. data/shoes/ruby/lib/yaml/tag.rb +91 -0
  704. data/shoes/ruby/lib/yaml/types.rb +192 -0
  705. data/shoes/ruby/lib/yaml/yamlnode.rb +54 -0
  706. data/shoes/ruby/lib/yaml/ypath.rb +52 -0
  707. data/shoes/ruby/lib/yaml.rb +440 -0
  708. data/shoes/samples/class-book.rb +43 -0
  709. data/shoes/samples/class-book.yaml +387 -0
  710. data/shoes/samples/expert-definr.rb +23 -0
  711. data/shoes/samples/expert-funnies.rb +51 -0
  712. data/shoes/samples/expert-irb.rb +112 -0
  713. data/shoes/samples/expert-minesweeper.rb +267 -0
  714. data/shoes/samples/expert-othello.rb +319 -0
  715. data/shoes/samples/expert-pong.rb +62 -0
  716. data/shoes/samples/expert-tankspank.rb +385 -0
  717. data/shoes/samples/good-arc.rb +37 -0
  718. data/shoes/samples/good-clock.rb +51 -0
  719. data/shoes/samples/good-follow.rb +26 -0
  720. data/shoes/samples/good-reminder.rb +174 -0
  721. data/shoes/samples/good-vjot.rb +56 -0
  722. data/shoes/samples/simple-accordion.rb +75 -0
  723. data/shoes/samples/simple-anim-shapes.rb +17 -0
  724. data/shoes/samples/simple-anim-text.rb +13 -0
  725. data/shoes/samples/simple-arc.rb +23 -0
  726. data/shoes/samples/simple-bounce.rb +24 -0
  727. data/shoes/samples/simple-calc.rb +70 -0
  728. data/shoes/samples/simple-control-sizes.rb +24 -0
  729. data/shoes/samples/simple-curve.rb +26 -0
  730. data/shoes/samples/simple-dialogs.rb +29 -0
  731. data/shoes/samples/simple-downloader.rb +27 -0
  732. data/shoes/samples/simple-draw.rb +13 -0
  733. data/shoes/samples/simple-editor.rb +28 -0
  734. data/shoes/samples/simple-form.rb +28 -0
  735. data/shoes/samples/simple-form.shy +0 -0
  736. data/shoes/samples/simple-mask.rb +21 -0
  737. data/shoes/samples/simple-menu.rb +31 -0
  738. data/shoes/samples/simple-menu1.rb +35 -0
  739. data/shoes/samples/simple-rubygems.rb +29 -0
  740. data/shoes/samples/simple-slide.rb +45 -0
  741. data/shoes/samples/simple-sphere.rb +28 -0
  742. data/shoes/samples/simple-timer.rb +13 -0
  743. data/shoes/samples/simple-video.rb +13 -0
  744. data/shoes/shoes +21 -0
  745. data/shoes/shoes.exe +0 -0
  746. data/shoes/shoes.exe.manifest +17 -0
  747. data/shoes/sqlite3.dll +0 -0
  748. data/shoes/static/Shoes.icns +0 -0
  749. data/shoes/static/Thumbs.db +0 -0
  750. data/shoes/static/app-icon.png +0 -0
  751. data/shoes/static/avatar.png +0 -0
  752. data/shoes/static/code_highlighter.js +188 -0
  753. data/shoes/static/code_highlighter_ruby.js +26 -0
  754. data/shoes/static/icon-debug.png +0 -0
  755. data/shoes/static/icon-error.png +0 -0
  756. data/shoes/static/icon-info.png +0 -0
  757. data/shoes/static/icon-warn.png +0 -0
  758. data/shoes/static/listbox_button1.png +0 -0
  759. data/shoes/static/listbox_button2.png +0 -0
  760. data/shoes/static/man-app.png +0 -0
  761. data/shoes/static/man-builds.png +0 -0
  762. data/shoes/static/man-editor-notepad.png +0 -0
  763. data/shoes/static/man-editor-osx.png +0 -0
  764. data/shoes/static/man-ele-background.png +0 -0
  765. data/shoes/static/man-ele-border.png +0 -0
  766. data/shoes/static/man-ele-button.png +0 -0
  767. data/shoes/static/man-ele-check.png +0 -0
  768. data/shoes/static/man-ele-editbox.png +0 -0
  769. data/shoes/static/man-ele-editline.png +0 -0
  770. data/shoes/static/man-ele-image.png +0 -0
  771. data/shoes/static/man-ele-listbox.png +0 -0
  772. data/shoes/static/man-ele-progress.png +0 -0
  773. data/shoes/static/man-ele-radio.png +0 -0
  774. data/shoes/static/man-ele-shape.png +0 -0
  775. data/shoes/static/man-ele-textblock.png +0 -0
  776. data/shoes/static/man-ele-video.png +0 -0
  777. data/shoes/static/man-intro-dmg.png +0 -0
  778. data/shoes/static/man-intro-exe.png +0 -0
  779. data/shoes/static/man-look-tiger.png +0 -0
  780. data/shoes/static/man-look-ubuntu.png +0 -0
  781. data/shoes/static/man-look-vista.png +0 -0
  782. data/shoes/static/man-run-osx.png +0 -0
  783. data/shoes/static/man-run-vista.png +0 -0
  784. data/shoes/static/man-run-xp.png +0 -0
  785. data/shoes/static/man-shot1.png +0 -0
  786. data/shoes/static/manual-en.txt +2783 -0
  787. data/shoes/static/manual-ja.txt +2780 -0
  788. data/shoes/static/manual.css +167 -0
  789. data/shoes/static/menu-corner1.png +0 -0
  790. data/shoes/static/menu-corner2.png +0 -0
  791. data/shoes/static/menu-gray.png +0 -0
  792. data/shoes/static/menu-left.png +0 -0
  793. data/shoes/static/menu-right.png +0 -0
  794. data/shoes/static/menu-top.png +0 -0
  795. data/shoes/static/shoes-dmg.jpg +0 -0
  796. data/shoes/static/shoes-icon-blue.png +0 -0
  797. data/shoes/static/shoes-icon.png +0 -0
  798. data/shoes/static/shoes-manual-apps.gif +0 -0
  799. data/shoes/static/stripe.png +0 -0
  800. data/shoes/static/stubs/blank.exe +0 -0
  801. data/shoes/static/stubs/blank.hfz +0 -0
  802. data/shoes/static/stubs/blank.run +375 -0
  803. data/shoes/static/stubs/cocoa-install +0 -0
  804. data/shoes/static/stubs/sh-install +48 -0
  805. data/shoes/static/tutor-back.png +0 -0
  806. data/shoes/zlib.dll +0 -0
  807. data/shoes/zlib1.dll +0 -0
  808. metadata +887 -0
@@ -0,0 +1,1188 @@
1
+ #
2
+ # irb/ruby-lex.rb - ruby lexcal analyzer
3
+ # $Release Version: 0.9.5$
4
+ # $Revision: 24448 $
5
+ # by Keiju ISHITSUKA(keiju@ruby-lang.org)
6
+ #
7
+ # --
8
+ #
9
+ #
10
+ #
11
+
12
+ require "e2mmap"
13
+ require "irb/slex"
14
+ require "irb/ruby-token"
15
+
16
+ class RubyLex
17
+ @RCS_ID='-$Id: ruby-lex.rb 24448 2009-08-08 10:55:48Z yugui $-'
18
+
19
+ extend Exception2MessageMapper
20
+ def_exception(:AlreadyDefinedToken, "Already defined token(%s)")
21
+ def_exception(:TkReading2TokenNoKey, "key nothing(key='%s')")
22
+ def_exception(:TkSymbol2TokenNoKey, "key nothing(key='%s')")
23
+ def_exception(:TkReading2TokenDuplicateError,
24
+ "key duplicate(token_n='%s', key='%s')")
25
+ def_exception(:SyntaxError, "%s")
26
+
27
+ def_exception(:TerminateLineInput, "Terminate Line Input")
28
+
29
+ include RubyToken
30
+
31
+ class << self
32
+ attr_accessor :debug_level
33
+ def debug?
34
+ @debug_level > 0
35
+ end
36
+ end
37
+ @debug_level = 0
38
+
39
+ def initialize
40
+ lex_init
41
+ set_input(STDIN)
42
+
43
+ @seek = 0
44
+ @exp_line_no = @line_no = 1
45
+ @base_char_no = 0
46
+ @char_no = 0
47
+ @rests = []
48
+ @readed = []
49
+ @here_readed = []
50
+
51
+ @indent = 0
52
+ @indent_stack = []
53
+ @lex_state = EXPR_BEG
54
+ @space_seen = false
55
+ @here_header = false
56
+
57
+ @continue = false
58
+ @line = ""
59
+
60
+ @skip_space = false
61
+ @readed_auto_clean_up = false
62
+ @exception_on_syntax_error = true
63
+
64
+ @prompt = nil
65
+ end
66
+
67
+ attr_accessor :skip_space
68
+ attr_accessor :readed_auto_clean_up
69
+ attr_accessor :exception_on_syntax_error
70
+
71
+ attr_reader :seek
72
+ attr_reader :char_no
73
+ attr_reader :line_no
74
+ attr_reader :indent
75
+
76
+ # io functions
77
+ def set_input(io, p = nil, &block)
78
+ @io = io
79
+ if p.respond_to?(:call)
80
+ @input = p
81
+ elsif block_given?
82
+ @input = block
83
+ else
84
+ @input = Proc.new{@io.gets}
85
+ end
86
+ end
87
+
88
+ def get_readed
89
+ if idx = @readed.reverse.index("\n")
90
+ @base_char_no = idx
91
+ else
92
+ @base_char_no += @readed.size
93
+ end
94
+
95
+ readed = @readed.join("")
96
+ @readed = []
97
+ readed
98
+ end
99
+
100
+ def getc
101
+ while @rests.empty?
102
+ # return nil unless buf_input
103
+ @rests.push nil unless buf_input
104
+ end
105
+ c = @rests.shift
106
+ return if c == nil
107
+ if @here_header
108
+ @here_readed.push c
109
+ else
110
+ @readed.push c
111
+ end
112
+ @seek += 1
113
+ if c == "\n"
114
+ @line_no += 1
115
+ @char_no = 0
116
+ else
117
+ @char_no += 1
118
+ end
119
+ c
120
+ end
121
+
122
+ def gets
123
+ l = ""
124
+ while c = getc
125
+ l.concat(c)
126
+ break if c == "\n"
127
+ end
128
+ return nil if l == "" and c.nil?
129
+ l
130
+ end
131
+
132
+ def eof?
133
+ @io.eof?
134
+ end
135
+
136
+ def getc_of_rests
137
+ if @rests.empty?
138
+ nil
139
+ else
140
+ getc
141
+ end
142
+ end
143
+
144
+ def ungetc(c = nil)
145
+ if @here_readed.empty?
146
+ c2 = @readed.pop
147
+ else
148
+ c2 = @here_readed.pop
149
+ end
150
+ c = c2 unless c
151
+ @rests.unshift c #c =
152
+ @seek -= 1
153
+ if c == "\n"
154
+ @line_no -= 1
155
+ if idx = @readed.reverse.index("\n")
156
+ @char_no = @readed.size - idx
157
+ else
158
+ @char_no = @base_char_no + @readed.size
159
+ end
160
+ else
161
+ @char_no -= 1
162
+ end
163
+ end
164
+
165
+ def peek_equal?(str)
166
+ chrs = str.split(//)
167
+ until @rests.size >= chrs.size
168
+ return false unless buf_input
169
+ end
170
+ @rests[0, chrs.size] == chrs
171
+ end
172
+
173
+ def peek_match?(regexp)
174
+ while @rests.empty?
175
+ return false unless buf_input
176
+ end
177
+ regexp =~ @rests.join("")
178
+ end
179
+
180
+ def peek(i = 0)
181
+ while @rests.size <= i
182
+ return nil unless buf_input
183
+ end
184
+ @rests[i]
185
+ end
186
+
187
+ def buf_input
188
+ prompt
189
+ line = @input.call
190
+ return nil unless line
191
+ @rests.concat line.chars.to_a
192
+ true
193
+ end
194
+ private :buf_input
195
+
196
+ def set_prompt(p = nil, &block)
197
+ p = block if block_given?
198
+ if p.respond_to?(:call)
199
+ @prompt = p
200
+ else
201
+ @prompt = Proc.new{print p}
202
+ end
203
+ end
204
+
205
+ def prompt
206
+ if @prompt
207
+ @prompt.call(@ltype, @indent, @continue, @line_no)
208
+ end
209
+ end
210
+
211
+ def initialize_input
212
+ @ltype = nil
213
+ @quoted = nil
214
+ @indent = 0
215
+ @indent_stack = []
216
+ @lex_state = EXPR_BEG
217
+ @space_seen = false
218
+ @here_header = false
219
+
220
+ @continue = false
221
+ prompt
222
+
223
+ @line = ""
224
+ @exp_line_no = @line_no
225
+ end
226
+
227
+ def each_top_level_statement
228
+ initialize_input
229
+ catch(:TERM_INPUT) do
230
+ loop do
231
+ begin
232
+ @continue = false
233
+ prompt
234
+ unless l = lex
235
+ throw :TERM_INPUT if @line == ''
236
+ else
237
+ @line.concat l
238
+ if @ltype or @continue or @indent > 0
239
+ next
240
+ end
241
+ end
242
+ if @line != "\n"
243
+ @line.force_encoding(@io.encoding)
244
+ yield @line, @exp_line_no
245
+ end
246
+ break unless l
247
+ @line = ''
248
+ @exp_line_no = @line_no
249
+
250
+ @indent = 0
251
+ @indent_stack = []
252
+ prompt
253
+ rescue TerminateLineInput
254
+ initialize_input
255
+ prompt
256
+ get_readed
257
+ end
258
+ end
259
+ end
260
+ end
261
+
262
+ def lex
263
+ until (((tk = token).kind_of?(TkNL) || tk.kind_of?(TkEND_OF_SCRIPT)) &&
264
+ !@continue or
265
+ tk.nil?)
266
+ #p tk
267
+ #p @lex_state
268
+ #p self
269
+ end
270
+ line = get_readed
271
+ # print self.inspect
272
+ if line == "" and tk.kind_of?(TkEND_OF_SCRIPT) || tk.nil?
273
+ nil
274
+ else
275
+ line
276
+ end
277
+ end
278
+
279
+ def token
280
+ # require "tracer"
281
+ # Tracer.on
282
+ @prev_seek = @seek
283
+ @prev_line_no = @line_no
284
+ @prev_char_no = @char_no
285
+ begin
286
+ begin
287
+ tk = @OP.match(self)
288
+ @space_seen = tk.kind_of?(TkSPACE)
289
+ rescue SyntaxError
290
+ raise if @exception_on_syntax_error
291
+ tk = TkError.new(@seek, @line_no, @char_no)
292
+ end
293
+ end while @skip_space and tk.kind_of?(TkSPACE)
294
+ if @readed_auto_clean_up
295
+ get_readed
296
+ end
297
+ # Tracer.off
298
+ tk
299
+ end
300
+
301
+ ENINDENT_CLAUSE = [
302
+ "case", "class", "def", "do", "for", "if",
303
+ "module", "unless", "until", "while", "begin" #, "when"
304
+ ]
305
+ DEINDENT_CLAUSE = ["end" #, "when"
306
+ ]
307
+
308
+ PERCENT_LTYPE = {
309
+ "q" => "\'",
310
+ "Q" => "\"",
311
+ "x" => "\`",
312
+ "r" => "/",
313
+ "w" => "]",
314
+ "W" => "]",
315
+ "s" => ":"
316
+ }
317
+
318
+ PERCENT_PAREN = {
319
+ "{" => "}",
320
+ "[" => "]",
321
+ "<" => ">",
322
+ "(" => ")"
323
+ }
324
+
325
+ Ltype2Token = {
326
+ "\'" => TkSTRING,
327
+ "\"" => TkSTRING,
328
+ "\`" => TkXSTRING,
329
+ "/" => TkREGEXP,
330
+ "]" => TkDSTRING,
331
+ ":" => TkSYMBOL
332
+ }
333
+ DLtype2Token = {
334
+ "\"" => TkDSTRING,
335
+ "\`" => TkDXSTRING,
336
+ "/" => TkDREGEXP,
337
+ }
338
+
339
+ def lex_init()
340
+ @OP = IRB::SLex.new
341
+ @OP.def_rules("\0", "\004", "\032") do |op, io|
342
+ Token(TkEND_OF_SCRIPT)
343
+ end
344
+
345
+ @OP.def_rules(" ", "\t", "\f", "\r", "\13") do |op, io|
346
+ @space_seen = true
347
+ while getc =~ /[ \t\f\r\13]/; end
348
+ ungetc
349
+ Token(TkSPACE)
350
+ end
351
+
352
+ @OP.def_rule("#") do |op, io|
353
+ identify_comment
354
+ end
355
+
356
+ @OP.def_rule("=begin",
357
+ proc{|op, io| @prev_char_no == 0 && peek(0) =~ /\s/}) do
358
+ |op, io|
359
+ @ltype = "="
360
+ until getc == "\n"; end
361
+ until peek_equal?("=end") && peek(4) =~ /\s/
362
+ until getc == "\n"; end
363
+ end
364
+ gets
365
+ @ltype = nil
366
+ Token(TkRD_COMMENT)
367
+ end
368
+
369
+ @OP.def_rule("\n") do |op, io|
370
+ print "\\n\n" if RubyLex.debug?
371
+ case @lex_state
372
+ when EXPR_BEG, EXPR_FNAME, EXPR_DOT
373
+ @continue = true
374
+ else
375
+ @continue = false
376
+ @lex_state = EXPR_BEG
377
+ until (@indent_stack.empty? ||
378
+ [TkLPAREN, TkLBRACK, TkLBRACE,
379
+ TkfLPAREN, TkfLBRACK, TkfLBRACE].include?(@indent_stack.last))
380
+ @indent_stack.pop
381
+ end
382
+ end
383
+ @here_header = false
384
+ @here_readed = []
385
+ Token(TkNL)
386
+ end
387
+
388
+ @OP.def_rules("*", "**",
389
+ "=", "==", "===",
390
+ "=~", "<=>",
391
+ "<", "<=",
392
+ ">", ">=", ">>",
393
+ "!", "!=", "!~") do
394
+ |op, io|
395
+ case @lex_state
396
+ when EXPR_FNAME, EXPR_DOT
397
+ @lex_state = EXPR_ARG
398
+ else
399
+ @lex_state = EXPR_BEG
400
+ end
401
+ Token(op)
402
+ end
403
+
404
+ @OP.def_rules("<<") do
405
+ |op, io|
406
+ tk = nil
407
+ if @lex_state != EXPR_END && @lex_state != EXPR_CLASS &&
408
+ (@lex_state != EXPR_ARG || @space_seen)
409
+ c = peek(0)
410
+ if /\S/ =~ c && (/["'`]/ =~ c || /[\w_]/ =~ c || c == "-")
411
+ tk = identify_here_document
412
+ end
413
+ end
414
+ unless tk
415
+ tk = Token(op)
416
+ case @lex_state
417
+ when EXPR_FNAME, EXPR_DOT
418
+ @lex_state = EXPR_ARG
419
+ else
420
+ @lex_state = EXPR_BEG
421
+ end
422
+ end
423
+ tk
424
+ end
425
+
426
+ @OP.def_rules("'", '"') do
427
+ |op, io|
428
+ identify_string(op)
429
+ end
430
+
431
+ @OP.def_rules("`") do
432
+ |op, io|
433
+ if @lex_state == EXPR_FNAME
434
+ @lex_state = EXPR_END
435
+ Token(op)
436
+ else
437
+ identify_string(op)
438
+ end
439
+ end
440
+
441
+ @OP.def_rules('?') do
442
+ |op, io|
443
+ if @lex_state == EXPR_END
444
+ @lex_state = EXPR_BEG
445
+ Token(TkQUESTION)
446
+ else
447
+ ch = getc
448
+ if @lex_state == EXPR_ARG && ch =~ /\s/
449
+ ungetc
450
+ @lex_state = EXPR_BEG;
451
+ Token(TkQUESTION)
452
+ else
453
+ if (ch == '\\')
454
+ read_escape
455
+ end
456
+ @lex_state = EXPR_END
457
+ Token(TkINTEGER)
458
+ end
459
+ end
460
+ end
461
+
462
+ @OP.def_rules("&", "&&", "|", "||") do
463
+ |op, io|
464
+ @lex_state = EXPR_BEG
465
+ Token(op)
466
+ end
467
+
468
+ @OP.def_rules("+=", "-=", "*=", "**=",
469
+ "&=", "|=", "^=", "<<=", ">>=", "||=", "&&=") do
470
+ |op, io|
471
+ @lex_state = EXPR_BEG
472
+ op =~ /^(.*)=$/
473
+ Token(TkOPASGN, $1)
474
+ end
475
+
476
+ @OP.def_rule("+@", proc{|op, io| @lex_state == EXPR_FNAME}) do
477
+ |op, io|
478
+ @lex_state = EXPR_ARG
479
+ Token(op)
480
+ end
481
+
482
+ @OP.def_rule("-@", proc{|op, io| @lex_state == EXPR_FNAME}) do
483
+ |op, io|
484
+ @lex_state = EXPR_ARG
485
+ Token(op)
486
+ end
487
+
488
+ @OP.def_rules("+", "-") do
489
+ |op, io|
490
+ catch(:RET) do
491
+ if @lex_state == EXPR_ARG
492
+ if @space_seen and peek(0) =~ /[0-9]/
493
+ throw :RET, identify_number
494
+ else
495
+ @lex_state = EXPR_BEG
496
+ end
497
+ elsif @lex_state != EXPR_END and peek(0) =~ /[0-9]/
498
+ throw :RET, identify_number
499
+ else
500
+ @lex_state = EXPR_BEG
501
+ end
502
+ Token(op)
503
+ end
504
+ end
505
+
506
+ @OP.def_rule(".") do
507
+ |op, io|
508
+ @lex_state = EXPR_BEG
509
+ if peek(0) =~ /[0-9]/
510
+ ungetc
511
+ identify_number
512
+ else
513
+ # for "obj.if" etc.
514
+ @lex_state = EXPR_DOT
515
+ Token(TkDOT)
516
+ end
517
+ end
518
+
519
+ @OP.def_rules("..", "...") do
520
+ |op, io|
521
+ @lex_state = EXPR_BEG
522
+ Token(op)
523
+ end
524
+
525
+ lex_int2
526
+ end
527
+
528
+ def lex_int2
529
+ @OP.def_rules("]", "}", ")") do
530
+ |op, io|
531
+ @lex_state = EXPR_END
532
+ @indent -= 1
533
+ @indent_stack.pop
534
+ Token(op)
535
+ end
536
+
537
+ @OP.def_rule(":") do
538
+ |op, io|
539
+ if @lex_state == EXPR_END || peek(0) =~ /\s/
540
+ @lex_state = EXPR_BEG
541
+ Token(TkCOLON)
542
+ else
543
+ @lex_state = EXPR_FNAME;
544
+ Token(TkSYMBEG)
545
+ end
546
+ end
547
+
548
+ @OP.def_rule("::") do
549
+ |op, io|
550
+ # p @lex_state.id2name, @space_seen
551
+ if @lex_state == EXPR_BEG or @lex_state == EXPR_ARG && @space_seen
552
+ @lex_state = EXPR_BEG
553
+ Token(TkCOLON3)
554
+ else
555
+ @lex_state = EXPR_DOT
556
+ Token(TkCOLON2)
557
+ end
558
+ end
559
+
560
+ @OP.def_rule("/") do
561
+ |op, io|
562
+ if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
563
+ identify_string(op)
564
+ elsif peek(0) == '='
565
+ getc
566
+ @lex_state = EXPR_BEG
567
+ Token(TkOPASGN, "/") #/)
568
+ elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
569
+ identify_string(op)
570
+ else
571
+ @lex_state = EXPR_BEG
572
+ Token("/") #/)
573
+ end
574
+ end
575
+
576
+ @OP.def_rules("^") do
577
+ |op, io|
578
+ @lex_state = EXPR_BEG
579
+ Token("^")
580
+ end
581
+
582
+ # @OP.def_rules("^=") do
583
+ # @lex_state = EXPR_BEG
584
+ # Token(OP_ASGN, :^)
585
+ # end
586
+
587
+ @OP.def_rules(",") do
588
+ |op, io|
589
+ @lex_state = EXPR_BEG
590
+ Token(op)
591
+ end
592
+
593
+ @OP.def_rules(";") do
594
+ |op, io|
595
+ @lex_state = EXPR_BEG
596
+ until (@indent_stack.empty? ||
597
+ [TkLPAREN, TkLBRACK, TkLBRACE,
598
+ TkfLPAREN, TkfLBRACK, TkfLBRACE].include?(@indent_stack.last))
599
+ @indent_stack.pop
600
+ end
601
+ Token(op)
602
+ end
603
+
604
+ @OP.def_rule("~") do
605
+ |op, io|
606
+ @lex_state = EXPR_BEG
607
+ Token("~")
608
+ end
609
+
610
+ @OP.def_rule("~@", proc{|op, io| @lex_state == EXPR_FNAME}) do
611
+ |op, io|
612
+ @lex_state = EXPR_BEG
613
+ Token("~")
614
+ end
615
+
616
+ @OP.def_rule("(") do
617
+ |op, io|
618
+ @indent += 1
619
+ if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
620
+ @lex_state = EXPR_BEG
621
+ tk_c = TkfLPAREN
622
+ else
623
+ @lex_state = EXPR_BEG
624
+ tk_c = TkLPAREN
625
+ end
626
+ @indent_stack.push tk_c
627
+ tk = Token(tk_c)
628
+ end
629
+
630
+ @OP.def_rule("[]", proc{|op, io| @lex_state == EXPR_FNAME}) do
631
+ |op, io|
632
+ @lex_state = EXPR_ARG
633
+ Token("[]")
634
+ end
635
+
636
+ @OP.def_rule("[]=", proc{|op, io| @lex_state == EXPR_FNAME}) do
637
+ |op, io|
638
+ @lex_state = EXPR_ARG
639
+ Token("[]=")
640
+ end
641
+
642
+ @OP.def_rule("[") do
643
+ |op, io|
644
+ @indent += 1
645
+ if @lex_state == EXPR_FNAME
646
+ tk_c = TkfLBRACK
647
+ else
648
+ if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
649
+ tk_c = TkLBRACK
650
+ elsif @lex_state == EXPR_ARG && @space_seen
651
+ tk_c = TkLBRACK
652
+ else
653
+ tk_c = TkfLBRACK
654
+ end
655
+ @lex_state = EXPR_BEG
656
+ end
657
+ @indent_stack.push tk_c
658
+ Token(tk_c)
659
+ end
660
+
661
+ @OP.def_rule("{") do
662
+ |op, io|
663
+ @indent += 1
664
+ if @lex_state != EXPR_END && @lex_state != EXPR_ARG
665
+ tk_c = TkLBRACE
666
+ else
667
+ tk_c = TkfLBRACE
668
+ end
669
+ @lex_state = EXPR_BEG
670
+ @indent_stack.push tk_c
671
+ Token(tk_c)
672
+ end
673
+
674
+ @OP.def_rule('\\') do
675
+ |op, io|
676
+ if getc == "\n"
677
+ @space_seen = true
678
+ @continue = true
679
+ Token(TkSPACE)
680
+ else
681
+ ungetc
682
+ Token("\\")
683
+ end
684
+ end
685
+
686
+ @OP.def_rule('%') do
687
+ |op, io|
688
+ if @lex_state == EXPR_BEG || @lex_state == EXPR_MID
689
+ identify_quotation
690
+ elsif peek(0) == '='
691
+ getc
692
+ Token(TkOPASGN, :%)
693
+ elsif @lex_state == EXPR_ARG and @space_seen and peek(0) !~ /\s/
694
+ identify_quotation
695
+ else
696
+ @lex_state = EXPR_BEG
697
+ Token("%") #))
698
+ end
699
+ end
700
+
701
+ @OP.def_rule('$') do
702
+ |op, io|
703
+ identify_gvar
704
+ end
705
+
706
+ @OP.def_rule('@') do
707
+ |op, io|
708
+ if peek(0) =~ /[\w_@]/
709
+ ungetc
710
+ identify_identifier
711
+ else
712
+ Token("@")
713
+ end
714
+ end
715
+
716
+ # @OP.def_rule("def", proc{|op, io| /\s/ =~ io.peek(0)}) do
717
+ # |op, io|
718
+ # @indent += 1
719
+ # @lex_state = EXPR_FNAME
720
+ # # @lex_state = EXPR_END
721
+ # # until @rests[0] == "\n" or @rests[0] == ";"
722
+ # # rests.shift
723
+ # # end
724
+ # end
725
+
726
+ @OP.def_rule("") do
727
+ |op, io|
728
+ printf "MATCH: start %s: %s\n", op, io.inspect if RubyLex.debug?
729
+ if peek(0) =~ /[0-9]/
730
+ t = identify_number
731
+ elsif peek(0) =~ /[\w_]/
732
+ t = identify_identifier
733
+ end
734
+ printf "MATCH: end %s: %s\n", op, io.inspect if RubyLex.debug?
735
+ t
736
+ end
737
+
738
+ p @OP if RubyLex.debug?
739
+ end
740
+
741
+ def identify_gvar
742
+ @lex_state = EXPR_END
743
+
744
+ case ch = getc
745
+ when /[~_*$?!@\/\\;,=:<>".]/ #"
746
+ Token(TkGVAR, "$" + ch)
747
+ when "-"
748
+ Token(TkGVAR, "$-" + getc)
749
+ when "&", "`", "'", "+"
750
+ Token(TkBACK_REF, "$"+ch)
751
+ when /[1-9]/
752
+ while getc =~ /[0-9]/; end
753
+ ungetc
754
+ Token(TkNTH_REF)
755
+ when /\w/
756
+ ungetc
757
+ ungetc
758
+ identify_identifier
759
+ else
760
+ ungetc
761
+ Token("$")
762
+ end
763
+ end
764
+
765
+ def identify_identifier
766
+ token = ""
767
+ if peek(0) =~ /[$@]/
768
+ token.concat(c = getc)
769
+ if c == "@" and peek(0) == "@"
770
+ token.concat getc
771
+ end
772
+ end
773
+
774
+ while (ch = getc) =~ /\w|_/
775
+ print ":", ch, ":" if RubyLex.debug?
776
+ token.concat ch
777
+ end
778
+ ungetc
779
+
780
+ if (ch == "!" || ch == "?") && token[0,1] =~ /\w/ && peek(0) != "="
781
+ token.concat getc
782
+ end
783
+
784
+ # almost fix token
785
+
786
+ case token
787
+ when /^\$/
788
+ return Token(TkGVAR, token)
789
+ when /^\@\@/
790
+ @lex_state = EXPR_END
791
+ # p Token(TkCVAR, token)
792
+ return Token(TkCVAR, token)
793
+ when /^\@/
794
+ @lex_state = EXPR_END
795
+ return Token(TkIVAR, token)
796
+ end
797
+
798
+ if @lex_state != EXPR_DOT
799
+ print token, "\n" if RubyLex.debug?
800
+
801
+ token_c, *trans = TkReading2Token[token]
802
+ if token_c
803
+ # reserved word?
804
+
805
+ if (@lex_state != EXPR_BEG &&
806
+ @lex_state != EXPR_FNAME &&
807
+ trans[1])
808
+ # modifiers
809
+ token_c = TkSymbol2Token[trans[1]]
810
+ @lex_state = trans[0]
811
+ else
812
+ if @lex_state != EXPR_FNAME
813
+ if ENINDENT_CLAUSE.include?(token)
814
+ # check for ``class = val'' etc.
815
+ valid = true
816
+ case token
817
+ when "class"
818
+ valid = false unless peek_match?(/^\s*(<<|\w|::)/)
819
+ when "def"
820
+ valid = false if peek_match?(/^\s*(([+\-\/*&\|^]|<<|>>|\|\||\&\&)=|\&\&|\|\|)/)
821
+ when "do"
822
+ valid = false if peek_match?(/^\s*([+\-\/*]?=|\*|<|>|\&)/)
823
+ when *ENINDENT_CLAUSE
824
+ valid = false if peek_match?(/^\s*([+\-\/*]?=|\*|<|>|\&|\|)/)
825
+ else
826
+ # no nothing
827
+ end
828
+ if valid
829
+ if token == "do"
830
+ if ![TkFOR, TkWHILE, TkUNTIL].include?(@indent_stack.last)
831
+ @indent += 1
832
+ @indent_stack.push token_c
833
+ end
834
+ else
835
+ @indent += 1
836
+ @indent_stack.push token_c
837
+ end
838
+ # p @indent_stack
839
+ end
840
+
841
+ elsif DEINDENT_CLAUSE.include?(token)
842
+ @indent -= 1
843
+ @indent_stack.pop
844
+ end
845
+ @lex_state = trans[0]
846
+ else
847
+ @lex_state = EXPR_END
848
+ end
849
+ end
850
+ return Token(token_c, token)
851
+ end
852
+ end
853
+
854
+ if @lex_state == EXPR_FNAME
855
+ @lex_state = EXPR_END
856
+ if peek(0) == '='
857
+ token.concat getc
858
+ end
859
+ elsif @lex_state == EXPR_BEG || @lex_state == EXPR_DOT
860
+ @lex_state = EXPR_ARG
861
+ else
862
+ @lex_state = EXPR_END
863
+ end
864
+
865
+ if token[0, 1] =~ /[A-Z]/
866
+ return Token(TkCONSTANT, token)
867
+ elsif token[token.size - 1, 1] =~ /[!?]/
868
+ return Token(TkFID, token)
869
+ else
870
+ return Token(TkIDENTIFIER, token)
871
+ end
872
+ end
873
+
874
+ def identify_here_document
875
+ ch = getc
876
+ # if lt = PERCENT_LTYPE[ch]
877
+ if ch == "-"
878
+ ch = getc
879
+ indent = true
880
+ end
881
+ if /['"`]/ =~ ch
882
+ lt = ch
883
+ quoted = ""
884
+ while (c = getc) && c != lt
885
+ quoted.concat c
886
+ end
887
+ else
888
+ lt = '"'
889
+ quoted = ch.dup
890
+ while (c = getc) && c =~ /\w/
891
+ quoted.concat c
892
+ end
893
+ ungetc
894
+ end
895
+
896
+ ltback, @ltype = @ltype, lt
897
+ reserve = []
898
+ while ch = getc
899
+ reserve.push ch
900
+ if ch == "\\"
901
+ reserve.push ch = getc
902
+ elsif ch == "\n"
903
+ break
904
+ end
905
+ end
906
+
907
+ @here_header = false
908
+ while l = gets
909
+ l = l.sub(/(:?\r)?\n\z/, '')
910
+ if (indent ? l.strip : l) == quoted
911
+ break
912
+ end
913
+ end
914
+
915
+ @here_header = true
916
+ @here_readed.concat reserve
917
+ while ch = reserve.pop
918
+ ungetc ch
919
+ end
920
+
921
+ @ltype = ltback
922
+ @lex_state = EXPR_END
923
+ Token(Ltype2Token[lt])
924
+ end
925
+
926
+ def identify_quotation
927
+ ch = getc
928
+ if lt = PERCENT_LTYPE[ch]
929
+ ch = getc
930
+ elsif ch =~ /\W/
931
+ lt = "\""
932
+ else
933
+ RubyLex.fail SyntaxError, "unknown type of %string"
934
+ end
935
+ # if ch !~ /\W/
936
+ # ungetc
937
+ # next
938
+ # end
939
+ #@ltype = lt
940
+ @quoted = ch unless @quoted = PERCENT_PAREN[ch]
941
+ identify_string(lt, @quoted)
942
+ end
943
+
944
+ def identify_number
945
+ @lex_state = EXPR_END
946
+
947
+ if peek(0) == "0" && peek(1) !~ /[.eE]/
948
+ getc
949
+ case peek(0)
950
+ when /[xX]/
951
+ ch = getc
952
+ match = /[0-9a-fA-F_]/
953
+ when /[bB]/
954
+ ch = getc
955
+ match = /[01_]/
956
+ when /[oO]/
957
+ ch = getc
958
+ match = /[0-7_]/
959
+ when /[dD]/
960
+ ch = getc
961
+ match = /[0-9_]/
962
+ when /[0-7]/
963
+ match = /[0-7_]/
964
+ when /[89]/
965
+ RubyLex.fail SyntaxError, "Invalid octal digit"
966
+ else
967
+ return Token(TkINTEGER)
968
+ end
969
+
970
+ len0 = true
971
+ non_digit = false
972
+ while ch = getc
973
+ if match =~ ch
974
+ if ch == "_"
975
+ if non_digit
976
+ RubyLex.fail SyntaxError, "trailing `#{ch}' in number"
977
+ else
978
+ non_digit = ch
979
+ end
980
+ else
981
+ non_digit = false
982
+ len0 = false
983
+ end
984
+ else
985
+ ungetc
986
+ if len0
987
+ RubyLex.fail SyntaxError, "numeric literal without digits"
988
+ end
989
+ if non_digit
990
+ RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
991
+ end
992
+ break
993
+ end
994
+ end
995
+ return Token(TkINTEGER)
996
+ end
997
+
998
+ type = TkINTEGER
999
+ allow_point = true
1000
+ allow_e = true
1001
+ non_digit = false
1002
+ while ch = getc
1003
+ case ch
1004
+ when /[0-9]/
1005
+ non_digit = false
1006
+ when "_"
1007
+ non_digit = ch
1008
+ when allow_point && "."
1009
+ if non_digit
1010
+ RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
1011
+ end
1012
+ type = TkFLOAT
1013
+ if peek(0) !~ /[0-9]/
1014
+ type = TkINTEGER
1015
+ ungetc
1016
+ break
1017
+ end
1018
+ allow_point = false
1019
+ when allow_e && "e", allow_e && "E"
1020
+ if non_digit
1021
+ RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
1022
+ end
1023
+ type = TkFLOAT
1024
+ if peek(0) =~ /[+-]/
1025
+ getc
1026
+ end
1027
+ allow_e = false
1028
+ allow_point = false
1029
+ non_digit = ch
1030
+ else
1031
+ if non_digit
1032
+ RubyLex.fail SyntaxError, "trailing `#{non_digit}' in number"
1033
+ end
1034
+ ungetc
1035
+ break
1036
+ end
1037
+ end
1038
+ Token(type)
1039
+ end
1040
+
1041
+ def identify_string(ltype, quoted = ltype)
1042
+ @ltype = ltype
1043
+ @quoted = quoted
1044
+ subtype = nil
1045
+ begin
1046
+ nest = 0
1047
+ while ch = getc
1048
+ if @quoted == ch and nest == 0
1049
+ break
1050
+ elsif ch == "#" and peek(0) == "{"
1051
+ identify_string_dvar
1052
+ elsif @ltype != "'" && @ltype != "]" && @ltype != ":" and ch == "#"
1053
+ subtype = true
1054
+ elsif ch == '\\' and @ltype == "'" #'
1055
+ case ch = getc
1056
+ when "\\", "\n", "'"
1057
+ else
1058
+ ungetc
1059
+ end
1060
+ elsif ch == '\\' #'
1061
+ read_escape
1062
+ end
1063
+ if PERCENT_PAREN.values.include?(@quoted)
1064
+ if PERCENT_PAREN[ch] == @quoted
1065
+ nest += 1
1066
+ elsif ch == @quoted
1067
+ nest -= 1
1068
+ end
1069
+ end
1070
+ end
1071
+ if @ltype == "/"
1072
+ if peek(0) =~ /i|m|x|o|e|s|u|n/
1073
+ getc
1074
+ end
1075
+ end
1076
+ if subtype
1077
+ Token(DLtype2Token[ltype])
1078
+ else
1079
+ Token(Ltype2Token[ltype])
1080
+ end
1081
+ ensure
1082
+ @ltype = nil
1083
+ @quoted = nil
1084
+ @lex_state = EXPR_END
1085
+ end
1086
+ end
1087
+
1088
+ def identify_string_dvar
1089
+ begin
1090
+ getc
1091
+
1092
+ reserve_continue = @continue
1093
+ reserve_ltype = @ltype
1094
+ reserve_indent = @indent
1095
+ reserve_indent_stack = @indent_stack
1096
+ reserve_state = @lex_state
1097
+ reserve_quoted = @quoted
1098
+
1099
+ @ltype = nil
1100
+ @quoted = nil
1101
+ @indent = 0
1102
+ @indent_stack = []
1103
+ @lex_state = EXPR_BEG
1104
+
1105
+ loop do
1106
+ @continue = false
1107
+ prompt
1108
+ tk = token
1109
+ if @ltype or @continue or @indent > 0
1110
+ next
1111
+ end
1112
+ break if tk.kind_of?(TkRBRACE)
1113
+ end
1114
+ ensure
1115
+ @continue = reserve_continue
1116
+ @ltype = reserve_ltype
1117
+ @indent = reserve_indent
1118
+ @indent_stack = reserve_indent_stack
1119
+ @lex_state = reserve_state
1120
+ @quoted = reserve_quoted
1121
+ end
1122
+ end
1123
+
1124
+ def identify_comment
1125
+ @ltype = "#"
1126
+
1127
+ while ch = getc
1128
+ # if ch == "\\" #"
1129
+ # read_escape
1130
+ # end
1131
+ if ch == "\n"
1132
+ @ltype = nil
1133
+ ungetc
1134
+ break
1135
+ end
1136
+ end
1137
+ return Token(TkCOMMENT)
1138
+ end
1139
+
1140
+ def read_escape
1141
+ case ch = getc
1142
+ when "\n", "\r", "\f"
1143
+ when "\\", "n", "t", "r", "f", "v", "a", "e", "b", "s" #"
1144
+ when /[0-7]/
1145
+ ungetc ch
1146
+ 3.times do
1147
+ case ch = getc
1148
+ when /[0-7]/
1149
+ when nil
1150
+ break
1151
+ else
1152
+ ungetc
1153
+ break
1154
+ end
1155
+ end
1156
+
1157
+ when "x"
1158
+ 2.times do
1159
+ case ch = getc
1160
+ when /[0-9a-fA-F]/
1161
+ when nil
1162
+ break
1163
+ else
1164
+ ungetc
1165
+ break
1166
+ end
1167
+ end
1168
+
1169
+ when "M"
1170
+ if (ch = getc) != '-'
1171
+ ungetc
1172
+ else
1173
+ if (ch = getc) == "\\" #"
1174
+ read_escape
1175
+ end
1176
+ end
1177
+
1178
+ when "C", "c" #, "^"
1179
+ if ch == "C" and (ch = getc) != "-"
1180
+ ungetc
1181
+ elsif (ch = getc) == "\\" #"
1182
+ read_escape
1183
+ end
1184
+ else
1185
+ # other characters
1186
+ end
1187
+ end
1188
+ end