gettext 1.0.0-mswin32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (395) hide show
  1. data/COPYING +55 -0
  2. data/COPYING.ja +51 -0
  3. data/ChangeLog +490 -0
  4. data/NEWS +98 -0
  5. data/README +113 -0
  6. data/README.ja +115 -0
  7. data/Rakefile +169 -0
  8. data/bin/rgettext +22 -0
  9. data/bin/rmsgfmt +22 -0
  10. data/data/locale/de/LC_MESSAGES/rgettext.mo +0 -0
  11. data/data/locale/de/LC_MESSAGES/rmsgfmt.mo +0 -0
  12. data/data/locale/es/LC_MESSAGES/rgettext.mo +0 -0
  13. data/data/locale/es/LC_MESSAGES/rmsgfmt.mo +0 -0
  14. data/data/locale/fr/LC_MESSAGES/rgettext.mo +0 -0
  15. data/data/locale/fr/LC_MESSAGES/rmsgfmt.mo +0 -0
  16. data/data/locale/it/LC_MESSAGES/rgettext.mo +0 -0
  17. data/data/locale/it/LC_MESSAGES/rmsgfmt.mo +0 -0
  18. data/data/locale/ja/LC_MESSAGES/rgettext.mo +0 -0
  19. data/data/locale/ja/LC_MESSAGES/rmsgfmt.mo +0 -0
  20. data/data/locale/ko/LC_MESSAGES/rgettext.mo +0 -0
  21. data/data/locale/ko/LC_MESSAGES/rmsgfmt.mo +0 -0
  22. data/data/locale/pt_BR/LC_MESSAGES/rgettext.mo +0 -0
  23. data/data/locale/pt_BR/LC_MESSAGES/rmsgfmt.mo +0 -0
  24. data/data/locale/sv/LC_MESSAGES/rgettext.mo +0 -0
  25. data/data/locale/sv/LC_MESSAGES/rmsgfmt.mo +0 -0
  26. data/ext/gettext/gettext/MANIFEST +3 -0
  27. data/ext/gettext/gettext/Makefile +145 -0
  28. data/ext/gettext/gettext/_locale-i386-mswin32.def +2 -0
  29. data/ext/gettext/gettext/_locale.c +86 -0
  30. data/ext/gettext/gettext/_locale.exp +0 -0
  31. data/ext/gettext/gettext/_locale.lib +0 -0
  32. data/ext/gettext/gettext/_locale.obj +0 -0
  33. data/ext/gettext/gettext/_locale.pdb +0 -0
  34. data/ext/gettext/gettext/_locale.so +0 -0
  35. data/ext/gettext/gettext/extconf.rb +20 -0
  36. data/ext/gettext/gettext/mkmf.log +16 -0
  37. data/ext/gettext/gettext/vc70.pdb +0 -0
  38. data/gettext-1.0.0-mswin32.gem +0 -0
  39. data/lib/_locale.so +0 -0
  40. data/lib/gettext.rb +127 -0
  41. data/lib/gettext/cgi.rb +83 -0
  42. data/lib/gettext/container.rb +30 -0
  43. data/lib/gettext/erb.rb +28 -0
  44. data/lib/gettext/iconv.rb +80 -0
  45. data/lib/gettext/locale.rb +71 -0
  46. data/lib/gettext/locale_default.rb +35 -0
  47. data/lib/gettext/locale_table_win32.rb +192 -0
  48. data/lib/gettext/locale_win32.rb +35 -0
  49. data/lib/gettext/mo.rb +262 -0
  50. data/lib/gettext/parser/erb.rb +34 -0
  51. data/lib/gettext/parser/glade.rb +98 -0
  52. data/lib/gettext/parser/ruby.rb +211 -0
  53. data/lib/gettext/rails.rb +40 -0
  54. data/lib/gettext/rgettext.rb +181 -0
  55. data/lib/gettext/rmsgfmt.rb +363 -0
  56. data/lib/gettext/textdomain.rb +168 -0
  57. data/lib/gettext/version.rb +12 -0
  58. data/po/de/rgettext.po +49 -0
  59. data/po/de/rmsgfmt.po +45 -0
  60. data/po/es/rgettext.po +47 -0
  61. data/po/es/rmsgfmt.po +43 -0
  62. data/po/fr/rgettext.po +47 -0
  63. data/po/fr/rmsgfmt.po +43 -0
  64. data/po/it/rgettext.po +47 -0
  65. data/po/it/rmsgfmt.po +44 -0
  66. data/po/ja/rgettext.po +49 -0
  67. data/po/ja/rmsgfmt.po +43 -0
  68. data/po/ko/rgettext.po +46 -0
  69. data/po/ko/rmsgfmt.po +40 -0
  70. data/po/pt_BR/rgettext.po +47 -0
  71. data/po/pt_BR/rmsgfmt.po +42 -0
  72. data/po/rgettext.pot +45 -0
  73. data/po/rmsgfmt.pot +40 -0
  74. data/po/sv/rgettext.po +48 -0
  75. data/po/sv/rmsgfmt.po +43 -0
  76. data/post-setup.rb +12 -0
  77. data/pre-setup.rb +12 -0
  78. data/samples/README +20 -0
  79. data/samples/cgi/README +43 -0
  80. data/samples/cgi/Rakefile +9 -0
  81. data/samples/cgi/cookie.cgi +57 -0
  82. data/samples/cgi/gettext.css +116 -0
  83. data/samples/cgi/helloerb.rhtml +27 -0
  84. data/samples/cgi/helloerb1.cgi +47 -0
  85. data/samples/cgi/helloerb2.cgi +41 -0
  86. data/samples/cgi/hellolib.rb +21 -0
  87. data/samples/cgi/http.rb +54 -0
  88. data/samples/cgi/index.cgi +104 -0
  89. data/samples/cgi/locale/de/LC_MESSAGES/helloerb1.mo +0 -0
  90. data/samples/cgi/locale/de/LC_MESSAGES/helloerb2.mo +0 -0
  91. data/samples/cgi/locale/de/LC_MESSAGES/hellolib.mo +0 -0
  92. data/samples/cgi/locale/de/LC_MESSAGES/main.mo +0 -0
  93. data/samples/cgi/locale/es/LC_MESSAGES/helloerb1.mo +0 -0
  94. data/samples/cgi/locale/es/LC_MESSAGES/helloerb2.mo +0 -0
  95. data/samples/cgi/locale/es/LC_MESSAGES/hellolib.mo +0 -0
  96. data/samples/cgi/locale/es/LC_MESSAGES/main.mo +0 -0
  97. data/samples/cgi/locale/fr/LC_MESSAGES/helloerb1.mo +0 -0
  98. data/samples/cgi/locale/fr/LC_MESSAGES/helloerb2.mo +0 -0
  99. data/samples/cgi/locale/fr/LC_MESSAGES/hellolib.mo +0 -0
  100. data/samples/cgi/locale/fr/LC_MESSAGES/main.mo +0 -0
  101. data/samples/cgi/locale/it/LC_MESSAGES/helloerb1.mo +0 -0
  102. data/samples/cgi/locale/it/LC_MESSAGES/helloerb2.mo +0 -0
  103. data/samples/cgi/locale/it/LC_MESSAGES/hellolib.mo +0 -0
  104. data/samples/cgi/locale/it/LC_MESSAGES/main.mo +0 -0
  105. data/samples/cgi/locale/ja/LC_MESSAGES/helloerb1.mo +0 -0
  106. data/samples/cgi/locale/ja/LC_MESSAGES/helloerb2.mo +0 -0
  107. data/samples/cgi/locale/ja/LC_MESSAGES/hellolib.mo +0 -0
  108. data/samples/cgi/locale/ja/LC_MESSAGES/main.mo +0 -0
  109. data/samples/cgi/locale/ko/LC_MESSAGES/helloerb1.mo +0 -0
  110. data/samples/cgi/locale/ko/LC_MESSAGES/helloerb2.mo +0 -0
  111. data/samples/cgi/locale/ko/LC_MESSAGES/hellolib.mo +0 -0
  112. data/samples/cgi/locale/ko/LC_MESSAGES/main.mo +0 -0
  113. data/samples/cgi/other.rhtml +20 -0
  114. data/samples/cgi/po/de/helloerb1.po +60 -0
  115. data/samples/cgi/po/de/helloerb2.po +52 -0
  116. data/samples/cgi/po/de/hellolib.po +23 -0
  117. data/samples/cgi/po/de/main.po +76 -0
  118. data/samples/cgi/po/es/helloerb1.po +59 -0
  119. data/samples/cgi/po/es/helloerb2.po +50 -0
  120. data/samples/cgi/po/es/hellolib.po +22 -0
  121. data/samples/cgi/po/es/main.po +74 -0
  122. data/samples/cgi/po/fr/helloerb1.po +59 -0
  123. data/samples/cgi/po/fr/helloerb2.po +51 -0
  124. data/samples/cgi/po/fr/hellolib.po +22 -0
  125. data/samples/cgi/po/fr/main.po +75 -0
  126. data/samples/cgi/po/helloerb1.pot +60 -0
  127. data/samples/cgi/po/helloerb2.pot +52 -0
  128. data/samples/cgi/po/hellolib.pot +23 -0
  129. data/samples/cgi/po/it/helloerb1.po +61 -0
  130. data/samples/cgi/po/it/helloerb2.po +52 -0
  131. data/samples/cgi/po/it/hellolib.po +24 -0
  132. data/samples/cgi/po/it/main.po +76 -0
  133. data/samples/cgi/po/ja/helloerb1.po +59 -0
  134. data/samples/cgi/po/ja/helloerb2.po +52 -0
  135. data/samples/cgi/po/ja/hellolib.po +23 -0
  136. data/samples/cgi/po/ja/main.po +76 -0
  137. data/samples/cgi/po/ko/helloerb1.po +58 -0
  138. data/samples/cgi/po/ko/helloerb2.po +52 -0
  139. data/samples/cgi/po/ko/hellolib.po +22 -0
  140. data/samples/cgi/po/ko/main.po +74 -0
  141. data/samples/cgi/po/main.pot +76 -0
  142. data/samples/cgi/ruby.bat +4 -0
  143. data/samples/hello.rb +12 -0
  144. data/samples/hello2.rb +15 -0
  145. data/samples/hello_noop.rb +18 -0
  146. data/samples/hello_plural.rb +15 -0
  147. data/samples/hello_textdomain.rb +12 -0
  148. data/samples/helloglade2.glade +70 -0
  149. data/samples/helloglade2.rb +24 -0
  150. data/samples/hellogtk.rb +26 -0
  151. data/samples/hellogtk2.rb +28 -0
  152. data/samples/hellotk.rb +18 -0
  153. data/samples/locale/de/LC_MESSAGES/hello.mo +0 -0
  154. data/samples/locale/de/LC_MESSAGES/hello2.mo +0 -0
  155. data/samples/locale/de/LC_MESSAGES/hello_noop.mo +0 -0
  156. data/samples/locale/de/LC_MESSAGES/hello_plural.mo +0 -0
  157. data/samples/locale/de/LC_MESSAGES/helloglade2.mo +0 -0
  158. data/samples/locale/de/LC_MESSAGES/hellogtk.mo +0 -0
  159. data/samples/locale/de/LC_MESSAGES/hellotk.mo +0 -0
  160. data/samples/locale/es/LC_MESSAGES/hello.mo +0 -0
  161. data/samples/locale/es/LC_MESSAGES/hello2.mo +0 -0
  162. data/samples/locale/es/LC_MESSAGES/hello_noop.mo +0 -0
  163. data/samples/locale/es/LC_MESSAGES/hello_plural.mo +0 -0
  164. data/samples/locale/es/LC_MESSAGES/helloglade2.mo +0 -0
  165. data/samples/locale/es/LC_MESSAGES/hellogtk.mo +0 -0
  166. data/samples/locale/es/LC_MESSAGES/hellotk.mo +0 -0
  167. data/samples/locale/fr/LC_MESSAGES/hello.mo +0 -0
  168. data/samples/locale/fr/LC_MESSAGES/hello2.mo +0 -0
  169. data/samples/locale/fr/LC_MESSAGES/hello_noop.mo +0 -0
  170. data/samples/locale/fr/LC_MESSAGES/hello_plural.mo +0 -0
  171. data/samples/locale/fr/LC_MESSAGES/helloglade2.mo +0 -0
  172. data/samples/locale/fr/LC_MESSAGES/hellogtk.mo +0 -0
  173. data/samples/locale/fr/LC_MESSAGES/hellotk.mo +0 -0
  174. data/samples/locale/it/LC_MESSAGES/hello.mo +0 -0
  175. data/samples/locale/it/LC_MESSAGES/hello2.mo +0 -0
  176. data/samples/locale/it/LC_MESSAGES/hello_noop.mo +0 -0
  177. data/samples/locale/it/LC_MESSAGES/hello_plural.mo +0 -0
  178. data/samples/locale/it/LC_MESSAGES/helloglade2.mo +0 -0
  179. data/samples/locale/it/LC_MESSAGES/hellogtk.mo +0 -0
  180. data/samples/locale/it/LC_MESSAGES/hellotk.mo +0 -0
  181. data/samples/locale/ja/LC_MESSAGES/hello.mo +0 -0
  182. data/samples/locale/ja/LC_MESSAGES/hello2.mo +0 -0
  183. data/samples/locale/ja/LC_MESSAGES/hello_noop.mo +0 -0
  184. data/samples/locale/ja/LC_MESSAGES/hello_plural.mo +0 -0
  185. data/samples/locale/ja/LC_MESSAGES/helloglade2.mo +0 -0
  186. data/samples/locale/ja/LC_MESSAGES/hellogtk.mo +0 -0
  187. data/samples/locale/ja/LC_MESSAGES/hellotk.mo +0 -0
  188. data/samples/locale/ko/LC_MESSAGES/hello.mo +0 -0
  189. data/samples/locale/ko/LC_MESSAGES/hello2.mo +0 -0
  190. data/samples/locale/ko/LC_MESSAGES/hello_noop.mo +0 -0
  191. data/samples/locale/ko/LC_MESSAGES/hello_plural.mo +0 -0
  192. data/samples/locale/ko/LC_MESSAGES/helloglade2.mo +0 -0
  193. data/samples/locale/ko/LC_MESSAGES/hellogtk.mo +0 -0
  194. data/samples/locale/ko/LC_MESSAGES/hellotk.mo +0 -0
  195. data/samples/locale/pt_BR/LC_MESSAGES/hello.mo +0 -0
  196. data/samples/locale/pt_BR/LC_MESSAGES/hello2.mo +0 -0
  197. data/samples/locale/pt_BR/LC_MESSAGES/hello_noop.mo +0 -0
  198. data/samples/locale/pt_BR/LC_MESSAGES/hello_plural.mo +0 -0
  199. data/samples/locale/pt_BR/LC_MESSAGES/helloglade2.mo +0 -0
  200. data/samples/locale/pt_BR/LC_MESSAGES/hellogtk.mo +0 -0
  201. data/samples/locale/pt_BR/LC_MESSAGES/hellotk.mo +0 -0
  202. data/samples/locale/sv/LC_MESSAGES/hello.mo +0 -0
  203. data/samples/locale/sv/LC_MESSAGES/hello2.mo +0 -0
  204. data/samples/locale/sv/LC_MESSAGES/hello_noop.mo +0 -0
  205. data/samples/locale/sv/LC_MESSAGES/hello_plural.mo +0 -0
  206. data/samples/locale/sv/LC_MESSAGES/helloglade2.mo +0 -0
  207. data/samples/locale/sv/LC_MESSAGES/hellogtk.mo +0 -0
  208. data/samples/locale/sv/LC_MESSAGES/hellotk.mo +0 -0
  209. data/samples/makemo.rb +3 -0
  210. data/samples/po/de/hello.po +20 -0
  211. data/samples/po/de/hello2.po +28 -0
  212. data/samples/po/de/hello_noop.po +24 -0
  213. data/samples/po/de/hello_plural.po +22 -0
  214. data/samples/po/de/helloglade2.po +27 -0
  215. data/samples/po/de/hellogtk.po +20 -0
  216. data/samples/po/de/hellotk.po +20 -0
  217. data/samples/po/es/hello.po +21 -0
  218. data/samples/po/es/hello2.po +28 -0
  219. data/samples/po/es/hello_noop.po +24 -0
  220. data/samples/po/es/hello_plural.po +23 -0
  221. data/samples/po/es/helloglade2.po +28 -0
  222. data/samples/po/es/hellogtk.po +20 -0
  223. data/samples/po/es/hellotk.po +20 -0
  224. data/samples/po/fr/hello.po +18 -0
  225. data/samples/po/fr/hello2.po +26 -0
  226. data/samples/po/fr/hello_noop.po +22 -0
  227. data/samples/po/fr/hello_plural.po +21 -0
  228. data/samples/po/fr/helloglade2.po +27 -0
  229. data/samples/po/fr/hellogtk.po +18 -0
  230. data/samples/po/fr/hellotk.po +18 -0
  231. data/samples/po/hello.pot +20 -0
  232. data/samples/po/hello2.pot +28 -0
  233. data/samples/po/hello_noop.pot +24 -0
  234. data/samples/po/hello_plural.pot +22 -0
  235. data/samples/po/helloglade2.pot +27 -0
  236. data/samples/po/hellogtk.pot +20 -0
  237. data/samples/po/hellotk.pot +20 -0
  238. data/samples/po/it/hello.po +20 -0
  239. data/samples/po/it/hello2.po +28 -0
  240. data/samples/po/it/hello_noop.po +24 -0
  241. data/samples/po/it/hello_plural.po +24 -0
  242. data/samples/po/it/helloglade2.po +28 -0
  243. data/samples/po/it/hellogtk.po +21 -0
  244. data/samples/po/it/hellotk.po +21 -0
  245. data/samples/po/ja/hello.po +20 -0
  246. data/samples/po/ja/hello2.po +28 -0
  247. data/samples/po/ja/hello_noop.po +23 -0
  248. data/samples/po/ja/hello_plural.po +22 -0
  249. data/samples/po/ja/helloglade2.po +26 -0
  250. data/samples/po/ja/hellogtk.po +19 -0
  251. data/samples/po/ja/hellotk.po +19 -0
  252. data/samples/po/ko/hello.po +19 -0
  253. data/samples/po/ko/hello2.po +27 -0
  254. data/samples/po/ko/hello_noop.po +23 -0
  255. data/samples/po/ko/hello_plural.po +23 -0
  256. data/samples/po/ko/helloglade2.po +29 -0
  257. data/samples/po/ko/hellogtk.po +19 -0
  258. data/samples/po/ko/hellotk.po +20 -0
  259. data/samples/po/pt_BR/hello.po +20 -0
  260. data/samples/po/pt_BR/hello2.po +28 -0
  261. data/samples/po/pt_BR/hello_noop.po +24 -0
  262. data/samples/po/pt_BR/hello_plural.po +23 -0
  263. data/samples/po/pt_BR/helloglade2.po +28 -0
  264. data/samples/po/pt_BR/hellogtk.po +20 -0
  265. data/samples/po/pt_BR/hellotk.po +20 -0
  266. data/samples/po/sv/hello.po +20 -0
  267. data/samples/po/sv/hello2.po +28 -0
  268. data/samples/po/sv/hello_noop.po +24 -0
  269. data/samples/po/sv/hello_plural.po +23 -0
  270. data/samples/po/sv/helloglade2.po +28 -0
  271. data/samples/po/sv/hellogtk.po +20 -0
  272. data/samples/po/sv/hellotk.po +20 -0
  273. data/samples/rails/README +79 -0
  274. data/samples/rails/Rakefile +212 -0
  275. data/samples/rails/app/controllers/application.rb +37 -0
  276. data/samples/rails/app/controllers/blog_controller.rb +62 -0
  277. data/samples/rails/app/helpers/application_helper.rb +3 -0
  278. data/samples/rails/app/helpers/blog_helper.rb +61 -0
  279. data/samples/rails/app/models/article.rb +2 -0
  280. data/samples/rails/app/views/blog/_form.rhtml +25 -0
  281. data/samples/rails/app/views/blog/edit.rhtml +22 -0
  282. data/samples/rails/app/views/blog/list.rhtml +30 -0
  283. data/samples/rails/app/views/blog/new.rhtml +21 -0
  284. data/samples/rails/app/views/blog/show.rhtml +18 -0
  285. data/samples/rails/app/views/layouts/blog.rhtml +36 -0
  286. data/samples/rails/config/database.yml +32 -0
  287. data/samples/rails/config/environment.rb +88 -0
  288. data/samples/rails/config/environments/development.rb +14 -0
  289. data/samples/rails/config/environments/production.rb +8 -0
  290. data/samples/rails/config/environments/test.rb +17 -0
  291. data/samples/rails/config/routes.rb +19 -0
  292. data/samples/rails/db/mysql.sql +8 -0
  293. data/samples/rails/db/postgresql.sql +7 -0
  294. data/samples/rails/locale/de/LC_MESSAGES/blog.mo +0 -0
  295. data/samples/rails/locale/de/LC_MESSAGES/lang_helper.mo +0 -0
  296. data/samples/rails/locale/es/LC_MESSAGES/blog.mo +0 -0
  297. data/samples/rails/locale/es/LC_MESSAGES/lang_helper.mo +0 -0
  298. data/samples/rails/locale/fr/LC_MESSAGES/blog.mo +0 -0
  299. data/samples/rails/locale/fr/LC_MESSAGES/lang_helper.mo +0 -0
  300. data/samples/rails/locale/ja/LC_MESSAGES/blog.mo +0 -0
  301. data/samples/rails/locale/ja/LC_MESSAGES/lang_helper.mo +0 -0
  302. data/samples/rails/locale/ko/LC_MESSAGES/blog.mo +0 -0
  303. data/samples/rails/locale/ko/LC_MESSAGES/lang_helper.mo +0 -0
  304. data/samples/rails/log/development.log +378 -0
  305. data/samples/rails/po/blog.pot +90 -0
  306. data/samples/rails/po/de/blog.po +91 -0
  307. data/samples/rails/po/de/lang_helper.po +28 -0
  308. data/samples/rails/po/es/blog.po +90 -0
  309. data/samples/rails/po/es/lang_helper.po +28 -0
  310. data/samples/rails/po/fr/blog.po +89 -0
  311. data/samples/rails/po/fr/lang_helper.po +27 -0
  312. data/samples/rails/po/ja/blog.po +89 -0
  313. data/samples/rails/po/ja/lang_helper.po +28 -0
  314. data/samples/rails/po/ko/blog.po +87 -0
  315. data/samples/rails/po/ko/lang_helper.po +26 -0
  316. data/samples/rails/po/lang_helper.pot +28 -0
  317. data/samples/rails/public/404.html +8 -0
  318. data/samples/rails/public/500.html +8 -0
  319. data/samples/rails/public/dispatch.cgi +10 -0
  320. data/samples/rails/public/dispatch.fcgi +24 -0
  321. data/samples/rails/public/dispatch.rb +10 -0
  322. data/samples/rails/public/favicon.ico +0 -0
  323. data/samples/rails/public/index.html +78 -0
  324. data/samples/rails/public/javascripts/controls.js +446 -0
  325. data/samples/rails/public/javascripts/dragdrop.js +537 -0
  326. data/samples/rails/public/javascripts/effects.js +612 -0
  327. data/samples/rails/public/javascripts/prototype.js +1038 -0
  328. data/samples/rails/public/stylesheets/blog.css +132 -0
  329. data/samples/rails/public/stylesheets/scaffold.css +74 -0
  330. data/samples/rails/script/benchmarker +19 -0
  331. data/samples/rails/script/breakpointer +4 -0
  332. data/samples/rails/script/console +23 -0
  333. data/samples/rails/script/destroy +7 -0
  334. data/samples/rails/script/generate +7 -0
  335. data/samples/rails/script/profiler +34 -0
  336. data/samples/rails/script/runner +29 -0
  337. data/samples/rails/script/server +49 -0
  338. data/samples/rails/test/fixtures/articles.yml +5 -0
  339. data/samples/rails/test/functional/blog_controller_test.rb +88 -0
  340. data/samples/rails/test/test_helper.rb +26 -0
  341. data/samples/rails/test/unit/article_test.rb +14 -0
  342. data/samples/rails/vendor/lang_helper.rb +49 -0
  343. data/setup.rb +1360 -0
  344. data/src/rmsgfmt.ry +233 -0
  345. data/test/README +10 -0
  346. data/test/gettext_runner.rb +18 -0
  347. data/test/gettext_test.rb +202 -0
  348. data/test/gettext_test_parser.rb +80 -0
  349. data/test/locale/cr/LC_MESSAGES/plural.mo +0 -0
  350. data/test/locale/da/LC_MESSAGES/plural.mo +0 -0
  351. data/test/locale/da/LC_MESSAGES/plural_error.mo +0 -0
  352. data/test/locale/fr/LC_MESSAGES/plural.mo +0 -0
  353. data/test/locale/fr/LC_MESSAGES/plural_error.mo +0 -0
  354. data/test/locale/fr/LC_MESSAGES/test1.mo +0 -0
  355. data/test/locale/fr/LC_MESSAGES/test2.mo +0 -0
  356. data/test/locale/ir/LC_MESSAGES/plural.mo +0 -0
  357. data/test/locale/ja/LC_MESSAGES/plural.mo +0 -0
  358. data/test/locale/ja/LC_MESSAGES/plural_error.mo +0 -0
  359. data/test/locale/ja/LC_MESSAGES/test1.mo +0 -0
  360. data/test/locale/ja/LC_MESSAGES/test2.mo +0 -0
  361. data/test/locale/ja/LC_MESSAGES/test_rubyparser.mo +0 -0
  362. data/test/locale/ja/LC_MESSAGES/test_sgettext.mo +0 -0
  363. data/test/locale/la/LC_MESSAGES/plural.mo +0 -0
  364. data/test/locale/li/LC_MESSAGES/plural.mo +0 -0
  365. data/test/locale/po/LC_MESSAGES/plural.mo +0 -0
  366. data/test/locale/sl/LC_MESSAGES/plural.mo +0 -0
  367. data/test/po/cr/plural.po +23 -0
  368. data/test/po/da/plural.po +22 -0
  369. data/test/po/da/plural_error.po +20 -0
  370. data/test/po/fr/plural.po +22 -0
  371. data/test/po/fr/plural_error.po +19 -0
  372. data/test/po/fr/test1.po +23 -0
  373. data/test/po/fr/test2.po +19 -0
  374. data/test/po/ir/plural.po +23 -0
  375. data/test/po/ja/plural.po +22 -0
  376. data/test/po/ja/plural_error.po +20 -0
  377. data/test/po/ja/test1.po +23 -0
  378. data/test/po/ja/test2.po +19 -0
  379. data/test/po/ja/test_rubyparser.po +43 -0
  380. data/test/po/ja/test_sgettext.po +47 -0
  381. data/test/po/la/plural.po +23 -0
  382. data/test/po/li/plural.po +23 -0
  383. data/test/po/po/plural.po +23 -0
  384. data/test/po/sl/plural.po +24 -0
  385. data/test/test.sh +7 -0
  386. data/test/test_erb.rhtml +15 -0
  387. data/test/test_gladeparser.glade +183 -0
  388. data/test/test_rubyparser.rb +77 -0
  389. data/test/test_rubyparser_n.rb +66 -0
  390. data/test/test_sgettext.rb +48 -0
  391. data/test/testlib1.rb +20 -0
  392. data/test/testlib2.rb +11 -0
  393. data/test/testlib3.rb +12 -0
  394. data/test/testlib4.rb +11 -0
  395. metadata +589 -0
