shoesgem 0.1424.0 → 0.1426.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (320) hide show
  1. data/README.rdoc +3 -0
  2. data/shoes/CHANGELOG.txt +21 -21
  3. data/shoes/COPYING.txt +30 -30
  4. data/shoes/VERSION.txt +1 -1
  5. data/shoes/freetype6.dll +0 -0
  6. data/shoes/lib/shoes/cache.rb +54 -54
  7. data/shoes/lib/shoes/data.rb +39 -39
  8. data/shoes/lib/shoes/help.rb +421 -421
  9. data/shoes/lib/shoes/image.rb +25 -25
  10. data/shoes/lib/shoes/inspect.rb +128 -128
  11. data/shoes/lib/shoes/log.rb +48 -48
  12. data/shoes/lib/shoes/minitar.rb +986 -986
  13. data/shoes/lib/shoes/override.rb +38 -38
  14. data/shoes/lib/shoes/pack.rb +503 -503
  15. data/shoes/lib/shoes/search.rb +46 -46
  16. data/shoes/lib/shoes/setup.rb +329 -329
  17. data/shoes/lib/shoes/shy.rb +131 -131
  18. data/shoes/lib/shoes/shybuilder.rb +44 -44
  19. data/shoes/lib/shoes.rb +522 -522
  20. data/shoes/libcairo-2.dll +0 -0
  21. data/shoes/libeay32.dll +0 -0
  22. data/shoes/libexpat-1.dll +0 -0
  23. data/shoes/libfontconfig-1.dll +0 -0
  24. data/shoes/libgio-2.0-0.dll +0 -0
  25. data/shoes/libglib-2.0-0.dll +0 -0
  26. data/shoes/libgmodule-2.0-0.dll +0 -0
  27. data/shoes/libgobject-2.0-0.dll +0 -0
  28. data/shoes/libgthread-2.0-0.dll +0 -0
  29. data/shoes/libiconv2.dll +0 -0
  30. data/shoes/libjpeg-8.dll +0 -0
  31. data/shoes/libpango-1.0-0.dll +0 -0
  32. data/shoes/libpangocairo-1.0-0.dll +0 -0
  33. data/shoes/libpangoft2-1.0-0.dll +0 -0
  34. data/shoes/libpangowin32-1.0-0.dll +0 -0
  35. data/shoes/libpng14-14.dll +0 -0
  36. data/shoes/libportaudio-2.dll +0 -0
  37. data/shoes/libshoes.dll +0 -0
  38. data/shoes/libssl32.dll +0 -0
  39. data/shoes/libungif4.dll +0 -0
  40. data/shoes/msvcrt-ruby191.dll +0 -0
  41. data/shoes/nsis/base.nsi +644 -0
  42. data/shoes/nsis/installer-1.bmp +0 -0
  43. data/shoes/nsis/installer-2.bmp +0 -0
  44. data/shoes/nsis/setup.ico +0 -0
  45. data/shoes/nsis/shoes.exe.manifest +17 -0
  46. data/shoes/nsis/shoes.ico +0 -0
  47. data/shoes/nsis/shoes.nsi +644 -0
  48. data/shoes/nsis/stub-inject.c +59 -0
  49. data/shoes/nsis/stub.c +271 -0
  50. data/shoes/nsis/stub32.h +14 -0
  51. data/shoes/nsis/stub32.rc +16 -0
  52. data/shoes/readline5.dll +0 -0
  53. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/fast_xs.so +0 -0
  54. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/blankslate.rb +63 -63
  55. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/builder.rb +216 -216
  56. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/elements.rb +510 -510
  57. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/htmlinfo.rb +691 -691
  58. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/inspect.rb +103 -103
  59. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/modules.rb +40 -40
  60. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/parse.rb +38 -38
  61. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tag.rb +202 -202
  62. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tags.rb +164 -164
  63. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/traverse.rb +838 -838
  64. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/xchar.rb +94 -94
  65. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot.rb +26 -26
  66. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot_scan.so +0 -0
  67. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/core.rb +135 -135
  68. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/rails.rb +58 -58
  69. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/common.rb +354 -354
  70. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/generator.so +0 -0
  71. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/parser.so +0 -0
  72. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext.rb +13 -13
  73. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/version.rb +9 -9
  74. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json.rb +8 -8
  75. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/constants.rb +49 -49
  76. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/database.rb +721 -721
  77. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/api.rb +152 -152
  78. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/dl/driver.rb +307 -307
  79. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/driver/native/driver.rb +219 -219
  80. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/errors.rb +68 -68
  81. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/pragmas.rb +271 -271
  82. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/resultset.rb +180 -180
  83. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/statement.rb +231 -231
  84. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/translator.rb +109 -109
  85. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/value.rb +57 -57
  86. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3/version.rb +16 -16
  87. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3.rb +1 -1
  88. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.2.5-x86-mswin32/lib/sqlite3_api.so +0 -0
  89. data/shoes/ruby/gems/1.9.1/specifications/hpricot-0.8.1.gemspec +32 -32
  90. data/shoes/ruby/gems/1.9.1/specifications/json-shoes-1.1.3.gemspec +34 -34
  91. data/shoes/ruby/gems/1.9.1/specifications/sqlite3-ruby-1.2.5-x86-mswin32.gemspec +46 -46
  92. data/shoes/ruby/lib/ftsearch/analysis/analyzer.rb +16 -16
  93. data/shoes/ruby/lib/ftsearch/analysis/simple_identifier_analyzer.rb +23 -23
  94. data/shoes/ruby/lib/ftsearch/analysis/whitespace_analyzer.rb +22 -22
  95. data/shoes/ruby/lib/ftsearch/document_map_reader.rb +106 -106
  96. data/shoes/ruby/lib/ftsearch/document_map_writer.rb +46 -46
  97. data/shoes/ruby/lib/ftsearch/field_infos.rb +46 -46
  98. data/shoes/ruby/lib/ftsearch/fragment_writer.rb +114 -114
  99. data/shoes/ruby/lib/ftsearch/fulltext_reader.rb +52 -52
  100. data/shoes/ruby/lib/ftsearch/fulltext_writer.rb +75 -75
  101. data/shoes/ruby/lib/ftsearch/suffix_array_reader.rb +275 -275
  102. data/shoes/ruby/lib/ftsearch/suffix_array_writer.rb +99 -99
  103. data/shoes/ruby/lib/ftsearch/util.rb +21 -21
  104. data/shoes/ruby/lib/i386-mingw32/bigdecimal.so +0 -0
  105. data/shoes/ruby/lib/i386-mingw32/binject.so +0 -0
  106. data/shoes/ruby/lib/i386-mingw32/bloops.so +0 -0
  107. data/shoes/ruby/lib/i386-mingw32/continuation.so +0 -0
  108. data/shoes/ruby/lib/i386-mingw32/coverage.so +0 -0
  109. data/shoes/ruby/lib/i386-mingw32/curses.so +0 -0
  110. data/shoes/ruby/lib/i386-mingw32/digest/bubblebabble.so +0 -0
  111. data/shoes/ruby/lib/i386-mingw32/digest/md5.so +0 -0
  112. data/shoes/ruby/lib/i386-mingw32/digest/rmd160.so +0 -0
  113. data/shoes/ruby/lib/i386-mingw32/digest/sha1.so +0 -0
  114. data/shoes/ruby/lib/i386-mingw32/digest/sha2.so +0 -0
  115. data/shoes/ruby/lib/i386-mingw32/digest.so +0 -0
  116. data/shoes/ruby/lib/i386-mingw32/dl.so +0 -0
  117. data/shoes/ruby/lib/i386-mingw32/enc/big5.so +0 -0
  118. data/shoes/ruby/lib/i386-mingw32/enc/cp949.so +0 -0
  119. data/shoes/ruby/lib/i386-mingw32/enc/emacs_mule.so +0 -0
  120. data/shoes/ruby/lib/i386-mingw32/enc/encdb.so +0 -0
  121. data/shoes/ruby/lib/i386-mingw32/enc/euc_jp.so +0 -0
  122. data/shoes/ruby/lib/i386-mingw32/enc/euc_kr.so +0 -0
  123. data/shoes/ruby/lib/i386-mingw32/enc/euc_tw.so +0 -0
  124. data/shoes/ruby/lib/i386-mingw32/enc/gb18030.so +0 -0
  125. data/shoes/ruby/lib/i386-mingw32/enc/gb2312.so +0 -0
  126. data/shoes/ruby/lib/i386-mingw32/enc/gbk.so +0 -0
  127. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_1.so +0 -0
  128. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_10.so +0 -0
  129. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_11.so +0 -0
  130. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_13.so +0 -0
  131. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_14.so +0 -0
  132. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_15.so +0 -0
  133. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_16.so +0 -0
  134. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_2.so +0 -0
  135. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_3.so +0 -0
  136. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_4.so +0 -0
  137. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_5.so +0 -0
  138. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_6.so +0 -0
  139. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_7.so +0 -0
  140. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_8.so +0 -0
  141. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_9.so +0 -0
  142. data/shoes/ruby/lib/i386-mingw32/enc/koi8_r.so +0 -0
  143. data/shoes/ruby/lib/i386-mingw32/enc/koi8_u.so +0 -0
  144. data/shoes/ruby/lib/i386-mingw32/enc/shift_jis.so +0 -0
  145. data/shoes/ruby/lib/i386-mingw32/enc/trans/big5.so +0 -0
  146. data/shoes/ruby/lib/i386-mingw32/enc/trans/chinese.so +0 -0
  147. data/shoes/ruby/lib/i386-mingw32/enc/trans/escape.so +0 -0
  148. data/shoes/ruby/lib/i386-mingw32/enc/trans/gb18030.so +0 -0
  149. data/shoes/ruby/lib/i386-mingw32/enc/trans/gbk.so +0 -0
  150. data/shoes/ruby/lib/i386-mingw32/enc/trans/iso2022.so +0 -0
  151. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese.so +0 -0
  152. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_euc.so +0 -0
  153. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_sjis.so +0 -0
  154. data/shoes/ruby/lib/i386-mingw32/enc/trans/korean.so +0 -0
  155. data/shoes/ruby/lib/i386-mingw32/enc/trans/single_byte.so +0 -0
  156. data/shoes/ruby/lib/i386-mingw32/enc/trans/transdb.so +0 -0
  157. data/shoes/ruby/lib/i386-mingw32/enc/trans/utf_16_32.so +0 -0
  158. data/shoes/ruby/lib/i386-mingw32/enc/utf_16be.so +0 -0
  159. data/shoes/ruby/lib/i386-mingw32/enc/utf_16le.so +0 -0
  160. data/shoes/ruby/lib/i386-mingw32/enc/utf_32be.so +0 -0
  161. data/shoes/ruby/lib/i386-mingw32/enc/utf_32le.so +0 -0
  162. data/shoes/ruby/lib/i386-mingw32/enc/windows_1251.so +0 -0
  163. data/shoes/ruby/lib/i386-mingw32/etc.so +0 -0
  164. data/shoes/ruby/lib/i386-mingw32/fcntl.so +0 -0
  165. data/shoes/ruby/lib/i386-mingw32/fiber.so +0 -0
  166. data/shoes/ruby/lib/i386-mingw32/ftsearchrt.so +0 -0
  167. data/shoes/ruby/lib/i386-mingw32/gdbm.so +0 -0
  168. data/shoes/ruby/lib/i386-mingw32/iconv.so +0 -0
  169. data/shoes/ruby/lib/i386-mingw32/io/wait.so +0 -0
  170. data/shoes/ruby/lib/i386-mingw32/json/ext/generator.so +0 -0
  171. data/shoes/ruby/lib/i386-mingw32/json/ext/parser.so +0 -0
  172. data/shoes/ruby/lib/i386-mingw32/mathn/complex.so +0 -0
  173. data/shoes/ruby/lib/i386-mingw32/mathn/rational.so +0 -0
  174. data/shoes/ruby/lib/i386-mingw32/nkf.so +0 -0
  175. data/shoes/ruby/lib/i386-mingw32/openssl.so +0 -0
  176. data/shoes/ruby/lib/i386-mingw32/racc/cparse.so +0 -0
  177. data/shoes/ruby/lib/i386-mingw32/rbconfig.rb +2 -2
  178. data/shoes/ruby/lib/i386-mingw32/readline.so +0 -0
  179. data/shoes/ruby/lib/i386-mingw32/ripper.so +0 -0
  180. data/shoes/ruby/lib/i386-mingw32/sdbm.so +0 -0
  181. data/shoes/ruby/lib/i386-mingw32/socket.so +0 -0
  182. data/shoes/ruby/lib/i386-mingw32/stringio.so +0 -0
  183. data/shoes/ruby/lib/i386-mingw32/strscan.so +0 -0
  184. data/shoes/ruby/lib/i386-mingw32/syck.so +0 -0
  185. data/shoes/ruby/lib/i386-mingw32/win32ole.so +0 -0
  186. data/shoes/ruby/lib/i386-mingw32/zlib.so +0 -0
  187. data/shoes/ruby/lib/rbconfig/datadir.rb +24 -24
  188. data/shoes/ruby/lib/rubygems/builder.rb +88 -88
  189. data/shoes/ruby/lib/rubygems/command.rb +406 -406
  190. data/shoes/ruby/lib/rubygems/command_manager.rb +146 -146
  191. data/shoes/ruby/lib/rubygems/commands/build_command.rb +53 -53
  192. data/shoes/ruby/lib/rubygems/commands/cert_command.rb +86 -86
  193. data/shoes/ruby/lib/rubygems/commands/check_command.rb +75 -75
  194. data/shoes/ruby/lib/rubygems/commands/cleanup_command.rb +91 -91
  195. data/shoes/ruby/lib/rubygems/commands/contents_command.rb +74 -74
  196. data/shoes/ruby/lib/rubygems/commands/dependency_command.rb +188 -188
  197. data/shoes/ruby/lib/rubygems/commands/environment_command.rb +128 -128
  198. data/shoes/ruby/lib/rubygems/commands/fetch_command.rb +62 -62
  199. data/shoes/ruby/lib/rubygems/commands/generate_index_command.rb +57 -57
  200. data/shoes/ruby/lib/rubygems/commands/help_command.rb +172 -172
  201. data/shoes/ruby/lib/rubygems/commands/install_command.rb +148 -148
  202. data/shoes/ruby/lib/rubygems/commands/list_command.rb +35 -35
  203. data/shoes/ruby/lib/rubygems/commands/lock_command.rb +110 -110
  204. data/shoes/ruby/lib/rubygems/commands/mirror_command.rb +111 -111
  205. data/shoes/ruby/lib/rubygems/commands/outdated_command.rb +33 -33
  206. data/shoes/ruby/lib/rubygems/commands/pristine_command.rb +93 -93
  207. data/shoes/ruby/lib/rubygems/commands/query_command.rb +233 -233
  208. data/shoes/ruby/lib/rubygems/commands/rdoc_command.rb +82 -82
  209. data/shoes/ruby/lib/rubygems/commands/search_command.rb +37 -37
  210. data/shoes/ruby/lib/rubygems/commands/server_command.rb +48 -48
  211. data/shoes/ruby/lib/rubygems/commands/sources_command.rb +152 -152
  212. data/shoes/ruby/lib/rubygems/commands/specification_command.rb +77 -77
  213. data/shoes/ruby/lib/rubygems/commands/stale_command.rb +27 -27
  214. data/shoes/ruby/lib/rubygems/commands/uninstall_command.rb +73 -73
  215. data/shoes/ruby/lib/rubygems/commands/unpack_command.rb +95 -95
  216. data/shoes/ruby/lib/rubygems/commands/update_command.rb +181 -181
  217. data/shoes/ruby/lib/rubygems/commands/which_command.rb +87 -87
  218. data/shoes/ruby/lib/rubygems/config_file.rb +266 -266
  219. data/shoes/ruby/lib/rubygems/custom_require.rb +46 -46
  220. data/shoes/ruby/lib/rubygems/defaults.rb +89 -89
  221. data/shoes/ruby/lib/rubygems/dependency.rb +119 -119
  222. data/shoes/ruby/lib/rubygems/dependency_installer.rb +258 -258
  223. data/shoes/ruby/lib/rubygems/dependency_list.rb +165 -165
  224. data/shoes/ruby/lib/rubygems/digest/digest_adapter.rb +39 -39
  225. data/shoes/ruby/lib/rubygems/digest/md5.rb +23 -23
  226. data/shoes/ruby/lib/rubygems/digest/sha1.rb +16 -16
  227. data/shoes/ruby/lib/rubygems/digest/sha2.rb +17 -17
  228. data/shoes/ruby/lib/rubygems/doc_manager.rb +214 -214
  229. data/shoes/ruby/lib/rubygems/exceptions.rb +84 -84
  230. data/shoes/ruby/lib/rubygems/ext/builder.rb +56 -56
  231. data/shoes/ruby/lib/rubygems/ext/configure_builder.rb +24 -24
  232. data/shoes/ruby/lib/rubygems/ext/ext_conf_builder.rb +23 -23
  233. data/shoes/ruby/lib/rubygems/ext/rake_builder.rb +27 -27
  234. data/shoes/ruby/lib/rubygems/ext.rb +18 -18
  235. data/shoes/ruby/lib/rubygems/format.rb +87 -87
  236. data/shoes/ruby/lib/rubygems/gem_openssl.rb +83 -83
  237. data/shoes/ruby/lib/rubygems/gem_path_searcher.rb +100 -100
  238. data/shoes/ruby/lib/rubygems/gem_runner.rb +58 -58
  239. data/shoes/ruby/lib/rubygems/indexer.rb +370 -370
  240. data/shoes/ruby/lib/rubygems/install_update_options.rb +113 -113
  241. data/shoes/ruby/lib/rubygems/installer.rb +578 -578
  242. data/shoes/ruby/lib/rubygems/local_remote_options.rb +134 -134
  243. data/shoes/ruby/lib/rubygems/old_format.rb +148 -148
  244. data/shoes/ruby/lib/rubygems/package/f_sync_dir.rb +24 -24
  245. data/shoes/ruby/lib/rubygems/package/tar_header.rb +245 -245
  246. data/shoes/ruby/lib/rubygems/package/tar_input.rb +219 -219
  247. data/shoes/ruby/lib/rubygems/package/tar_output.rb +143 -143
  248. data/shoes/ruby/lib/rubygems/package/tar_reader/entry.rb +99 -99
  249. data/shoes/ruby/lib/rubygems/package/tar_reader.rb +86 -86
  250. data/shoes/ruby/lib/rubygems/package/tar_writer.rb +180 -180
  251. data/shoes/ruby/lib/rubygems/package.rb +95 -95
  252. data/shoes/ruby/lib/rubygems/platform.rb +178 -178
  253. data/shoes/ruby/lib/rubygems/remote_fetcher.rb +344 -344
  254. data/shoes/ruby/lib/rubygems/require_paths_builder.rb +14 -14
  255. data/shoes/ruby/lib/rubygems/requirement.rb +163 -163
  256. data/shoes/ruby/lib/rubygems/rubygems_version.rb +6 -6
  257. data/shoes/ruby/lib/rubygems/security.rb +786 -786
  258. data/shoes/ruby/lib/rubygems/server.rb +629 -629
  259. data/shoes/ruby/lib/rubygems/source_index.rb +559 -559
  260. data/shoes/ruby/lib/rubygems/source_info_cache.rb +393 -393
  261. data/shoes/ruby/lib/rubygems/source_info_cache_entry.rb +56 -56
  262. data/shoes/ruby/lib/rubygems/spec_fetcher.rb +249 -249
  263. data/shoes/ruby/lib/rubygems/specification.rb +1262 -1262
  264. data/shoes/ruby/lib/rubygems/test_utilities.rb +131 -131
  265. data/shoes/ruby/lib/rubygems/timer.rb +25 -25
  266. data/shoes/ruby/lib/rubygems/uninstaller.rb +242 -242
  267. data/shoes/ruby/lib/rubygems/user_interaction.rb +360 -360
  268. data/shoes/ruby/lib/rubygems/validator.rb +208 -208
  269. data/shoes/ruby/lib/rubygems/version.rb +167 -167
  270. data/shoes/ruby/lib/rubygems/version_option.rb +48 -48
  271. data/shoes/ruby/lib/rubygems.rb +888 -888
  272. data/shoes/ruby/lib/ubygems.rb +10 -10
  273. data/shoes/samples/class-book.rb +43 -43
  274. data/shoes/samples/class-book.yaml +387 -387
  275. data/shoes/samples/expert-definr.rb +23 -23
  276. data/shoes/samples/expert-funnies.rb +51 -51
  277. data/shoes/samples/expert-irb.rb +112 -112
  278. data/shoes/samples/expert-minesweeper.rb +267 -267
  279. data/shoes/samples/expert-othello.rb +319 -319
  280. data/shoes/samples/expert-pong.rb +62 -62
  281. data/shoes/samples/expert-tankspank.rb +385 -385
  282. data/shoes/samples/good-arc.rb +37 -37
  283. data/shoes/samples/good-clock.rb +51 -51
  284. data/shoes/samples/good-follow.rb +26 -26
  285. data/shoes/samples/good-reminder.rb +174 -174
  286. data/shoes/samples/good-vjot.rb +56 -56
  287. data/shoes/samples/simple-accordion.rb +75 -75
  288. data/shoes/samples/simple-anim-shapes.rb +17 -17
  289. data/shoes/samples/simple-anim-text.rb +13 -13
  290. data/shoes/samples/simple-arc.rb +23 -23
  291. data/shoes/samples/simple-bounce.rb +24 -24
  292. data/shoes/samples/simple-calc.rb +70 -70
  293. data/shoes/samples/simple-control-sizes.rb +24 -24
  294. data/shoes/samples/simple-curve.rb +26 -26
  295. data/shoes/samples/simple-dialogs.rb +29 -29
  296. data/shoes/samples/simple-downloader.rb +27 -27
  297. data/shoes/samples/simple-draw.rb +13 -13
  298. data/shoes/samples/simple-editor.rb +28 -28
  299. data/shoes/samples/simple-form.rb +28 -28
  300. data/shoes/samples/simple-mask.rb +21 -21
  301. data/shoes/samples/simple-menu.rb +31 -31
  302. data/shoes/samples/simple-menu1.rb +35 -35
  303. data/shoes/samples/simple-rubygems.rb +29 -29
  304. data/shoes/samples/simple-slide.rb +45 -45
  305. data/shoes/samples/simple-sphere.rb +28 -28
  306. data/shoes/samples/simple-timer.rb +13 -13
  307. data/shoes/samples/simple-video.rb +13 -13
  308. data/shoes/shoes.exe +0 -0
  309. data/shoes/sqlite3.dll +0 -0
  310. data/shoes/static/code_highlighter.js +188 -188
  311. data/shoes/static/code_highlighter_ruby.js +26 -26
  312. data/shoes/static/manual-en.txt +2783 -2783
  313. data/shoes/static/manual-ja.txt +2780 -2780
  314. data/shoes/static/manual.css +167 -167
  315. data/shoes/static/stubs/blank.run +375 -375
  316. data/shoes/static/stubs/sh-install +48 -48
  317. data/shoes/zlib.dll +0 -0
  318. data/shoes/zlib1.dll +0 -0
  319. metadata +15 -5
  320. data/shoes/static/Thumbs.db +0 -0
