shoesgem 0.1480.0 → 0.1514.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (447) hide show
  1. data/LICENSE +30 -30
  2. data/README.rdoc +34 -34
  3. data/lib/shoes.rb +4 -4
  4. data/shoes/CHANGELOG.txt +29 -21
  5. data/shoes/COPYING.txt +30 -30
  6. data/shoes/README.txt +117 -117
  7. data/shoes/VERSION.txt +1 -1
  8. data/shoes/freetype6.dll +0 -0
  9. data/shoes/lib/shoes.rb +547 -524
  10. data/shoes/lib/shoes/cache.rb +54 -54
  11. data/shoes/lib/shoes/chipmunk.rb +35 -35
  12. data/shoes/lib/shoes/data.rb +39 -39
  13. data/shoes/lib/shoes/help.rb +468 -468
  14. data/shoes/lib/shoes/image.rb +25 -25
  15. data/shoes/lib/shoes/inspect.rb +128 -128
  16. data/shoes/lib/shoes/log.rb +48 -48
  17. data/shoes/lib/shoes/minitar.rb +986 -986
  18. data/shoes/lib/shoes/override.rb +38 -38
  19. data/shoes/lib/shoes/pack.rb +505 -503
  20. data/shoes/lib/shoes/search.rb +46 -46
  21. data/shoes/lib/shoes/setup.rb +329 -329
  22. data/shoes/lib/shoes/shy.rb +131 -131
  23. data/shoes/lib/shoes/shybuilder.rb +44 -44
  24. data/shoes/libcairo-2.dll +0 -0
  25. data/shoes/libeay32.dll +0 -0
  26. data/shoes/libexpat-1.dll +0 -0
  27. data/shoes/libfontconfig-1.dll +0 -0
  28. data/shoes/libgio-2.0-0.dll +0 -0
  29. data/shoes/libglib-2.0-0.dll +0 -0
  30. data/shoes/libgmodule-2.0-0.dll +0 -0
  31. data/shoes/libgobject-2.0-0.dll +0 -0
  32. data/shoes/libgthread-2.0-0.dll +0 -0
  33. data/shoes/libiconv2.dll +0 -0
  34. data/shoes/libjpeg-8.dll +0 -0
  35. data/shoes/libpango-1.0-0.dll +0 -0
  36. data/shoes/libpangocairo-1.0-0.dll +0 -0
  37. data/shoes/libpangoft2-1.0-0.dll +0 -0
  38. data/shoes/libpangowin32-1.0-0.dll +0 -0
  39. data/shoes/libpng14-14.dll +0 -0
  40. data/shoes/libportaudio-2.dll +0 -0
  41. data/shoes/libshoes.dll +0 -0
  42. data/shoes/libssl32.dll +0 -0
  43. data/shoes/libungif4.dll +0 -0
  44. data/shoes/libvlc.dll +0 -0
  45. data/shoes/msvcrt-ruby191.dll +0 -0
  46. data/shoes/plugins/liba52_plugin.dll +0 -0
  47. data/shoes/plugins/liba52sys_plugin.dll +0 -0
  48. data/shoes/plugins/liba52tofloat32_plugin.dll +0 -0
  49. data/shoes/plugins/liba52tospdif_plugin.dll +0 -0
  50. data/shoes/plugins/libaccess_directory_plugin.dll +0 -0
  51. data/shoes/plugins/libaccess_fake_plugin.dll +0 -0
  52. data/shoes/plugins/libaccess_file_plugin.dll +0 -0
  53. data/shoes/plugins/libaccess_filter_dump_plugin.dll +0 -0
  54. data/shoes/plugins/libaccess_filter_record_plugin.dll +0 -0
  55. data/shoes/plugins/libaccess_filter_timeshift_plugin.dll +0 -0
  56. data/shoes/plugins/libaccess_ftp_plugin.dll +0 -0
  57. data/shoes/plugins/libaccess_http_plugin.dll +0 -0
  58. data/shoes/plugins/libaccess_mms_plugin.dll +0 -0
  59. data/shoes/plugins/libaccess_output_dummy_plugin.dll +0 -0
  60. data/shoes/plugins/libaccess_output_file_plugin.dll +0 -0
  61. data/shoes/plugins/libaccess_output_http_plugin.dll +0 -0
  62. data/shoes/plugins/libaccess_output_shout_plugin.dll +0 -0
  63. data/shoes/plugins/libaccess_output_udp_plugin.dll +0 -0
  64. data/shoes/plugins/libaccess_realrtsp_plugin.dll +0 -0
  65. data/shoes/plugins/libaccess_smb_plugin.dll +0 -0
  66. data/shoes/plugins/libaccess_tcp_plugin.dll +0 -0
  67. data/shoes/plugins/libaccess_udp_plugin.dll +0 -0
  68. data/shoes/plugins/libadjust_plugin.dll +0 -0
  69. data/shoes/plugins/libadpcm_plugin.dll +0 -0
  70. data/shoes/plugins/libaiff_plugin.dll +0 -0
  71. data/shoes/plugins/libaout_directx_plugin.dll +0 -0
  72. data/shoes/plugins/libaout_file_plugin.dll +0 -0
  73. data/shoes/plugins/libaraw_plugin.dll +0 -0
  74. data/shoes/plugins/libasf_plugin.dll +0 -0
  75. data/shoes/plugins/libau_plugin.dll +0 -0
  76. data/shoes/plugins/libaudio_format_plugin.dll +0 -0
  77. data/shoes/plugins/libavi_plugin.dll +0 -0
  78. data/shoes/plugins/libbandlimited_resampler_plugin.dll +0 -0
  79. data/shoes/plugins/libblend_plugin.dll +0 -0
  80. data/shoes/plugins/libcaca_plugin.dll +0 -0
  81. data/shoes/plugins/libcdda_plugin.dll +0 -0
  82. data/shoes/plugins/libcinepak_plugin.dll +0 -0
  83. data/shoes/plugins/libclone_plugin.dll +0 -0
  84. data/shoes/plugins/libcmml_plugin.dll +0 -0
  85. data/shoes/plugins/libcrop_plugin.dll +0 -0
  86. data/shoes/plugins/libcvdsub_plugin.dll +0 -0
  87. data/shoes/plugins/libdeinterlace_plugin.dll +0 -0
  88. data/shoes/plugins/libdemuxdump_plugin.dll +0 -0
  89. data/shoes/plugins/libdirect3d_plugin.dll +0 -0
  90. data/shoes/plugins/libdistort_plugin.dll +0 -0
  91. data/shoes/plugins/libdmo_plugin.dll +0 -0
  92. data/shoes/plugins/libdolby_surround_decoder_plugin.dll +0 -0
  93. data/shoes/plugins/libdshow_plugin.dll +0 -0
  94. data/shoes/plugins/libdts_plugin.dll +0 -0
  95. data/shoes/plugins/libdtssys_plugin.dll +0 -0
  96. data/shoes/plugins/libdtstofloat32_plugin.dll +0 -0
  97. data/shoes/plugins/libdtstospdif_plugin.dll +0 -0
  98. data/shoes/plugins/libdummy_plugin.dll +0 -0
  99. data/shoes/plugins/libdvbsub_plugin.dll +0 -0
  100. data/shoes/plugins/libdvdnav_plugin.dll +0 -0
  101. data/shoes/plugins/libdvdread_plugin.dll +0 -0
  102. data/shoes/plugins/libequalizer_plugin.dll +0 -0
  103. data/shoes/plugins/libexport_plugin.dll +0 -0
  104. data/shoes/plugins/libfaad_plugin.dll +0 -0
  105. data/shoes/plugins/libfake_plugin.dll +0 -0
  106. data/shoes/plugins/libffmpeg_plugin.dll +0 -0
  107. data/shoes/plugins/libfixed32tofloat32_plugin.dll +0 -0
  108. data/shoes/plugins/libfixed32tos16_plugin.dll +0 -0
  109. data/shoes/plugins/libflac_plugin.dll +0 -0
  110. data/shoes/plugins/libflacdec_plugin.dll +0 -0
  111. data/shoes/plugins/libfloat32_mixer_plugin.dll +0 -0
  112. data/shoes/plugins/libfloat32tos16_plugin.dll +0 -0
  113. data/shoes/plugins/libfloat32tos8_plugin.dll +0 -0
  114. data/shoes/plugins/libfloat32tou16_plugin.dll +0 -0
  115. data/shoes/plugins/libfloat32tou8_plugin.dll +0 -0
  116. data/shoes/plugins/libfreetype_plugin.dll +0 -0
  117. data/shoes/plugins/libgestures_plugin.dll +0 -0
  118. data/shoes/plugins/libglwin32_plugin.dll +0 -0
  119. data/shoes/plugins/libgoom_plugin.dll +0 -0
  120. data/shoes/plugins/libgrowl_plugin.dll +0 -0
  121. data/shoes/plugins/libh264_plugin.dll +0 -0
  122. data/shoes/plugins/libheadphone_channel_mixer_plugin.dll +0 -0
  123. data/shoes/plugins/libhotkeys_plugin.dll +0 -0
  124. data/shoes/plugins/libhttp_plugin.dll +0 -0
  125. data/shoes/plugins/libi420_rgb_plugin.dll +0 -0
  126. data/shoes/plugins/libi420_ymga_plugin.dll +0 -0
  127. data/shoes/plugins/libi420_yuy2_plugin.dll +0 -0
  128. data/shoes/plugins/libi422_yuy2_plugin.dll +0 -0
  129. data/shoes/plugins/libid3tag_plugin.dll +0 -0
  130. data/shoes/plugins/libimage_plugin.dll +0 -0
  131. data/shoes/plugins/libinvert_plugin.dll +0 -0
  132. data/shoes/plugins/libipv4_plugin.dll +0 -0
  133. data/shoes/plugins/libipv6_plugin.dll +0 -0
  134. data/shoes/plugins/liblibmpeg2_plugin.dll +0 -0
  135. data/shoes/plugins/liblinear_resampler_plugin.dll +0 -0
  136. data/shoes/plugins/liblogger_plugin.dll +0 -0
  137. data/shoes/plugins/liblogo_plugin.dll +0 -0
  138. data/shoes/plugins/liblpcm_plugin.dll +0 -0
  139. data/shoes/plugins/libm3u_plugin.dll +0 -0
  140. data/shoes/plugins/libm4a_plugin.dll +0 -0
  141. data/shoes/plugins/libm4v_plugin.dll +0 -0
  142. data/shoes/plugins/libmagnify_plugin.dll +0 -0
  143. data/shoes/plugins/libmarq_plugin.dll +0 -0
  144. data/shoes/plugins/libmemcpy_plugin.dll +0 -0
  145. data/shoes/plugins/libmjpeg_plugin.dll +0 -0
  146. data/shoes/plugins/libmkv_plugin.dll +0 -0
  147. data/shoes/plugins/libmod_plugin.dll +0 -0
  148. data/shoes/plugins/libmosaic_plugin.dll +0 -0
  149. data/shoes/plugins/libmotionblur_plugin.dll +0 -0
  150. data/shoes/plugins/libmotiondetect_plugin.dll +0 -0
  151. data/shoes/plugins/libmp4_plugin.dll +0 -0
  152. data/shoes/plugins/libmpc_plugin.dll +0 -0
  153. data/shoes/plugins/libmpeg_audio_plugin.dll +0 -0
  154. data/shoes/plugins/libmpga_plugin.dll +0 -0
  155. data/shoes/plugins/libmpgatofixed32_plugin.dll +0 -0
  156. data/shoes/plugins/libmpgv_plugin.dll +0 -0
  157. data/shoes/plugins/libmsn_plugin.dll +0 -0
  158. data/shoes/plugins/libmux_asf_plugin.dll +0 -0
  159. data/shoes/plugins/libmux_avi_plugin.dll +0 -0
  160. data/shoes/plugins/libmux_dummy_plugin.dll +0 -0
  161. data/shoes/plugins/libmux_mp4_plugin.dll +0 -0
  162. data/shoes/plugins/libmux_mpjpeg_plugin.dll +0 -0
  163. data/shoes/plugins/libmux_ogg_plugin.dll +0 -0
  164. data/shoes/plugins/libmux_ps_plugin.dll +0 -0
  165. data/shoes/plugins/libmux_wav_plugin.dll +0 -0
  166. data/shoes/plugins/libnetsync_plugin.dll +0 -0
  167. data/shoes/plugins/libnormvol_plugin.dll +0 -0
  168. data/shoes/plugins/libnsc_plugin.dll +0 -0
  169. data/shoes/plugins/libnsv_plugin.dll +0 -0
  170. data/shoes/plugins/libntservice_plugin.dll +0 -0
  171. data/shoes/plugins/libnuv_plugin.dll +0 -0
  172. data/shoes/plugins/libogg_plugin.dll +0 -0
  173. data/shoes/plugins/libopengl_plugin.dll +0 -0
  174. data/shoes/plugins/libosdmenu_plugin.dll +0 -0
  175. data/shoes/plugins/libpacketizer_copy_plugin.dll +0 -0
  176. data/shoes/plugins/libpacketizer_h264_plugin.dll +0 -0
  177. data/shoes/plugins/libpacketizer_mpeg4audio_plugin.dll +0 -0
  178. data/shoes/plugins/libpacketizer_mpeg4video_plugin.dll +0 -0
  179. data/shoes/plugins/libpacketizer_mpegvideo_plugin.dll +0 -0
  180. data/shoes/plugins/libparam_eq_plugin.dll +0 -0
  181. data/shoes/plugins/libplaylist_plugin.dll +0 -0
  182. data/shoes/plugins/libpng_plugin.dll +0 -0
  183. data/shoes/plugins/libpodcast_plugin.dll +0 -0
  184. data/shoes/plugins/libportaudio_plugin.dll +0 -0
  185. data/shoes/plugins/libps_plugin.dll +0 -0
  186. data/shoes/plugins/libpva_plugin.dll +0 -0
  187. data/shoes/plugins/librawdv_plugin.dll +0 -0
  188. data/shoes/plugins/librawvideo_plugin.dll +0 -0
  189. data/shoes/plugins/librc_plugin.dll +0 -0
  190. data/shoes/plugins/libreal_plugin.dll +0 -0
  191. data/shoes/plugins/librealaudio_plugin.dll +0 -0
  192. data/shoes/plugins/librss_plugin.dll +0 -0
  193. data/shoes/plugins/librv32_plugin.dll +0 -0
  194. data/shoes/plugins/libs16tofixed32_plugin.dll +0 -0
  195. data/shoes/plugins/libs16tofloat32_plugin.dll +0 -0
  196. data/shoes/plugins/libs16tofloat32swab_plugin.dll +0 -0
  197. data/shoes/plugins/libs8tofloat32_plugin.dll +0 -0
  198. data/shoes/plugins/libsap_plugin.dll +0 -0
  199. data/shoes/plugins/libscale_plugin.dll +0 -0
  200. data/shoes/plugins/libscreen_plugin.dll +0 -0
  201. data/shoes/plugins/libsdl_image_plugin.dll +0 -0
  202. data/shoes/plugins/libsgimb_plugin.dll +0 -0
  203. data/shoes/plugins/libshout_plugin.dll +0 -0
  204. data/shoes/plugins/libshowintf_plugin.dll +0 -0
  205. data/shoes/plugins/libsimple_channel_mixer_plugin.dll +0 -0
  206. data/shoes/plugins/libspdif_mixer_plugin.dll +0 -0
  207. data/shoes/plugins/libspeex_plugin.dll +0 -0
  208. data/shoes/plugins/libspudec_plugin.dll +0 -0
  209. data/shoes/plugins/libstream_out_bridge_plugin.dll +0 -0
  210. data/shoes/plugins/libstream_out_description_plugin.dll +0 -0
  211. data/shoes/plugins/libstream_out_display_plugin.dll +0 -0
  212. data/shoes/plugins/libstream_out_dummy_plugin.dll +0 -0
  213. data/shoes/plugins/libstream_out_duplicate_plugin.dll +0 -0
  214. data/shoes/plugins/libstream_out_es_plugin.dll +0 -0
  215. data/shoes/plugins/libstream_out_gather_plugin.dll +0 -0
  216. data/shoes/plugins/libstream_out_mosaic_bridge_plugin.dll +0 -0
  217. data/shoes/plugins/libstream_out_rtp_plugin.dll +0 -0
  218. data/shoes/plugins/libstream_out_standard_plugin.dll +0 -0
  219. data/shoes/plugins/libstream_out_transcode_plugin.dll +0 -0
  220. data/shoes/plugins/libsubsdec_plugin.dll +0 -0
  221. data/shoes/plugins/libsubtitle_plugin.dll +0 -0
  222. data/shoes/plugins/libsvcdsub_plugin.dll +0 -0
  223. data/shoes/plugins/libtelnet_plugin.dll +0 -0
  224. data/shoes/plugins/libtelx_plugin.dll +0 -0
  225. data/shoes/plugins/libtheora_plugin.dll +0 -0
  226. data/shoes/plugins/libtime_plugin.dll +0 -0
  227. data/shoes/plugins/libtransform_plugin.dll +0 -0
  228. data/shoes/plugins/libtrivial_channel_mixer_plugin.dll +0 -0
  229. data/shoes/plugins/libtrivial_mixer_plugin.dll +0 -0
  230. data/shoes/plugins/libtrivial_resampler_plugin.dll +0 -0
  231. data/shoes/plugins/libts_plugin.dll +0 -0
  232. data/shoes/plugins/libtta_plugin.dll +0 -0
  233. data/shoes/plugins/libtwolame_plugin.dll +0 -0
  234. data/shoes/plugins/libty_plugin.dll +0 -0
  235. data/shoes/plugins/libu8tofixed32_plugin.dll +0 -0
  236. data/shoes/plugins/libu8tofloat32_plugin.dll +0 -0
  237. data/shoes/plugins/libugly_resampler_plugin.dll +0 -0
  238. data/shoes/plugins/libvcd_plugin.dll +0 -0
  239. data/shoes/plugins/libvisual_plugin.dll +0 -0
  240. data/shoes/plugins/libvobsub_plugin.dll +0 -0
  241. data/shoes/plugins/libvoc_plugin.dll +0 -0
  242. data/shoes/plugins/libvod_rtsp_plugin.dll +0 -0
  243. data/shoes/plugins/libvorbis_plugin.dll +0 -0
  244. data/shoes/plugins/libvout_directx_plugin.dll +0 -0
  245. data/shoes/plugins/libwall_plugin.dll +0 -0
  246. data/shoes/plugins/libwav_plugin.dll +0 -0
  247. data/shoes/plugins/libwaveout_plugin.dll +0 -0
  248. data/shoes/plugins/libwingdi_plugin.dll +0 -0
  249. data/shoes/plugins/libx264_plugin.dll +0 -0
  250. data/shoes/plugins/libxa_plugin.dll +0 -0
  251. data/shoes/plugins/libxtag_plugin.dll +0 -0
  252. data/shoes/readline5.dll +0 -0
  253. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/fast_xs.so +0 -0
  254. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot.rb +26 -26
  255. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/blankslate.rb +63 -63
  256. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/builder.rb +216 -216
  257. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/elements.rb +510 -510
  258. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/htmlinfo.rb +691 -691
  259. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/inspect.rb +103 -103
  260. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/modules.rb +40 -40
  261. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/parse.rb +38 -38
  262. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tag.rb +202 -202
  263. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/tags.rb +164 -164
  264. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/traverse.rb +838 -838
  265. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot/xchar.rb +94 -94
  266. data/shoes/ruby/gems/1.9.1/gems/hpricot-0.8.1/lib/hpricot_scan.so +0 -0
  267. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json.rb +8 -8
  268. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/core.rb +135 -135
  269. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/add/rails.rb +58 -58
  270. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/common.rb +354 -354
  271. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext.rb +13 -13
  272. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/generator.so +0 -0
  273. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/ext/parser.so +0 -0
  274. data/shoes/ruby/gems/1.9.1/gems/json-shoes-1.1.3/lib/json/version.rb +9 -9
  275. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3.rb +11 -11
  276. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/constants.rb +49 -49
  277. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/database.rb +568 -568
  278. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/errors.rb +44 -44
  279. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/pragmas.rb +280 -280
  280. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/resultset.rb +126 -126
  281. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/statement.rb +146 -146
  282. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/translator.rb +114 -114
  283. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/value.rb +57 -57
  284. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3/version.rb +16 -16
  285. data/shoes/ruby/gems/1.9.1/gems/sqlite3-ruby-1.3.0/lib/sqlite3_native.so +0 -0
  286. data/shoes/ruby/gems/1.9.1/specifications/hpricot-0.8.1.gemspec +32 -32
  287. data/shoes/ruby/gems/1.9.1/specifications/json-shoes-1.1.3.gemspec +34 -34
  288. data/shoes/ruby/gems/1.9.1/specifications/sqlite3-ruby-1.3.0.gemspec +48 -48
  289. data/shoes/ruby/lib/ftsearch/analysis/analyzer.rb +16 -16
  290. data/shoes/ruby/lib/ftsearch/analysis/simple_identifier_analyzer.rb +23 -23
  291. data/shoes/ruby/lib/ftsearch/analysis/whitespace_analyzer.rb +22 -22
  292. data/shoes/ruby/lib/ftsearch/document_map_reader.rb +106 -106
  293. data/shoes/ruby/lib/ftsearch/document_map_writer.rb +46 -46
  294. data/shoes/ruby/lib/ftsearch/field_infos.rb +46 -46
  295. data/shoes/ruby/lib/ftsearch/fragment_writer.rb +114 -114
  296. data/shoes/ruby/lib/ftsearch/fulltext_reader.rb +52 -52
  297. data/shoes/ruby/lib/ftsearch/fulltext_writer.rb +75 -75
  298. data/shoes/ruby/lib/ftsearch/suffix_array_reader.rb +277 -277
  299. data/shoes/ruby/lib/ftsearch/suffix_array_writer.rb +99 -99
  300. data/shoes/ruby/lib/ftsearch/util.rb +21 -21
  301. data/shoes/ruby/lib/i386-mingw32/bigdecimal.so +0 -0
  302. data/shoes/ruby/lib/i386-mingw32/binject.so +0 -0
  303. data/shoes/ruby/lib/i386-mingw32/bloops.so +0 -0
  304. data/shoes/ruby/lib/i386-mingw32/chipmunk.so +0 -0
  305. data/shoes/ruby/lib/i386-mingw32/continuation.so +0 -0
  306. data/shoes/ruby/lib/i386-mingw32/coverage.so +0 -0
  307. data/shoes/ruby/lib/i386-mingw32/curses.so +0 -0
  308. data/shoes/ruby/lib/i386-mingw32/digest.so +0 -0
  309. data/shoes/ruby/lib/i386-mingw32/digest/bubblebabble.so +0 -0
  310. data/shoes/ruby/lib/i386-mingw32/digest/md5.so +0 -0
  311. data/shoes/ruby/lib/i386-mingw32/digest/rmd160.so +0 -0
  312. data/shoes/ruby/lib/i386-mingw32/digest/sha1.so +0 -0
  313. data/shoes/ruby/lib/i386-mingw32/digest/sha2.so +0 -0
  314. data/shoes/ruby/lib/i386-mingw32/dl.so +0 -0
  315. data/shoes/ruby/lib/i386-mingw32/enc/big5.so +0 -0
  316. data/shoes/ruby/lib/i386-mingw32/enc/cp949.so +0 -0
  317. data/shoes/ruby/lib/i386-mingw32/enc/emacs_mule.so +0 -0
  318. data/shoes/ruby/lib/i386-mingw32/enc/encdb.so +0 -0
  319. data/shoes/ruby/lib/i386-mingw32/enc/euc_jp.so +0 -0
  320. data/shoes/ruby/lib/i386-mingw32/enc/euc_kr.so +0 -0
  321. data/shoes/ruby/lib/i386-mingw32/enc/euc_tw.so +0 -0
  322. data/shoes/ruby/lib/i386-mingw32/enc/gb18030.so +0 -0
  323. data/shoes/ruby/lib/i386-mingw32/enc/gb2312.so +0 -0
  324. data/shoes/ruby/lib/i386-mingw32/enc/gbk.so +0 -0
  325. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_1.so +0 -0
  326. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_10.so +0 -0
  327. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_11.so +0 -0
  328. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_13.so +0 -0
  329. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_14.so +0 -0
  330. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_15.so +0 -0
  331. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_16.so +0 -0
  332. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_2.so +0 -0
  333. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_3.so +0 -0
  334. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_4.so +0 -0
  335. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_5.so +0 -0
  336. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_6.so +0 -0
  337. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_7.so +0 -0
  338. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_8.so +0 -0
  339. data/shoes/ruby/lib/i386-mingw32/enc/iso_8859_9.so +0 -0
  340. data/shoes/ruby/lib/i386-mingw32/enc/koi8_r.so +0 -0
  341. data/shoes/ruby/lib/i386-mingw32/enc/koi8_u.so +0 -0
  342. data/shoes/ruby/lib/i386-mingw32/enc/shift_jis.so +0 -0
  343. data/shoes/ruby/lib/i386-mingw32/enc/trans/big5.so +0 -0
  344. data/shoes/ruby/lib/i386-mingw32/enc/trans/chinese.so +0 -0
  345. data/shoes/ruby/lib/i386-mingw32/enc/trans/escape.so +0 -0
  346. data/shoes/ruby/lib/i386-mingw32/enc/trans/gb18030.so +0 -0
  347. data/shoes/ruby/lib/i386-mingw32/enc/trans/gbk.so +0 -0
  348. data/shoes/ruby/lib/i386-mingw32/enc/trans/iso2022.so +0 -0
  349. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese.so +0 -0
  350. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_euc.so +0 -0
  351. data/shoes/ruby/lib/i386-mingw32/enc/trans/japanese_sjis.so +0 -0
  352. data/shoes/ruby/lib/i386-mingw32/enc/trans/korean.so +0 -0
  353. data/shoes/ruby/lib/i386-mingw32/enc/trans/single_byte.so +0 -0
  354. data/shoes/ruby/lib/i386-mingw32/enc/trans/transdb.so +0 -0
  355. data/shoes/ruby/lib/i386-mingw32/enc/trans/utf_16_32.so +0 -0
  356. data/shoes/ruby/lib/i386-mingw32/enc/utf_16be.so +0 -0
  357. data/shoes/ruby/lib/i386-mingw32/enc/utf_16le.so +0 -0
  358. data/shoes/ruby/lib/i386-mingw32/enc/utf_32be.so +0 -0
  359. data/shoes/ruby/lib/i386-mingw32/enc/utf_32le.so +0 -0
  360. data/shoes/ruby/lib/i386-mingw32/enc/windows_1251.so +0 -0
  361. data/shoes/ruby/lib/i386-mingw32/etc.so +0 -0
  362. data/shoes/ruby/lib/i386-mingw32/fcntl.so +0 -0
  363. data/shoes/ruby/lib/i386-mingw32/fiber.so +0 -0
  364. data/shoes/ruby/lib/i386-mingw32/ftsearchrt.so +0 -0
  365. data/shoes/ruby/lib/i386-mingw32/gdbm.so +0 -0
  366. data/shoes/ruby/lib/i386-mingw32/iconv.so +0 -0
  367. data/shoes/ruby/lib/i386-mingw32/io/wait.so +0 -0
  368. data/shoes/ruby/lib/i386-mingw32/json/ext/generator.so +0 -0
  369. data/shoes/ruby/lib/i386-mingw32/json/ext/parser.so +0 -0
  370. data/shoes/ruby/lib/i386-mingw32/mathn/complex.so +0 -0
  371. data/shoes/ruby/lib/i386-mingw32/mathn/rational.so +0 -0
  372. data/shoes/ruby/lib/i386-mingw32/nkf.so +0 -0
  373. data/shoes/ruby/lib/i386-mingw32/openssl.so +0 -0
  374. data/shoes/ruby/lib/i386-mingw32/racc/cparse.so +0 -0
  375. data/shoes/ruby/lib/i386-mingw32/rbconfig.rb +4 -4
  376. data/shoes/ruby/lib/i386-mingw32/readline.so +0 -0
  377. data/shoes/ruby/lib/i386-mingw32/ripper.so +0 -0
  378. data/shoes/ruby/lib/i386-mingw32/sdbm.so +0 -0
  379. data/shoes/ruby/lib/i386-mingw32/socket.so +0 -0
  380. data/shoes/ruby/lib/i386-mingw32/stringio.so +0 -0
  381. data/shoes/ruby/lib/i386-mingw32/strscan.so +0 -0
  382. data/shoes/ruby/lib/i386-mingw32/syck.so +0 -0
  383. data/shoes/ruby/lib/i386-mingw32/win32ole.so +0 -0
  384. data/shoes/ruby/lib/i386-mingw32/zlib.so +0 -0
  385. data/shoes/samples/class-book.rb +43 -43
  386. data/shoes/samples/class-book.yaml +387 -387
  387. data/shoes/samples/expert-definr.rb +23 -23
  388. data/shoes/samples/expert-funnies.rb +51 -51
  389. data/shoes/samples/expert-irb.rb +112 -112
  390. data/shoes/samples/expert-minesweeper.rb +267 -267
  391. data/shoes/samples/expert-othello.rb +319 -319
  392. data/shoes/samples/expert-pong.rb +62 -62
  393. data/shoes/samples/expert-tankspank.rb +385 -385
  394. data/shoes/samples/good-arc.rb +37 -37
  395. data/shoes/samples/good-clock.rb +51 -51
  396. data/shoes/samples/good-follow.rb +26 -26
  397. data/shoes/samples/good-reminder.rb +174 -174
  398. data/shoes/samples/good-vjot.rb +56 -56
  399. data/shoes/samples/simple-accordion.rb +75 -75
  400. data/shoes/samples/simple-anim-shapes.rb +17 -17
  401. data/shoes/samples/simple-anim-text.rb +13 -13
  402. data/shoes/samples/simple-arc.rb +23 -23
  403. data/shoes/samples/simple-bounce.rb +24 -24
  404. data/shoes/samples/simple-calc.rb +70 -70
  405. data/shoes/samples/simple-chipmunk.rb +26 -26
  406. data/shoes/samples/simple-control-sizes.rb +24 -24
  407. data/shoes/samples/simple-curve.rb +26 -26
  408. data/shoes/samples/simple-dialogs.rb +29 -29
  409. data/shoes/samples/simple-downloader.rb +27 -27
  410. data/shoes/samples/simple-draw.rb +13 -13
  411. data/shoes/samples/simple-editor.rb +28 -28
  412. data/shoes/samples/simple-form.rb +28 -28
  413. data/shoes/samples/simple-mask.rb +21 -21
  414. data/shoes/samples/simple-menu.rb +31 -31
  415. data/shoes/samples/simple-menu1.rb +35 -35
  416. data/shoes/samples/simple-rubygems.rb +29 -29
  417. data/shoes/samples/simple-slide.rb +45 -45
  418. data/shoes/samples/simple-sphere.rb +28 -28
  419. data/shoes/samples/simple-sqlite3.rb +13 -13
  420. data/shoes/samples/simple-timer.rb +13 -13
  421. data/shoes/samples/simple-video.rb +13 -13
  422. data/shoes/shoes.exe +0 -0
  423. data/shoes/shoes.exe.manifest +17 -17
  424. data/shoes/sqlite3.dll +0 -0
  425. data/shoes/static/code_highlighter.js +188 -188
  426. data/shoes/static/code_highlighter_ruby.js +26 -26
  427. data/shoes/static/manual-en.txt +2825 -2825
  428. data/shoes/static/manual-ja.txt +2825 -2780
  429. data/shoes/static/manual.css +167 -167
  430. data/shoes/static/stubs/blank.run +375 -375
  431. data/shoes/static/stubs/sh-install +48 -48
  432. data/shoes/static/stubs/shoes-stub-inject.exe +0 -0
  433. data/shoes/static/stubs/shoes-stub.exe +0 -0
  434. data/shoes/zlib.dll +0 -0
  435. data/shoes/zlib1.dll +0 -0
  436. metadata +213 -15
  437. data/shoes/nsis/base.nsi +0 -644
  438. data/shoes/nsis/installer-1.bmp +0 -0
  439. data/shoes/nsis/installer-2.bmp +0 -0
  440. data/shoes/nsis/setup.ico +0 -0
  441. data/shoes/nsis/shoes.exe.manifest +0 -17
  442. data/shoes/nsis/shoes.ico +0 -0
  443. data/shoes/nsis/shoes.nsi +0 -644
  444. data/shoes/nsis/stub-inject.c +0 -59
  445. data/shoes/nsis/stub.c +0 -271
  446. data/shoes/nsis/stub32.h +0 -14
  447. data/shoes/nsis/stub32.rc +0 -16