@@ -0,0 +1,612 @@
1
+ // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
+ //
3
+ // Parts (c) 2005 Justin Palmer (http://encytemedia.com/)
4
+ // Parts (c) 2005 Mark Pilgrim (http://diveintomark.org/)
5
+ //
6
+ // Permission is hereby granted, free of charge, to any person obtaining
7
+ // a copy of this software and associated documentation files (the
8
+ // "Software"), to deal in the Software without restriction, including
9
+ // without limitation the rights to use, copy, modify, merge, publish,
10
+ // distribute, sublicense, and/or sell copies of the Software, and to
11
+ // permit persons to whom the Software is furnished to do so, subject to
12
+ // the following conditions:
13
+ //
14
+ // The above copyright notice and this permission notice shall be
15
+ // included in all copies or substantial portions of the Software.
16
+ //
17
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+
25
+
26
+ Effect = {}
27
+ Effect2 = Effect; // deprecated
28
+
29
+ /* ------------- transitions ------------- */
30
+
31
+ Effect.Transitions = {}
32
+
33
+ Effect.Transitions.linear = function(pos) {
34
+ return pos;
35
+ }
36
+ Effect.Transitions.sinoidal = function(pos) {
37
+ return (-Math.cos(pos*Math.PI)/2) + 0.5;
38
+ }
39
+ Effect.Transitions.reverse = function(pos) {
40
+ return 1-pos;
41
+ }
42
+ Effect.Transitions.flicker = function(pos) {
43
+ return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random(0.25);
44
+ }
45
+ Effect.Transitions.wobble = function(pos) {
46
+ return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
47
+ }
48
+ Effect.Transitions.pulse = function(pos) {
49
+ return (Math.floor(pos*10) % 2 == 0 ?
50
+ (pos*10-Math.floor(pos*10)) : 1-(pos*10-Math.floor(pos*10)));
51
+ }
52
+ Effect.Transitions.none = function(pos) {
53
+ return 0;
54
+ }
55
+ Effect.Transitions.full = function(pos) {
56
+ return 1;
57
+ }
58
+
59
+ /* ------------- element ext -------------- */
60
+
61
+ Element.makePositioned = function(element) {
62
+ element = $(element);
63
+ if(element.style.position == "")
64
+ element.style.position = "relative";
65
+ }
66
+
67
+ Element.makeClipping = function(element) {
68
+ element = $(element);
69
+ element._overflow = element.style.overflow || 'visible';
70
+ if(element._overflow!='hidden') element.style.overflow = 'hidden';
71
+ }
72
+
73
+ Element.undoClipping = function(element) {
74
+ element = $(element);
75
+ if(element._overflow!='hidden') element.style.overflow = element._overflow;
76
+ }
77
+
78
+ /* ------------- core effects ------------- */
79
+
80
+ Effect.Base = function() {};
81
+ Effect.Base.prototype = {
82
+ setOptions: function(options) {
83
+ this.options = Object.extend({
84
+ transition: Effect.Transitions.sinoidal,
85
+ duration: 1.0, // seconds
86
+ fps: 25.0, // max. 100fps
87
+ sync: false, // true for combining
88
+ from: 0.0,
89
+ to: 1.0
90
+ }, options || {});
91
+ },
92
+ start: function(options) {
93
+ this.setOptions(options || {});
94
+ this.currentFrame = 0;
95
+ this.startOn = new Date().getTime();
96
+ this.finishOn = this.startOn + (this.options.duration*1000);
97
+ if(this.options.beforeStart) this.options.beforeStart(this);
98
+ if(!this.options.sync) this.loop();
99
+ },
100
+ loop: function() {
101
+ var timePos = new Date().getTime();
102
+ if(timePos >= this.finishOn) {
103
+ this.render(this.options.to);
104
+ if(this.finish) this.finish();
105
+ if(this.options.afterFinish) this.options.afterFinish(this);
106
+ return;
107
+ }
108
+ var pos = (timePos - this.startOn) / (this.finishOn - this.startOn);
109
+ var frame = Math.round(pos * this.options.fps * this.options.duration);
110
+ if(frame > this.currentFrame) {
111
+ this.render(pos);
112
+ this.currentFrame = frame;
113
+ }
114
+ this.timeout = setTimeout(this.loop.bind(this), 10);
115
+ },
116
+ render: function(pos) {
117
+ if(this.options.transition) pos = this.options.transition(pos);
118
+ pos *= (this.options.to-this.options.from);
119
+ pos += this.options.from;
120
+ if(this.options.beforeUpdate) this.options.beforeUpdate(this);
121
+ if(this.update) this.update(pos);
122
+ if(this.options.afterUpdate) this.options.afterUpdate(this);
123
+ },
124
+ cancel: function() {
125
+ if(this.timeout) clearTimeout(this.timeout);
126
+ }
127
+ }
128
+
129
+ Effect.Parallel = Class.create();
130
+ Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), {
131
+ initialize: function(effects) {
132
+ this.effects = effects || [];
133
+ this.start(arguments[1]);
134
+ },
135
+ update: function(position) {
136
+ for (var i = 0; i < this.effects.length; i++)
137
+ this.effects[i].render(position);
138
+ },
139
+ finish: function(position) {
140
+ for (var i = 0; i < this.effects.length; i++)
141
+ if(this.effects[i].finish) this.effects[i].finish(position);
142
+ }
143
+ });
144
+
145
+ // Internet Explorer caveat: works only on elements the have
146
+ // a 'layout', meaning having a given width or height.
147
+ // There is no way to safely set this automatically.
148
+ Effect.Opacity = Class.create();
149
+ Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), {
150
+ initialize: function(element) {
151
+ this.element = $(element);
152
+ options = Object.extend({
153
+ from: 0.0,
154
+ to: 1.0
155
+ }, arguments[1] || {});
156
+ this.start(options);
157
+ },
158
+ update: function(position) {
159
+ this.setOpacity(position);
160
+ },
161
+ setOpacity: function(opacity) {
162
+ opacity = (opacity == 1) ? 0.99999 : opacity;
163
+ this.element.style.opacity = opacity;
164
+ this.element.style.filter = "alpha(opacity:"+opacity*100+")";
165
+ }
166
+ });
167
+
168
+ Effect.MoveBy = Class.create();
169
+ Object.extend(Object.extend(Effect.MoveBy.prototype, Effect.Base.prototype), {
170
+ initialize: function(element, toTop, toLeft) {
171
+ this.element = $(element);
172
+ this.originalTop = parseFloat(this.element.style.top || '0');
173
+ this.originalLeft = parseFloat(this.element.style.left || '0');
174
+ this.toTop = toTop;
175
+ this.toLeft = toLeft;
176
+ Element.makePositioned(this.element);
177
+ this.start(arguments[3]);
178
+ },
179
+ update: function(position) {
180
+ topd = this.toTop * position + this.originalTop;
181
+ leftd = this.toLeft * position + this.originalLeft;
182
+ this.setPosition(topd, leftd);
183
+ },
184
+ setPosition: function(topd, leftd) {
185
+ this.element.style.top = topd + "px";
186
+ this.element.style.left = leftd + "px";
187
+ }
188
+ });
189
+
190
+ Effect.Scale = Class.create();
191
+ Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), {
192
+ initialize: function(element, percent) {
193
+ this.element = $(element)
194
+ options = Object.extend({
195
+ scaleX: true,
196
+ scaleY: true,
197
+ scaleContent: true,
198
+ scaleFromCenter: false,
199
+ scaleMode: 'box', // 'box' or 'contents' or {} with provided values
200
+ scaleFrom: 100.0
201
+ }, arguments[2] || {});
202
+ this.originalTop = this.element.offsetTop;
203
+ this.originalLeft = this.element.offsetLeft;
204
+ if(this.element.style.fontSize=="") this.sizeEm = 1.0;
205
+ if(this.element.style.fontSize && this.element.style.fontSize.indexOf("em")>0)
206
+ this.sizeEm = parseFloat(this.element.style.fontSize);
207
+ this.factor = (percent/100.0) - (options.scaleFrom/100.0);
208
+ if(options.scaleMode=='box') {
209
+ this.originalHeight = this.element.clientHeight;
210
+ this.originalWidth = this.element.clientWidth;
211
+ } else
212
+ if(options.scaleMode=='contents') {
213
+ this.originalHeight = this.element.scrollHeight;
214
+ this.originalWidth = this.element.scrollWidth;
215
+ } else {
216
+ this.originalHeight = options.scaleMode.originalHeight;
217
+ this.originalWidth = options.scaleMode.originalWidth;
218
+ }
219
+ this.start(options);
220
+ },
221
+
222
+ update: function(position) {
223
+ currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
224
+ if(this.options.scaleContent && this.sizeEm)
225
+ this.element.style.fontSize = this.sizeEm*currentScale + "em";
226
+ this.setDimensions(
227
+ this.originalWidth * currentScale,
228
+ this.originalHeight * currentScale);
229
+ },
230
+
231
+ setDimensions: function(width, height) {
232
+ if(this.options.scaleX) this.element.style.width = width + 'px';
233
+ if(this.options.scaleY) this.element.style.height = height + 'px';
234
+ if(this.options.scaleFromCenter) {
235
+ topd = (height - this.originalHeight)/2;
236
+ leftd = (width - this.originalWidth)/2;
237
+ if(this.element.style.position=='absolute') {
238
+ if(this.options.scaleY) this.element.style.top = this.originalTop-topd + "px";
239
+ if(this.options.scaleX) this.element.style.left = this.originalLeft-leftd + "px";
240
+ } else {
241
+ if(this.options.scaleY) this.element.style.top = -topd + "px";
242
+ if(this.options.scaleX) this.element.style.left = -leftd + "px";
243
+ }
244
+ }
245
+ }
246
+ });
247
+
248
+ Effect.Highlight = Class.create();
249
+ Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), {
250
+ initialize: function(element) {
251
+ this.element = $(element);
252
+
253
+ // try to parse current background color as default for endcolor
254
+ // browser stores this as: "rgb(255, 255, 255)", convert to "#ffffff" format
255
+ var endcolor = "#ffffff";
256
+ var current = this.element.style.backgroundColor;
257
+ if(current && current.slice(0,4) == "rgb(") {
258
+ endcolor = "#";
259
+ var cols = current.slice(4,current.length-1).split(',');
260
+ var i=0; do { endcolor += parseInt(cols[i]).toColorPart() } while (++i<3); }
261
+
262
+ var options = Object.extend({
263
+ startcolor: "#ffff99",
264
+ endcolor: endcolor,
265
+ restorecolor: current
266
+ }, arguments[1] || {});
267
+
268
+ // init color calculations
269
+ this.colors_base = [
270
+ parseInt(options.startcolor.slice(1,3),16),
271
+ parseInt(options.startcolor.slice(3,5),16),
272
+ parseInt(options.startcolor.slice(5),16) ];
273
+ this.colors_delta = [
274
+ parseInt(options.endcolor.slice(1,3),16)-this.colors_base[0],
275
+ parseInt(options.endcolor.slice(3,5),16)-this.colors_base[1],
276
+ parseInt(options.endcolor.slice(5),16)-this.colors_base[2] ];
277
+
278
+ this.start(options);
279
+ },
280
+ update: function(position) {
281
+ var colors = [
282
+ Math.round(this.colors_base[0]+(this.colors_delta[0]*position)),
283
+ Math.round(this.colors_base[1]+(this.colors_delta[1]*position)),
284
+ Math.round(this.colors_base[2]+(this.colors_delta[2]*position)) ];
285
+ this.element.style.backgroundColor = "#" +
286
+ colors[0].toColorPart() + colors[1].toColorPart() + colors[2].toColorPart();
287
+ },
288
+ finish: function() {
289
+ this.element.style.backgroundColor = this.options.restorecolor;
290
+ }
291
+ });
292
+
293
+ Effect.ScrollTo = Class.create();
294
+ Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), {
295
+ initialize: function(element) {
296
+ this.element = $(element);
297
+ Position.prepare();
298
+ var offsets = Position.cumulativeOffset(this.element);
299
+ var max = window.innerHeight ?
300
+ window.height - window.innerHeight :
301
+ document.body.scrollHeight -
302
+ (document.documentElement.clientHeight ?
303
+ document.documentElement.clientHeight : document.body.clientHeight);
304
+ this.scrollStart = Position.deltaY;
305
+ this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart;
306
+ this.start(arguments[1] || {});
307
+ },
308
+ update: function(position) {
309
+ Position.prepare();
310
+ window.scrollTo(Position.deltaX,
311
+ this.scrollStart + (position*this.delta));
312
+ }
313
+ });
314
+
315
+ /* ------------- prepackaged effects ------------- */
316
+
317
+ Effect.Fade = function(element) {
318
+ options = Object.extend({
319
+ from: 1.0,
320
+ to: 0.0,
321
+ afterFinish: function(effect)
322
+ { Element.hide(effect.element);
323
+ effect.setOpacity(1); }
324
+ }, arguments[1] || {});
325
+ new Effect.Opacity(element,options);
326
+ }
327
+
328
+ Effect.Appear = function(element) {
329
+ options = Object.extend({
330
+ from: 0.0,
331
+ to: 1.0,
332
+ beforeStart: function(effect)
333
+ { effect.setOpacity(0);
334
+ Element.show(effect.element); },
335
+ afterUpdate: function(effect)
336
+ { Element.show(effect.element); }
337
+ }, arguments[1] || {});
338
+ new Effect.Opacity(element,options);
339
+ }
340
+
341
+ Effect.Puff = function(element) {
342
+ new Effect.Parallel(
343
+ [ new Effect.Scale(element, 200, { sync: true, scaleFromCenter: true }),
344
+ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ],
345
+ { duration: 1.0,
346
+ afterUpdate: function(effect)
347
+ { effect.effects[0].element.style.position = 'absolute'; },
348
+ afterFinish: function(effect)
349
+ { Element.hide(effect.effects[0].element); }
350
+ }
351
+ );
352
+ }
353
+
354
+ Effect.BlindUp = function(element) {
355
+ Element.makeClipping(element);
356
+ new Effect.Scale(element, 0,
357
+ Object.extend({ scaleContent: false,
358
+ scaleX: false,
359
+ afterFinish: function(effect)
360
+ {
361
+ Element.hide(effect.element);
362
+ Element.undoClipping(effect.element);
363
+ }
364
+ }, arguments[1] || {})
365
+ );
366
+ }
367
+
368
+ Effect.BlindDown = function(element) {
369
+ $(element).style.height = '0px';
370
+ Element.makeClipping(element);
371
+ Element.show(element);
372
+ new Effect.Scale(element, 100,
373
+ Object.extend({ scaleContent: false,
374
+ scaleX: false,
375
+ scaleMode: 'contents',
376
+ scaleFrom: 0,
377
+ afterFinish: function(effect) {
378
+ Element.undoClipping(effect.element);
379
+ }
380
+ }, arguments[1] || {})
381
+ );
382
+ }
383
+
384
+ Effect.SwitchOff = function(element) {
385
+ new Effect.Appear(element,
386
+ { duration: 0.4,
387
+ transition: Effect.Transitions.flicker,
388
+ afterFinish: function(effect)
389
+ { effect.element.style.overflow = 'hidden';
390
+ new Effect.Scale(effect.element, 1,
391
+ { duration: 0.3, scaleFromCenter: true,
392
+ scaleX: false, scaleContent: false,
393
+ afterUpdate: function(effect) {
394
+ if(effect.element.style.position=="")
395
+ effect.element.style.position = 'relative'; },
396
+ afterFinish: function(effect) { Element.hide(effect.element); }
397
+ } )
398
+ }
399
+ } );
400
+ }
401
+
402
+ Effect.DropOut = function(element) {
403
+ new Effect.Parallel(
404
+ [ new Effect.MoveBy(element, 100, 0, { sync: true }),
405
+ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ],
406
+ { duration: 0.5,
407
+ afterFinish: function(effect)
408
+ { Element.hide(effect.effects[0].element); }
409
+ });
410
+ }
411
+
412
+ Effect.Shake = function(element) {
413
+ new Effect.MoveBy(element, 0, 20,
414
+ { duration: 0.05, afterFinish: function(effect) {
415
+ new Effect.MoveBy(effect.element, 0, -40,
416
+ { duration: 0.1, afterFinish: function(effect) {
417
+ new Effect.MoveBy(effect.element, 0, 40,
418
+ { duration: 0.1, afterFinish: function(effect) {
419
+ new Effect.MoveBy(effect.element, 0, -40,
420
+ { duration: 0.1, afterFinish: function(effect) {
421
+ new Effect.MoveBy(effect.element, 0, 40,
422
+ { duration: 0.1, afterFinish: function(effect) {
423
+ new Effect.MoveBy(effect.element, 0, -20,
424
+ { duration: 0.05, afterFinish: function(effect) {
425
+ }}) }}) }}) }}) }}) }});
426
+ }
427
+
428
+ Effect.SlideDown = function(element) {
429
+ element = $(element);
430
+ element.style.height = '0px';
431
+ Element.makeClipping(element);
432
+ Element.cleanWhitespace(element);
433
+ Element.makePositioned(element.firstChild);
434
+ Element.show(element);
435
+ new Effect.Scale(element, 100,
436
+ Object.extend({ scaleContent: false,
437
+ scaleX: false,
438
+ scaleMode: 'contents',
439
+ scaleFrom: 0,
440
+ afterUpdate: function(effect)
441
+ { effect.element.firstChild.style.bottom =
442
+ (effect.originalHeight - effect.element.clientHeight) + 'px'; },
443
+ afterFinish: function(effect)
444
+ { Element.undoClipping(effect.element); }
445
+ }, arguments[1] || {})
446
+ );
447
+ }
448
+
449
+ Effect.SlideUp = function(element) {
450
+ element = $(element);
451
+ Element.makeClipping(element);
452
+ Element.cleanWhitespace(element);
453
+ Element.makePositioned(element.firstChild);
454
+ Element.show(element);
455
+ new Effect.Scale(element, 0,
456
+ Object.extend({ scaleContent: false,
457
+ scaleX: false,
458
+ afterUpdate: function(effect)
459
+ { effect.element.firstChild.style.bottom =
460
+ (effect.originalHeight - effect.element.clientHeight) + 'px'; },
461
+ afterFinish: function(effect)
462
+ {
463
+ Element.hide(effect.element);
464
+ Element.undoClipping(effect.element);
465
+ }
466
+ }, arguments[1] || {})
467
+ );
468
+ }
469
+
470
+ Effect.Squish = function(element) {
471
+ new Effect.Scale(element, 0,
472
+ { afterFinish: function(effect) { Element.hide(effect.element); } });
473
+ }
474
+
475
+ Effect.Grow = function(element) {
476
+ element = $(element);
477
+ var options = arguments[1] || {};
478
+
479
+ var originalWidth = element.clientWidth;
480
+ var originalHeight = element.clientHeight;
481
+ element.style.overflow = 'hidden';
482
+ Element.show(element);
483
+
484
+ var direction = options.direction || 'center';
485
+ var moveTransition = options.moveTransition || Effect.Transitions.sinoidal;
486
+ var scaleTransition = options.scaleTransition || Effect.Transitions.sinoidal;
487
+ var opacityTransition = options.opacityTransition || Effect.Transitions.full;
488
+
489
+ var initialMoveX, initialMoveY;
490
+ var moveX, moveY;
491
+
492
+ switch (direction) {
493
+ case 'top-left':
494
+ initialMoveX = initialMoveY = moveX = moveY = 0;
495
+ break;
496
+ case 'top-right':
497
+ initialMoveX = originalWidth;
498
+ initialMoveY = moveY = 0;
499
+ moveX = -originalWidth;
500
+ break;
501
+ case 'bottom-left':
502
+ initialMoveX = moveX = 0;
503
+ initialMoveY = originalHeight;
504
+ moveY = -originalHeight;
505
+ break;
506
+ case 'bottom-right':
507
+ initialMoveX = originalWidth;
508
+ initialMoveY = originalHeight;
509
+ moveX = -originalWidth;
510
+ moveY = -originalHeight;
511
+ break;
512
+ case 'center':
513
+ initialMoveX = originalWidth / 2;
514
+ initialMoveY = originalHeight / 2;
515
+ moveX = -originalWidth / 2;
516
+ moveY = -originalHeight / 2;
517
+ break;
518
+ }
519
+
520
+ new Effect.MoveBy(element, initialMoveY, initialMoveX, {
521
+ duration: 0.01,
522
+ beforeUpdate: function(effect) { $(element).style.height = '0px'; },
523
+ afterFinish: function(effect) {
524
+ new Effect.Parallel(
525
+ [ new Effect.Opacity(element, { sync: true, to: 1.0, from: 0.0, transition: opacityTransition }),
526
+ new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: moveTransition }),
527
+ new Effect.Scale(element, 100, {
528
+ scaleMode: { originalHeight: originalHeight, originalWidth: originalWidth },
529
+ sync: true, scaleFrom: 0, scaleTo: 100, transition: scaleTransition })],
530
+ options); }
531
+ });
532
+ }
533
+
534
+ Effect.Shrink = function(element) {
535
+ element = $(element);
536
+ var options = arguments[1] || {};
537
+
538
+ var originalWidth = element.clientWidth;
539
+ var originalHeight = element.clientHeight;
540
+ element.style.overflow = 'hidden';
541
+ Element.show(element);
542
+
543
+ var direction = options.direction || 'center';
544
+ var moveTransition = options.moveTransition || Effect.Transitions.sinoidal;
545
+ var scaleTransition = options.scaleTransition || Effect.Transitions.sinoidal;
546
+ var opacityTransition = options.opacityTransition || Effect.Transitions.none;
547
+
548
+ var moveX, moveY;
549
+
550
+ switch (direction) {
551
+ case 'top-left':
552
+ moveX = moveY = 0;
553
+ break;
554
+ case 'top-right':
555
+ moveX = originalWidth;
556
+ moveY = 0;
557
+ break;
558
+ case 'bottom-left':
559
+ moveX = 0;
560
+ moveY = originalHeight;
561
+ break;
562
+ case 'bottom-right':
563
+ moveX = originalWidth;
564
+ moveY = originalHeight;
565
+ break;
566
+ case 'center':
567
+ moveX = originalWidth / 2;
568
+ moveY = originalHeight / 2;
569
+ break;
570
+ }
571
+
572
+ new Effect.Parallel(
573
+ [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: opacityTransition }),
574
+ new Effect.Scale(element, 0, { sync: true, transition: moveTransition }),
575
+ new Effect.MoveBy(element, moveY, moveX, { sync: true, transition: scaleTransition }) ],
576
+ options);
577
+ }
578
+
579
+ Effect.Pulsate = function(element) {
580
+ var options = arguments[1] || {};
581
+ var transition = options.transition || Effect.Transitions.sinoidal;
582
+ var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos)) };
583
+ reverser.bind(transition);
584
+ new Effect.Opacity(element,
585
+ Object.extend(Object.extend({ duration: 3.0,
586
+ afterFinish: function(effect) { Element.show(effect.element); }
587
+ }, options), {transition: reverser}));
588
+ }
589
+
590
+ Effect.Fold = function(element) {
591
+ $(element).style.overflow = 'hidden';
592
+ new Effect.Scale(element, 5, Object.extend({
593
+ scaleContent: false,
594
+ scaleTo: 100,
595
+ scaleX: false,
596
+ afterFinish: function(effect) {
597
+ new Effect.Scale(element, 1, {
598
+ scaleContent: false,
599
+ scaleTo: 0,
600
+ scaleY: false,
601
+ afterFinish: function(effect) { Element.hide(effect.element) } });
602
+ }}, arguments[1] || {}));
603
+ }
604
+
605
+ // old: new Effect.ContentZoom(element, percent)
606
+ // new: Element.setContentZoom(element, percent)
607
+
608
+ Element.setContentZoom = function(element, percent) {
609
+ var element = $(element);
610
+ element.style.fontSize = (percent/100) + "em";
611
+ if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
612
+ }