@@ -1,421 +1,421 @@
1
- # -*- encoding: utf-8 -*-
2
- module Shoes::Manual
3
- PARA_RE = /\s*?(\{{3}(?:.+?)\}{3})|\n\n/m
4
- CODE_RE = /\{{3}(?:\s*\#![^\n]+)?(.+?)\}{3}/m
5
- IMAGE_RE = /\!(\{([^}\n]+)\})?([^!\n]+\.\w+)\!/
6
- CODE_STYLE = {:size => 9, :margin => 12}
7
- INTRO_STYLE = {:size => 16, :margin_bottom => 20, :stroke => "#000"}
8
- SUB_STYLE = {:stroke => "#CCC", :margin_top => 10}
9
- IMAGE_STYLE = {:margin => 8, :margin_left => 100}
10
- COLON = ": "
11
-
12
- [INTRO_STYLE, SUB_STYLE].each do |h|
13
- h[:font] = "MS UI Gothic"
14
- end if Shoes.language == 'ja'
15
-
16
- def self.path
17
- path = "#{DIR}/static/manual-#{Shoes.language}.txt"
18
- unless File.exists? path
19
- path = "#{DIR}/static/manual-en.txt"
20
- end
21
- path
22
- end
23
-
24
- def dewikify_hi(str, terms, intro = false)
25
- if terms
26
- code = []
27
- str = str.
28
- gsub(CODE_RE) { |x| code << x; "CODE#[#{code.length-1}]" }.
29
- gsub(/#{Regexp::quote(terms)}/i, '@\0@').
30
- gsub(/CODE#\[(\d+)\]/) { code[$1.to_i] }
31
- end
32
- dewikify(str, intro)
33
- end
34
-
35
- def dewikify_p(ele, str, *args)
36
- str = str.gsub(/\n+\s*/, " ").dump.
37
- gsub(/`(.+?)`/m, '", code("\1"), "').gsub(/\[\[BR\]\]/i, "\n").
38
- gsub(/\^(.+?)\^/m, '\1').
39
- gsub(/@(.+?)@/m, '", strong("\1", :fill => yellow), "').
40
- gsub(/'''(.+?)'''/m, '", strong("\1"), "').gsub(/''(.+?)''/m, '", em("\1"), "').
41
- gsub(/\[\[(\S+?)\]\]/m, '", link("\1".split(".", 2).last) { open_link("\1") }, "').
42
- gsub(/\[\[(\S+?) (.+?)\]\]/m, '", link("\2") { open_link("\1") }, "').
43
- gsub(IMAGE_RE, '", *args); stack(IMAGE_STYLE.merge({\2})) { image("#{DIR}/static/\3") }; #{ele}("')
44
- eval("#{ele}(#{str}, *args)")
45
- end
46
-
47
- def dewikify_code(str)
48
- str = str.gsub(/\A\n+/, '').chomp
49
- stack :margin_bottom => 12 do
50
- background rgb(210, 210, 210), :curve => 4
51
- para code(str), CODE_STYLE
52
- stack :top => 0, :right => 2, :width => 70 do
53
- stack do
54
- background "#8A7", :margin => [0, 2, 0, 2], :curve => 4
55
- para link("Run this", :stroke => "#eee", :underline => "none") { run_code(str) },
56
- :margin => 4, :align => 'center', :weight => 'bold', :size => 9
57
- end
58
- end
59
- end
60
- end
61
-
62
- def wiki_tokens(str, intro = false)
63
- paras = str.split(PARA_RE).reject { |x| x.empty? }
64
- if intro
65
- yield :intro, paras.shift
66
- end
67
- paras.map do |ps|
68
- if ps =~ CODE_RE
69
- yield :code, $1
70
- else
71
- case ps
72
- when /\A\{COLORS\}/
73
- yield :colors, nil
74
- when /\A\{INDEX\}/
75
- yield :index, nil
76
- when /\A \* (.+)/m
77
- yield :list, $1.split(/^ \* /)
78
- when /\A==== (.+) ====/
79
- yield :caption, $1
80
- when /\A=== (.+) ===/
81
- yield :tagline, $1
82
- when /\A== (.+) ==/
83
- yield :subtitle, $1
84
- when /\A= (.+) =/
85
- yield :title, $1
86
- else
87
- yield :para, ps
88
- end
89
- end
90
- end
91
- end
92
-
93
- def dewikify(str, intro = false)
94
- proc do
95
- wiki_tokens(str, intro) do |sym, text|
96
- case sym when :intro
97
- dewikify_p :para, text, INTRO_STYLE
98
- when :code
99
- dewikify_code(text)
100
- when :colors
101
- color_page
102
- when :index
103
- index_page
104
- when :list
105
- text.each { |t| stack(:margin_left => 30) {
106
- fill black; oval -10, 7, 6; dewikify_p :para, t } }
107
- else
108
- dewikify_p sym, text
109
- end
110
- end
111
- end
112
- end
113
-
114
- def color_page
115
- color_names = (Shoes::COLORS.keys*"\n").split("\n").sort
116
- flow do
117
- color_names.each do |color|
118
- flow :width => 0.33 do
119
- c = send(color)
120
- background c
121
- para strong(color), "\n", c, :stroke => (c.dark? ? white : black),
122
- :margin => 4, :align => 'center'
123
- end
124
- end
125
- end
126
- end
127
-
128
- def class_tree
129
- tree = {}
130
- Shoes.constants.each do |c|
131
- k = Shoes.const_get(c)
132
- next unless k.respond_to? :superclass
133
-
134
- c = "Shoes::#{c}"
135
- if k.superclass == Object
136
- tree[c] ||= []
137
- else
138
- k.ancestors[1..-1].each do |sk|
139
- break if [Object, Kernel].include? sk
140
- next unless sk.is_a? Class #don't show mixins
141
- (tree[sk.name] ||= []) << c
142
- c = sk.name
143
- end
144
- end
145
- end
146
- tree
147
- end
148
-
149
- def index_page
150
- tree = class_tree
151
- shown = []
152
- index_p = proc do |k, subs|
153
- unless shown.include? k
154
- stack :margin_left => 20 do
155
- para "▸ #{k}"
156
- subs.uniq.sort.each do |s|
157
- index_p[s, tree[s]]
158
- end if subs
159
- end
160
- shown << k
161
- end
162
- end
163
- tree.sort.each &index_p
164
- end
165
-
166
- def run_code str
167
- eval(str, TOPLEVEL_BINDING)
168
- end
169
-
170
- def load_docs path
171
- return @docs if @docs
172
- str = Shoes.read_file(path)
173
- @search = Shoes::Search.new
174
- @sections, @methods, @mindex = {}, {}, {}
175
- @docs =
176
- (str.split(/^= (.+?) =/)[1..-1]/2).map do |k,v|
177
- sparts = v.split(/^== (.+?) ==/)
178
-
179
- sections = (sparts[1..-1]/2).map do |k2,v2|
180
- meth = v2.split(/^=== (.+?) ===/)
181
- k2t = k2[/^(?:The )?([\-\w]+)/, 1]
182
- meth_plain = meth[0].gsub(IMAGE_RE, '')
183
- @search.add_document :uri => "T #{k2t}", :body => "#{k2}\n#{meth_plain}".downcase
184
-
185
- hsh = {'title' => k2, 'section' => k,
186
- 'description' => meth[0],
187
- 'methods' => (meth[1..-1]/2).map { |_k,_v|
188
- @search.add_document :uri => "M #{k}#{COLON}#{k2t}#{COLON}#{_k}", :body => "#{_k}\n#{_v}".downcase
189
- @mindex["#{k2t}.#{_k[/[\w\.]+/]}"] = [k2t, _k]
190
- [_k, _v]
191
- }}
192
- @methods[k2t] = hsh
193
- [k2t, hsh]
194
- end
195
-
196
- @search.add_document :uri => "S #{k}", :body => "#{k}\n#{sparts[0]}".downcase
197
- hsh = {'description' => sparts[0], 'sections' => sections,
198
- 'class' => "toc" + k.downcase.gsub(/\W+/, '')}
199
- @sections[k] = hsh
200
- [k, hsh]
201
- end
202
- @search.finish!
203
- @docs
204
- end
205
-
206
- def show_search
207
- @toc.each { |k,v| v.hide }
208
- @title.replace "Search"
209
- @doc.clear do
210
- dewikify_p :para, "Try method names (like `button` or `arrow`) or topics (like `slots`)", :align => 'center'
211
- flow :margin_left => 60 do
212
- edit_line :width => -60 do |terms|
213
- @results.clear do
214
- termd = terms.text.downcase
215
- found = termd.empty? ? [] : manual_search(termd)
216
- para "#{found.length} matches", :align => "center", :margin_bottom => 0
217
- found.each do |typ, head|
218
- flow :margin => 4 do
219
- case typ
220
- when "S"
221
- background "#333", :curve => 4
222
- caption strong(link(head, :stroke => white) { open_section(head, terms.text) })
223
- para "Section header", Shoes::Manual::SUB_STYLE
224
- when "T"
225
- background "#777", :curve => 4
226
- caption strong(link(head, :stroke => "#EEE") { open_methods(head, terms.text) })
227
- hsh = @methods[head]
228
- para "Sub-section under #{hsh['section']} (#{hsh['methods'].length} methods)", Shoes::Manual::SUB_STYLE
229
- when "M"
230
- background "#CCC", :curve => 4
231
- sect, subhead, head = head.split(Shoes::Manual::COLON, 3)
232
- para strong(sect, Shoes::Manual::COLON, subhead, Shoes::Manual::COLON, link(head) { open_methods(subhead, terms.text, head) })
233
- end
234
- end
235
- end
236
- end
237
- end
238
- end
239
- @results = stack
240
- end
241
- app.slot.scroll_top = 0
242
- end
243
-
244
- def open_link(head)
245
- if head == "Search"
246
- show_search
247
- elsif @sections.has_key? head
248
- open_section(head)
249
- elsif @methods.has_key? head
250
- open_methods(head)
251
- elsif @mindex.has_key? head
252
- head, sub = @mindex[head]
253
- open_methods(head, nil, sub)
254
- end
255
- end
256
-
257
- def add_next_link(docn, optn)
258
- opt1, optn = @docs[docn][1], optn + 1
259
- if opt1['sections'][optn]
260
- @doc.para "Next: ",
261
- link(opt1['sections'][optn][1]['title']) { open_methods(opt1['sections'][optn][0]) },
262
- :align => "right"
263
- elsif @docs[docn + 1]
264
- @doc.para "Next: ",
265
- link(@docs[docn + 1][0]) { open_section(@docs[docn + 1][0].gsub(/\W/, '')) },
266
- :align => "right"
267
- end
268
- end
269
-
270
- def open_section(sect_s, terms = nil)
271
- sect_h = @sections[sect_s]
272
- sect_cls = sect_h['class']
273
- @toc.each { |k,v| v.send(k == sect_cls ? :show : :hide) }
274
- @title.replace sect_s
275
- @doc.clear(&dewikify_hi(sect_h['description'], terms, true))
276
- add_next_link(@docs.index { |x,| x == sect_s }, -1) rescue nil
277
- app.slot.scroll_top = 0
278
- end
279
-
280
- def open_methods(meth_s, terms = nil, meth_a = nil)
281
- meth_h = @methods[meth_s]
282
- @title.replace meth_h['title']
283
- @doc.clear do
284
- unless meth_a
285
- instance_eval &dewikify_hi(meth_h['description'], terms, true)
286
- end
287
- meth_h['methods'].each do |mname, expl|
288
- if meth_a.nil? or meth_a == mname
289
- sig, val = mname.split("»", 2)
290
- stack(:margin_top => 8, :margin_bottom => 8) {
291
- background "#333".."#666", :curve => 3, :angle => 90
292
- tagline sig, (span("»", val, :stroke => "#BBB") if val), :margin => 4 }
293
- instance_eval &dewikify_hi(expl, terms)
294
- end
295
- end
296
- end
297
- optn = nil
298
- docn = @docs.index { |_,h| optn = h['sections'].index { |x,| x == meth_s } } rescue nil
299
- add_next_link(docn, optn) if docn
300
- app.slot.scroll_top = 0
301
- end
302
-
303
- def manual_search(terms)
304
- terms += " " if terms.length == 1
305
- @search.find_all(terms).map do |title, count|
306
- title.split(" ", 2)
307
- end
308
- end
309
-
310
- def make_html(path, title, menu, &blk)
311
- require 'hpricot'
312
- File.open(path, 'w') do |f|
313
- f << Hpricot do
314
- xhtml_transitional do
315
- head do
316
- meta :"http-equiv" => "Content-Type", "content" => "text/html; charset=utf-8"
317
- title "The Shoes Manual // #{title}"
318
- script :type => "text/javascript", :src => "static/code_highlighter.js"
319
- script :type => "text/javascript", :src => "static/code_highlighter_ruby.js"
320
- style :type => "text/css" do
321
- text "@import 'static/manual.css';"
322
- end
323
- end
324
- body do
325
- div.main! do
326
- div.manual! &blk
327
- div.sidebar do
328
- img :src => "static/shoes-icon.png"
329
- ul do
330
- li { a.prime "HELP", :href => "./" }
331
- menu.each do |m, sm|
332
- li do
333
- a m, :href => "#{m[/^\w+/]}.html"
334
- if sm
335
- ul.sub do
336
- sm.each { |smm| li { a smm, :href => "#{smm}.html" } }
337
- end
338
- end
339
- end
340
- end
341
-
342
- end
343
- end
344
- end
345
- end
346
- end
347
- end.to_html
348
- end
349
- end
350
- end
351
-
352
- def Shoes.make_help_page
353
- font "#{DIR}/fonts/Coolvetica.ttf" unless Shoes::FONTS.include? "Coolvetica"
354
- proc do
355
- extend Shoes::Manual
356
- docs = load_docs Shoes::Manual.path
357
-
358
- style(Shoes::Image, :margin => 8, :margin_left => 100)
359
- style(Shoes::Code, :stroke => "#C30")
360
- style(Shoes::LinkHover, :stroke => green, :fill => nil)
361
- style(Shoes::Para, :size => 12, :stroke => "#332")
362
- style(Shoes::Tagline, :size => 12, :weight => "bold", :stroke => "#eee", :margin => 6)
363
- style(Shoes::Caption, :size => 24)
364
- background "#ddd".."#fff", :angle => 90
365
-
366
- [Shoes::LinkHover, Shoes::Para, Shoes::Tagline, Shoes::Caption].each do |type|
367
- style(type, :font => "MS UI Gothic")
368
- end if Shoes.language == 'ja'
369
-
370
- stack do
371
- background black
372
- stack :margin_left => 118 do
373
- para "The Shoes Manual", :stroke => "#eee", :margin_top => 8, :margin_left => 17,
374
- :margin_bottom => 0
375
- @title = title docs[0][0], :stroke => white, :margin => 4, :margin_left => 14,
376
- :margin_top => 0, :font => "Coolvetica"
377
- end
378
- background "rgb(66, 66, 66, 180)".."rgb(0, 0, 0, 0)", :height => 0.7
379
- background "rgb(66, 66, 66, 100)".."rgb(255, 255, 255, 0)", :height => 20, :bottom => 0
380
- end
381
- @doc =
382
- stack :margin_left => 130, :margin_top => 20, :margin_bottom => 50, :margin_right => 50 + gutter,
383
- &dewikify(docs[0][-1]['description'], true)
384
- add_next_link(0, -1)
385
- stack :top => 80, :left => 0, :attach => Shoes::Window do
386
- @toc = {}
387
- stack :margin => 12, :width => 130, :margin_top => 20 do
388
- docs.each do |sect_s, sect_h|
389
- sect_cls = sect_h['class']
390
- para strong(link(sect_s, :stroke => black) { open_section(sect_s) }),
391
- :size => 11, :margin => 4, :margin_top => 0
392
- @toc[sect_cls] =
393
- stack :hidden => @toc.empty? ? false : true do
394
- links = sect_h['sections'].map do |meth_s, meth_h|
395
- [link(meth_s) { open_methods(meth_s) }, "\n"]
396
- end.flatten
397
- links[-1] = {:size => 9, :margin => 4, :margin_left => 10}
398
- para *links
399
- end
400
- end
401
- end
402
- stack :margin => 12, :width => 118, :margin_top => 6 do
403
- background "#330", :curve => 4
404
- para "Not finding it? Try ", strong(link("Search", :stroke => white) { show_search }), "!", :stroke => "#ddd", :size => 9, :align => "center", :margin => 6
405
- end
406
- stack :margin => 12, :width => 118 do
407
- inscription "Shoes #{Shoes::RELEASE_NAME}\nRevision: #{Shoes::REVISION}",
408
- :size => 7, :align => "center", :stroke => "#999"
409
- end
410
- end
411
- image :width => 120, :height => 120, :top => -18, :left => 6 do
412
- image "#{DIR}/static/shoes-icon.png", :width => 100, :height => 100, :top => 10, :left => 10
413
- glow 2
414
- end
415
- end
416
- rescue => e
417
- p e.message
418
- p e.class
419
- end
420
-
421
- Shoes::Help = Shoes.make_help_page
1
+ # -*- encoding: utf-8 -*-
2
+ module Shoes::Manual
3
+ PARA_RE = /\s*?(\{{3}(?:.+?)\}{3})|\n\n/m
4
+ CODE_RE = /\{{3}(?:\s*\#![^\n]+)?(.+?)\}{3}/m
5
+ IMAGE_RE = /\!(\{([^}\n]+)\})?([^!\n]+\.\w+)\!/
6
+ CODE_STYLE = {:size => 9, :margin => 12}
7
+ INTRO_STYLE = {:size => 16, :margin_bottom => 20, :stroke => "#000"}
8
+ SUB_STYLE = {:stroke => "#CCC", :margin_top => 10}
9
+ IMAGE_STYLE = {:margin => 8, :margin_left => 100}
10
+ COLON = ": "
11
+
12
+ [INTRO_STYLE, SUB_STYLE].each do |h|
13
+ h[:font] = "MS UI Gothic"
14
+ end if Shoes.language == 'ja'
15
+
16
+ def self.path
17
+ path = "#{DIR}/static/manual-#{Shoes.language}.txt"
18
+ unless File.exists? path
19
+ path = "#{DIR}/static/manual-en.txt"
20
+ end
21
+ path
22
+ end
23
+
24
+ def dewikify_hi(str, terms, intro = false)
25
+ if terms
26
+ code = []
27
+ str = str.
28
+ gsub(CODE_RE) { |x| code << x; "CODE#[#{code.length-1}]" }.
29
+ gsub(/#{Regexp::quote(terms)}/i, '@\0@').
30
+ gsub(/CODE#\[(\d+)\]/) { code[$1.to_i] }
31
+ end
32
+ dewikify(str, intro)
33
+ end
34
+
35
+ def dewikify_p(ele, str, *args)
36
+ str = str.gsub(/\n+\s*/, " ").dump.
37
+ gsub(/`(.+?)`/m, '", code("\1"), "').gsub(/\[\[BR\]\]/i, "\n").
38
+ gsub(/\^(.+?)\^/m, '\1').
39
+ gsub(/@(.+?)@/m, '", strong("\1", :fill => yellow), "').
40
+ gsub(/'''(.+?)'''/m, '", strong("\1"), "').gsub(/''(.+?)''/m, '", em("\1"), "').
41
+ gsub(/\[\[(\S+?)\]\]/m, '", link("\1".split(".", 2).last) { open_link("\1") }, "').
42
+ gsub(/\[\[(\S+?) (.+?)\]\]/m, '", link("\2") { open_link("\1") }, "').
43
+ gsub(IMAGE_RE, '", *args); stack(IMAGE_STYLE.merge({\2})) { image("#{DIR}/static/\3") }; #{ele}("')
44
+ eval("#{ele}(#{str}, *args)")
45
+ end
46
+
47
+ def dewikify_code(str)
48
+ str = str.gsub(/\A\n+/, '').chomp
49
+ stack :margin_bottom => 12 do
50
+ background rgb(210, 210, 210), :curve => 4
51
+ para code(str), CODE_STYLE
52
+ stack :top => 0, :right => 2, :width => 70 do
53
+ stack do
54
+ background "#8A7", :margin => [0, 2, 0, 2], :curve => 4
55
+ para link("Run this", :stroke => "#eee", :underline => "none") { run_code(str) },
56
+ :margin => 4, :align => 'center', :weight => 'bold', :size => 9
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ def wiki_tokens(str, intro = false)
63
+ paras = str.split(PARA_RE).reject { |x| x.empty? }
64
+ if intro
65
+ yield :intro, paras.shift
66
+ end
67
+ paras.map do |ps|
68
+ if ps =~ CODE_RE
69
+ yield :code, $1
70
+ else
71
+ case ps
72
+ when /\A\{COLORS\}/
73
+ yield :colors, nil
74
+ when /\A\{INDEX\}/
75
+ yield :index, nil
76
+ when /\A \* (.+)/m
77
+ yield :list, $1.split(/^ \* /)
78
+ when /\A==== (.+) ====/
79
+ yield :caption, $1
80
+ when /\A=== (.+) ===/
81
+ yield :tagline, $1
82
+ when /\A== (.+) ==/
83
+ yield :subtitle, $1
84
+ when /\A= (.+) =/
85
+ yield :title, $1
86
+ else
87
+ yield :para, ps
88
+ end
89
+ end
90
+ end
91
+ end
92
+
93
+ def dewikify(str, intro = false)
94
+ proc do
95
+ wiki_tokens(str, intro) do |sym, text|
96
+ case sym when :intro
97
+ dewikify_p :para, text, INTRO_STYLE
98
+ when :code
99
+ dewikify_code(text)
100
+ when :colors
101
+ color_page
102
+ when :index
103
+ index_page
104
+ when :list
105
+ text.each { |t| stack(:margin_left => 30) {
106
+ fill black; oval -10, 7, 6; dewikify_p :para, t } }
107
+ else
108
+ dewikify_p sym, text
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ def color_page
115
+ color_names = (Shoes::COLORS.keys*"\n").split("\n").sort
116
+ flow do
117
+ color_names.each do |color|
118
+ flow :width => 0.33 do
119
+ c = send(color)
120
+ background c
121
+ para strong(color), "\n", c, :stroke => (c.dark? ? white : black),
122
+ :margin => 4, :align => 'center'
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+ def class_tree
129
+ tree = {}
130
+ Shoes.constants.each do |c|
131
+ k = Shoes.const_get(c)
132
+ next unless k.respond_to? :superclass
133
+
134
+ c = "Shoes::#{c}"
135
+ if k.superclass == Object
136
+ tree[c] ||= []
137
+ else
138
+ k.ancestors[1..-1].each do |sk|
139
+ break if [Object, Kernel].include? sk
140
+ next unless sk.is_a? Class #don't show mixins
141
+ (tree[sk.name] ||= []) << c
142
+ c = sk.name
143
+ end
144
+ end
145
+ end
146
+ tree
147
+ end
148
+
149
+ def index_page
150
+ tree = class_tree
151
+ shown = []
152
+ index_p = proc do |k, subs|
153
+ unless shown.include? k
154
+ stack :margin_left => 20 do
155
+ para "▸ #{k}"
156
+ subs.uniq.sort.each do |s|
157
+ index_p[s, tree[s]]
158
+ end if subs
159
+ end
160
+ shown << k
161
+ end
162
+ end
163
+ tree.sort.each &index_p
164
+ end
165
+
166
+ def run_code str
167
+ eval(str, TOPLEVEL_BINDING)
168
+ end
169
+
170
+ def load_docs path
171
+ return @docs if @docs
172
+ str = Shoes.read_file(path)
173
+ @search = Shoes::Search.new
174
+ @sections, @methods, @mindex = {}, {}, {}
175
+ @docs =
176
+ (str.split(/^= (.+?) =/)[1..-1]/2).map do |k,v|
177
+ sparts = v.split(/^== (.+?) ==/)
178
+
179
+ sections = (sparts[1..-1]/2).map do |k2,v2|
180
+ meth = v2.split(/^=== (.+?) ===/)
181
+ k2t = k2[/^(?:The )?([\-\w]+)/, 1]
182
+ meth_plain = meth[0].gsub(IMAGE_RE, '')
183
+ @search.add_document :uri => "T #{k2t}", :body => "#{k2}\n#{meth_plain}".downcase
184
+
185
+ hsh = {'title' => k2, 'section' => k,
186
+ 'description' => meth[0],
187
+ 'methods' => (meth[1..-1]/2).map { |_k,_v|
188
+ @search.add_document :uri => "M #{k}#{COLON}#{k2t}#{COLON}#{_k}", :body => "#{_k}\n#{_v}".downcase
189
+ @mindex["#{k2t}.#{_k[/[\w\.]+/]}"] = [k2t, _k]
190
+ [_k, _v]
191
+ }}
192
+ @methods[k2t] = hsh
193
+ [k2t, hsh]
194
+ end
195
+
196
+ @search.add_document :uri => "S #{k}", :body => "#{k}\n#{sparts[0]}".downcase
197
+ hsh = {'description' => sparts[0], 'sections' => sections,
198
+ 'class' => "toc" + k.downcase.gsub(/\W+/, '')}
199
+ @sections[k] = hsh
200
+ [k, hsh]
201
+ end
202
+ @search.finish!
203
+ @docs
204
+ end
205
+
206
+ def show_search
207
+ @toc.each { |k,v| v.hide }
208
+ @title.replace "Search"
209
+ @doc.clear do
210
+ dewikify_p :para, "Try method names (like `button` or `arrow`) or topics (like `slots`)", :align => 'center'
211
+ flow :margin_left => 60 do
212
+ edit_line :width => -60 do |terms|
213
+ @results.clear do
214
+ termd = terms.text.downcase
215
+ found = termd.empty? ? [] : manual_search(termd)
216
+ para "#{found.length} matches", :align => "center", :margin_bottom => 0
217
+ found.each do |typ, head|
218
+ flow :margin => 4 do
219
+ case typ
220
+ when "S"
221
+ background "#333", :curve => 4
222
+ caption strong(link(head, :stroke => white) { open_section(head, terms.text) })
223
+ para "Section header", Shoes::Manual::SUB_STYLE
224
+ when "T"
225
+ background "#777", :curve => 4
226
+ caption strong(link(head, :stroke => "#EEE") { open_methods(head, terms.text) })
227
+ hsh = @methods[head]
228
+ para "Sub-section under #{hsh['section']} (#{hsh['methods'].length} methods)", Shoes::Manual::SUB_STYLE
229
+ when "M"
230
+ background "#CCC", :curve => 4
231
+ sect, subhead, head = head.split(Shoes::Manual::COLON, 3)
232
+ para strong(sect, Shoes::Manual::COLON, subhead, Shoes::Manual::COLON, link(head) { open_methods(subhead, terms.text, head) })
233
+ end
234
+ end
235
+ end
236
+ end
237
+ end
238
+ end
239
+ @results = stack
240
+ end
241
+ app.slot.scroll_top = 0
242
+ end
243
+
244
+ def open_link(head)
245
+ if head == "Search"
246
+ show_search
247
+ elsif @sections.has_key? head
248
+ open_section(head)
249
+ elsif @methods.has_key? head
250
+ open_methods(head)
251
+ elsif @mindex.has_key? head
252
+ head, sub = @mindex[head]
253
+ open_methods(head, nil, sub)
254
+ end
255
+ end
256
+
257
+ def add_next_link(docn, optn)
258
+ opt1, optn = @docs[docn][1], optn + 1
259
+ if opt1['sections'][optn]
260
+ @doc.para "Next: ",
261
+ link(opt1['sections'][optn][1]['title']) { open_methods(opt1['sections'][optn][0]) },
262
+ :align => "right"
263
+ elsif @docs[docn + 1]
264
+ @doc.para "Next: ",
265
+ link(@docs[docn + 1][0]) { open_section(@docs[docn + 1][0].gsub(/\W/, '')) },
266
+ :align => "right"
267
+ end
268
+ end
269
+
270
+ def open_section(sect_s, terms = nil)
271
+ sect_h = @sections[sect_s]
272
+ sect_cls = sect_h['class']
273
+ @toc.each { |k,v| v.send(k == sect_cls ? :show : :hide) }
274
+ @title.replace sect_s
275
+ @doc.clear(&dewikify_hi(sect_h['description'], terms, true))
276
+ add_next_link(@docs.index { |x,| x == sect_s }, -1) rescue nil
277
+ app.slot.scroll_top = 0
278
+ end
279
+
280
+ def open_methods(meth_s, terms = nil, meth_a = nil)
281
+ meth_h = @methods[meth_s]
282
+ @title.replace meth_h['title']
283
+ @doc.clear do
284
+ unless meth_a
285
+ instance_eval &dewikify_hi(meth_h['description'], terms, true)
286
+ end
287
+ meth_h['methods'].each do |mname, expl|
288
+ if meth_a.nil? or meth_a == mname
289
+ sig, val = mname.split("»", 2)
290
+ stack(:margin_top => 8, :margin_bottom => 8) {
291
+ background "#333".."#666", :curve => 3, :angle => 90
292
+ tagline sig, (span("»", val, :stroke => "#BBB") if val), :margin => 4 }
293
+ instance_eval &dewikify_hi(expl, terms)
294
+ end
295
+ end
296
+ end
297
+ optn = nil
298
+ docn = @docs.index { |_,h| optn = h['sections'].index { |x,| x == meth_s } } rescue nil
299
+ add_next_link(docn, optn) if docn
300
+ app.slot.scroll_top = 0
301
+ end
302
+
303
+ def manual_search(terms)
304
+ terms += " " if terms.length == 1
305
+ @search.find_all(terms).map do |title, count|
306
+ title.split(" ", 2)
307
+ end
308
+ end
309
+
310
+ def make_html(path, title, menu, &blk)
311
+ require 'hpricot'
312
+ File.open(path, 'w') do |f|
313
+ f << Hpricot do
314
+ xhtml_transitional do
315
+ head do
316
+ meta :"http-equiv" => "Content-Type", "content" => "text/html; charset=utf-8"
317
+ title "The Shoes Manual // #{title}"
318
+ script :type => "text/javascript", :src => "static/code_highlighter.js"
319
+ script :type => "text/javascript", :src => "static/code_highlighter_ruby.js"
320
+ style :type => "text/css" do
321
+ text "@import 'static/manual.css';"
322
+ end
323
+ end
324
+ body do
325
+ div.main! do
326
+ div.manual! &blk
327
+ div.sidebar do
328
+ img :src => "static/shoes-icon.png"
329
+ ul do
330
+ li { a.prime "HELP", :href => "./" }
331
+ menu.each do |m, sm|
332
+ li do
333
+ a m, :href => "#{m[/^\w+/]}.html"
334
+ if sm
335
+ ul.sub do
336
+ sm.each { |smm| li { a smm, :href => "#{smm}.html" } }
337
+ end
338
+ end
339
+ end
340
+ end
341
+
342
+ end
343
+ end
344
+ end
345
+ end
346
+ end
347
+ end.to_html
348
+ end
349
+ end
350
+ end
351
+
352
+ def Shoes.make_help_page
353
+ font "#{DIR}/fonts/Coolvetica.ttf" unless Shoes::FONTS.include? "Coolvetica"
354
+ proc do
355
+ extend Shoes::Manual
356
+ docs = load_docs Shoes::Manual.path
357
+
358
+ style(Shoes::Image, :margin => 8, :margin_left => 100)
359
+ style(Shoes::Code, :stroke => "#C30")
360
+ style(Shoes::LinkHover, :stroke => green, :fill => nil)
361
+ style(Shoes::Para, :size => 12, :stroke => "#332")
362
+ style(Shoes::Tagline, :size => 12, :weight => "bold", :stroke => "#eee", :margin => 6)
363
+ style(Shoes::Caption, :size => 24)
364
+ background "#ddd".."#fff", :angle => 90
365
+
366
+ [Shoes::LinkHover, Shoes::Para, Shoes::Tagline, Shoes::Caption].each do |type|
367
+ style(type, :font => "MS UI Gothic")
368
+ end if Shoes.language == 'ja'
369
+
370
+ stack do
371
+ background black
372
+ stack :margin_left => 118 do
373
+ para "The Shoes Manual", :stroke => "#eee", :margin_top => 8, :margin_left => 17,
374
+ :margin_bottom => 0
375
+ @title = title docs[0][0], :stroke => white, :margin => 4, :margin_left => 14,
376
+ :margin_top => 0, :font => "Coolvetica"
377
+ end
378
+ background "rgb(66, 66, 66, 180)".."rgb(0, 0, 0, 0)", :height => 0.7
379
+ background "rgb(66, 66, 66, 100)".."rgb(255, 255, 255, 0)", :height => 20, :bottom => 0
380
+ end
381
+ @doc =
382
+ stack :margin_left => 130, :margin_top => 20, :margin_bottom => 50, :margin_right => 50 + gutter,
383
+ &dewikify(docs[0][-1]['description'], true)
384
+ add_next_link(0, -1)
385
+ stack :top => 80, :left => 0, :attach => Shoes::Window do
386
+ @toc = {}
387
+ stack :margin => 12, :width => 130, :margin_top => 20 do
388
+ docs.each do |sect_s, sect_h|
389
+ sect_cls = sect_h['class']
390
+ para strong(link(sect_s, :stroke => black) { open_section(sect_s) }),
391
+ :size => 11, :margin => 4, :margin_top => 0
392
+ @toc[sect_cls] =
393
+ stack :hidden => @toc.empty? ? false : true do
394
+ links = sect_h['sections'].map do |meth_s, meth_h|
395
+ [link(meth_s) { open_methods(meth_s) }, "\n"]
396
+ end.flatten
397
+ links[-1] = {:size => 9, :margin => 4, :margin_left => 10}
398
+ para *links
399
+ end
400
+ end
401
+ end
402
+ stack :margin => 12, :width => 118, :margin_top => 6 do
403
+ background "#330", :curve => 4
404
+ para "Not finding it? Try ", strong(link("Search", :stroke => white) { show_search }), "!", :stroke => "#ddd", :size => 9, :align => "center", :margin => 6
405
+ end
406
+ stack :margin => 12, :width => 118 do
407
+ inscription "Shoes #{Shoes::RELEASE_NAME}\nRevision: #{Shoes::REVISION}",
408
+ :size => 7, :align => "center", :stroke => "#999"
409
+ end
410
+ end
411
+ image :width => 120, :height => 120, :top => -18, :left => 6 do
412
+ image "#{DIR}/static/shoes-icon.png", :width => 100, :height => 100, :top => 10, :left => 10
413
+ glow 2
414
+ end
415
+ end
416
+ rescue => e
417
+ p e.message
418
+ p e.class
419
+ end
420
+
421
+ Shoes::Help = Shoes.make_help_page