motiro 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. data/LICENSE +280 -0
  2. data/README +28 -0
  3. data/README.en +175 -0
  4. data/README.pt-br +175 -0
  5. data/Rakefile +10 -0
  6. data/app/controllers/account_controller.rb +62 -0
  7. data/app/controllers/application.rb +72 -0
  8. data/app/controllers/edition_controller.rb +13 -0
  9. data/app/controllers/javascript_controller.rb +21 -0
  10. data/app/controllers/report_controller.rb +79 -0
  11. data/app/controllers/root_controller.rb +7 -0
  12. data/app/controllers/wiki_controller.rb +102 -0
  13. data/app/core/cache_reporter.rb +53 -0
  14. data/app/core/cache_reporter_fetcher.rb +33 -0
  15. data/app/core/chief_editor.rb +69 -0
  16. data/app/core/reporter.rb +105 -0
  17. data/app/core/reporter_driver.rb +36 -0
  18. data/app/core/reporter_fetcher.rb +39 -0
  19. data/app/core/settings.rb +43 -0
  20. data/app/core/version.rb +1 -0
  21. data/app/core/wiki_page_not_found.rb +33 -0
  22. data/app/core/wiki_reporter.rb +83 -0
  23. data/app/helpers/account_helper.rb +2 -0
  24. data/app/helpers/application_helper.rb +68 -0
  25. data/app/helpers/default_page_provider.rb +28 -0
  26. data/app/helpers/report_helper.rb +2 -0
  27. data/app/helpers/root_helper.rb +2 -0
  28. data/app/helpers/wiki_helper.rb +3 -0
  29. data/app/models/change.rb +96 -0
  30. data/app/models/diff_table_builder.rb +285 -0
  31. data/app/models/event.rb +18 -0
  32. data/app/models/headline.rb +109 -0
  33. data/app/models/page.rb +114 -0
  34. data/app/models/page_sweeper.rb +26 -0
  35. data/app/models/user.rb +85 -0
  36. data/app/ports/chdir_runner.rb +36 -0
  37. data/app/ports/reporter_loader.rb +9 -0
  38. data/app/ports/runner.rb +64 -0
  39. data/app/reporters/darcs_connection.rb +54 -0
  40. data/app/reporters/darcs_reporter.rb +104 -0
  41. data/app/reporters/darcs_settings.rb +9 -0
  42. data/app/reporters/darcs_temp_repo.rb +40 -0
  43. data/app/reporters/events_reporter.rb +28 -0
  44. data/app/reporters/features_reporter.rb +24 -0
  45. data/app/reporters/subversion_reporter.rb +203 -0
  46. data/app/reporters/svn_connection.rb +62 -0
  47. data/app/reporters/svn_settings.rb +40 -0
  48. data/app/views/account/_authorization.rhtml +54 -0
  49. data/app/views/account/_availability.rhtml +5 -0
  50. data/app/views/account/availability.rhtml +1 -0
  51. data/app/views/account/login.rhtml +22 -0
  52. data/app/views/account/logout.rhtml +10 -0
  53. data/app/views/javascript/motiro.rjs +132 -0
  54. data/app/views/javascript/niftycube.rjs +300 -0
  55. data/app/views/layouts/_bottom.rhtml +5 -0
  56. data/app/views/layouts/_header.rhtml +7 -0
  57. data/app/views/layouts/_top.rhtml +25 -0
  58. data/app/views/layouts/application.rhtml +3 -0
  59. data/app/views/layouts/scaffold.rhtml +13 -0
  60. data/app/views/layouts/wiki_edit.rhtml +26 -0
  61. data/app/views/report/list.rhtml +32 -0
  62. data/app/views/report/older.rhtml +26 -0
  63. data/app/views/report/rss.rxml +29 -0
  64. data/app/views/report/show.rhtml +20 -0
  65. data/app/views/root/index.rhtml +33 -0
  66. data/app/views/wiki/_editbar.rhtml +26 -0
  67. data/app/views/wiki/_properties_edit.rhtml +5 -0
  68. data/app/views/wiki/_properties_show.rhtml +5 -0
  69. data/app/views/wiki/edit.rhtml +56 -0
  70. data/app/views/wiki/properties_edit.rhtml +1 -0
  71. data/app/views/wiki/show.rhtml +9 -0
  72. data/bin/motiro +44 -0
  73. data/config/boot.rb +19 -0
  74. data/config/database.yml +14 -0
  75. data/config/environment.rb +64 -0
  76. data/config/environments/development.rb +20 -0
  77. data/config/environments/production.rb +19 -0
  78. data/config/environments/test.rb +19 -0
  79. data/config/motiro.yml +43 -0
  80. data/config/routes.rb +79 -0
  81. data/db/migrate/005_globalize_migration.rb +11363 -0
  82. data/db/migrate/006_remove_headline_title.rb +14 -0
  83. data/db/migrate/007_stretch_rid.rb +11 -0
  84. data/db/migrate/008_add_page_editors.rb +12 -0
  85. data/db/migrate/009_add_page_original_author.rb +12 -0
  86. data/db/migrate/010_remove_empty_string_defaults_from_pages.rb +17 -0
  87. data/db/migrate/011_add_title_and_kind_to_pages.rb +13 -0
  88. data/db/migrate/012_page_modification_info.rb +13 -0
  89. data/db/migrate/013_nullify_initial_page_attributes.rb +21 -0
  90. data/db/migrate/014_events_are_wiki_pages.rb +13 -0
  91. data/db/migrate/015_migrate_previous_event_data.rb +23 -0
  92. data/db/migrate/1_initial_structure.rb +36 -0
  93. data/db/migrate/2_add_authentication.rb +12 -0
  94. data/db/migrate/3_drop_articles.rb +26 -0
  95. data/db/migrate/4_add_page_editing.rb +14 -0
  96. data/db/motirodb.sqlite.initial +0 -0
  97. data/db/schema_version +1 -0
  98. data/db/translation/pt-BR.rb +76 -0
  99. data/doc/README_FOR_APP +2 -0
  100. data/installer/rails_installer_defaults.yml +5 -0
  101. data/lib/import_translations.rb +154 -0
  102. data/lib/login_system.rb +89 -0
  103. data/lib/relative_time.rb +48 -0
  104. data/lib/string_extensions.rb +10 -0
  105. data/lib/stub_hash.rb +22 -0
  106. data/lib/tasks/packaging.rake +93 -0
  107. data/lib/tasks/testing.rake +32 -0
  108. data/lib/tick_daemon.rb +41 -0
  109. data/lib/translator.rb +67 -0
  110. data/lib/wiki_renderer.rb +42 -0
  111. data/lib/wiki_url_generator.rb +29 -0
  112. data/log/.keepdir +0 -0
  113. data/public/404.html +8 -0
  114. data/public/500.html +8 -0
  115. data/public/dispatch.cgi +10 -0
  116. data/public/dispatch.fcgi +24 -0
  117. data/public/dispatch.rb +10 -0
  118. data/public/favicon.ico +0 -0
  119. data/public/images/calendar.png +0 -0
  120. data/public/images/rss.png +0 -0
  121. data/public/javascripts/controls.js +750 -0
  122. data/public/javascripts/dragdrop.js +584 -0
  123. data/public/javascripts/effects.js +854 -0
  124. data/public/javascripts/prototype.js +1785 -0
  125. data/public/robots.txt +1 -0
  126. data/public/stylesheets/motiro.css +269 -0
  127. data/public/stylesheets/niftyCorners.css +35 -0
  128. data/public/stylesheets/scaffold.css +74 -0
  129. data/script/about +3 -0
  130. data/script/breakpointer +3 -0
  131. data/script/console +3 -0
  132. data/script/destroy +3 -0
  133. data/script/generate +3 -0
  134. data/script/performance/benchmarker +3 -0
  135. data/script/performance/profiler +3 -0
  136. data/script/plugin +3 -0
  137. data/script/process/reaper +3 -0
  138. data/script/process/spawner +3 -0
  139. data/script/process/spinner +3 -0
  140. data/script/runner +3 -0
  141. data/script/server +3 -0
  142. data/script/ticker +29 -0
  143. data/test/acceptance/account_test.rb +186 -0
  144. data/test/acceptance/darcs_test.rb +62 -0
  145. data/test/acceptance/events_test.rb +47 -0
  146. data/test/acceptance/main_page_test.rb +92 -0
  147. data/test/acceptance/subversion_test.rb +319 -0
  148. data/test/acceptance/ts_all_suites.rb +27 -0
  149. data/test/acceptance/wiki_test.rb +202 -0
  150. data/test/contract/darcs_test.rb +51 -0
  151. data/test/contract/remote_darcs_test.rb +61 -0
  152. data/test/contract/svn_test.rb +53 -0
  153. data/test/fixtures/changes.yml +25 -0
  154. data/test/fixtures/headlines.yml +45 -0
  155. data/test/fixtures/pages.yml +98 -0
  156. data/test/fixtures/users.yml +31 -0
  157. data/test/functional/account_controller_test.rb +96 -0
  158. data/test/functional/report_controller_test.rb +113 -0
  159. data/test/functional/report_features_test.rb +38 -0
  160. data/test/functional/report_subversion_test.rb +79 -0
  161. data/test/functional/root_controller_test.rb +127 -0
  162. data/test/functional/wiki_controller_test.rb +280 -0
  163. data/test/lib/acceptance_test_case.rb +43 -0
  164. data/test/lib/configuration.rb +53 -0
  165. data/test/lib/darcs_excerpts.rb +181 -0
  166. data/test/lib/darcs_repo.rb +77 -0
  167. data/test/lib/live_mode_test.rb +51 -0
  168. data/test/lib/local_svn.rb +157 -0
  169. data/test/lib/netutils.rb +42 -0
  170. data/test/lib/platform_thread.rb +62 -0
  171. data/test/lib/repoutils.rb +23 -0
  172. data/test/lib/selenium_extensions.rb +32 -0
  173. data/test/lib/stubio.rb +37 -0
  174. data/test/lib/svn_excerpts.rb +288 -0
  175. data/test/lib/test_configuration.rb +14 -0
  176. data/test/lib/webserver.rb +71 -0
  177. data/test/meta/configuration_test.rb +72 -0
  178. data/test/meta/darcs_repo_test.rb +118 -0
  179. data/test/meta/local_svn_test.rb +125 -0
  180. data/test/meta/platform_thread_test.rb +46 -0
  181. data/test/meta/stubio_test.rb +44 -0
  182. data/test/mocks/headline.rb +34 -0
  183. data/test/mocks/svn_reporter.rb +29 -0
  184. data/test/stubs/svn_settings.rb +19 -0
  185. data/test/stubs/url_generator.rb +24 -0
  186. data/test/test_helper.rb +36 -0
  187. data/test/unit/cache_reporter_fetcher_test.rb +46 -0
  188. data/test/unit/cache_reporter_test.rb +97 -0
  189. data/test/unit/caching_test.rb +78 -0
  190. data/test/unit/change_test.rb +152 -0
  191. data/test/unit/chdir_runner_test.rb +77 -0
  192. data/test/unit/chief_editor_test.rb +234 -0
  193. data/test/unit/darcs_connection_test.rb +109 -0
  194. data/test/unit/darcs_reporter_test.rb +146 -0
  195. data/test/unit/darcs_settings_test.rb +37 -0
  196. data/test/unit/darcs_temp_repo_test.rb +51 -0
  197. data/test/unit/default_page_provider_test.rb +46 -0
  198. data/test/unit/diff_table_builder_test.rb +602 -0
  199. data/test/unit/headline_test.rb +259 -0
  200. data/test/unit/page_test.rb +145 -0
  201. data/test/unit/relative_time_test.rb +56 -0
  202. data/test/unit/reporter_driver_test.rb +85 -0
  203. data/test/unit/reporter_fetcher_test.rb +31 -0
  204. data/test/unit/reporter_test.rb +81 -0
  205. data/test/unit/runner_test.rb +93 -0
  206. data/test/unit/settings_test.rb +55 -0
  207. data/test/unit/string_extensions_test.rb +10 -0
  208. data/test/unit/svn_connection_test.rb +183 -0
  209. data/test/unit/svn_reporter_interaction_test.rb +38 -0
  210. data/test/unit/svn_reporter_test.rb +286 -0
  211. data/test/unit/svn_settings_test.rb +86 -0
  212. data/test/unit/translator_test.rb +96 -0
  213. data/test/unit/user_test.rb +125 -0
  214. data/test/unit/wiki_renderer_test.rb +87 -0
  215. data/test/unit/wiki_reporter_test.rb +94 -0
  216. data/test/unit/wiki_url_generator_test.rb +31 -0
  217. data/vendor/motiro-installer.rb +159 -0
  218. data/vendor/plugins/globalize/LICENSE +9 -0
  219. data/vendor/plugins/globalize/README +49 -0
  220. data/vendor/plugins/globalize/data/country_data.csv +240 -0
  221. data/vendor/plugins/globalize/data/language_data.csv +188 -0
  222. data/vendor/plugins/globalize/data/translation_data.csv +3421 -0
  223. data/vendor/plugins/globalize/generators/globalize/USAGE +10 -0
  224. data/vendor/plugins/globalize/generators/globalize/globalize_generator.rb +42 -0
  225. data/vendor/plugins/globalize/generators/globalize/templates/migration.rb.gz +0 -0
  226. data/vendor/plugins/globalize/generators/globalize/templates/tiny_migration.rb.gz +0 -0
  227. data/vendor/plugins/globalize/init.rb +30 -0
  228. data/vendor/plugins/globalize/lib/globalize/localization/core_ext.rb +170 -0
  229. data/vendor/plugins/globalize/lib/globalize/localization/core_ext_hooks.rb +33 -0
  230. data/vendor/plugins/globalize/lib/globalize/localization/db_translate.rb +494 -0
  231. data/vendor/plugins/globalize/lib/globalize/localization/db_view_translator.rb +152 -0
  232. data/vendor/plugins/globalize/lib/globalize/localization/locale.rb +173 -0
  233. data/vendor/plugins/globalize/lib/globalize/localization/rfc_3066.rb +40 -0
  234. data/vendor/plugins/globalize/lib/globalize/models/country.rb +24 -0
  235. data/vendor/plugins/globalize/lib/globalize/models/currency.rb +188 -0
  236. data/vendor/plugins/globalize/lib/globalize/models/language.rb +84 -0
  237. data/vendor/plugins/globalize/lib/globalize/models/model_translation.rb +4 -0
  238. data/vendor/plugins/globalize/lib/globalize/models/translation.rb +9 -0
  239. data/vendor/plugins/globalize/lib/globalize/models/view_translation.rb +14 -0
  240. data/vendor/plugins/globalize/lib/globalize/rails/action_mailer.rb +125 -0
  241. data/vendor/plugins/globalize/lib/globalize/rails/action_view.rb +79 -0
  242. data/vendor/plugins/globalize/lib/globalize/rails/active_record.rb +129 -0
  243. data/vendor/plugins/globalize/lib/globalize/rails/active_record_helper.rb +33 -0
  244. data/vendor/plugins/globalize/populators/pop_dates.rb +81 -0
  245. data/vendor/plugins/globalize/populators/pop_migration.rb +18 -0
  246. data/vendor/plugins/globalize/populators/pop_pluralization.rb +26 -0
  247. data/vendor/plugins/globalize/populators/pop_seps.rb +32 -0
  248. data/vendor/plugins/globalize/tasks/data.rake +130 -0
  249. data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.en-US.plain.text.rhtml +1 -0
  250. data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.en.plain.text.rhtml +1 -0
  251. data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.he.plain.text.rhtml +1 -0
  252. data/vendor/plugins/globalize/test/action_mailer_test/globalize_mailer/test.plain.text.rhtml +1 -0
  253. data/vendor/plugins/globalize/test/action_mailer_test.rb +54 -0
  254. data/vendor/plugins/globalize/test/config/database.yml.default +16 -0
  255. data/vendor/plugins/globalize/test/config/database.yml.example +22 -0
  256. data/vendor/plugins/globalize/test/core_ext_test.rb +61 -0
  257. data/vendor/plugins/globalize/test/currency_test.rb +141 -0
  258. data/vendor/plugins/globalize/test/date_helper_test.rb +634 -0
  259. data/vendor/plugins/globalize/test/db/schema.rb +90 -0
  260. data/vendor/plugins/globalize/test/db_translation_test.rb +374 -0
  261. data/vendor/plugins/globalize/test/fixtures/globalize_categories.yml +7 -0
  262. data/vendor/plugins/globalize/test/fixtures/globalize_categories_products.yml +7 -0
  263. data/vendor/plugins/globalize/test/fixtures/globalize_countries.yml +41 -0
  264. data/vendor/plugins/globalize/test/fixtures/globalize_languages.yml +64 -0
  265. data/vendor/plugins/globalize/test/fixtures/globalize_manufacturers.yml +5 -0
  266. data/vendor/plugins/globalize/test/fixtures/globalize_products.yml +29 -0
  267. data/vendor/plugins/globalize/test/fixtures/globalize_simples.yml +5 -0
  268. data/vendor/plugins/globalize/test/fixtures/globalize_translations.yml +354 -0
  269. data/vendor/plugins/globalize/test/locale_test.rb +27 -0
  270. data/vendor/plugins/globalize/test/mime_responds_test.rb +358 -0
  271. data/vendor/plugins/globalize/test/model_test.rb +17 -0
  272. data/vendor/plugins/globalize/test/standard_data_test_helper.rb +33 -0
  273. data/vendor/plugins/globalize/test/test_helper.rb +19 -0
  274. data/vendor/plugins/globalize/test/test_standard_data.rb +54 -0
  275. data/vendor/plugins/globalize/test/validation_test.rb +29 -0
  276. data/vendor/plugins/globalize/test/view_picking_test.rb +49 -0
  277. data/vendor/plugins/globalize/test/view_translation_test.rb +237 -0
  278. data/vendor/plugins/globalize/test/views/layouts/standard.rhtml +1 -0
  279. data/vendor/plugins/globalize/test/views/respond_to/all_types_with_layout.rhtml +1 -0
  280. data/vendor/plugins/globalize/test/views/respond_to/all_types_with_layout.rjs +1 -0
  281. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.en.rhtml +1 -0
  282. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.en.rjs +1 -0
  283. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.en.rxml +1 -0
  284. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.fr.rhtml +1 -0
  285. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.fr.rjs +1 -0
  286. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.fr.rxml +1 -0
  287. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.rhtml +1 -0
  288. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.rjs +1 -0
  289. data/vendor/plugins/globalize/test/views/respond_to/using_defaults.rxml +1 -0
  290. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.en.rhtml +1 -0
  291. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.en.rjs +1 -0
  292. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.en.rxml +1 -0
  293. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.fr.rhtml +1 -0
  294. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.fr.rjs +1 -0
  295. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.fr.rxml +1 -0
  296. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.rhtml +1 -0
  297. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.rjs +1 -0
  298. data/vendor/plugins/globalize/test/views/respond_to/using_defaults_with_type_list.rxml +1 -0
  299. data/vendor/plugins/globalize/test/views/test.he-IL.rhtml +1 -0
  300. data/vendor/plugins/globalize/test/views/test.rhtml +1 -0
  301. data/vendor/plugins/globalize/test/views/test2.he.rhtml +1 -0
  302. data/vendor/plugins/globalize/test/views/test2.rhtml +1 -0
  303. data/vendor/plugins/test_xml/MIT-LICENSE +20 -0
  304. data/vendor/plugins/test_xml/README +20 -0
  305. data/vendor/plugins/test_xml/Rakefile +22 -0
  306. data/vendor/plugins/test_xml/init.rb +7 -0
  307. data/vendor/plugins/test_xml/lib/xml_assertions.rb +22 -0
  308. data/vendor/plugins/test_xml/test/test_xml_test.rb +40 -0
  309. metadata +505 -0