@@ -1,44 +1,44 @@
1
- require 'sqlite3/constants'
2
-
3
- module SQLite3
4
- class Exception < ::StandardError
5
- @code = 0
6
-
7
- # The numeric error code that this exception represents.
8
- def self.code
9
- @code
10
- end
11
-
12
- # A convenience for accessing the error code for this exception.
13
- def code
14
- self.class.code
15
- end
16
- end
17
-
18
- class SQLException < Exception; end
19
- class InternalException < Exception; end
20
- class PermissionException < Exception; end
21
- class AbortException < Exception; end
22
- class BusyException < Exception; end
23
- class LockedException < Exception; end
24
- class MemoryException < Exception; end
25
- class ReadOnlyException < Exception; end
26
- class InterruptException < Exception; end
27
- class IOException < Exception; end
28
- class CorruptException < Exception; end
29
- class NotFoundException < Exception; end
30
- class FullException < Exception; end
31
- class CantOpenException < Exception; end
32
- class ProtocolException < Exception; end
33
- class EmptyException < Exception; end
34
- class SchemaChangedException < Exception; end
35
- class TooBigException < Exception; end
36
- class ConstraintException < Exception; end
37
- class MismatchException < Exception; end
38
- class MisuseException < Exception; end
39
- class UnsupportedException < Exception; end
40
- class AuthorizationException < Exception; end
41
- class FormatException < Exception; end
42
- class RangeException < Exception; end
43
- class NotADatabaseException < Exception; end
44
- end
1
+ require 'sqlite3/constants'
2
+
3
+ module SQLite3
4
+ class Exception < ::StandardError
5
+ @code = 0
6
+
7
+ # The numeric error code that this exception represents.
8
+ def self.code
9
+ @code
10
+ end
11
+
12
+ # A convenience for accessing the error code for this exception.
13
+ def code
14
+ self.class.code
15
+ end
16
+ end
17
+
18
+ class SQLException < Exception; end
19
+ class InternalException < Exception; end
20
+ class PermissionException < Exception; end
21
+ class AbortException < Exception; end
22
+ class BusyException < Exception; end
23
+ class LockedException < Exception; end
24
+ class MemoryException < Exception; end
25
+ class ReadOnlyException < Exception; end
26
+ class InterruptException < Exception; end
27
+ class IOException < Exception; end
28
+ class CorruptException < Exception; end
29
+ class NotFoundException < Exception; end
30
+ class FullException < Exception; end
31
+ class CantOpenException < Exception; end
32
+ class ProtocolException < Exception; end
33
+ class EmptyException < Exception; end
34
+ class SchemaChangedException < Exception; end
35
+ class TooBigException < Exception; end
36
+ class ConstraintException < Exception; end
37
+ class MismatchException < Exception; end
38
+ class MisuseException < Exception; end
39
+ class UnsupportedException < Exception; end
40
+ class AuthorizationException < Exception; end
41
+ class FormatException < Exception; end
42
+ class RangeException < Exception; end
43
+ class NotADatabaseException < Exception; end
44
+ end
@@ -1,280 +1,280 @@
1
- require 'sqlite3/errors'
2
-
3
- module SQLite3
4
-
5
- # This module is intended for inclusion solely by the Database class. It
6
- # defines convenience methods for the various pragmas supported by SQLite3.
7
- #
8
- # For a detailed description of these pragmas, see the SQLite3 documentation
9
- # at http://sqlite.org/pragma.html.
10
- module Pragmas
11
-
12
- # Returns +true+ or +false+ depending on the value of the named pragma.
13
- def get_boolean_pragma( name )
14
- get_first_value( "PRAGMA #{name}" ) != "0"
15
- end
16
- private :get_boolean_pragma
17
-
18
- # Sets the given pragma to the given boolean value. The value itself
19
- # may be +true+ or +false+, or any other commonly used string or
20
- # integer that represents truth.
21
- def set_boolean_pragma( name, mode )
22
- case mode
23
- when String
24
- case mode.downcase
25
- when "on", "yes", "true", "y", "t"; mode = "'ON'"
26
- when "off", "no", "false", "n", "f"; mode = "'OFF'"
27
- else
28
- raise Exception,
29
- "unrecognized pragma parameter #{mode.inspect}"
30
- end
31
- when true, 1
32
- mode = "ON"
33
- when false, 0, nil
34
- mode = "OFF"
35
- else
36
- raise Exception,
37
- "unrecognized pragma parameter #{mode.inspect}"
38
- end
39
-
40
- execute( "PRAGMA #{name}=#{mode}" )
41
- end
42
- private :set_boolean_pragma
43
-
44
- # Requests the given pragma (and parameters), and if the block is given,
45
- # each row of the result set will be yielded to it. Otherwise, the results
46
- # are returned as an array.
47
- def get_query_pragma( name, *parms, &block ) # :yields: row
48
- if parms.empty?
49
- execute( "PRAGMA #{name}", &block )
50
- else
51
- args = "'" + parms.join("','") + "'"
52
- execute( "PRAGMA #{name}( #{args} )", &block )
53
- end
54
- end
55
- private :get_query_pragma
56
-
57
- # Return the value of the given pragma.
58
- def get_enum_pragma( name )
59
- get_first_value( "PRAGMA #{name}" )
60
- end
61
- private :get_enum_pragma
62
-
63
- # Set the value of the given pragma to +mode+. The +mode+ parameter must
64
- # conform to one of the values in the given +enum+ array. Each entry in
65
- # the array is another array comprised of elements in the enumeration that
66
- # have duplicate values. See #synchronous, #default_synchronous,
67
- # #temp_store, and #default_temp_store for usage examples.
68
- def set_enum_pragma( name, mode, enums )
69
- match = enums.find { |p| p.find { |i| i.to_s.downcase == mode.to_s.downcase } }
70
- raise Exception,
71
- "unrecognized #{name} #{mode.inspect}" unless match
72
- execute( "PRAGMA #{name}='#{match.first.upcase}'" )
73
- end
74
- private :set_enum_pragma
75
-
76
- # Returns the value of the given pragma as an integer.
77
- def get_int_pragma( name )
78
- get_first_value( "PRAGMA #{name}" ).to_i
79
- end
80
- private :get_int_pragma
81
-
82
- # Set the value of the given pragma to the integer value of the +value+
83
- # parameter.
84
- def set_int_pragma( name, value )
85
- execute( "PRAGMA #{name}=#{value.to_i}" )
86
- end
87
- private :set_int_pragma
88
-
89
- # The enumeration of valid synchronous modes.
90
- SYNCHRONOUS_MODES = [ [ 'full', 2 ], [ 'normal', 1 ], [ 'off', 0 ] ]
91
-
92
- # The enumeration of valid temp store modes.
93
- TEMP_STORE_MODES = [ [ 'default', 0 ], [ 'file', 1 ], [ 'memory', 2 ] ]
94
-
95
- # Does an integrity check on the database. If the check fails, a
96
- # SQLite3::Exception will be raised. Otherwise it
97
- # returns silently.
98
- def integrity_check
99
- execute( "PRAGMA integrity_check" ) do |row|
100
- raise Exception, row[0] if row[0] != "ok"
101
- end
102
- end
103
-
104
- def auto_vacuum
105
- get_boolean_pragma "auto_vacuum"
106
- end
107
-
108
- def auto_vacuum=( mode )
109
- set_boolean_pragma "auto_vacuum", mode
110
- end
111
-
112
- def schema_cookie
113
- get_int_pragma "schema_cookie"
114
- end
115
-
116
- def schema_cookie=( cookie )
117
- set_int_pragma "schema_cookie", cookie
118
- end
119
-
120
- def user_cookie
121
- get_int_pragma "user_cookie"
122
- end
123
-
124
- def user_cookie=( cookie )
125
- set_int_pragma "user_cookie", cookie
126
- end
127
-
128
- def cache_size
129
- get_int_pragma "cache_size"
130
- end
131
-
132
- def cache_size=( size )
133
- set_int_pragma "cache_size", size
134
- end
135
-
136
- def default_cache_size
137
- get_int_pragma "default_cache_size"
138
- end
139
-
140
- def default_cache_size=( size )
141
- set_int_pragma "default_cache_size", size
142
- end
143
-
144
- def default_synchronous
145
- get_enum_pragma "default_synchronous"
146
- end
147
-
148
- def default_synchronous=( mode )
149
- set_enum_pragma "default_synchronous", mode, SYNCHRONOUS_MODES
150
- end
151
-
152
- def synchronous
153
- get_enum_pragma "synchronous"
154
- end
155
-
156
- def synchronous=( mode )
157
- set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES
158
- end
159
-
160
- def default_temp_store
161
- get_enum_pragma "default_temp_store"
162
- end
163
-
164
- def default_temp_store=( mode )
165
- set_enum_pragma "default_temp_store", mode, TEMP_STORE_MODES
166
- end
167
-
168
- def temp_store
169
- get_enum_pragma "temp_store"
170
- end
171
-
172
- def temp_store=( mode )
173
- set_enum_pragma "temp_store", mode, TEMP_STORE_MODES
174
- end
175
-
176
- def full_column_names
177
- get_boolean_pragma "full_column_names"
178
- end
179
-
180
- def full_column_names=( mode )
181
- set_boolean_pragma "full_column_names", mode
182
- end
183
-
184
- def parser_trace
185
- get_boolean_pragma "parser_trace"
186
- end
187
-
188
- def parser_trace=( mode )
189
- set_boolean_pragma "parser_trace", mode
190
- end
191
-
192
- def vdbe_trace
193
- get_boolean_pragma "vdbe_trace"
194
- end
195
-
196
- def vdbe_trace=( mode )
197
- set_boolean_pragma "vdbe_trace", mode
198
- end
199
-
200
- def database_list( &block ) # :yields: row
201
- get_query_pragma "database_list", &block
202
- end
203
-
204
- def foreign_key_list( table, &block ) # :yields: row
205
- get_query_pragma "foreign_key_list", table, &block
206
- end
207
-
208
- def index_info( index, &block ) # :yields: row
209
- get_query_pragma "index_info", index, &block
210
- end
211
-
212
- def index_list( table, &block ) # :yields: row
213
- get_query_pragma "index_list", table, &block
214
- end
215
-
216
- ###
217
- # Returns information about +table+. Yields each row of table information
218
- # if a block is provided.
219
- def table_info table
220
- stmt = prepare "PRAGMA table_info(#{table})"
221
- columns = stmt.columns
222
-
223
- needs_tweak_default =
224
- version_compare(SQLite3.libversion.to_s, "3.3.7") > 0
225
-
226
- result = [] unless block_given?
227
- stmt.each do |row|
228
- new_row = Hash[*columns.zip(row).flatten]
229
-
230
- # FIXME: This should be removed but is required for older versions
231
- # of rails
232
- if(Object.const_defined?(:ActiveRecord))
233
- new_row['notnull'] = new_row['notnull'].to_s
234
- end
235
-
236
- tweak_default(new_row) if needs_tweak_default
237
-
238
- if block_given?
239
- yield new_row
240
- else
241
- result << new_row
242
- end
243
- end
244
- stmt.close
245
-
246
- result
247
- end
248
-
249
- private
250
-
251
- # Compares two version strings
252
- def version_compare(v1, v2)
253
- v1 = v1.split(".").map { |i| i.to_i }
254
- v2 = v2.split(".").map { |i| i.to_i }
255
- parts = [v1.length, v2.length].max
256
- v1.push 0 while v1.length < parts
257
- v2.push 0 while v2.length < parts
258
- v1.zip(v2).each do |a,b|
259
- return -1 if a < b
260
- return 1 if a > b
261
- end
262
- return 0
263
- end
264
-
265
- # Since SQLite 3.3.8, the table_info pragma has returned the default
266
- # value of the row as a quoted SQL value. This method essentially
267
- # unquotes those values.
268
- def tweak_default(hash)
269
- case hash["dflt_value"]
270
- when /^null$/i
271
- hash["dflt_value"] = nil
272
- when /^'(.*)'$/
273
- hash["dflt_value"] = $1.gsub(/''/, "'")
274
- when /^"(.*)"$/
275
- hash["dflt_value"] = $1.gsub(/""/, '"')
276
- end
277
- end
278
- end
279
-
280
- end
1
+ require 'sqlite3/errors'
2
+
3
+ module SQLite3
4
+
5
+ # This module is intended for inclusion solely by the Database class. It
6
+ # defines convenience methods for the various pragmas supported by SQLite3.
7
+ #
8
+ # For a detailed description of these pragmas, see the SQLite3 documentation
9
+ # at http://sqlite.org/pragma.html.
10
+ module Pragmas
11
+
12
+ # Returns +true+ or +false+ depending on the value of the named pragma.
13
+ def get_boolean_pragma( name )
14
+ get_first_value( "PRAGMA #{name}" ) != "0"
15
+ end
16
+ private :get_boolean_pragma
17
+
18
+ # Sets the given pragma to the given boolean value. The value itself
19
+ # may be +true+ or +false+, or any other commonly used string or
20
+ # integer that represents truth.
21
+ def set_boolean_pragma( name, mode )
22
+ case mode
23
+ when String
24
+ case mode.downcase
25
+ when "on", "yes", "true", "y", "t"; mode = "'ON'"
26
+ when "off", "no", "false", "n", "f"; mode = "'OFF'"
27
+ else
28
+ raise Exception,
29
+ "unrecognized pragma parameter #{mode.inspect}"
30
+ end
31
+ when true, 1
32
+ mode = "ON"
33
+ when false, 0, nil
34
+ mode = "OFF"
35
+ else
36
+ raise Exception,
37
+ "unrecognized pragma parameter #{mode.inspect}"
38
+ end
39
+
40
+ execute( "PRAGMA #{name}=#{mode}" )
41
+ end
42
+ private :set_boolean_pragma
43
+
44
+ # Requests the given pragma (and parameters), and if the block is given,
45
+ # each row of the result set will be yielded to it. Otherwise, the results
46
+ # are returned as an array.
47
+ def get_query_pragma( name, *parms, &block ) # :yields: row
48
+ if parms.empty?
49
+ execute( "PRAGMA #{name}", &block )
50
+ else
51
+ args = "'" + parms.join("','") + "'"
52
+ execute( "PRAGMA #{name}( #{args} )", &block )
53
+ end
54
+ end
55
+ private :get_query_pragma
56
+
57
+ # Return the value of the given pragma.
58
+ def get_enum_pragma( name )
59
+ get_first_value( "PRAGMA #{name}" )
60
+ end
61
+ private :get_enum_pragma
62
+
63
+ # Set the value of the given pragma to +mode+. The +mode+ parameter must
64
+ # conform to one of the values in the given +enum+ array. Each entry in
65
+ # the array is another array comprised of elements in the enumeration that
66
+ # have duplicate values. See #synchronous, #default_synchronous,
67
+ # #temp_store, and #default_temp_store for usage examples.
68
+ def set_enum_pragma( name, mode, enums )
69
+ match = enums.find { |p| p.find { |i| i.to_s.downcase == mode.to_s.downcase } }
70
+ raise Exception,
71
+ "unrecognized #{name} #{mode.inspect}" unless match
72
+ execute( "PRAGMA #{name}='#{match.first.upcase}'" )
73
+ end
74
+ private :set_enum_pragma
75
+
76
+ # Returns the value of the given pragma as an integer.
77
+ def get_int_pragma( name )
78
+ get_first_value( "PRAGMA #{name}" ).to_i
79
+ end
80
+ private :get_int_pragma
81
+
82
+ # Set the value of the given pragma to the integer value of the +value+
83
+ # parameter.
84
+ def set_int_pragma( name, value )
85
+ execute( "PRAGMA #{name}=#{value.to_i}" )
86
+ end
87
+ private :set_int_pragma
88
+
89
+ # The enumeration of valid synchronous modes.
90
+ SYNCHRONOUS_MODES = [ [ 'full', 2 ], [ 'normal', 1 ], [ 'off', 0 ] ]
91
+
92
+ # The enumeration of valid temp store modes.
93
+ TEMP_STORE_MODES = [ [ 'default', 0 ], [ 'file', 1 ], [ 'memory', 2 ] ]
94
+
95
+ # Does an integrity check on the database. If the check fails, a
96
+ # SQLite3::Exception will be raised. Otherwise it
97
+ # returns silently.
98
+ def integrity_check
99
+ execute( "PRAGMA integrity_check" ) do |row|
100
+ raise Exception, row[0] if row[0] != "ok"
101
+ end
102
+ end
103
+
104
+ def auto_vacuum
105
+ get_boolean_pragma "auto_vacuum"
106
+ end
107
+
108
+ def auto_vacuum=( mode )
109
+ set_boolean_pragma "auto_vacuum", mode
110
+ end
111
+
112
+ def schema_cookie
113
+ get_int_pragma "schema_cookie"
114
+ end
115
+
116
+ def schema_cookie=( cookie )
117
+ set_int_pragma "schema_cookie", cookie
118
+ end
119
+
120
+ def user_cookie
121
+ get_int_pragma "user_cookie"
122
+ end
123
+
124
+ def user_cookie=( cookie )
125
+ set_int_pragma "user_cookie", cookie
126
+ end
127
+
128
+ def cache_size
129
+ get_int_pragma "cache_size"
130
+ end
131
+
132
+ def cache_size=( size )
133
+ set_int_pragma "cache_size", size
134
+ end
135
+
136
+ def default_cache_size
137
+ get_int_pragma "default_cache_size"
138
+ end
139
+
140
+ def default_cache_size=( size )
141
+ set_int_pragma "default_cache_size", size
142
+ end
143
+
144
+ def default_synchronous
145
+ get_enum_pragma "default_synchronous"
146
+ end
147
+
148
+ def default_synchronous=( mode )
149
+ set_enum_pragma "default_synchronous", mode, SYNCHRONOUS_MODES
150
+ end
151
+
152
+ def synchronous
153
+ get_enum_pragma "synchronous"
154
+ end
155
+
156
+ def synchronous=( mode )
157
+ set_enum_pragma "synchronous", mode, SYNCHRONOUS_MODES
158
+ end
159
+
160
+ def default_temp_store
161
+ get_enum_pragma "default_temp_store"
162
+ end
163
+
164
+ def default_temp_store=( mode )
165
+ set_enum_pragma "default_temp_store", mode, TEMP_STORE_MODES
166
+ end
167
+
168
+ def temp_store
169
+ get_enum_pragma "temp_store"
170
+ end
171
+
172
+ def temp_store=( mode )
173
+ set_enum_pragma "temp_store", mode, TEMP_STORE_MODES
174
+ end
175
+
176
+ def full_column_names
177
+ get_boolean_pragma "full_column_names"
178
+ end
179
+
180
+ def full_column_names=( mode )
181
+ set_boolean_pragma "full_column_names", mode
182
+ end
183
+
184
+ def parser_trace
185
+ get_boolean_pragma "parser_trace"
186
+ end
187
+
188
+ def parser_trace=( mode )
189
+ set_boolean_pragma "parser_trace", mode
190
+ end
191
+
192
+ def vdbe_trace
193
+ get_boolean_pragma "vdbe_trace"
194
+ end
195
+
196
+ def vdbe_trace=( mode )
197
+ set_boolean_pragma "vdbe_trace", mode
198
+ end
199
+
200
+ def database_list( &block ) # :yields: row
201
+ get_query_pragma "database_list", &block
202
+ end
203
+
204
+ def foreign_key_list( table, &block ) # :yields: row
205
+ get_query_pragma "foreign_key_list", table, &block
206
+ end
207
+
208
+ def index_info( index, &block ) # :yields: row
209
+ get_query_pragma "index_info", index, &block
210
+ end
211
+
212
+ def index_list( table, &block ) # :yields: row
213
+ get_query_pragma "index_list", table, &block
214
+ end
215
+
216
+ ###
217
+ # Returns information about +table+. Yields each row of table information
218
+ # if a block is provided.
219
+ def table_info table
220
+ stmt = prepare "PRAGMA table_info(#{table})"
221
+ columns = stmt.columns
222
+
223
+ needs_tweak_default =
224
+ version_compare(SQLite3.libversion.to_s, "3.3.7") > 0
225
+
226
+ result = [] unless block_given?
227
+ stmt.each do |row|
228
+ new_row = Hash[*columns.zip(row).flatten]
229
+
230
+ # FIXME: This should be removed but is required for older versions
231
+ # of rails
232
+ if(Object.const_defined?(:ActiveRecord))
233
+ new_row['notnull'] = new_row['notnull'].to_s
234
+ end
235
+
236
+ tweak_default(new_row) if needs_tweak_default
237
+
238
+ if block_given?
239
+ yield new_row
240
+ else
241
+ result << new_row
242
+ end
243
+ end
244
+ stmt.close
245
+
246
+ result
247
+ end
248
+
249
+ private
250
+
251
+ # Compares two version strings
252
+ def version_compare(v1, v2)
253
+ v1 = v1.split(".").map { |i| i.to_i }
254
+ v2 = v2.split(".").map { |i| i.to_i }
255
+ parts = [v1.length, v2.length].max
256
+ v1.push 0 while v1.length < parts
257
+ v2.push 0 while v2.length < parts
258
+ v1.zip(v2).each do |a,b|
259
+ return -1 if a < b
260
+ return 1 if a > b
261
+ end
262
+ return 0
263
+ end
264
+
265
+ # Since SQLite 3.3.8, the table_info pragma has returned the default
266
+ # value of the row as a quoted SQL value. This method essentially
267
+ # unquotes those values.
268
+ def tweak_default(hash)
269
+ case hash["dflt_value"]
270
+ when /^null$/i
271
+ hash["dflt_value"] = nil
272
+ when /^'(.*)'$/
273
+ hash["dflt_value"] = $1.gsub(/''/, "'")
274
+ when /^"(.*)"$/
275
+ hash["dflt_value"] = $1.gsub(/""/, '"')
276
+ end
277
+ end
278
+ end
279
+
280
+ end