@@ -0,0 +1,10 @@
1
+ Description:
2
+ Generates a new migration that creates and populates the "globalize" db tables.
3
+ All tables are prefixed with "globalize_", so they won't conflict with
4
+ other application tables. Run 'rake migrate' afterwards to synch the db.
5
+
6
+ Example:
7
+ ./script/generate globalize
8
+
9
+ This will create:
10
+ db/migrate/xxx_globalize.rb
@@ -0,0 +1,42 @@
1
+ require 'zlib'
2
+ require 'pathname'
3
+
4
+ class GlobalizeGenerator < MigrationGenerator
5
+ def initialize(runtime_args, runtime_options = {})
6
+ arg = runtime_args.first
7
+ @tiny = arg && arg.downcase == 'tiny'
8
+ super([ "globalize_migration" ] + runtime_args, runtime_options)
9
+ end
10
+
11
+ def banner
12
+ "Usage: script/generate globalize [tiny]\n" +
13
+ ' Specify "tiny" to generate a compact version of the data files (major languages only).'
14
+ end
15
+
16
+ def inflate_schema
17
+ deflated_name = @tiny ? 'tiny_migration.rb.gz' : 'migration.rb.gz'
18
+ inflated_path = source_path('migration.rb')
19
+ deflated_path = source_path(deflated_name)
20
+
21
+ return if File.exist?(inflated_path) && !File.exist?(deflated_path)
22
+ return if !File.exist?(deflated_path)
23
+
24
+ File.open(inflated_path, 'w') do |f|
25
+ Zlib::GzipReader.open(deflated_path) do |gzip|
26
+ gzip.each do |line|
27
+ line.chomp!
28
+ f.puts line
29
+ end
30
+ end
31
+ end
32
+ end
33
+
34
+ def manifest
35
+ record do |m|
36
+ m.directory 'db/migrate'
37
+ m.inflate_schema
38
+ m.migration_template 'migration.rb', 'db/migrate'
39
+ end
40
+ end
41
+ end
42
+
@@ -0,0 +1,30 @@
1
+ require 'jcode'
2
+ $KCODE = 'u' # Always use UTF-8 internally!
3
+
4
+ require 'pathname'
5
+ require 'singleton'
6
+
7
+ root_path = directory # this is set in the initializer that calls init.rb
8
+ ml_lib_path = "#{root_path}/lib/globalize"
9
+
10
+ # Load globalize libs
11
+ require "globalize/localization/db_view_translator"
12
+ require "globalize/localization/rfc_3066"
13
+ require "globalize/localization/locale"
14
+ require "globalize/localization/db_translate"
15
+ require "globalize/localization/core_ext"
16
+ require "globalize/localization/core_ext_hooks"
17
+
18
+ # Load plugin models
19
+ require "globalize/models/translation"
20
+ require "globalize/models/model_translation"
21
+ require "globalize/models/view_translation"
22
+ require "globalize/models/language"
23
+ require "globalize/models/country"
24
+ require "globalize/models/currency"
25
+
26
+ # Load overriden Rails modules
27
+ require "globalize/rails/active_record"
28
+ require "globalize/rails/action_view"
29
+ require "globalize/rails/action_mailer"
30
+ require "globalize/rails/active_record_helper"
@@ -0,0 +1,170 @@
1
+ # This module supplies a bunch of localization-related core extensions to ruby
2
+ # built-in and standard classes.
3
+
4
+ module Globalize # :nodoc:
5
+ module CoreExtensions # :nodoc:
6
+
7
+ module String
8
+
9
+ # Indicates direction of text (usually +ltr+ [left-to-right] or
10
+ # +rtl+ [right-to-left].
11
+ attr_accessor :direction
12
+
13
+ # Translates the string into the active language. If there is a
14
+ # quantity involved, it can be set with the +arg+ parameter. In this case
15
+ # string should contain the code <tt>%d</tt>, which will be substituted with
16
+ # the supplied number.
17
+ #
18
+ # To substitute a +string+, give it as the +arg+ parameter. It will be
19
+ # substituted for <tt>%s</dd>.
20
+ #
21
+ # If there is no translation available, +default+ will be returned, or
22
+ # if it's not supplied, the original string will be returned.
23
+ def translate(default = nil, arg = nil)
24
+ Locale.translate(self, default, arg)
25
+ end
26
+ alias :t :translate
27
+
28
+ # Translates the string into the active language. This is equivalent
29
+ # to translate(arg).
30
+ #
31
+ # Example: <tt>"There are %d items in your cart" / 1 -> "There is one item in your cart"</tt>
32
+ def /(arg)
33
+ translate(nil, arg)
34
+ end
35
+
36
+ end
37
+
38
+ module Symbol
39
+ # Translates the symbol into the active language. Underscores are
40
+ # converted to spaces.
41
+ #
42
+ # If there is no translation available, +default+ will be returned, or
43
+ # if it's not supplied, the original string will be returned.
44
+ def translate(default = nil)
45
+ Locale.translate(self, default)
46
+ end
47
+ alias :t :translate
48
+ end
49
+
50
+ module Object
51
+ # Translates the supplied string into the active language. If there is a
52
+ # quantity involved, it can be set with the +arg+ parameter. In this case
53
+ # string should contain the code <tt>%d</tt>, which will be substituted with
54
+ # the supplied number.
55
+ #
56
+ # If there is no translation available, +default+ will be returned, or
57
+ # if it's not supplied, the original string will be returned.
58
+ #
59
+ # <em>Note: This method is deprectated and is supplied for backward
60
+ # compatibility with other translation packages, notable gettext.</em>
61
+ def _(str, default = nil, arg = nil)
62
+ Locale.translate(str, default, arg)
63
+ end
64
+ end
65
+
66
+ module Integer
67
+ # Returns the integer in String form, according to the rules of the
68
+ # currently active locale.
69
+ def localize( base = 10 )
70
+ str = self.to_s( base )
71
+ if (base == 10)
72
+ if Locale.active?
73
+ delimiter = Locale.active.thousands_sep
74
+ number_grouping_scheme = Locale.active.number_grouping_scheme
75
+ end
76
+ delimiter ||= ','
77
+ number_grouping_scheme ||= :western
78
+ number_grouping_scheme == :indian ?
79
+ str.gsub(/(\d)(?=((\d\d\d)(?!\d))|((\d\d)+(\d\d\d)(?!\d)))/) { |match|
80
+ match + delimiter } :
81
+ str.gsub(/(\d)(?=(\d\d\d)+(?!\d))/) { |match| match + delimiter }
82
+ else
83
+ str
84
+ end
85
+ end
86
+ alias :loc :localize
87
+ end
88
+
89
+ module Float
90
+ # Returns the integer in String form, according to the rules of the
91
+ # currently active locale.
92
+ #
93
+ # Example: <tt>123456.localize -> 123.456</tt> (German locale)
94
+ def localize
95
+ str = self.to_s
96
+ if str =~ /^[\d\.]+$/
97
+ if Locale.active?
98
+ active_locale = Locale.active
99
+ delimiter = active_locale.thousands_sep
100
+ decimal = active_locale.decimal_sep
101
+ number_grouping_scheme = active_locale.number_grouping_scheme
102
+ end
103
+ delimiter ||= ','
104
+ decimal ||= '.'
105
+ number_grouping_scheme ||= :western
106
+
107
+ int, frac = str.split('.')
108
+ number_grouping_scheme == :indian ?
109
+ int.gsub!(/(\d)(?=((\d\d\d)(?!\d))|((\d\d)+(\d\d\d)(?!\d)))/) { |match|
110
+ match + delimiter} :
111
+ int.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/) { |match| match + delimiter }
112
+ int + decimal + frac
113
+ else
114
+ str
115
+ end
116
+ end
117
+ alias :loc :localize
118
+ end
119
+
120
+ module Time
121
+ # Acts the same as #strftime, but returns a localized version of the
122
+ # formatted date/time string.
123
+ def localize(format)
124
+ # unabashedly stole this snippet from Tadayoshi Funaba's Date class
125
+ o = ''
126
+ format.scan(/%[EO]?.|./o) do |c|
127
+ cc = c.sub(/^%[EO]?(.)$/o, '%\\1')
128
+ case cc
129
+ when '%A'; o << "#{::Date::DAYNAMES[wday]} [weekday]".t(::Date::DAYNAMES[wday])
130
+ when '%a'; o << "#{::Date::ABBR_DAYNAMES[wday]} [abbreviated weekday]".t(::Date::ABBR_DAYNAMES[wday])
131
+ when '%B'; o << "#{::Date::MONTHNAMES[mon]} [month]".t(::Date::MONTHNAMES[mon])
132
+ when '%b'; o << "#{::Date::ABBR_MONTHNAMES[mon]} [abbreviated month]".t(::Date::ABBR_MONTHNAMES[mon])
133
+ when '%c'; o << ((Locale.active? && !Locale.active.date_format.nil?) ?
134
+ localize(Locale.active.date_format) : strftime('%Y-%m-%d'))
135
+ when '%p'; o << if hour < 12 then 'AM [Ante Meridiem]'.t("AM") else 'PM [Post Meridiem]'.t("PM") end
136
+ else; o << c
137
+ end
138
+ end
139
+ strftime(o)
140
+ end
141
+ alias :loc :localize
142
+ end
143
+
144
+ module Date
145
+ # Acts the same as #strftime, but returns a localized version of the
146
+ # formatted date/time string.
147
+ def localize(format)
148
+ # unabashedly stole this snippet from Tadayoshi Funaba's Date class
149
+ o = ''
150
+ format.scan(/%[EO]?.|./o) do |c|
151
+ cc = c.sub(/^%[EO]?(.)$/o, '%\\1')
152
+ case cc
153
+ when '%A'; o << "#{::Date::DAYNAMES[wday]} [weekday]".t(::Date::DAYNAMES[wday])
154
+ when '%a'; o << "#{::Date::ABBR_DAYNAMES[wday]} [abbreviated weekday]".t(::Date::ABBR_DAYNAMES[wday])
155
+ when '%B'; o << "#{::Date::MONTHNAMES[mon]} [month]".t(::Date::MONTHNAMES[mon])
156
+ when '%b'; o << "#{::Date::ABBR_MONTHNAMES[mon]} [abbreviated month]".t(::Date::ABBR_MONTHNAMES[mon])
157
+ when '%c'; o << ((Locale.active? && !Locale.active.date_format.nil?) ?
158
+ localize(Locale.active.date_format) : strftime('%Y-%m-%d'))
159
+ when '%p'; o << if hour < 12 then 'AM [Ante Meridiem]'.t("am") else 'PM [Post Meridiem]'.t("am") end
160
+ when '%P'; o << if hour < 12 then 'AM [Ante Meridiem]'.t("AM") else 'PM [Post Meridiem]'.t("PM") end
161
+ else; o << c
162
+ end
163
+ end
164
+ strftime(o)
165
+ end
166
+ alias :loc :localize
167
+ end
168
+
169
+ end
170
+ end
@@ -0,0 +1,33 @@
1
+ # Hook up core extenstions (need to define them as main level, hence
2
+ # the :: prefix)
3
+ class ::String # :nodoc:
4
+ include Globalize::CoreExtensions::String
5
+ end
6
+
7
+ class ::Symbol # :nodoc:
8
+ include Globalize::CoreExtensions::Symbol
9
+ end
10
+
11
+ class ::Object # :nodoc:
12
+ include Globalize::CoreExtensions::Object
13
+ end
14
+
15
+ class ::Fixnum # :nodoc:
16
+ include Globalize::CoreExtensions::Integer
17
+ end
18
+
19
+ class ::Bignum # :nodoc:
20
+ include Globalize::CoreExtensions::Integer
21
+ end
22
+
23
+ class ::Float # :nodoc:
24
+ include Globalize::CoreExtensions::Float
25
+ end
26
+
27
+ class ::Time # :nodoc:
28
+ include Globalize::CoreExtensions::Time
29
+ end
30
+
31
+ class ::Date # :nodoc:
32
+ include Globalize::CoreExtensions::Date
33
+ end