# HG changeset patch # User Chris Cannam # Date 1299153723 0 # Node ID eeebe205a0562c9814c0b2c39e1cc019f43cf0df # Parent fca2657f4aa53be4f8affe9948b049cf92f74972# Parent 051f544170feb8c1cc74773285cfe55ab128e6e7 * Merge from default branch, bringing us up to SVN trunk rev 4993 diff -r fca2657f4aa5 -r eeebe205a056 .gitignore --- a/.gitignore Thu Jan 20 09:59:02 2011 +0000 +++ b/.gitignore Thu Mar 03 12:02:03 2011 +0000 @@ -1,4 +1,7 @@ +/.project +/.loadpath /config/additional_environment.rb +/config/configuration.yml /config/database.yml /config/email.yml /config/initializers/session_store.rb @@ -7,6 +10,8 @@ /db/*.sqlite3 /db/schema.rb /files/* +/lib/redmine/scm/adapters/mercurial/redminehelper.pyc +/lib/redmine/scm/adapters/mercurial/redminehelper.pyo /log/*.log* /log/mongrel_debug /public/dispatch.* diff -r fca2657f4aa5 -r eeebe205a056 .hgignore --- a/.hgignore Thu Jan 20 09:59:02 2011 +0000 +++ b/.hgignore Thu Mar 03 12:02:03 2011 +0000 @@ -1,6 +1,9 @@ syntax: glob +.project +.loadpath config/additional_environment.rb +config/configuration.yml config/database.yml config/email.yml config/initializers/session_store.rb @@ -9,11 +12,12 @@ db/*.sqlite3 db/schema.rb files/* +lib/redmine/scm/adapters/mercurial/redminehelper.pyc +lib/redmine/scm/adapters/mercurial/redminehelper.pyo log/*.log* log/mongrel_debug public/dispatch.* public/plugin_assets -tmp/* tmp/cache/* tmp/sessions/* tmp/sockets/* diff -r fca2657f4aa5 -r eeebe205a056 .svn/all-wcprops --- a/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,17 +1,29 @@ K 25 svn:wc:ra_dav:version-url -V 38 -/svn/!svn/ver/4731/trunk +V 24 +/svn/!svn/ver/4993/trunk END .hgignore K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4606/trunk/.hgignore +/svn/!svn/ver/4834/trunk/.hgignore END -.hgignore +Rakefile K 25 svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/4607/branches/1.1-stable/.hgignore +V 31 +/svn/!svn/ver/67/trunk/Rakefile END +README.rdoc +K 25 +svn:wc:ra_dav:version-url +V 36 +/svn/!svn/ver/3849/trunk/README.rdoc +END +.gitignore +K 25 +svn:wc:ra_dav:version-url +V 35 +/svn/!svn/ver/4834/trunk/.gitignore +END diff -r fca2657f4aa5 -r eeebe205a056 .svn/dir-prop-base --- a/.svn/dir-prop-base Thu Jan 20 09:59:02 2011 +0000 +++ b/.svn/dir-prop-base Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,9 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81:/trunk:1751 K 10 svn:ignore -V 9 +V 28 coverage +.project +.loadpath END diff -r fca2657f4aa5 -r eeebe205a056 .svn/entries --- a/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable +4993 +http://redmine.rubyforge.org/svn/trunk http://redmine.rubyforge.org/svn -2011-01-16T16:36:58.753919Z -4731 -jplang +2011-03-03T05:51:46.224821Z +4993 +tmaruyama has-props @@ -35,33 +35,11 @@ -2011-01-13T14:11:09.000000Z -0f5961e6af62737d2a1f5e3ad47f8c89 -2011-01-01T21:07:43.412022Z -4606 + +970b3ffe21e2c668737cf5abf0d0ac48 +2011-02-15T11:04:52.942730Z +4834 tmaruyama - - - - - - - - - - - - - - - - - - - - - -317 app dir @@ -75,7 +53,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z bbf560d44f092d22a30d3a562436ad8c 2006-12-05T20:45:04.842118Z 67 @@ -103,13 +81,16 @@ 307 +extra +dir + README.rdoc file -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 67c937b1f1d0603e69f322de34bbfe04 2010-07-18T15:49:24.341728Z 3849 @@ -137,9 +118,6 @@ 208 -extra -dir - db dir @@ -167,11 +145,11 @@ -2010-08-12T15:03:25.000000Z -201a803b90bbd2a1624c4ce1dd260098 -2010-06-09T22:01:21.132822Z -3768 -edavis10 +2011-03-03T11:40:18.000000Z +84dbba0b6ddcd80d28c62a3f8e344bc4 +2011-02-15T11:04:52.942730Z +4834 +tmaruyama @@ -193,7 +171,7 @@ -322 +477 lib dir diff -r fca2657f4aa5 -r eeebe205a056 .svn/text-base/.gitignore.svn-base --- a/.svn/text-base/.gitignore.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/.svn/text-base/.gitignore.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,4 +1,7 @@ +/.project +/.loadpath /config/additional_environment.rb +/config/configuration.yml /config/database.yml /config/email.yml /config/initializers/session_store.rb @@ -7,6 +10,8 @@ /db/*.sqlite3 /db/schema.rb /files/* +/lib/redmine/scm/adapters/mercurial/redminehelper.pyc +/lib/redmine/scm/adapters/mercurial/redminehelper.pyo /log/*.log* /log/mongrel_debug /public/dispatch.* diff -r fca2657f4aa5 -r eeebe205a056 .svn/text-base/.hgignore.svn-base --- a/.svn/text-base/.hgignore.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/.svn/text-base/.hgignore.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,6 +1,9 @@ syntax: glob +.project +.loadpath config/additional_environment.rb +config/configuration.yml config/database.yml config/email.yml config/initializers/session_store.rb @@ -9,6 +12,8 @@ db/*.sqlite3 db/schema.rb files/* +lib/redmine/scm/adapters/mercurial/redminehelper.pyc +lib/redmine/scm/adapters/mercurial/redminehelper.pyo log/*.log* log/mongrel_debug public/dispatch.* diff -r fca2657f4aa5 -r eeebe205a056 .svn/tmp/.hgignore.tmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.svn/tmp/.hgignore.tmp Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,26 @@ +syntax: glob + +.project +.loadpath +config/additional_environment.rb +config/configuration.yml +config/database.yml +config/email.yml +config/initializers/session_store.rb +coverage +db/*.db +db/*.sqlite3 +db/schema.rb +files/* +lib/redmine/scm/adapters/mercurial/redminehelper.pyc +lib/redmine/scm/adapters/mercurial/redminehelper.pyo +log/*.log* +log/mongrel_debug +public/dispatch.* +public/plugin_assets +tmp/cache/* +tmp/sessions/* +tmp/sockets/* +tmp/test/* +vendor/rails +*.rbc diff -r fca2657f4aa5 -r eeebe205a056 app/.svn/all-wcprops --- a/app/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url -V 42 -/svn/!svn/ver/4731/trunk/app +V 28 +/svn/!svn/ver/4990/trunk/app END diff -r fca2657f4aa5 -r eeebe205a056 app/.svn/entries --- a/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app +4993 +http://redmine.rubyforge.org/svn/trunk/app http://redmine.rubyforge.org/svn -2011-01-16T16:36:58.753919Z -4731 -jplang +2011-03-03T03:30:10.954225Z +4990 +tmaruyama diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/all-wcprops --- a/app/controllers/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4729/trunk/app/controllers +/svn/!svn/ver/4954/trunk/app/controllers END issues_controller.rb K 25 svn:wc:ra_dav:version-url V 61 -/svn/!svn/ver/4652/trunk/app/controllers/issues_controller.rb +/svn/!svn/ver/4741/trunk/app/controllers/issues_controller.rb END queries_controller.rb K 25 @@ -57,29 +57,23 @@ V 62 /svn/!svn/ver/3784/trunk/app/controllers/members_controller.rb END +context_menus_controller.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4580/trunk/app/controllers/context_menus_controller.rb +END welcome_controller.rb K 25 svn:wc:ra_dav:version-url V 62 /svn/!svn/ver/2941/trunk/app/controllers/welcome_controller.rb END -context_menus_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4580/trunk/app/controllers/context_menus_controller.rb -END journals_controller.rb K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/4535/trunk/app/controllers/journals_controller.rb -END -workflows_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/3536/trunk/app/controllers/workflows_controller.rb +/svn/!svn/ver/4954/trunk/app/controllers/journals_controller.rb END time_entry_reports_controller.rb K 25 @@ -87,6 +81,12 @@ V 73 /svn/!svn/ver/4232/trunk/app/controllers/time_entry_reports_controller.rb END +workflows_controller.rb +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4895/trunk/app/controllers/workflows_controller.rb +END reports_controller.rb K 25 svn:wc:ra_dav:version-url @@ -105,18 +105,18 @@ V 68 /svn/!svn/ver/3627/trunk/app/controllers/custom_fields_controller.rb END +settings_controller.rb +K 25 +svn:wc:ra_dav:version-url +V 63 +/svn/!svn/ver/4432/trunk/app/controllers/settings_controller.rb +END timelog_controller.rb K 25 svn:wc:ra_dav:version-url V 62 /svn/!svn/ver/4511/trunk/app/controllers/timelog_controller.rb END -settings_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/4432/trunk/app/controllers/settings_controller.rb -END issue_moves_controller.rb K 25 svn:wc:ra_dav:version-url @@ -147,18 +147,18 @@ V 63 /svn/!svn/ver/4174/trunk/app/controllers/previews_controller.rb END +ldap_auth_sources_controller.rb +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3744/trunk/app/controllers/ldap_auth_sources_controller.rb +END auth_sources_controller.rb K 25 svn:wc:ra_dav:version-url V 67 /svn/!svn/ver/3744/trunk/app/controllers/auth_sources_controller.rb END -ldap_auth_sources_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/3744/trunk/app/controllers/ldap_auth_sources_controller.rb -END search_controller.rb K 25 svn:wc:ra_dav:version-url @@ -171,18 +171,18 @@ V 63 /svn/!svn/ver/3528/trunk/app/controllers/messages_controller.rb END +issue_relations_controller.rb +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/4764/trunk/app/controllers/issue_relations_controller.rb +END versions_controller.rb K 25 svn:wc:ra_dav:version-url V 63 /svn/!svn/ver/4354/trunk/app/controllers/versions_controller.rb END -issue_relations_controller.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/3591/trunk/app/controllers/issue_relations_controller.rb -END boards_controller.rb K 25 svn:wc:ra_dav:version-url @@ -235,7 +235,7 @@ K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/4711/trunk/app/controllers/repositories_controller.rb +/svn/!svn/ver/4860/trunk/app/controllers/repositories_controller.rb END admin_controller.rb K 25 @@ -253,7 +253,7 @@ K 25 svn:wc:ra_dav:version-url V 62 -/svn/!svn/ver/3906/trunk/app/controllers/account_controller.rb +/svn/!svn/ver/4757/trunk/app/controllers/account_controller.rb END calendars_controller.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/entries --- a/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/controllers http://redmine.rubyforge.org/svn -2011-01-16T15:23:11.666065Z -4729 +2011-02-27T13:34:41.060565Z +4954 jplang @@ -32,11 +32,11 @@ -2011-01-13T14:09:10.000000Z -2166617cc44ef66371dcac04c09755c2 -2011-01-08T00:19:51.192586Z -4652 -tmaruyama +2011-03-03T11:05:10.000000Z +b2f39d4816a34c8fdbe451324ff298e4 +2011-01-22T13:28:20.816262Z +4741 +jplang has-props @@ -58,7 +58,7 @@ -12149 +12253 queries_controller.rb file @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 7ad6758cfd160c4b6ef6d71be06e087c 2010-04-19T15:08:28.751734Z 3684 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 7a73aba15fcd447531d1552de01706d9 2009-12-20T09:44:28.044710Z 3201 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 612f3e7497e14c728934e83fbe5778c4 2009-12-20T09:45:04.782778Z 3202 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 3ee494bd8196306eab8913bd462b44da 2010-06-20T16:08:15.578906Z 3798 @@ -202,7 +202,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z edbdb443ff7cc8f299f7772b3532eca1 2010-12-12T16:06:43.892596Z 4503 @@ -236,7 +236,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z 40ea055e0f9f9aa83680751fdab5a0a5 2010-12-12T14:25:23.262992Z 4497 @@ -270,7 +270,7 @@ -2010-09-24T12:48:26.271687Z +2011-03-03T11:05:10.000000Z c2289eb9b654117a101c072955d4c705 2010-09-23T15:20:19.085385Z 4172 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 20e245fa61dc0dcb2f105a8f0e6af98c 2010-06-19T19:51:43.174421Z 3784 @@ -332,13 +332,47 @@ 3447 +context_menus_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +596c3ab10f8cf4687f6d8b163e7a2243 +2010-12-29T19:55:52.079810Z +4580 +jplang + + + + + + + + + + + + + + + + + + + + + +1847 + welcome_controller.rb file -2010-09-23T14:37:44.403745Z +2011-03-03T11:05:10.000000Z 95ad1acf7766861a4dbd0aebd9c847de 2009-10-21T03:21:31.657956Z 2941 @@ -366,50 +400,16 @@ 1091 -context_menus_controller.rb -file - - - - -2011-01-13T14:09:10.000000Z -596c3ab10f8cf4687f6d8b163e7a2243 -2010-12-29T19:55:52.079810Z -4580 -jplang - - - - - - - - - - - - - - - - - - - - - -1847 - journals_controller.rb file -2011-01-13T14:09:10.000000Z -bec68711fe4573cf428799354ea68f5d -2010-12-18T17:11:41.680297Z -4535 +2011-03-03T11:40:18.000000Z +0610cb98929633e94c97f1060f4f1566 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -432,41 +432,7 @@ -3490 - -workflows_controller.rb -file - - - - -2010-09-23T14:37:44.403745Z -5052c701a12ad27e88950dd4a745b0f8 -2010-03-04T05:33:45.236699Z -3536 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -3346 +4081 time_entry_reports_controller.rb file @@ -474,7 +440,7 @@ -2010-11-19T13:04:46.996826Z +2011-03-03T11:05:10.000000Z dadcb57d89dc3c90c5fa099b143c07f8 2010-10-05T16:07:17.015270Z 4232 @@ -502,13 +468,47 @@ 9308 +workflows_controller.rb +file + + + + +2011-03-03T11:40:18.000000Z +73cdba17212ad890eea7b7c7ee140d7e +2011-02-20T15:38:07.840581Z +4895 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +4041 + reports_controller.rb file -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 8f7e6e7308912a6169a700b0c88174a0 2010-04-27T16:43:52.584075Z 3692 @@ -542,7 +542,7 @@ -2010-09-24T12:48:26.271687Z +2011-03-03T11:05:10.000000Z 828b364ba2850ceddb3caa566bf10124 2010-09-10T16:00:49.687515Z 4075 @@ -570,13 +570,47 @@ 856 +custom_fields_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +00272455ac5be11da48f92c4a443c538 +2010-04-03T11:54:24.331654Z +3627 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +2373 + settings_controller.rb file -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z 98c4c9f33f038160a44752d229926c32 2010-11-27T14:06:11.754120Z 4432 @@ -604,47 +638,13 @@ 2271 -custom_fields_controller.rb -file - - - - -2010-09-23T14:37:44.391741Z -00272455ac5be11da48f92c4a443c538 -2010-04-03T11:54:24.331654Z -3627 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -2373 - timelog_controller.rb file -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z 3e6698f208a263105c7b4a59c60b26b3 2010-12-14T18:29:24.891563Z 4511 @@ -672,13 +672,47 @@ 10484 +issue_moves_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +cacd6ffe0ce299e2ede9d45b7ef8af42 +2010-10-25T18:44:46.868009Z +4292 +edavis10 + + + + + + + + + + + + + + + + + + + + + +2441 + users_controller.rb file -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:10.000000Z 7860374d98cda03916d9b06d9ec8d370 2011-01-16T15:23:11.666065Z 4729 @@ -706,47 +740,13 @@ 8474 -issue_moves_controller.rb -file - - - - -2010-11-19T13:04:47.000764Z -cacd6ffe0ce299e2ede9d45b7ef8af42 -2010-10-25T18:44:46.868009Z -4292 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2441 - files_controller.rb file -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z f0246e8f8dde5ea7b93e4dc2162181fc 2010-09-26T08:07:41.604064Z 4177 @@ -780,7 +780,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z 218c497f1c4c6d7b41cdac214e595156 2010-12-23T14:49:14.339855Z 4573 @@ -808,13 +808,47 @@ 15545 +previews_controller.rb +file + + + + +2011-03-03T11:05:10.000000Z +c5ae4fae18159e70fd81c2487bb1daa1 +2010-09-24T16:26:46.819682Z +4174 +edavis10 + + + + + + + + + + + + + + + + + + + + + +957 + ldap_auth_sources_controller.rb file -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 5f7b9cb2e9c8a60db58ea0833cf481c5 2010-05-23T03:16:31.304135Z 3744 @@ -848,7 +882,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 237280766d09418161536250d514a7bf 2010-05-23T03:16:31.304135Z 3744 @@ -876,47 +910,13 @@ 2542 -previews_controller.rb -file - - - - -2010-11-19T13:04:47.000764Z -c5ae4fae18159e70fd81c2487bb1daa1 -2010-09-24T16:26:46.819682Z -4174 -edavis10 - - - - - - - - - - - - - - - - - - - - - -957 - search_controller.rb file -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 0015154998f830227b636ee423f007f3 2010-06-20T20:01:32.722003Z 3806 @@ -950,7 +950,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z f3f4378ec15e1401ead0dcac4e9cb059 2010-03-03T17:05:00.967826Z 3528 @@ -984,11 +984,11 @@ -2010-09-23T14:37:44.395735Z -c57448661f2eaab81c76f23d7f51e0ab -2010-03-16T15:17:47.586688Z -3591 -edavis10 +2011-03-03T11:05:10.000000Z +8c5249f85056c74e0ab06b5dfa9fed72 +2011-01-27T21:38:47.430923Z +4764 +jplang has-props @@ -1010,7 +1010,7 @@ -2220 +2450 versions_controller.rb file @@ -1018,7 +1018,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z a98fb262a20669600a85c0f72202c5e6 2010-11-01T13:13:32.982466Z 4354 @@ -1052,7 +1052,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 52638c82da929081099076d5aa0f9212 2010-08-16T23:39:27.396462Z 3942 @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 21c0e5d894d1429ac39f3253ae021594 2010-01-05T18:16:03.565347Z 3281 @@ -1120,7 +1120,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z cb358f888a6a92cc99bef83af92cd766 2010-12-12T17:00:52.100205Z 4505 @@ -1154,7 +1154,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z a5e793eb94e501be4c1a39acc65cc568 2010-04-03T11:54:24.331654Z 3627 @@ -1188,7 +1188,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 77209ec52ddcefafb0bfbb76195167ec 2010-08-10T22:37:00.826946Z 3934 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z f0fdda9126d71c0b2d4638de50ab1097 2010-02-12T19:15:39.389877Z 3416 @@ -1256,7 +1256,7 @@ -2010-09-23T14:37:44.399747Z +2011-03-03T11:05:10.000000Z 28f2e44219870c62c9844354b78af6e1 2010-04-03T11:54:24.331654Z 3627 @@ -1290,7 +1290,7 @@ -2010-09-23T14:37:44.403745Z +2011-03-03T11:05:10.000000Z 7ae79a9d22586240a01af73834b718a3 2010-02-05T16:57:02.094258Z 3370 @@ -1324,11 +1324,11 @@ -2011-01-19T15:03:32.000000Z -9c3c92ca908cc2101e23ecbbc6f723c0 -2011-01-14T20:24:03.783512Z -4711 -jplang +2011-03-03T11:40:18.000000Z +5511ecf5c7190efe44398994a222b486 +2011-02-17T14:17:04.791825Z +4860 +tmaruyama has-props @@ -1350,7 +1350,7 @@ -11263 +11539 admin_controller.rb file @@ -1358,7 +1358,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z ed65a11326fe54914ba3a750a2b6f943 2009-12-19T20:33:24.113306Z 3200 @@ -1392,7 +1392,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z c07d79c1bd100dd8972ea408c4fe549f 2011-01-06T20:57:17.003359Z 4647 @@ -1426,11 +1426,11 @@ -2010-09-23T14:37:44.391741Z -d0ff6be1c749b765d9d64bef64c27537 -2010-08-03T15:26:50.842290Z -3906 -edavis10 +2011-03-03T11:05:10.000000Z +7b162cad903bb22948f7040a48509256 +2011-01-23T11:40:07.678287Z +4757 +jplang has-props @@ -1452,7 +1452,7 @@ -8962 +9350 calendars_controller.rb file @@ -1460,7 +1460,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z 0be20cab6d5ea49f428a90cf3afef3e3 2010-11-07T22:38:10.728638Z 4388 @@ -1494,7 +1494,7 @@ -2010-09-23T14:37:44.395735Z +2011-03-03T11:05:10.000000Z 119ceb4a27aa554d03867f46cb142d0e 2010-03-17T15:41:58.766740Z 3597 @@ -1528,7 +1528,7 @@ -2010-11-19T13:04:47.000764Z +2011-03-03T11:05:10.000000Z 81dbee1745da99b9ea499f3fbe1d3944 2010-11-07T22:38:10.728638Z 4388 @@ -1562,7 +1562,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z c2c68bf5fa3ed22a8f55c8414d1efce9 2010-03-17T15:41:58.766740Z 3597 @@ -1596,7 +1596,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z ccc57886f63cb0efb0149b601dd2ac43 2010-11-27T10:34:44.408431Z 4429 @@ -1630,7 +1630,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z ad33818a03b408419be4e616e8c88b5c 2010-12-29T19:37:42.740543Z 4579 @@ -1664,7 +1664,7 @@ -2010-09-23T14:37:44.391741Z +2011-03-03T11:05:10.000000Z 1caaedc7bb0a3085878dc94446c70ab0 2010-03-02T20:03:09.514061Z 3524 diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/text-base/account_controller.rb.svn-base --- a/app/controllers/.svn/text-base/account_controller.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/text-base/account_controller.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -203,12 +203,24 @@ self.logged_user = user # generate a key and set cookie if autologin if params[:autologin] && Setting.autologin? - token = Token.create(:user => user, :action => 'autologin') - cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } + set_autologin_cookie(user) end call_hook(:controller_account_success_authentication_after, {:user => user }) redirect_back_or_default :controller => 'my', :action => 'page' end + + def set_autologin_cookie(user) + token = Token.create(:user => user, :action => 'autologin') + cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin' + cookie_options = { + :value => token.value, + :expires => 1.year.from_now, + :path => (Redmine::Configuration['autologin_cookie_path'] || '/'), + :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), + :httponly => true + } + cookies[cookie_name] = cookie_options + end # Onthefly creation failed, display the registration form to fill/fix attributes def onthefly_creation_failed(user, auth_source_options = { }) diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/text-base/issue_relations_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issue_relations_controller.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/text-base/issue_relations_controller.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -28,6 +28,7 @@ respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } format.js do + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } render :update do |page| page.replace_html "relations", :partial => 'issues/relations' if @relation.errors.empty? @@ -47,7 +48,10 @@ end respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } - format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} } + format.js { + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } + render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} + } end end diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/text-base/issues_controller.rb.svn-base --- a/app/controllers/.svn/text-base/issues_controller.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/text-base/issues_controller.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -108,6 +108,7 @@ @journals.reverse! if User.current.wants_comments_in_reverse_order? @changesets = @issue.changesets.visible.all @changesets.reverse! if User.current.wants_comments_in_reverse_order? + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @edit_allowed = User.current.allowed_to?(:edit_issues, @project) @priorities = IssuePriority.all diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/text-base/journals_controller.rb.svn-base --- a/app/controllers/.svn/text-base/journals_controller.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/text-base/journals_controller.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -16,12 +16,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController - before_filter :find_journal, :only => [:edit] + before_filter :find_journal, :only => [:edit, :diff] before_filter :find_issue, :only => [:new] before_filter :find_optional_project, :only => [:index] - before_filter :authorize, :only => [:new, :edit] + before_filter :authorize, :only => [:new, :edit, :diff] accept_key_auth :index - + menu_item :issues + helper :issues helper :queries include QueriesHelper @@ -43,6 +44,17 @@ render_404 end + def diff + @issue = @journal.issue + if params[:detail_id].present? + @detail = @journal.details.find_by_id(params[:detail_id]) + else + @detail = @journal.details.detect {|d| d.prop_key == 'description'} + end + (render_404; return false) unless @issue && @detail + @diff = Redmine::Helpers::Diff.new(@detail.value, @detail.old_value) + end + def new journal = Journal.find(params[:journal_id]) if params[:journal_id] if journal @@ -67,6 +79,7 @@ end def edit + (render_403; return false) unless @journal.editable_by?(User.current) if request.post? @journal.update_attributes(:notes => params[:notes]) if params[:notes] @journal.destroy if @journal.details.empty? && @journal.notes.blank? @@ -75,13 +88,21 @@ format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id } format.js { render :action => 'update' } end + else + respond_to do |format| + format.html { + # TODO: implement non-JS journal update + render :nothing => true + } + format.js + end end end -private + private + def find_journal @journal = Journal.find(params[:id]) - (render_403; return false) unless @journal.editable_by?(User.current) @project = @journal.journalized.project rescue ActiveRecord::RecordNotFound render_404 diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/text-base/repositories_controller.rb.svn-base --- a/app/controllers/.svn/text-base/repositories_controller.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/text-base/repositories_controller.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -67,13 +67,13 @@ redirect_to :action => 'committers', :id => @project end end - + def destroy @repository.destroy redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'repository' end - - def show + + def show @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) @@ -88,30 +88,31 @@ end alias_method :browse, :show - + def changes @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i) @properties = @repository.properties(@path, @rev) + @changeset = @repository.find_changeset_by_name(@rev) end - + def revisions @changeset_count = @repository.changesets.count @changeset_pages = Paginator.new self, @changeset_count, - per_page_option, - params['page'] + per_page_option, + params['page'] @changesets = @repository.changesets.find(:all, - :limit => @changeset_pages.items_per_page, - :offset => @changeset_pages.current.offset, - :include => [:user, :repository]) + :limit => @changeset_pages.items_per_page, + :offset => @changeset_pages.current.offset, + :include => [:user, :repository]) respond_to do |format| format.html { render :layout => false if request.xhr? } format.atom { render_feed(@changesets, :title => "#{@project.name}: #{l(:label_revision_plural)}") } end end - + def entry @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -121,23 +122,26 @@ @content = @repository.cat(@path, @rev) (show_error_not_found; return) unless @content - if 'raw' == params[:format] || @content.is_binary_data? || (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) + if 'raw' == params[:format] || @content.is_binary_data? || + (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) # Force the download - send_data @content, :filename => @path.split('/').last + send_data @content, :filename => filename_for_content_disposition(@path.split('/').last) else # Prevent empty lines when displaying a file with Windows style eol @content.gsub!("\r\n", "\n") + @changeset = @repository.find_changeset_by_name(@rev) end end - + def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry - + @annotate = @repository.scm.annotate(@path, @rev) (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty? + @changeset = @repository.find_changeset_by_name(@rev) end - + def revision raise ChangesetNotFound if @rev.blank? @changeset = @repository.find_changeset_by_name(@rev) @@ -150,7 +154,7 @@ rescue ChangesetNotFound show_error_not_found end - + def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) @@ -182,11 +186,11 @@ end end - def stats + def stats end - + def graph - data = nil + data = nil case params[:graph] when "commits_per_month" data = graph_commits_per_month(@repository) @@ -214,7 +218,7 @@ @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip @rev_to = params[:rev_to] - unless @rev.to_s.match(REV_PARAM_RE) && @rev.to_s.match(REV_PARAM_RE) + unless @rev.to_s.match(REV_PARAM_RE) && @rev_to.to_s.match(REV_PARAM_RE) if @repository.branches.blank? raise InvalidRevisionParam end diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/.svn/text-base/workflows_controller.rb.svn-base --- a/app/controllers/.svn/text-base/workflows_controller.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/.svn/text-base/workflows_controller.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -32,14 +32,17 @@ if request.post? Workflow.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id]) - (params[:issue_status] || []).each { |old, news| - news.each { |new| - @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => old, :new_status_id => new) + (params[:issue_status] || []).each { |status_id, transitions| + transitions.each { |new_status_id, options| + author = options.is_a?(Array) && options.include?('author') && !options.include?('always') + assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always') + @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee) } } if @role.save flash[:notice] = l(:notice_successful_update) redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker + return end end @@ -48,6 +51,14 @@ @statuses = @tracker.issue_statuses end @statuses ||= IssueStatus.find(:all, :order => 'position') + + if @tracker && @role && @statuses.any? + workflows = Workflow.all(:conditions => {:role_id => @role.id, :tracker_id => @tracker.id}) + @workflows = {} + @workflows['always'] = workflows.select {|w| !w.author && !w.assignee} + @workflows['author'] = workflows.select {|w| w.author} + @workflows['assignee'] = workflows.select {|w| w.assignee} + end end def copy diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/account_controller.rb --- a/app/controllers/account_controller.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/account_controller.rb Thu Mar 03 12:02:03 2011 +0000 @@ -214,12 +214,24 @@ self.logged_user = user # generate a key and set cookie if autologin if params[:autologin] && Setting.autologin? - token = Token.create(:user => user, :action => 'autologin') - cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } + set_autologin_cookie(user) end call_hook(:controller_account_success_authentication_after, {:user => user }) redirect_back_or_default :controller => 'my', :action => 'page' end + + def set_autologin_cookie(user) + token = Token.create(:user => user, :action => 'autologin') + cookie_name = Redmine::Configuration['autologin_cookie_name'] || 'autologin' + cookie_options = { + :value => token.value, + :expires => 1.year.from_now, + :path => (Redmine::Configuration['autologin_cookie_path'] || '/'), + :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false), + :httponly => true + } + cookies[cookie_name] = cookie_options + end # Onthefly creation failed, display the registration form to fill/fix attributes def onthefly_creation_failed(user, auth_source_options = { }) diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/issue_relations_controller.rb --- a/app/controllers/issue_relations_controller.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/issue_relations_controller.rb Thu Mar 03 12:02:03 2011 +0000 @@ -28,6 +28,7 @@ respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } format.js do + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } render :update do |page| page.replace_html "relations", :partial => 'issues/relations' if @relation.errors.empty? @@ -47,7 +48,10 @@ end respond_to do |format| format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } - format.js { render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} } + format.js { + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } + render(:update) {|page| page.replace_html "relations", :partial => 'issues/relations'} + } end end diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/issues_controller.rb --- a/app/controllers/issues_controller.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/issues_controller.rb Thu Mar 03 12:02:03 2011 +0000 @@ -108,6 +108,7 @@ @journals.reverse! if User.current.wants_comments_in_reverse_order? @changesets = @issue.changesets.visible.all @changesets.reverse! if User.current.wants_comments_in_reverse_order? + @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } @allowed_statuses = @issue.new_statuses_allowed_to(User.current) @edit_allowed = User.current.allowed_to?(:edit_issues, @project) @priorities = IssuePriority.all diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/journals_controller.rb --- a/app/controllers/journals_controller.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/journals_controller.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -16,12 +16,13 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController - before_filter :find_journal, :only => [:edit] + before_filter :find_journal, :only => [:edit, :diff] before_filter :find_issue, :only => [:new] before_filter :find_optional_project, :only => [:index] - before_filter :authorize, :only => [:new, :edit] + before_filter :authorize, :only => [:new, :edit, :diff] accept_key_auth :index - + menu_item :issues + helper :issues helper :queries include QueriesHelper @@ -43,6 +44,17 @@ render_404 end + def diff + @issue = @journal.issue + if params[:detail_id].present? + @detail = @journal.details.find_by_id(params[:detail_id]) + else + @detail = @journal.details.detect {|d| d.prop_key == 'description'} + end + (render_404; return false) unless @issue && @detail + @diff = Redmine::Helpers::Diff.new(@detail.value, @detail.old_value) + end + def new journal = Journal.find(params[:journal_id]) if params[:journal_id] if journal @@ -67,6 +79,7 @@ end def edit + (render_403; return false) unless @journal.editable_by?(User.current) if request.post? @journal.update_attributes(:notes => params[:notes]) if params[:notes] @journal.destroy if @journal.details.empty? && @journal.notes.blank? @@ -75,13 +88,21 @@ format.html { redirect_to :controller => 'issues', :action => 'show', :id => @journal.journalized_id } format.js { render :action => 'update' } end + else + respond_to do |format| + format.html { + # TODO: implement non-JS journal update + render :nothing => true + } + format.js + end end end -private + private + def find_journal @journal = Journal.find(params[:id]) - (render_403; return false) unless @journal.editable_by?(User.current) @project = @journal.journalized.project rescue ActiveRecord::RecordNotFound render_404 diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/repositories_controller.rb --- a/app/controllers/repositories_controller.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/repositories_controller.rb Thu Mar 03 12:02:03 2011 +0000 @@ -67,13 +67,13 @@ redirect_to :action => 'committers', :id => @project end end - + def destroy @repository.destroy redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'repository' end - - def show + + def show @repository.fetch_changesets if Setting.autofetch_changesets? && @path.empty? @entries = @repository.entries(@path, @rev) @@ -88,30 +88,31 @@ end alias_method :browse, :show - + def changes @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @changesets = @repository.latest_changesets(@path, @rev, Setting.repository_log_display_limit.to_i) @properties = @repository.properties(@path, @rev) + @changeset = @repository.find_changeset_by_name(@rev) end - + def revisions @changeset_count = @repository.changesets.count @changeset_pages = Paginator.new self, @changeset_count, - per_page_option, - params['page'] + per_page_option, + params['page'] @changesets = @repository.changesets.find(:all, - :limit => @changeset_pages.items_per_page, - :offset => @changeset_pages.current.offset, - :include => [:user, :repository]) + :limit => @changeset_pages.items_per_page, + :offset => @changeset_pages.current.offset, + :include => [:user, :repository]) respond_to do |format| format.html { render :layout => false if request.xhr? } format.atom { render_feed(@changesets, :title => "#{@project.name}: #{l(:label_revision_plural)}") } end end - + def entry @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry @@ -121,23 +122,26 @@ @content = @repository.cat(@path, @rev) (show_error_not_found; return) unless @content - if 'raw' == params[:format] || @content.is_binary_data? || (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) + if 'raw' == params[:format] || @content.is_binary_data? || + (@entry.size && @entry.size > Setting.file_max_size_displayed.to_i.kilobyte) # Force the download - send_data @content, :filename => @path.split('/').last + send_data @content, :filename => filename_for_content_disposition(@path.split('/').last) else # Prevent empty lines when displaying a file with Windows style eol @content.gsub!("\r\n", "\n") + @changeset = @repository.find_changeset_by_name(@rev) end end - + def annotate @entry = @repository.entry(@path, @rev) (show_error_not_found; return) unless @entry - + @annotate = @repository.scm.annotate(@path, @rev) (render_error l(:error_scm_annotate); return) if @annotate.nil? || @annotate.empty? + @changeset = @repository.find_changeset_by_name(@rev) end - + def revision raise ChangesetNotFound if @rev.blank? @changeset = @repository.find_changeset_by_name(@rev) @@ -150,7 +154,7 @@ rescue ChangesetNotFound show_error_not_found end - + def diff if params[:format] == 'diff' @diff = @repository.diff(@path, @rev, @rev_to) @@ -182,11 +186,11 @@ end end - def stats + def stats end - + def graph - data = nil + data = nil case params[:graph] when "commits_per_month" data = graph_commits_per_month(@repository) @@ -214,7 +218,7 @@ @rev = params[:rev].blank? ? @repository.default_branch : params[:rev].strip @rev_to = params[:rev_to] - unless @rev.to_s.match(REV_PARAM_RE) && @rev.to_s.match(REV_PARAM_RE) + unless @rev.to_s.match(REV_PARAM_RE) && @rev_to.to_s.match(REV_PARAM_RE) if @repository.branches.blank? raise InvalidRevisionParam end diff -r fca2657f4aa5 -r eeebe205a056 app/controllers/workflows_controller.rb --- a/app/controllers/workflows_controller.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/controllers/workflows_controller.rb Thu Mar 03 12:02:03 2011 +0000 @@ -32,14 +32,17 @@ if request.post? Workflow.destroy_all( ["role_id=? and tracker_id=?", @role.id, @tracker.id]) - (params[:issue_status] || []).each { |old, news| - news.each { |new| - @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => old, :new_status_id => new) + (params[:issue_status] || []).each { |status_id, transitions| + transitions.each { |new_status_id, options| + author = options.is_a?(Array) && options.include?('author') && !options.include?('always') + assignee = options.is_a?(Array) && options.include?('assignee') && !options.include?('always') + @role.workflows.build(:tracker_id => @tracker.id, :old_status_id => status_id, :new_status_id => new_status_id, :author => author, :assignee => assignee) } } if @role.save flash[:notice] = l(:notice_successful_update) redirect_to :action => 'edit', :role_id => @role, :tracker_id => @tracker + return end end @@ -48,6 +51,14 @@ @statuses = @tracker.issue_statuses end @statuses ||= IssueStatus.find(:all, :order => 'position') + + if @tracker && @role && @statuses.any? + workflows = Workflow.all(:conditions => {:role_id => @role.id, :tracker_id => @tracker.id}) + @workflows = {} + @workflows['always'] = workflows.select {|w| !w.author && !w.assignee} + @workflows['author'] = workflows.select {|w| w.author} + @workflows['assignee'] = workflows.select {|w| w.assignee} + end end def copy diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/all-wcprops --- a/app/helpers/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 36 -/svn/!svn/ver/4694/trunk/app/helpers +/svn/!svn/ver/4990/trunk/app/helpers END trackers_helper.rb K 25 @@ -37,7 +37,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4613/trunk/app/helpers/repositories_helper.rb +/svn/!svn/ver/4990/trunk/app/helpers/repositories_helper.rb END admin_helper.rb K 25 @@ -79,7 +79,7 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4375/trunk/app/helpers/wiki_helper.rb +/svn/!svn/ver/4952/trunk/app/helpers/wiki_helper.rb END enumerations_helper.rb K 25 @@ -91,7 +91,13 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4465/trunk/app/helpers/issues_helper.rb +/svn/!svn/ver/4954/trunk/app/helpers/issues_helper.rb +END +queries_helper.rb +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4387/trunk/app/helpers/queries_helper.rb END gantt_helper.rb K 25 @@ -99,12 +105,6 @@ V 52 /svn/!svn/ver/4283/trunk/app/helpers/gantt_helper.rb END -queries_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/4387/trunk/app/helpers/queries_helper.rb -END mail_handler_helper.rb K 25 svn:wc:ra_dav:version-url @@ -135,29 +135,29 @@ V 53 /svn/!svn/ver/333/trunk/app/helpers/welcome_helper.rb END +journals_helper.rb +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/4062/trunk/app/helpers/journals_helper.rb +END workflows_helper.rb K 25 svn:wc:ra_dav:version-url V 56 /svn/!svn/ver/1914/trunk/app/helpers/workflows_helper.rb END -journals_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4062/trunk/app/helpers/journals_helper.rb -END reports_helper.rb K 25 svn:wc:ra_dav:version-url V 53 /svn/!svn/ver/629/trunk/app/helpers/reports_helper.rb END -custom_fields_helper.rb +timelog_helper.rb K 25 svn:wc:ra_dav:version-url -V 60 -/svn/!svn/ver/4480/trunk/app/helpers/custom_fields_helper.rb +V 54 +/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb END settings_helper.rb K 25 @@ -165,11 +165,17 @@ V 55 /svn/!svn/ver/4222/trunk/app/helpers/settings_helper.rb END -timelog_helper.rb +custom_fields_helper.rb K 25 svn:wc:ra_dav:version-url -V 54 -/svn/!svn/ver/3708/trunk/app/helpers/timelog_helper.rb +V 60 +/svn/!svn/ver/4480/trunk/app/helpers/custom_fields_helper.rb +END +issue_moves_helper.rb +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/3936/trunk/app/helpers/issue_moves_helper.rb END users_helper.rb K 25 @@ -177,17 +183,11 @@ V 52 /svn/!svn/ver/4497/trunk/app/helpers/users_helper.rb END -issue_moves_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 58 -/svn/!svn/ver/3936/trunk/app/helpers/issue_moves_helper.rb -END application_helper.rb K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4694/trunk/app/helpers/application_helper.rb +/svn/!svn/ver/4900/trunk/app/helpers/application_helper.rb END auth_sources_helper.rb K 25 @@ -205,7 +205,13 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3373/trunk/app/helpers/messages_helper.rb +/svn/!svn/ver/4760/trunk/app/helpers/messages_helper.rb +END +issue_relations_helper.rb +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/506/trunk/app/helpers/issue_relations_helper.rb END versions_helper.rb K 25 @@ -213,12 +219,6 @@ V 54 /svn/!svn/ver/955/trunk/app/helpers/versions_helper.rb END -issue_relations_helper.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/506/trunk/app/helpers/issue_relations_helper.rb -END boards_helper.rb K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/entries --- a/app/helpers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/helpers http://redmine.rubyforge.org/svn -2011-01-11T16:02:36.869666Z -4694 +2011-03-03T03:30:10.954225Z +4990 tmaruyama @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z e1b19c2c81df384b2026001d1d9605fd 2007-03-12T17:59:02.654744Z 333 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z ab0af291fb143223852a6edddc64b74b 2009-09-12T08:36:46.650954Z 2869 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 0cd3093356b7034ee950ca327fc7aabc 2007-03-12T17:59:02.654744Z 333 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 69869e026dc6cbacc618214e4bb13b1b 2007-03-12T17:59:02.654744Z 333 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 491ead5828edb57adcd7333943656c94 2010-03-27T16:55:20.312262Z 3618 @@ -202,10 +202,10 @@ -2011-01-13T14:09:10.000000Z -ec30c91fbf601169b281a5cd859df2ab -2011-01-02T09:45:05.291687Z -4613 +2011-03-03T11:40:18.000000Z +824b766582f7177458a587dcfcf980f5 +2011-03-03T03:30:10.954225Z +4990 tmaruyama has-props @@ -228,7 +228,7 @@ -7902 +9702 admin_helper.rb file @@ -236,7 +236,7 @@ -2010-09-24T12:48:25.903794Z +2011-03-03T11:05:09.000000Z 258ebc9ad13b3111585e5118ec607d1b 2010-09-10T23:07:10.817821Z 4080 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 19efbd2b30f44f233d5140437e2707a0 2010-08-08T07:07:20.961363Z 3924 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z 42d20ee00a3c45e3411634dbb09e2447 2007-03-12T17:59:02.654744Z 333 @@ -338,7 +338,7 @@ -2010-09-24T12:48:25.903794Z +2011-03-03T11:05:09.000000Z c8780c65337211f34097d74a8c3c9f6e 2010-08-26T16:37:26.575205Z 4046 @@ -372,7 +372,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z 1257aafe6669c839ab46dac2b2732ae0 2007-03-12T17:59:02.654744Z 333 @@ -406,7 +406,7 @@ -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z ceb0fce7a4c271df3ae182c29caf9c03 2007-03-12T17:59:02.654744Z 333 @@ -440,10 +440,10 @@ -2010-11-19T13:04:46.900732Z -3e6762604b5e9a201b7a7bb2edc1f78f -2010-11-06T14:30:32.528294Z -4375 +2011-03-03T11:40:18.000000Z +44832549db555bb9e047a67ae330f34a +2011-02-27T12:35:31.414622Z +4952 jplang has-props @@ -466,7 +466,7 @@ -2297 +1315 enumerations_helper.rb file @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z fc5ec20dd0ca3ce1d954b219417eff70 2007-03-12T17:59:02.654744Z 333 @@ -508,10 +508,10 @@ -2011-01-13T14:09:10.000000Z -5bc8f95d2852e1136e9034fe21aaa2fb -2010-12-04T13:02:14.466576Z -4465 +2011-03-03T11:40:18.000000Z +9dfadb196899bf96fdff7c7c34914e8c +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -534,7 +534,7 @@ -10511 +11599 queries_helper.rb file @@ -542,7 +542,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z 6b997d023cc081b101be1949eb18f893 2010-11-07T15:38:51.908839Z 4387 @@ -576,7 +576,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z dfac5226f31c3c232d7dcc9416172071 2010-10-23T09:08:55.877887Z 4283 @@ -610,7 +610,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z c79faf6237abac40fabce0eacbfbb4cb 2008-06-25T19:25:28.386590Z 1584 @@ -644,7 +644,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z fc71d3a83fe0178e0c6d9519c7a62dde 2010-03-13T17:45:41.194736Z 3579 @@ -678,7 +678,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z d7134d76eff99aef107d8930903b10e0 2007-03-12T17:59:02.654744Z 333 @@ -712,7 +712,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z cc94b2fd5c6a87acac13bbe6e91bd39a 2007-03-12T17:59:02.654744Z 333 @@ -746,7 +746,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 2d03eb3683f312ec26736c696319ec76 2007-03-12T17:59:02.654744Z 333 @@ -780,7 +780,7 @@ -2010-09-24T12:48:25.903794Z +2011-03-03T11:05:09.000000Z b64edde44bceed7fb0911f87dba971aa 2010-09-05T22:57:20.669640Z 4062 @@ -814,7 +814,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 4f7bcbe149363ecb18080e3ce6c3f761 2008-09-28T12:03:17.584169Z 1914 @@ -848,7 +848,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 9daafcfffa933849b3ee09fe5fd7b0cc 2007-08-13T17:00:59.400243Z 629 @@ -882,7 +882,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z 1888fd2d4a1be5fa0d6ad8a63238e2b4 2010-04-30T12:18:11.536180Z 3708 @@ -916,7 +916,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z 868d0dc19e332ae2c817321637a8e31f 2010-09-28T21:09:06.467392Z 4222 @@ -950,7 +950,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 19a8f1c143030c42136fe167f167db15 2010-12-10T10:12:19.202442Z 4480 @@ -978,13 +978,47 @@ 5702 +issue_moves_helper.rb +file + + + + +2011-03-03T11:05:09.000000Z +66e99bd3af036c92a773a91e92a725f9 +2010-08-11T14:42:10.119704Z +3936 +edavis10 + + + + + + + + + + + + + + + + + + + + + +28 + users_helper.rb file -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 1bedb4287035a6f89074da0b37640c28 2010-12-12T14:25:23.262992Z 4497 @@ -1012,51 +1046,17 @@ 2767 -issue_moves_helper.rb -file - - - - -2010-09-23T14:37:44.427784Z -66e99bd3af036c92a773a91e92a725f9 -2010-08-11T14:42:10.119704Z -3936 -edavis10 - - - - - - - - - - - - - - - - - - - - - -28 - application_helper.rb file -2011-01-13T14:09:10.000000Z -183212fd485ef2b4682dbe8023cd489b -2011-01-11T16:02:36.869666Z -4694 -tmaruyama +2011-03-03T11:40:18.000000Z +9d39fe6e2dd4535f7a006a77150961bc +2011-02-21T09:53:29.844413Z +4900 +jplang has-props @@ -1078,7 +1078,7 @@ -35143 +36020 auth_sources_helper.rb file @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z 19759b6e665f9063140da8ac473d9e31 2007-03-12T17:59:02.654744Z 333 @@ -1120,7 +1120,7 @@ -2010-11-19T13:04:46.900732Z +2011-03-03T11:05:09.000000Z dedb3c62af67e076703aa2f60c97fb2b 2010-11-01T12:55:15.292443Z 4353 @@ -1154,10 +1154,10 @@ -2010-09-23T14:37:44.427784Z -70db854f3fd0a38d203a65c44d93bb13 -2010-02-06T12:54:13.653502Z -3373 +2011-03-03T11:05:09.000000Z +d083581ae234853db09e79e4e88d6ad3 +2011-01-23T17:02:10.030897Z +4760 jplang has-props @@ -1180,7 +1180,41 @@ -1364 +823 + +issue_relations_helper.rb +file + + + + +2011-03-03T11:05:09.000000Z +fef3a97e6644b418b44f9551aa65af95 +2007-05-05T13:22:27.245135Z +506 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1017 versions_helper.rb file @@ -1188,7 +1222,7 @@ -2010-09-23T14:37:44.431779Z +2011-03-03T11:05:09.000000Z fd18226266f3e53f6af000ac07a13313 2007-12-07T10:26:07.864320Z 955 @@ -1216,47 +1250,13 @@ 2170 -issue_relations_helper.rb -file - - - - -2010-09-23T14:37:44.427784Z -fef3a97e6644b418b44f9551aa65af95 -2007-05-05T13:22:27.245135Z -506 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1017 - boards_helper.rb file -2010-09-23T14:37:44.423776Z +2011-03-03T11:05:09.000000Z 0ca8f33522734ee0417089366037a7cb 2007-05-13T17:09:56.765659Z 529 @@ -1290,7 +1290,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 58bc2391be7fedbf3e55ef07454cb04c 2011-01-01T19:12:35.568700Z 4605 @@ -1324,7 +1324,7 @@ -2010-09-23T14:37:44.427784Z +2011-03-03T11:05:09.000000Z d808f6794a2fa7cd059ed56d5c8d1b28 2007-03-12T17:59:02.654744Z 333 diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/text-base/application_helper.rb.svn-base --- a/app/helpers/.svn/text-base/application_helper.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/text-base/application_helper.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -109,6 +109,20 @@ link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev}, :title => l(:label_revision_id, format_revision(revision))) end + + # Generates a link to a message + def link_to_message(message, options={}, html_options = nil) + link_to( + h(truncate(message.subject, :length => 60)), + { :controller => 'messages', :action => 'show', + :board_id => message.board_id, + :id => message.root, + :r => (message.parent_id && message.id), + :anchor => (message.parent_id ? "message-#{message.id}" : nil) + }.merge(options), + html_options + ) + end # Generates a link to a project if active # Examples: @@ -588,16 +602,26 @@ # source:some/file#L120 -> Link to line 120 of the file # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 # export:some/file -> Force the download of the file - # Forum messages: + # Forum messages: # message#1218 -> Link to message with id 1218 + # + # Links can refer other objects from other projects, using project identifier: + # identifier:r52 + # identifier:document:"Some document" + # identifier:version:1.0.0 + # identifier:source:some/file def parse_redmine_links(text, project, obj, attr, only_path, options) - text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| - leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8 + text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| + leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10 link = nil + if project_identifier + project = Project.visible.find_by_identifier(project_identifier) + end if esc.nil? if prefix.nil? && sep == 'r' - if project && (changeset = project.changesets.find_by_revision(identifier)) - link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, + # project.changesets.visible raises an SQL error because of a double join on repositories + if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier)) + link = link_to("#{project_prefix}r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100)) end @@ -611,24 +635,18 @@ :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})") end when 'document' - if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if document = Document.visible.find_by_id(oid) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if version = Version.visible.find_by_id(oid) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'message' - if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current)) - link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path, - :controller => 'messages', - :action => 'show', - :board_id => message.board, - :id => message.root, - :anchor => (message.parent ? "message-#{message.id}" : nil)}, - :class => 'message' + if message = Message.visible.find_by_id(oid, :include => :parent) + link = link_to_message(message, {:only_path => only_path}, :class => 'message') end when 'project' if p = Project.visible.find_by_id(oid) @@ -640,26 +658,26 @@ name = identifier.gsub(%r{^"(.*)"$}, "\\1") case prefix when 'document' - if project && document = project.documents.find_by_title(name) + if project && document = project.documents.visible.find_by_title(name) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if project && version = project.versions.find_by_name(name) + if project && version = project.versions.visible.find_by_name(name) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'commit' - if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"])) - link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, + if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"])) + link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100) end when 'source', 'export' - if project && project.repository + if project && project.repository && User.current.allowed_to?(:browse_repository, project) name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$} path, rev, anchor = $1, $3, $5 - link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, + link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :path => to_path_param(path), :rev => rev, :anchor => anchor, @@ -679,7 +697,7 @@ end end end - leading + (link || "#{prefix}#{sep}#{identifier}") + leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}") end end @@ -876,6 +894,15 @@ '' end end + + # Returns the javascript tags that are included in the html layout head + def javascript_heads + tags = javascript_include_tag(:defaults) + unless User.current.pref.warn_on_leaving_unsaved == '0' + tags << "\n" + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });") + end + tags + end def favicon "" diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/text-base/issues_helper.rb.svn-base --- a/app/helpers/.svn/text-base/issues_helper.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/text-base/issues_helper.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -106,13 +106,32 @@ # Project specific queries and global queries visible << (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id]) @sidebar_queries = Query.find(:all, - :select => 'id, name', + :select => 'id, name, is_public', :order => "name ASC", :conditions => visible.conditions) end @sidebar_queries end + def query_links(title, queries) + # links to #index on issues/show + url_params = controller_name == 'issues' ? {:controller => 'issues', :action => 'index', :project_id => @project} : params + + content_tag('h3', title) + + queries.collect {|query| + link_to(h(query.name), url_params.merge(:query_id => query)) + }.join('
') + end + + def render_sidebar_queries + out = '' + queries = sidebar_queries.select {|q| !q.is_public?} + out << query_links(l(:label_my_queries), queries) if queries.any? + queries = sidebar_queries.select {|q| q.is_public?} + out << query_links(l(:label_query_plural), queries) if queries.any? + out + end + def show_detail(detail, no_html=false) case detail.property when 'attr' @@ -164,7 +183,16 @@ end end - if !detail.value.blank? + if detail.property == 'attr' && detail.prop_key == 'description' + s = l(:text_journal_changed_no_detail, :label => label) + unless no_html + diff_link = link_to 'diff', + {:controller => 'journals', :action => 'diff', :id => detail.journal_id, :detail_id => detail.id}, + :title => l(:label_view_diff) + s << " (#{ diff_link })" + end + s + elsif !detail.value.blank? case detail.property when 'attr', 'cf' if !detail.old_value.blank? diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/text-base/messages_helper.rb.svn-base --- a/app/helpers/.svn/text-base/messages_helper.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/text-base/messages_helper.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -16,14 +16,4 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MessagesHelper - - def link_to_message(message) - return '' unless message - link_to h(truncate(message.subject, :length => 60)), :controller => 'messages', - :action => 'show', - :board_id => message.board_id, - :id => message.root, - :r => (message.parent_id && message.id), - :anchor => (message.parent_id ? "message-#{message.id}" : nil) - end end diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/text-base/repositories_helper.rb.svn-base --- a/app/helpers/.svn/text-base/repositories_helper.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/text-base/repositories_helper.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -25,13 +25,13 @@ revision.to_s end end - + def truncate_at_line_break(text, length = 255) if text text.gsub(%r{^(.{#{length}}[^\n]*)\n.+$}m, '\\1...') end end - + def render_properties(properties) unless properties.nil? || properties.empty? content = '' @@ -41,7 +41,7 @@ content_tag('ul', content, :class => 'properties') end end - + def render_changeset_changes changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change| case change.action @@ -75,10 +75,10 @@ render_changes_tree(tree[:s]) end - + def render_changes_tree(tree) return '' if tree.nil? - + output = '' output << '' output end - + def to_utf8(str) + return str if str.blank? if str.respond_to?(:force_encoding) str.force_encoding('UTF-8') - return str if str.valid_encoding? else + # TODO: + # Japanese Shift_JIS(CP932) is not compatible with ASCII. + # UTF-7 and Japanese ISO-2022-JP are 7bits clean. return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii end - + @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) @encodings.each do |encoding| begin @@ -132,67 +135,118 @@ # do nothing here and try the next encoding end end + str = replace_invalid_utf8(str) + end + + def replace_invalid_utf8(str) + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end + end str end - - def repository_field_tags(form, repository) + + def repository_field_tags(form, repository) method = repository.class.name.demodulize.underscore + "_field_tags" - send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) && method != 'repository_field_tags' + if repository.is_a?(Repository) && + respond_to?(method) && method != 'repository_field_tags' + send(method, form, repository) + end end - + def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] Redmine::Scm::Base.all.each do |scm| - scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) + if Setting.enabled_scm.include?(scm) || + (repository && repository.class.name.demodulize == scm) + scm_options << ["Repository::#{scm}".constantize.scm_name, scm] + end end - select_tag('repository_scm', options_for_select(scm_options, repository.class.name.demodulize), :disabled => (repository && !repository.new_record?), - :onchange => remote_function(:url => { :controller => 'repositories', :action => 'edit', :id => @project }, :method => :get, :with => "Form.serialize(this.form)") + :onchange => remote_function( + :url => { + :controller => 'repositories', + :action => 'edit', + :id => @project + }, + :method => :get, + :with => "Form.serialize(this.form)") ) end - + def with_leading_slash(path) path.to_s.starts_with?('/') ? path : "/#{path}" end - + def without_leading_slash(path) path.gsub(%r{^/+}, '') end def subversion_field_tags(form, repository) - content_tag('p', form.text_field(:url, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) + + content_tag('p', form.text_field(:url, :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + '
(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') + content_tag('p', form.text_field(:login, :size => 30)) + - content_tag('p', form.password_field(:password, :size => 30, :name => 'ignore', - :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), - :onfocus => "this.value=''; this.name='repository[password]';", - :onchange => "this.name='repository[password]';")) + content_tag('p', form.password_field( + :password, :size => 30, :name => 'ignore', + :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), + :onfocus => "this.value=''; this.name='repository[password]';", + :onchange => "this.name='repository[password]';")) end def darcs_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.new_record?))) + + content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, + :label => 'Commit messages encoding', :required => true)) end - + def mercurial_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
local repository (e.g. /hgrepo, c:\hgrepo)' ) end def git_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Path to .git directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Path to repository', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
a bare and local repository (e.g. /gitrepo, c:\gitrepo)') end def cvs_field_tags(form, repository) - content_tag('p', form.text_field(:root_url, :label => 'CVSROOT', :size => 60, :required => true, :disabled => !repository.new_record?)) + - content_tag('p', form.text_field(:url, :label => 'Module', :size => 30, :required => true, :disabled => !repository.new_record?)) + content_tag('p', form.text_field(:root_url, + :label => 'CVSROOT', :size => 60, :required => true, + :disabled => !repository.new_record?)) + + content_tag('p', form.text_field(:url, :label => 'Module', + :size => 30, :required => true, + :disabled => !repository.new_record?)) + + content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, + :label => 'Commit messages encoding', :required => true)) end def bazaar_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.new_record?))) + + content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, + :label => 'Commit messages encoding', :required => true)) end - + def filesystem_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?))) + + content_tag('p', form.select( + :path_encoding, [nil] + Setting::ENCODINGS, + :label => 'Path encoding') + + '
Default: UTF-8') end end diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/.svn/text-base/wiki_helper.rb.svn-base --- a/app/helpers/.svn/text-base/wiki_helper.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/.svn/text-base/wiki_helper.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -29,41 +29,4 @@ end s end - - def html_diff(wdiff) - words = wdiff.words.collect{|word| h(word)} - words_add = 0 - words_del = 0 - dels = 0 - del_off = 0 - wdiff.diff.diffs.each do |diff| - add_at = nil - add_to = nil - del_at = nil - deleted = "" - diff.each do |change| - pos = change[1] - if change[0] == "+" - add_at = pos + dels unless add_at - add_to = pos + dels - words_add += 1 - else - del_at = pos unless del_at - deleted << ' ' + h(change[2]) - words_del += 1 - end - end - if add_at - words[add_at] = '' + words[add_at] - words[add_to] = words[add_to] + '' - end - if del_at - words.insert del_at - del_off + dels + words_add, '' + deleted + '' - dels += 1 - del_off += words_del - words_del = 0 - end - end - simple_format_without_paragraph(words.join(' ')) - end end diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/application_helper.rb --- a/app/helpers/application_helper.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/application_helper.rb Thu Mar 03 12:02:03 2011 +0000 @@ -109,6 +109,20 @@ link_to(text, {:controller => 'repositories', :action => 'revision', :id => project, :rev => rev}, :title => l(:label_revision_id, format_revision(revision))) end + + # Generates a link to a message + def link_to_message(message, options={}, html_options = nil) + link_to( + h(truncate(message.subject, :length => 60)), + { :controller => 'messages', :action => 'show', + :board_id => message.board_id, + :id => message.root, + :r => (message.parent_id && message.id), + :anchor => (message.parent_id ? "message-#{message.id}" : nil) + }.merge(options), + html_options + ) + end # Generates a link to a project if active # Examples: @@ -588,16 +602,26 @@ # source:some/file#L120 -> Link to line 120 of the file # source:some/file@52#L120 -> Link to line 120 of the file's revision 52 # export:some/file -> Force the download of the file - # Forum messages: + # Forum messages: # message#1218 -> Link to message with id 1218 + # + # Links can refer other objects from other projects, using project identifier: + # identifier:r52 + # identifier:document:"Some document" + # identifier:version:1.0.0 + # identifier:source:some/file def parse_redmine_links(text, project, obj, attr, only_path, options) - text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| - leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8 + text.gsub!(%r{([\s\(,\-\[\>]|^)(!)?(([a-z0-9\-]+):)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|\]|<|$)}) do |m| + leading, esc, project_prefix, project_identifier, prefix, sep, identifier = $1, $2, $3, $4, $5, $7 || $9, $8 || $10 link = nil + if project_identifier + project = Project.visible.find_by_identifier(project_identifier) + end if esc.nil? if prefix.nil? && sep == 'r' - if project && (changeset = project.changesets.find_by_revision(identifier)) - link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, + # project.changesets.visible raises an SQL error because of a double join on repositories + if project && project.repository && (changeset = Changeset.visible.find_by_repository_id_and_revision(project.repository.id, identifier)) + link = link_to("#{project_prefix}r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100)) end @@ -611,24 +635,18 @@ :title => "#{truncate(issue.subject, :length => 100)} (#{issue.status.name})") end when 'document' - if document = Document.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if document = Document.visible.find_by_id(oid) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if version = Version.find_by_id(oid, :include => [:project], :conditions => Project.visible_by(User.current)) + if version = Version.visible.find_by_id(oid) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'message' - if message = Message.find_by_id(oid, :include => [:parent, {:board => :project}], :conditions => Project.visible_by(User.current)) - link = link_to h(truncate(message.subject, :length => 60)), {:only_path => only_path, - :controller => 'messages', - :action => 'show', - :board_id => message.board, - :id => message.root, - :anchor => (message.parent ? "message-#{message.id}" : nil)}, - :class => 'message' + if message = Message.visible.find_by_id(oid, :include => :parent) + link = link_to_message(message, {:only_path => only_path}, :class => 'message') end when 'project' if p = Project.visible.find_by_id(oid) @@ -640,26 +658,26 @@ name = identifier.gsub(%r{^"(.*)"$}, "\\1") case prefix when 'document' - if project && document = project.documents.find_by_title(name) + if project && document = project.documents.visible.find_by_title(name) link = link_to h(document.title), {:only_path => only_path, :controller => 'documents', :action => 'show', :id => document}, :class => 'document' end when 'version' - if project && version = project.versions.find_by_name(name) + if project && version = project.versions.visible.find_by_name(name) link = link_to h(version.name), {:only_path => only_path, :controller => 'versions', :action => 'show', :id => version}, :class => 'version' end when 'commit' - if project && (changeset = project.changesets.find(:first, :conditions => ["scmid LIKE ?", "#{name}%"])) - link = link_to h("#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, + if project && project.repository && (changeset = Changeset.visible.find(:first, :conditions => ["repository_id = ? AND scmid LIKE ?", project.repository.id, "#{name}%"])) + link = link_to h("#{project_prefix}#{name}"), {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.identifier}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100) end when 'source', 'export' - if project && project.repository + if project && project.repository && User.current.allowed_to?(:browse_repository, project) name =~ %r{^[/\\]*(.*?)(@([0-9a-f]+))?(#(L\d+))?$} path, rev, anchor = $1, $3, $5 - link = link_to h("#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, + link = link_to h("#{project_prefix}#{prefix}:#{name}"), {:controller => 'repositories', :action => 'entry', :id => project, :path => to_path_param(path), :rev => rev, :anchor => anchor, @@ -679,7 +697,7 @@ end end end - leading + (link || "#{prefix}#{sep}#{identifier}") + leading + (link || "#{project_prefix}#{prefix}#{sep}#{identifier}") end end @@ -876,6 +894,15 @@ '' end end + + # Returns the javascript tags that are included in the html layout head + def javascript_heads + tags = javascript_include_tag(:defaults) + unless User.current.pref.warn_on_leaving_unsaved == '0' + tags << "\n" + javascript_tag("Event.observe(window, 'load', function(){ new WarnLeavingUnsaved('#{escape_javascript( l(:text_warn_on_leaving_unsaved) )}'); });") + end + tags + end def favicon "" diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/issues_helper.rb --- a/app/helpers/issues_helper.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/issues_helper.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -106,13 +106,32 @@ # Project specific queries and global queries visible << (@project.nil? ? ["project_id IS NULL"] : ["project_id IS NULL OR project_id = ?", @project.id]) @sidebar_queries = Query.find(:all, - :select => 'id, name', + :select => 'id, name, is_public', :order => "name ASC", :conditions => visible.conditions) end @sidebar_queries end + def query_links(title, queries) + # links to #index on issues/show + url_params = controller_name == 'issues' ? {:controller => 'issues', :action => 'index', :project_id => @project} : params + + content_tag('h3', title) + + queries.collect {|query| + link_to(h(query.name), url_params.merge(:query_id => query)) + }.join('
') + end + + def render_sidebar_queries + out = '' + queries = sidebar_queries.select {|q| !q.is_public?} + out << query_links(l(:label_my_queries), queries) if queries.any? + queries = sidebar_queries.select {|q| q.is_public?} + out << query_links(l(:label_query_plural), queries) if queries.any? + out + end + def show_detail(detail, no_html=false) case detail.property when 'attr' @@ -164,7 +183,16 @@ end end - if !detail.value.blank? + if detail.property == 'attr' && detail.prop_key == 'description' + s = l(:text_journal_changed_no_detail, :label => label) + unless no_html + diff_link = link_to 'diff', + {:controller => 'journals', :action => 'diff', :id => detail.journal_id, :detail_id => detail.id}, + :title => l(:label_view_diff) + s << " (#{ diff_link })" + end + s + elsif !detail.value.blank? case detail.property when 'attr', 'cf' if !detail.old_value.blank? diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/messages_helper.rb --- a/app/helpers/messages_helper.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/messages_helper.rb Thu Mar 03 12:02:03 2011 +0000 @@ -16,14 +16,4 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. module MessagesHelper - - def link_to_message(message) - return '' unless message - link_to h(truncate(message.subject, :length => 60)), :controller => 'messages', - :action => 'show', - :board_id => message.board_id, - :id => message.root, - :r => (message.parent_id && message.id), - :anchor => (message.parent_id ? "message-#{message.id}" : nil) - end end diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/repositories_helper.rb --- a/app/helpers/repositories_helper.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/repositories_helper.rb Thu Mar 03 12:02:03 2011 +0000 @@ -25,13 +25,13 @@ revision.to_s end end - + def truncate_at_line_break(text, length = 255) if text text.gsub(%r{^(.{#{length}}[^\n]*)\n.+$}m, '\\1...') end end - + def render_properties(properties) unless properties.nil? || properties.empty? content = '' @@ -41,7 +41,7 @@ content_tag('ul', content, :class => 'properties') end end - + def render_changeset_changes changes = @changeset.changes.find(:all, :limit => 1000, :order => 'path').collect do |change| case change.action @@ -75,10 +75,10 @@ render_changes_tree(tree[:s]) end - + def render_changes_tree(tree) return '' if tree.nil? - + output = '' output << '' output end - + def to_utf8(str) + return str if str.blank? if str.respond_to?(:force_encoding) str.force_encoding('UTF-8') - return str if str.valid_encoding? else + # TODO: + # Japanese Shift_JIS(CP932) is not compatible with ASCII. + # UTF-7 and Japanese ISO-2022-JP are 7bits clean. return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii end - + @encodings ||= Setting.repositories_encodings.split(',').collect(&:strip) @encodings.each do |encoding| begin @@ -132,67 +135,118 @@ # do nothing here and try the next encoding end end + str = replace_invalid_utf8(str) + end + + def replace_invalid_utf8(str) + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end + end str end - - def repository_field_tags(form, repository) + + def repository_field_tags(form, repository) method = repository.class.name.demodulize.underscore + "_field_tags" - send(method, form, repository) if repository.is_a?(Repository) && respond_to?(method) && method != 'repository_field_tags' + if repository.is_a?(Repository) && + respond_to?(method) && method != 'repository_field_tags' + send(method, form, repository) + end end - + def scm_select_tag(repository) scm_options = [["--- #{l(:actionview_instancetag_blank_option)} ---", '']] Redmine::Scm::Base.all.each do |scm| - scm_options << ["Repository::#{scm}".constantize.scm_name, scm] if Setting.enabled_scm.include?(scm) || (repository && repository.class.name.demodulize == scm) + if Setting.enabled_scm.include?(scm) || + (repository && repository.class.name.demodulize == scm) + scm_options << ["Repository::#{scm}".constantize.scm_name, scm] + end end - select_tag('repository_scm', options_for_select(scm_options, repository.class.name.demodulize), :disabled => (repository && !repository.new_record?), - :onchange => remote_function(:url => { :controller => 'repositories', :action => 'edit', :id => @project }, :method => :get, :with => "Form.serialize(this.form)") + :onchange => remote_function( + :url => { + :controller => 'repositories', + :action => 'edit', + :id => @project + }, + :method => :get, + :with => "Form.serialize(this.form)") ) end - + def with_leading_slash(path) path.to_s.starts_with?('/') ? path : "/#{path}" end - + def without_leading_slash(path) path.gsub(%r{^/+}, '') end def subversion_field_tags(form, repository) - content_tag('p', form.text_field(:url, :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?)) + + content_tag('p', form.text_field(:url, :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + '
(file:///, http://, https://, svn://, svn+[tunnelscheme]://)') + content_tag('p', form.text_field(:login, :size => 30)) + - content_tag('p', form.password_field(:password, :size => 30, :name => 'ignore', - :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), - :onfocus => "this.value=''; this.name='repository[password]';", - :onchange => "this.name='repository[password]';")) + content_tag('p', form.password_field( + :password, :size => 30, :name => 'ignore', + :value => ((repository.new_record? || repository.password.blank?) ? '' : ('x'*15)), + :onfocus => "this.value=''; this.name='repository[password]';", + :onchange => "this.name='repository[password]';")) end def darcs_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.new_record?))) + + content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, + :label => 'Commit messages encoding', :required => true)) end - + def mercurial_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
local repository (e.g. /hgrepo, c:\hgrepo)' ) end def git_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Path to .git directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Path to repository', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?)) + + '
a bare and local repository (e.g. /gitrepo, c:\gitrepo)') end def cvs_field_tags(form, repository) - content_tag('p', form.text_field(:root_url, :label => 'CVSROOT', :size => 60, :required => true, :disabled => !repository.new_record?)) + - content_tag('p', form.text_field(:url, :label => 'Module', :size => 30, :required => true, :disabled => !repository.new_record?)) + content_tag('p', form.text_field(:root_url, + :label => 'CVSROOT', :size => 60, :required => true, + :disabled => !repository.new_record?)) + + content_tag('p', form.text_field(:url, :label => 'Module', + :size => 30, :required => true, + :disabled => !repository.new_record?)) + + content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, + :label => 'Commit messages encoding', :required => true)) end def bazaar_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.new_record?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.new_record?))) + + content_tag('p', form.select(:log_encoding, [nil] + Setting::ENCODINGS, + :label => 'Commit messages encoding', :required => true)) end - + def filesystem_field_tags(form, repository) - content_tag('p', form.text_field(:url, :label => 'Root directory', :size => 60, :required => true, :disabled => (repository && !repository.root_url.blank?))) + content_tag('p', form.text_field(:url, :label => 'Root directory', + :size => 60, :required => true, + :disabled => (repository && !repository.root_url.blank?))) + + content_tag('p', form.select( + :path_encoding, [nil] + Setting::ENCODINGS, + :label => 'Path encoding') + + '
Default: UTF-8') end end diff -r fca2657f4aa5 -r eeebe205a056 app/helpers/wiki_helper.rb --- a/app/helpers/wiki_helper.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/helpers/wiki_helper.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -29,41 +29,4 @@ end s end - - def html_diff(wdiff) - words = wdiff.words.collect{|word| h(word)} - words_add = 0 - words_del = 0 - dels = 0 - del_off = 0 - wdiff.diff.diffs.each do |diff| - add_at = nil - add_to = nil - del_at = nil - deleted = "" - diff.each do |change| - pos = change[1] - if change[0] == "+" - add_at = pos + dels unless add_at - add_to = pos + dels - words_add += 1 - else - del_at = pos unless del_at - deleted << ' ' + h(change[2]) - words_del += 1 - end - end - if add_at - words[add_at] = '' + words[add_at] - words[add_to] = words[add_to] + '' - end - if del_at - words.insert del_at - del_off + dels + words_add, '' + deleted + '' - dels += 1 - del_off += words_del - words_del = 0 - end - end - simple_format_without_paragraph(words.join(' ')) - end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/all-wcprops --- a/app/models/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,25 +1,25 @@ K 25 svn:wc:ra_dav:version-url V 35 -/svn/!svn/ver/4730/trunk/app/models +/svn/!svn/ver/4982/trunk/app/models END document.rb K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/3358/trunk/app/models/document.rb +/svn/!svn/ver/4759/trunk/app/models/document.rb END mail_handler.rb K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4682/trunk/app/models/mail_handler.rb +/svn/!svn/ver/4820/trunk/app/models/mail_handler.rb END repository.rb K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4712/trunk/app/models/repository.rb +/svn/!svn/ver/4982/trunk/app/models/repository.rb END time_entry.rb K 25 @@ -43,7 +43,7 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3492/trunk/app/models/auth_source_ldap.rb +/svn/!svn/ver/4950/trunk/app/models/auth_source_ldap.rb END principal.rb K 25 @@ -81,11 +81,17 @@ V 50 /svn/!svn/ver/3240/trunk/app/models/enumeration.rb END +member_role.rb +K 25 +svn:wc:ra_dav:version-url +V 50 +/svn/!svn/ver/3250/trunk/app/models/member_role.rb +END issue.rb K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4723/trunk/app/models/issue.rb +/svn/!svn/ver/4954/trunk/app/models/issue.rb END time_entry_activity_custom_field.rb K 25 @@ -93,12 +99,6 @@ V 71 /svn/!svn/ver/2952/trunk/app/models/time_entry_activity_custom_field.rb END -member_role.rb -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/3250/trunk/app/models/member_role.rb -END issue_priority.rb K 25 svn:wc:ra_dav:version-url @@ -111,29 +111,29 @@ V 55 /svn/!svn/ver/3169/trunk/app/models/message_observer.rb END +watcher.rb +K 25 +svn:wc:ra_dav:version-url +V 46 +/svn/!svn/ver/3167/trunk/app/models/watcher.rb +END wiki_content.rb K 25 svn:wc:ra_dav:version-url V 51 /svn/!svn/ver/4296/trunk/app/models/wiki_content.rb END -watcher.rb +enabled_module.rb K 25 svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/3167/trunk/app/models/watcher.rb +V 53 +/svn/!svn/ver/2970/trunk/app/models/enabled_module.rb END wiki_page.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4296/trunk/app/models/wiki_page.rb -END -enabled_module.rb -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/2970/trunk/app/models/enabled_module.rb +/svn/!svn/ver/4952/trunk/app/models/wiki_page.rb END comment.rb K 25 @@ -151,7 +151,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4553/trunk/app/models/query.rb +/svn/!svn/ver/4888/trunk/app/models/query.rb END member.rb K 25 @@ -169,7 +169,13 @@ K 25 svn:wc:ra_dav:version-url V 45 -/svn/!svn/ver/4373/trunk/app/models/mailer.rb +/svn/!svn/ver/4752/trunk/app/models/mailer.rb +END +journal.rb +K 25 +svn:wc:ra_dav:version-url +V 46 +/svn/!svn/ver/4062/trunk/app/models/journal.rb END workflow.rb K 25 @@ -177,12 +183,6 @@ V 47 /svn/!svn/ver/3709/trunk/app/models/workflow.rb END -journal.rb -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4062/trunk/app/models/journal.rb -END user_custom_field.rb K 25 svn:wc:ra_dav:version-url @@ -205,19 +205,19 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3417/trunk/app/models/setting.rb +/svn/!svn/ver/4899/trunk/app/models/setting.rb END user.rb K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4730/trunk/app/models/user.rb +/svn/!svn/ver/4936/trunk/app/models/user.rb END auth_source.rb K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/3745/trunk/app/models/auth_source.rb +/svn/!svn/ver/4950/trunk/app/models/auth_source.rb END news_observer.rb K 25 @@ -229,7 +229,7 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3373/trunk/app/models/message.rb +/svn/!svn/ver/4759/trunk/app/models/message.rb END wiki_redirect.rb K 25 @@ -271,7 +271,7 @@ K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/3774/trunk/app/models/attachment.rb +/svn/!svn/ver/4755/trunk/app/models/attachment.rb END group_custom_field.rb K 25 @@ -283,7 +283,7 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4599/trunk/app/models/issue_status.rb +/svn/!svn/ver/4895/trunk/app/models/issue_status.rb END time_entry_activity.rb K 25 @@ -300,8 +300,8 @@ journal_detail.rb K 25 svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/478/trunk/app/models/journal_detail.rb +V 53 +/svn/!svn/ver/4954/trunk/app/models/journal_detail.rb END group.rb K 25 @@ -319,7 +319,7 @@ K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4613/trunk/app/models/changeset.rb +/svn/!svn/ver/4962/trunk/app/models/changeset.rb END role.rb K 25 @@ -367,5 +367,5 @@ K 25 svn:wc:ra_dav:version-url V 54 -/svn/!svn/ver/1623/trunk/app/models/user_preference.rb +/svn/!svn/ver/4900/trunk/app/models/user_preference.rb END diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/entries --- a/app/models/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/models http://redmine.rubyforge.org/svn -2011-01-16T15:36:42.998302Z -4730 -jplang +2011-03-01T10:27:30.170724Z +4982 +tmaruyama @@ -35,11 +35,11 @@ -2010-09-23T14:37:44.471831Z -6edd75717c818c718387e30ec7aee840 -2010-02-01T18:57:12.733490Z -3358 -edavis10 +2011-03-03T11:05:09.000000Z +190c117fe2ccfc4b1ebe70ae94e0d779 +2011-01-23T16:47:59.732003Z +4759 +jplang has-props @@ -61,7 +61,7 @@ -1995 +2197 mail_handler.rb file @@ -69,11 +69,11 @@ -2011-01-13T14:09:10.000000Z -122f4a542fc3b0425bacdf2365e83004 -2011-01-10T19:57:41.641529Z -4682 -jplang +2011-03-03T11:40:18.000000Z +ed655ccb5c306f548b3997d2dd3e3d60 +2011-02-12T10:08:11.630366Z +4820 +jbbarth has-props @@ -95,7 +95,7 @@ -13721 +13778 repository.rb file @@ -103,10 +103,10 @@ -2011-01-19T15:03:32.000000Z -ef582464c7d04e61c0149608ea3dd11c -2011-01-14T22:51:12.547821Z -4712 +2011-03-03T11:40:18.000000Z +a3fb46324c320aab8869e523c2a35d2a +2011-03-01T10:27:30.170724Z +4982 tmaruyama has-props @@ -129,7 +129,7 @@ -7023 +8497 time_entry.rb file @@ -137,7 +137,7 @@ -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:09.000000Z db327d70b8e3bcf04992bf7c69522467 2011-01-14T18:04:16.470040Z 4708 @@ -171,7 +171,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 441a5648e149e471c91928dc7f3f29a6 2009-06-02T17:24:50.360628Z 2778 @@ -205,7 +205,7 @@ -2010-11-19T13:04:46.956816Z +2011-03-03T11:05:09.000000Z 7d895b3a013ce8f4e63dd4e7aab7eb20 2010-09-28T20:20:00.843023Z 4221 @@ -239,10 +239,10 @@ -2010-09-23T14:37:44.467732Z -87f2ff0401993963de36fe7502cd6949 -2010-02-26T09:13:12.187275Z -3492 +2011-03-03T11:40:18.000000Z +82898965a0c07d8fa25a52cfced3139f +2011-02-26T13:09:25.657748Z +4950 jplang has-props @@ -273,7 +273,7 @@ -2010-09-24T12:48:25.923798Z +2011-03-03T11:05:09.000000Z 01332c0957f952b76c01e7c7ebd112f0 2010-09-10T18:46:23.747988Z 4076 @@ -307,7 +307,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z 6bf31c0491d87fff1481a91519f66363 2009-11-15T15:22:55.021661Z 3064 @@ -341,7 +341,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z cd405a055651d29541f2ebcf4e22f8dc 2007-03-15T22:11:02.843262Z 337 @@ -375,7 +375,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z da42817b3f290549a03ada82a93dc5d0 2007-12-07T10:26:07.864320Z 955 @@ -409,7 +409,7 @@ -2010-09-23T14:37:44.467732Z +2011-03-03T11:05:09.000000Z 622826f16c01373c631876eb1e480a65 2010-07-24T00:19:32.307471Z 3860 @@ -443,7 +443,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 90ec955317994a58df9a5a7f85b810e7 2009-12-25T17:13:58.090736Z 3240 @@ -477,10 +477,10 @@ -2011-01-19T15:03:32.000000Z -910893e1e82a08d072a65d7c7c3dc8a8 -2011-01-15T14:12:18.630628Z -4723 +2011-03-03T11:40:18.000000Z +de5e44263227d075bddb23d8f478e24d +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -503,7 +503,7 @@ -32309 +32300 member_role.rb file @@ -511,7 +511,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 95caba31fc55fea2d5ff257e70cf14b2 2009-12-26T16:14:55.591181Z 3250 @@ -545,7 +545,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z d5549b2847a255d4bdd7185a670988b5 2009-10-21T22:35:03.091600Z 2952 @@ -579,7 +579,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 028b9a9be35e74573921f9865f953439 2009-12-25T17:13:58.090736Z 3240 @@ -613,7 +613,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 50c2305c38ffecfb2138cd437e1c255c 2009-12-13T14:26:54.396245Z 3169 @@ -647,7 +647,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z c72443f206052fafae720378fba40163 2009-12-13T12:39:22.716082Z 3167 @@ -681,7 +681,7 @@ -2010-11-19T13:04:46.956816Z +2011-03-03T11:05:09.000000Z 3cac6a9c934a472fcbdf99cd00e5bfbb 2010-10-27T16:27:06.240747Z 4296 @@ -715,7 +715,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 56631baa5560f63cbb213855761c8fcc 2009-10-25T10:31:01.135799Z 2970 @@ -749,11 +749,11 @@ -2010-11-19T13:04:46.956816Z -a45da72d99c7bc05ce93eb86205942e5 -2010-10-27T16:27:06.240747Z -4296 -edavis10 +2011-03-03T11:40:18.000000Z +f95a3be2b4090d0bd5b7d74b9e1d0a7c +2011-02-27T12:35:31.414622Z +4952 +jplang has-props @@ -775,7 +775,7 @@ -6720 +6539 comment.rb file @@ -783,7 +783,7 @@ -2010-09-23T14:37:44.467732Z +2011-03-03T11:05:09.000000Z 0ca314834c39ddc12f2993caf5722e79 2007-04-25T15:06:20.062636Z 479 @@ -817,7 +817,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z a6804cb0c0abc6de72a184e7384ed36d 2009-05-17T09:55:13.601447Z 2749 @@ -851,10 +851,10 @@ -2011-01-13T14:09:10.000000Z -05f6de2ec101b91c331e3b69602f73de -2010-12-21T21:46:54.984442Z -4553 +2011-03-03T11:40:18.000000Z +886a34f5ef28f29a9eadb6e24dee89d6 +2011-02-20T13:03:32.835478Z +4888 jplang has-props @@ -877,7 +877,7 @@ -26177 +26359 member.rb file @@ -885,7 +885,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 84d28844bbac90dab2c56a27ed58db18 2010-08-09T05:10:00.803890Z 3929 @@ -919,7 +919,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 60dadf29c4da2a4e97f463a647b8e98d 2009-10-21T22:34:22.740755Z 2945 @@ -953,10 +953,10 @@ -2010-11-19T13:04:46.956816Z -1c4b2494e527ab830998b06f67b18f52 -2010-11-06T13:23:23.456511Z -4373 +2011-03-03T11:05:09.000000Z +f7340d6a500dabc6fa0aae801539d5e5 +2011-01-23T10:22:00.456857Z +4752 jplang has-props @@ -979,7 +979,7 @@ -18490 +18498 journal.rb file @@ -987,7 +987,7 @@ -2010-09-24T12:48:25.923798Z +2011-03-03T11:05:09.000000Z f3797cd6a4b7e4d256aba15e317e98b1 2010-09-05T22:57:20.669640Z 4062 @@ -1021,7 +1021,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z 4561dfcb12b3fa066a9516c59a9eef94 2010-04-30T12:19:51.238583Z 3709 @@ -1055,7 +1055,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 47067c42f4d6607335adf75d11c3323b 2007-03-12T17:59:02.654744Z 333 @@ -1089,7 +1089,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 7dbc4f88d9fcd8f1057ea6d5982a1099 2008-07-22T18:52:00.008047Z 1689 @@ -1123,7 +1123,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z a81e0b41100d375e6327075ab1f59242 2010-12-31T15:30:50.544770Z 4599 @@ -1157,11 +1157,11 @@ -2010-09-23T14:37:44.487730Z -5a0ad520fc95e7fefd2c6e6a1c9c3e76 -2010-02-12T22:08:02.981984Z -3417 -edavis10 +2011-03-03T11:40:18.000000Z +2815413f18c2ff6c015f0742ac28710a +2011-02-21T09:41:34.953350Z +4899 +tmaruyama has-props @@ -1183,7 +1183,7 @@ -5164 +5188 user.rb file @@ -1191,10 +1191,10 @@ -2011-01-19T15:03:32.000000Z -f1782d2190897c738b4abde29795c25c -2011-01-16T15:36:42.998302Z -4730 +2011-03-03T11:40:18.000000Z +8616fc89354fef549fdfc741600c1118 +2011-02-23T17:27:31.762248Z +4936 jplang has-props @@ -1217,7 +1217,7 @@ -17792 +19152 auth_source.rb file @@ -1225,11 +1225,11 @@ -2010-09-23T14:37:44.467732Z -837db713425e094779466a392a668679 -2010-05-23T03:16:37.499264Z -3745 -edavis10 +2011-03-03T11:40:18.000000Z +f746a9534698bb8db5abf4bb7c9dd5ef +2011-02-26T13:09:25.657748Z +4950 +jplang has-props @@ -1251,7 +1251,7 @@ -1811 +2013 news_observer.rb file @@ -1259,7 +1259,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z b98015db4679606ee5f8d75e55574745 2009-03-28T00:38:57.780983Z 2637 @@ -1293,10 +1293,10 @@ -2010-09-23T14:37:44.475780Z -66b09263cf7988c661307523991d83d5 -2010-02-06T12:54:13.653502Z -3373 +2011-03-03T11:05:09.000000Z +82f0a68c26f05f4ed6aa94418a447a00 +2011-01-23T16:47:59.732003Z +4759 jplang has-props @@ -1319,7 +1319,7 @@ -3576 +3789 wiki_redirect.rb file @@ -1327,7 +1327,7 @@ -2010-09-23T14:37:44.491776Z +2011-03-03T11:05:09.000000Z 4e4c64bab677a9e081fc1230ff6a3773 2007-09-09T17:05:38.846724Z 720 @@ -1361,7 +1361,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z e79f69fb89a7015471e190050ba97847 2010-12-04T18:10:02.635321Z 4467 @@ -1395,7 +1395,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z b76852d33bcfab19bb6c4e3e727da0ed 2009-03-28T00:38:57.780983Z 2637 @@ -1429,7 +1429,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 9fdcb569734799b2fface5b9c6207856 2010-12-23T14:58:52.304263Z 4574 @@ -1463,7 +1463,7 @@ -2010-09-23T14:37:44.475780Z +2011-03-03T11:05:09.000000Z 478dceec50480a17a7f2c321fc59e794 2009-10-21T22:34:22.740755Z 2945 @@ -1497,7 +1497,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z aaa3cd558c500d4db3bb506878e12fc1 2010-11-27T12:42:11.793330Z 4431 @@ -1531,11 +1531,11 @@ -2010-09-23T14:37:44.467732Z -56226fcf13a57b18ed9faf979b5cf1bc -2010-06-19T03:54:28.250424Z -3774 -edavis10 +2011-03-03T11:05:09.000000Z +527c189ff333588f46ed31db163dcc5c +2011-01-23T10:41:43.320139Z +4755 +jplang has-props @@ -1557,7 +1557,7 @@ -6702 +6756 group_custom_field.rb file @@ -1565,7 +1565,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z 2c07c440361210f71d2eb821ce95ce12 2009-09-12T08:36:46.650954Z 2869 @@ -1599,10 +1599,10 @@ -2011-01-13T14:09:10.000000Z -b659d10bfe8c0debcf69013051422682 -2010-12-31T15:30:50.544770Z -4599 +2011-03-03T11:40:18.000000Z +4670d7c2c9ef9e23b0812e79c84c02de +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -1625,7 +1625,7 @@ -3392 +3396 time_entry_activity.rb file @@ -1633,7 +1633,7 @@ -2010-09-23T14:37:44.487730Z +2011-03-03T11:05:09.000000Z 2508e3911e5bb016a9925502244b358f 2009-12-25T17:13:58.090736Z 3240 @@ -1667,7 +1667,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z e7d08a30fb7e14fd7486a7d7e04efccb 2010-12-31T15:30:50.544770Z 4599 @@ -1701,10 +1701,10 @@ -2010-09-23T14:37:44.475780Z -4b700215d4c3bf72071a45448fa2b0e3 -2007-04-24T18:26:42.003879Z -478 +2011-03-03T11:40:18.000000Z +5f341c076b3e061541111187994969c8 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -1727,7 +1727,7 @@ -1028 +864 group.rb file @@ -1735,7 +1735,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z a6be23c5316bf4e17cd5601624202b18 2010-11-27T14:46:51.426568Z 4437 @@ -1769,7 +1769,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z d4026d660fcb2601834d26268468aec2 2009-03-28T00:38:57.780983Z 2637 @@ -1803,10 +1803,10 @@ -2011-01-13T14:09:10.000000Z -31b78fcec84fafc7077e80a8782e8889 -2011-01-02T09:45:05.291687Z -4613 +2011-03-03T11:40:18.000000Z +949462e61d78ec8bd5afc1af77363985 +2011-02-28T12:09:32.515358Z +4962 tmaruyama has-props @@ -1829,7 +1829,7 @@ -8976 +9103 role.rb file @@ -1837,7 +1837,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 15c62eb20c0904d6061c427984ea5ad6 2010-12-31T15:30:50.544770Z 4599 @@ -1871,7 +1871,7 @@ -2010-09-23T14:37:44.479733Z +2011-03-03T11:05:09.000000Z 926ef98901f13ba13688fdc3ab0184fc 2007-03-12T17:59:02.654744Z 333 @@ -1905,7 +1905,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z c1467b11ffdf01173add19cbdcbecccd 2011-01-10T18:32:04.408692Z 4680 @@ -1939,7 +1939,7 @@ -2010-11-19T13:04:46.960863Z +2011-03-03T11:05:09.000000Z 6938d61d0f9e1fc190bb1d0e6c05546e 2010-11-07T14:15:01.891476Z 4382 @@ -1973,7 +1973,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 85527d6304192255d188255b78b10fb5 2011-01-06T20:36:31.826591Z 4645 @@ -2007,7 +2007,7 @@ -2010-09-23T14:37:44.471831Z +2011-03-03T11:05:09.000000Z aeaf540cf9f940cbec4ddfc984dd6af5 2009-12-25T17:13:58.090736Z 3240 @@ -2041,7 +2041,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z ce0648ce457209d4a582b3076287bf01 2010-12-12T17:00:52.100205Z 4505 @@ -2075,10 +2075,10 @@ -2010-09-23T14:37:44.487730Z -41ea06399352eb7b8c2903357abe1ab0 -2008-07-04T17:58:14.743502Z -1623 +2011-03-03T11:40:18.000000Z +feac9af79af67a78c767bd3def262255 +2011-02-21T09:53:29.844413Z +4900 jplang has-props @@ -2101,5 +2101,5 @@ -1513 +1671 diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/attachment.rb.svn-base --- a/app/models/.svn/text-base/attachment.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/attachment.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -43,7 +43,7 @@ "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} cattr_accessor :storage_path - @@storage_path = "#{RAILS_ROOT}/files" + @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files" def validate if self.filesize > Setting.attachment_max_size.to_i.kilobytes diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/auth_source.rb.svn-base --- a/app/models/.svn/text-base/auth_source.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/auth_source.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AuthSource < ActiveRecord::Base + include Redmine::Ciphering + has_many :users validates_presence_of :name @@ -31,6 +33,14 @@ def auth_method_name "Abstract" end + + def account_password + read_ciphered_attribute(:account_password) + end + + def account_password=(arg) + write_ciphered_attribute(:account_password, arg) + end def allow_password_changes? self.class.allow_password_changes? diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/auth_source_ldap.rb.svn-base --- a/app/models/.svn/text-base/auth_source_ldap.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/auth_source_ldap.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -20,8 +20,8 @@ class AuthSourceLdap < AuthSource validates_presence_of :host, :port, :attr_login - validates_length_of :name, :host, :account_password, :maximum => 60, :allow_nil => true - validates_length_of :account, :base_dn, :maximum => 255, :allow_nil => true + validates_length_of :name, :host, :maximum => 60, :allow_nil => true + validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true validates_numericality_of :port, :only_integer => true diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/changeset.rb.svn-base --- a/app/models/.svn/text-base/changeset.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/changeset.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -56,10 +56,6 @@ revision.to_s end end - - def comments=(comment) - write_attribute(:comments, Changeset.normalize_comments(comment)) - end def committed_on=(date) self.commit_date = date @@ -75,10 +71,6 @@ end end - def committer=(arg) - write_attribute(:committer, self.class.to_utf8(arg.to_s)) - end - def project repository.project end @@ -88,20 +80,24 @@ end def before_create - self.user = repository.find_committer_user(committer) + self.committer = self.class.to_utf8(self.committer, repository.repo_log_encoding) + self.comments = self.class.normalize_comments(self.comments, repository.repo_log_encoding) + self.user = repository.find_committer_user(self.committer) end - + def after_create scan_comment_for_issue_ids end TIMELOG_RE = / ( - (\d+([.,]\d+)?)h? + ((\d+)(h|hours?))((\d+)(m|min)?)? + | + ((\d+)(h|hours?|m|min)) | (\d+):(\d+) | - ((\d+)(h|hours?))?((\d+)(m|min)?)? + (\d+([\.,]\d+)?)h? ) /x @@ -161,11 +157,6 @@ @next ||= Changeset.find(:first, :conditions => ['id > ? AND repository_id = ?', self.id, self.repository_id], :order => 'id ASC') end - # Strips and reencodes a commit log before insertion into the database - def self.normalize_comments(str) - to_utf8(str.to_s.strip) - end - # Creates a new Change from it's common parameters def create_change(change) Change.create(:changeset => self, @@ -174,7 +165,7 @@ :from_path => change[:from_path], :from_revision => change[:from_revision]) end - + private # Finds an issue that can be referenced by the commit message @@ -244,15 +235,17 @@ return @short_comments, @long_comments end - def self.to_utf8(str) - if str.respond_to?(:force_encoding) - str.force_encoding('UTF-8') - return str if str.valid_encoding? - else - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii - end + public - encoding = Setting.commit_logs_encoding.to_s.strip + # Strips and reencodes a commit log before insertion into the database + def self.normalize_comments(str, encoding) + Changeset.to_utf8(str.to_s.strip, encoding) + end + + private + + def self.to_utf8(str, encoding) + return str if str.blank? unless encoding.blank? || encoding == 'UTF-8' begin str = Iconv.conv('UTF-8', encoding, str) @@ -260,12 +253,20 @@ # do nothing here end end - # removes invalid UTF8 sequences - begin - Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] - rescue Iconv::InvalidEncoding - # "UTF-8//IGNORE" is not supported on some OS - str + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end + else + # removes invalid UTF8 sequences + begin + str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] + rescue Iconv::InvalidEncoding + # "UTF-8//IGNORE" is not supported on some OS + end end + str end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/document.rb.svn-base --- a/app/models/.svn/text-base/document.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/document.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -29,6 +29,9 @@ validates_presence_of :project, :title, :category validates_length_of :title, :maximum => 60 + named_scope :visible, lambda {|*args| { :include => :project, + :conditions => Project.allowed_to_condition(args.first || User.current, :view_documents) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/issue.rb.svn-base --- a/app/models/.svn/text-base/issue.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/issue.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -34,7 +34,7 @@ has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all - acts_as_nested_set :scope => 'root_id' + acts_as_nested_set :scope => 'root_id', :dependent => :destroy acts_as_attachable :after_remove => :attachment_removed acts_as_customizable acts_as_watchable @@ -89,7 +89,6 @@ before_create :default_assign before_save :close_duplicates, :update_done_ratio_from_issue_status after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal - after_destroy :destroy_children after_destroy :update_parent_attributes # Returns true if usr or current user is allowed to view the issue @@ -423,7 +422,12 @@ # Returns an array of status that user is able to apply def new_statuses_allowed_to(user, include_default=false) - statuses = status.find_new_statuses_allowed_to(user.roles_for_project(project), tracker) + statuses = status.find_new_statuses_allowed_to( + user.roles_for_project(project), + tracker, + author == user, + assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id + ) statuses << status unless statuses.empty? statuses << IssueStatus.default if include_default statuses = statuses.uniq.sort @@ -758,14 +762,6 @@ end end - def destroy_children - unless leaf? - children.each do |child| - child.destroy - end - end - end - # Update issues so their versions are not pointing to a # fixed_version that is not shared with the issue's project def self.update_versions(conditions=nil) @@ -833,7 +829,7 @@ def create_journal if @current_journal # attributes changes - (Issue.column_names - %w(id description root_id lft rgt lock_version created_on updated_on)).each {|c| + (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| @current_journal.details << JournalDetail.new(:property => 'attr', :prop_key => c, :old_value => @issue_before_change.send(c), diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/issue_status.rb.svn-base --- a/app/models/.svn/text-base/issue_status.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/issue_status.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -50,10 +50,16 @@ # Returns an array of all statuses the given role can switch to # Uses association cache when called more than one time - def new_statuses_allowed_to(roles, tracker) + def new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker role_ids = roles.collect(&:id) - new_statuses = workflows.select {|w| role_ids.include?(w.role_id) && w.tracker_id == tracker.id}.collect{|w| w.new_status}.compact.sort + transitions = workflows.select do |w| + role_ids.include?(w.role_id) && + w.tracker_id == tracker.id && + (author || !w.author) && + (assignee || !w.assignee) + end + transitions.collect{|w| w.new_status}.compact.sort else [] end @@ -61,24 +67,19 @@ # Same thing as above but uses a database query # More efficient than the previous method if called just once - def find_new_statuses_allowed_to(roles, tracker) + def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker + conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id} + conditions[:author] = false unless author + conditions[:assignee] = false unless assignee + workflows.find(:all, :include => :new_status, - :conditions => { :role_id => roles.collect(&:id), - :tracker_id => tracker.id}).collect{ |w| w.new_status }.compact.sort + :conditions => conditions).collect{|w| w.new_status}.compact.sort else [] end end - - def new_status_allowed_to?(status, roles, tracker) - if status && roles && tracker - !workflows.find(:first, :conditions => {:new_status_id => status.id, :role_id => roles.collect(&:id), :tracker_id => tracker.id}).nil? - else - false - end - end def <=>(status) position <=> status.position diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/journal_detail.rb.svn-base --- a/app/models/.svn/text-base/journal_detail.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/journal_detail.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,9 +17,4 @@ class JournalDetail < ActiveRecord::Base belongs_to :journal - - def before_save - self.value = value[0..254] if value && value.is_a?(String) - self.old_value = old_value[0..254] if old_value && old_value.is_a?(String) - end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/mail_handler.rb.svn-base --- a/app/models/.svn/text-base/mail_handler.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/mail_handler.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -100,7 +100,7 @@ elsif m = email.subject.match(MESSAGE_REPLY_SUBJECT_RE) receive_message_reply(m[1].to_i) else - receive_issue + dispatch_to_default end rescue ActiveRecord::RecordInvalid => e # TODO: send a email to the user @@ -113,6 +113,10 @@ logger.error "MailHandler: unauthorized attempt from #{user}" if logger false end + + def dispatch_to_default + receive_issue + end # Creates a new issue def receive_issue diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/mailer.rb.svn-base --- a/app/models/.svn/text-base/mailer.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/mailer.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -296,7 +296,7 @@ if raise_errors raise e elsif mylogger - mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/email.yml." + mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/configuration.yml." end ensure self.class.raise_delivery_errors = raise_errors diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/message.rb.svn-base --- a/app/models/.svn/text-base/message.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/message.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -42,6 +42,9 @@ after_create :add_author_as_watcher + named_scope :visible, lambda {|*args| { :include => {:board => :project}, + :conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/query.rb.svn-base --- a/app/models/.svn/text-base/query.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/query.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -566,9 +566,19 @@ sql = '' case operator when "=" - sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + if value.any? + sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + else + # IN an empty set + sql = "1=0" + end when "!" - sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + if value.any? + sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + else + # NOT IN an empty set + sql = "1=1" + end when "!*" sql = "#{db_table}.#{db_field} IS NULL" sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/repository.rb.svn-base --- a/app/models/.svn/text-base/repository.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/repository.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Repository < ActiveRecord::Base + include Redmine::Ciphering + belongs_to :project has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC" has_many :changes, :through => :changesets @@ -24,29 +26,43 @@ # has_many :changesets, :dependent => :destroy is too slow for big repositories before_destroy :clear_changesets + validates_length_of :password, :maximum => 255, :allow_nil => true # Checks if the SCM is enabled when creating a repository validate_on_create { |r| r.errors.add(:type, :invalid) unless Setting.enabled_scm.include?(r.class.name.demodulize) } - + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) end - + # Removes leading and trailing whitespace def root_url=(arg) write_attribute(:root_url, arg ? arg.to_s.strip : nil) end + + def password + read_ciphered_attribute(:password) + end + + def password=(arg) + write_ciphered_attribute(:password, arg) + end + + def scm_adapter + self.class.scm_adapter_class + end def scm - @scm ||= self.scm_adapter.new url, root_url, login, password + @scm ||= self.scm_adapter.new(url, root_url, + login, password, path_encoding) update_attribute(:root_url, @scm.root_url) if root_url.blank? @scm end - + def scm_name self.class.scm_name end - + def supports_cat? scm.supports_cat? end @@ -173,18 +189,27 @@ user end end - + + def repo_log_encoding + encoding = log_encoding.to_s.strip + encoding.blank? ? 'UTF-8' : encoding + end + # Fetches new changesets for all repositories of active projects # Can be called periodically by an external script # eg. ruby script/runner "Repository.fetch_changesets" def self.fetch_changesets Project.active.has_module(:repository).find(:all, :include => :repository).each do |project| if project.repository - project.repository.fetch_changesets + begin + project.repository.fetch_changesets + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during fetching changesets: #{e.message}" + end end end end - + # scan changeset comments to find related and fixed issues for all repositories def self.scan_changesets_for_issue_ids find(:all).each(&:scan_changesets_for_issue_ids) @@ -197,16 +222,50 @@ def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end - + def self.factory(klass_name, *args) klass = "Repository::#{klass_name}".constantize klass.new(*args) rescue nil end - + + def self.scm_adapter_class + nil + end + + def self.scm_command + ret = "" + begin + ret = self.scm_adapter_class.client_command if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get command: #{e.message}" + end + ret + end + + def self.scm_version_string + ret = "" + begin + ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get version string: #{e.message}" + end + ret + end + + def self.scm_available + ret = false + begin + ret = self.scm_adapter_class.client_available if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get scm available: #{e.message}" + end + ret + end + private - + def before_save # Strips url and root_url url.strip! diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/setting.rb.svn-base --- a/app/models/.svn/text-base/setting.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/setting.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -65,6 +65,7 @@ UTF-16LE EUC-JP Shift_JIS + CP932 GB18030 GBK ISCII91 diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/user.rb.svn-base --- a/app/models/.svn/text-base/user.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/user.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -83,7 +83,9 @@ def before_save # update hashed_password if password was set - self.hashed_password = User.hash_password(self.password) if self.password && self.auth_source_id.blank? + if self.password && self.auth_source_id.blank? + salt_password(password) + end end def reload(*args) @@ -121,7 +123,7 @@ return nil unless user.auth_source.authenticate(login, password) else # authentication with local password - return nil unless User.hash_password(password) == user.hashed_password + return nil unless user.check_password?(password) end else # user is not yet registered, try to authenticate with available sources @@ -200,13 +202,21 @@ update_attribute(:status, STATUS_LOCKED) end + # Returns true if +clear_password+ is the correct user's password, otherwise false def check_password?(clear_password) if auth_source_id.present? auth_source.authenticate(self.login, clear_password) else - User.hash_password(clear_password) == self.hashed_password + User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password end end + + # Generates a random salt and computes hashed_password for +clear_password+ + # The hashed password is stored in the following form: SHA1(salt + SHA1(password)) + def salt_password(clear_password) + self.salt = User.generate_salt + self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}") + end # Does the backend storage allow this user to change their password? def change_password_allowed? @@ -424,7 +434,12 @@ when 'all' true when 'selected' - # Handled by the Project + # user receives notifications for created/assigned issues on unselected projects + if object.is_a?(Issue) && (object.author == self || object.assigned_to == self) + true + else + false + end when 'none' false when 'only_my_events' @@ -468,6 +483,20 @@ end anonymous_user end + + # Salts all existing unsalted passwords + # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password)) + # This method is used in the SaltPasswords migration and is to be kept as is + def self.salt_unsalted_passwords! + transaction do + User.find_each(:conditions => "salt IS NULL OR salt = ''") do |user| + next if user.hashed_password.blank? + salt = User.generate_salt + hashed_password = User.hash_password("#{salt}#{user.hashed_password}") + User.update_all("salt = '#{salt}', hashed_password = '#{hashed_password}'", ["id = ?", user.id] ) + end + end + end protected @@ -509,6 +538,12 @@ def self.hash_password(clear_password) Digest::SHA1.hexdigest(clear_password || "") end + + # Returns a 128bits random salt as a hex string (32 chars long) + def self.generate_salt + ActiveSupport::SecureRandom.hex(16) + end + end class AnonymousUser < User diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/user_preference.rb.svn-base --- a/app/models/.svn/text-base/user_preference.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/user_preference.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -51,4 +51,7 @@ def comments_sorting; self[:comments_sorting] end def comments_sorting=(order); self[:comments_sorting]=order end + + def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end + def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/.svn/text-base/wiki_page.rb.svn-base --- a/app/models/.svn/text-base/wiki_page.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/.svn/text-base/wiki_page.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -149,17 +149,13 @@ end end -class WikiDiff - attr_reader :diff, :words, :content_to, :content_from +class WikiDiff < Redmine::Helpers::Diff + attr_reader :content_to, :content_from def initialize(content_to, content_from) @content_to = content_to @content_from = content_from - @words = content_to.text.split(/(\s+)/) - @words = @words.select {|word| word != ' '} - words_from = content_from.text.split(/(\s+)/) - words_from = words_from.select {|word| word != ' '} - @diff = words_from.diff @words + super(content_to.text, content_from.text) end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/attachment.rb --- a/app/models/attachment.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/attachment.rb Thu Mar 03 12:02:03 2011 +0000 @@ -43,7 +43,7 @@ "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} cattr_accessor :storage_path - @@storage_path = "#{RAILS_ROOT}/files" + @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files" def validate if self.filesize > Setting.attachment_max_size.to_i.kilobytes diff -r fca2657f4aa5 -r eeebe205a056 app/models/auth_source.rb --- a/app/models/auth_source.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/auth_source.rb Thu Mar 03 12:02:03 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class AuthSource < ActiveRecord::Base + include Redmine::Ciphering + has_many :users validates_presence_of :name @@ -31,6 +33,14 @@ def auth_method_name "Abstract" end + + def account_password + read_ciphered_attribute(:account_password) + end + + def account_password=(arg) + write_ciphered_attribute(:account_password, arg) + end def allow_password_changes? self.class.allow_password_changes? diff -r fca2657f4aa5 -r eeebe205a056 app/models/auth_source_ldap.rb --- a/app/models/auth_source_ldap.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/auth_source_ldap.rb Thu Mar 03 12:02:03 2011 +0000 @@ -20,8 +20,8 @@ class AuthSourceLdap < AuthSource validates_presence_of :host, :port, :attr_login - validates_length_of :name, :host, :account_password, :maximum => 60, :allow_nil => true - validates_length_of :account, :base_dn, :maximum => 255, :allow_nil => true + validates_length_of :name, :host, :maximum => 60, :allow_nil => true + validates_length_of :account, :account_password, :base_dn, :maximum => 255, :allow_nil => true validates_length_of :attr_login, :attr_firstname, :attr_lastname, :attr_mail, :maximum => 30, :allow_nil => true validates_numericality_of :port, :only_integer => true diff -r fca2657f4aa5 -r eeebe205a056 app/models/changeset.rb --- a/app/models/changeset.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/changeset.rb Thu Mar 03 12:02:03 2011 +0000 @@ -56,10 +56,6 @@ revision.to_s end end - - def comments=(comment) - write_attribute(:comments, Changeset.normalize_comments(comment)) - end def committed_on=(date) self.commit_date = date @@ -75,10 +71,6 @@ end end - def committer=(arg) - write_attribute(:committer, self.class.to_utf8(arg.to_s)) - end - def project repository.project end @@ -88,20 +80,24 @@ end def before_create - self.user = repository.find_committer_user(committer) + self.committer = self.class.to_utf8(self.committer, repository.repo_log_encoding) + self.comments = self.class.normalize_comments(self.comments, repository.repo_log_encoding) + self.user = repository.find_committer_user(self.committer) end - + def after_create scan_comment_for_issue_ids end TIMELOG_RE = / ( - (\d+([.,]\d+)?)h? + ((\d+)(h|hours?))((\d+)(m|min)?)? + | + ((\d+)(h|hours?|m|min)) | (\d+):(\d+) | - ((\d+)(h|hours?))?((\d+)(m|min)?)? + (\d+([\.,]\d+)?)h? ) /x @@ -161,11 +157,6 @@ @next ||= Changeset.find(:first, :conditions => ['id > ? AND repository_id = ?', self.id, self.repository_id], :order => 'id ASC') end - # Strips and reencodes a commit log before insertion into the database - def self.normalize_comments(str) - to_utf8(str.to_s.strip) - end - # Creates a new Change from it's common parameters def create_change(change) Change.create(:changeset => self, @@ -174,7 +165,7 @@ :from_path => change[:from_path], :from_revision => change[:from_revision]) end - + private # Finds an issue that can be referenced by the commit message @@ -244,15 +235,17 @@ return @short_comments, @long_comments end - def self.to_utf8(str) - if str.respond_to?(:force_encoding) - str.force_encoding('UTF-8') - return str if str.valid_encoding? - else - return str if /\A[\r\n\t\x20-\x7e]*\Z/n.match(str) # for us-ascii - end + public - encoding = Setting.commit_logs_encoding.to_s.strip + # Strips and reencodes a commit log before insertion into the database + def self.normalize_comments(str, encoding) + Changeset.to_utf8(str.to_s.strip, encoding) + end + + private + + def self.to_utf8(str, encoding) + return str if str.blank? unless encoding.blank? || encoding == 'UTF-8' begin str = Iconv.conv('UTF-8', encoding, str) @@ -260,12 +253,20 @@ # do nothing here end end - # removes invalid UTF8 sequences - begin - Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] - rescue Iconv::InvalidEncoding - # "UTF-8//IGNORE" is not supported on some OS - str + if str.respond_to?(:force_encoding) + str.force_encoding('UTF-8') + if ! str.valid_encoding? + str = str.encode("US-ASCII", :invalid => :replace, + :undef => :replace, :replace => '?').encode("UTF-8") + end + else + # removes invalid UTF8 sequences + begin + str = Iconv.conv('UTF-8//IGNORE', 'UTF-8', str + ' ')[0..-3] + rescue Iconv::InvalidEncoding + # "UTF-8//IGNORE" is not supported on some OS + end end + str end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/document.rb --- a/app/models/document.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/document.rb Thu Mar 03 12:02:03 2011 +0000 @@ -29,6 +29,9 @@ validates_presence_of :project, :title, :category validates_length_of :title, :maximum => 60 + named_scope :visible, lambda {|*args| { :include => :project, + :conditions => Project.allowed_to_condition(args.first || User.current, :view_documents) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_documents, project) end diff -r fca2657f4aa5 -r eeebe205a056 app/models/issue.rb --- a/app/models/issue.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/issue.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -34,7 +34,7 @@ has_many :relations_from, :class_name => 'IssueRelation', :foreign_key => 'issue_from_id', :dependent => :delete_all has_many :relations_to, :class_name => 'IssueRelation', :foreign_key => 'issue_to_id', :dependent => :delete_all - acts_as_nested_set :scope => 'root_id' + acts_as_nested_set :scope => 'root_id', :dependent => :destroy acts_as_attachable :after_remove => :attachment_removed acts_as_customizable acts_as_watchable @@ -89,7 +89,6 @@ before_create :default_assign before_save :close_duplicates, :update_done_ratio_from_issue_status after_save :reschedule_following_issues, :update_nested_set_attributes, :update_parent_attributes, :create_journal - after_destroy :destroy_children after_destroy :update_parent_attributes # Returns true if usr or current user is allowed to view the issue @@ -423,7 +422,12 @@ # Returns an array of status that user is able to apply def new_statuses_allowed_to(user, include_default=false) - statuses = status.find_new_statuses_allowed_to(user.roles_for_project(project), tracker) + statuses = status.find_new_statuses_allowed_to( + user.roles_for_project(project), + tracker, + author == user, + assigned_to_id_changed? ? assigned_to_id_was == user.id : assigned_to_id == user.id + ) statuses << status unless statuses.empty? statuses << IssueStatus.default if include_default statuses = statuses.uniq.sort @@ -758,14 +762,6 @@ end end - def destroy_children - unless leaf? - children.each do |child| - child.destroy - end - end - end - # Update issues so their versions are not pointing to a # fixed_version that is not shared with the issue's project def self.update_versions(conditions=nil) @@ -833,7 +829,7 @@ def create_journal if @current_journal # attributes changes - (Issue.column_names - %w(id description root_id lft rgt lock_version created_on updated_on)).each {|c| + (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| @current_journal.details << JournalDetail.new(:property => 'attr', :prop_key => c, :old_value => @issue_before_change.send(c), diff -r fca2657f4aa5 -r eeebe205a056 app/models/issue_status.rb --- a/app/models/issue_status.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/issue_status.rb Thu Mar 03 12:02:03 2011 +0000 @@ -50,10 +50,16 @@ # Returns an array of all statuses the given role can switch to # Uses association cache when called more than one time - def new_statuses_allowed_to(roles, tracker) + def new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker role_ids = roles.collect(&:id) - new_statuses = workflows.select {|w| role_ids.include?(w.role_id) && w.tracker_id == tracker.id}.collect{|w| w.new_status}.compact.sort + transitions = workflows.select do |w| + role_ids.include?(w.role_id) && + w.tracker_id == tracker.id && + (author || !w.author) && + (assignee || !w.assignee) + end + transitions.collect{|w| w.new_status}.compact.sort else [] end @@ -61,24 +67,19 @@ # Same thing as above but uses a database query # More efficient than the previous method if called just once - def find_new_statuses_allowed_to(roles, tracker) + def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false) if roles && tracker + conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id} + conditions[:author] = false unless author + conditions[:assignee] = false unless assignee + workflows.find(:all, :include => :new_status, - :conditions => { :role_id => roles.collect(&:id), - :tracker_id => tracker.id}).collect{ |w| w.new_status }.compact.sort + :conditions => conditions).collect{|w| w.new_status}.compact.sort else [] end end - - def new_status_allowed_to?(status, roles, tracker) - if status && roles && tracker - !workflows.find(:first, :conditions => {:new_status_id => status.id, :role_id => roles.collect(&:id), :tracker_id => tracker.id}).nil? - else - false - end - end def <=>(status) position <=> status.position diff -r fca2657f4aa5 -r eeebe205a056 app/models/journal_detail.rb --- a/app/models/journal_detail.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/journal_detail.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,9 +17,4 @@ class JournalDetail < ActiveRecord::Base belongs_to :journal - - def before_save - self.value = value[0..254] if value && value.is_a?(String) - self.old_value = old_value[0..254] if old_value && old_value.is_a?(String) - end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/mail_handler.rb --- a/app/models/mail_handler.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/mail_handler.rb Thu Mar 03 12:02:03 2011 +0000 @@ -100,7 +100,7 @@ elsif m = email.subject.match(MESSAGE_REPLY_SUBJECT_RE) receive_message_reply(m[1].to_i) else - receive_issue + dispatch_to_default end rescue ActiveRecord::RecordInvalid => e # TODO: send a email to the user @@ -113,6 +113,10 @@ logger.error "MailHandler: unauthorized attempt from #{user}" if logger false end + + def dispatch_to_default + receive_issue + end # Creates a new issue def receive_issue diff -r fca2657f4aa5 -r eeebe205a056 app/models/mailer.rb --- a/app/models/mailer.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/mailer.rb Thu Mar 03 12:02:03 2011 +0000 @@ -296,7 +296,7 @@ if raise_errors raise e elsif mylogger - mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/email.yml." + mylogger.error "The following error occured while sending email notification: \"#{e.message}\". Check your configuration in config/configuration.yml." end ensure self.class.raise_delivery_errors = raise_errors diff -r fca2657f4aa5 -r eeebe205a056 app/models/message.rb --- a/app/models/message.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/message.rb Thu Mar 03 12:02:03 2011 +0000 @@ -42,6 +42,9 @@ after_create :add_author_as_watcher + named_scope :visible, lambda {|*args| { :include => {:board => :project}, + :conditions => Project.allowed_to_condition(args.first || User.current, :view_messages) } } + def visible?(user=User.current) !user.nil? && user.allowed_to?(:view_messages, project) end diff -r fca2657f4aa5 -r eeebe205a056 app/models/query.rb --- a/app/models/query.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/query.rb Thu Mar 03 12:02:03 2011 +0000 @@ -566,9 +566,19 @@ sql = '' case operator when "=" - sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + if value.any? + sql = "#{db_table}.#{db_field} IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + ")" + else + # IN an empty set + sql = "1=0" + end when "!" - sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + if value.any? + sql = "(#{db_table}.#{db_field} IS NULL OR #{db_table}.#{db_field} NOT IN (" + value.collect{|val| "'#{connection.quote_string(val)}'"}.join(",") + "))" + else + # NOT IN an empty set + sql = "1=1" + end when "!*" sql = "#{db_table}.#{db_field} IS NULL" sql << " OR #{db_table}.#{db_field} = ''" if is_custom_filter diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository.rb --- a/app/models/repository.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository.rb Thu Mar 03 12:02:03 2011 +0000 @@ -16,6 +16,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class Repository < ActiveRecord::Base + include Redmine::Ciphering + belongs_to :project has_many :changesets, :order => "#{Changeset.table_name}.committed_on DESC, #{Changeset.table_name}.id DESC" has_many :changes, :through => :changesets @@ -24,29 +26,43 @@ # has_many :changesets, :dependent => :destroy is too slow for big repositories before_destroy :clear_changesets + validates_length_of :password, :maximum => 255, :allow_nil => true # Checks if the SCM is enabled when creating a repository validate_on_create { |r| r.errors.add(:type, :invalid) unless Setting.enabled_scm.include?(r.class.name.demodulize) } - + # Removes leading and trailing whitespace def url=(arg) write_attribute(:url, arg ? arg.to_s.strip : nil) end - + # Removes leading and trailing whitespace def root_url=(arg) write_attribute(:root_url, arg ? arg.to_s.strip : nil) end + + def password + read_ciphered_attribute(:password) + end + + def password=(arg) + write_ciphered_attribute(:password, arg) + end + + def scm_adapter + self.class.scm_adapter_class + end def scm - @scm ||= self.scm_adapter.new url, root_url, login, password + @scm ||= self.scm_adapter.new(url, root_url, + login, password, path_encoding) update_attribute(:root_url, @scm.root_url) if root_url.blank? @scm end - + def scm_name self.class.scm_name end - + def supports_cat? scm.supports_cat? end @@ -173,18 +189,27 @@ user end end - + + def repo_log_encoding + encoding = log_encoding.to_s.strip + encoding.blank? ? 'UTF-8' : encoding + end + # Fetches new changesets for all repositories of active projects # Can be called periodically by an external script # eg. ruby script/runner "Repository.fetch_changesets" def self.fetch_changesets Project.active.has_module(:repository).find(:all, :include => :repository).each do |project| if project.repository - project.repository.fetch_changesets + begin + project.repository.fetch_changesets + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during fetching changesets: #{e.message}" + end end end end - + # scan changeset comments to find related and fixed issues for all repositories def self.scan_changesets_for_issue_ids find(:all).each(&:scan_changesets_for_issue_ids) @@ -197,16 +222,50 @@ def self.available_scm subclasses.collect {|klass| [klass.scm_name, klass.name]} end - + def self.factory(klass_name, *args) klass = "Repository::#{klass_name}".constantize klass.new(*args) rescue nil end - + + def self.scm_adapter_class + nil + end + + def self.scm_command + ret = "" + begin + ret = self.scm_adapter_class.client_command if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get command: #{e.message}" + end + ret + end + + def self.scm_version_string + ret = "" + begin + ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get version string: #{e.message}" + end + ret + end + + def self.scm_available + ret = false + begin + ret = self.scm_adapter_class.client_available if self.scm_adapter_class + rescue Redmine::Scm::Adapters::CommandFailed => e + logger.error "scm: error during get scm available: #{e.message}" + end + ret + end + private - + def before_save # Strips url and root_url url.strip! diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/all-wcprops --- a/app/models/repository/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,47 +1,47 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4704/trunk/app/models/repository +/svn/!svn/ver/4982/trunk/app/models/repository END subversion.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/3360/trunk/app/models/repository/subversion.rb +/svn/!svn/ver/4962/trunk/app/models/repository/subversion.rb END bazaar.rb K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/1537/trunk/app/models/repository/bazaar.rb +/svn/!svn/ver/4982/trunk/app/models/repository/bazaar.rb END git.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4613/trunk/app/models/repository/git.rb +/svn/!svn/ver/4975/trunk/app/models/repository/git.rb END mercurial.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4704/trunk/app/models/repository/mercurial.rb +/svn/!svn/ver/4975/trunk/app/models/repository/mercurial.rb END filesystem.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/1508/trunk/app/models/repository/filesystem.rb +/svn/!svn/ver/4975/trunk/app/models/repository/filesystem.rb END cvs.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/1768/trunk/app/models/repository/cvs.rb +/svn/!svn/ver/4982/trunk/app/models/repository/cvs.rb END darcs.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3360/trunk/app/models/repository/darcs.rb +/svn/!svn/ver/4982/trunk/app/models/repository/darcs.rb END diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/entries --- a/app/models/repository/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/models/repository http://redmine.rubyforge.org/svn -2011-01-13T12:04:51.838288Z -4704 +2011-03-01T10:27:30.170724Z +4982 tmaruyama @@ -32,11 +32,11 @@ -2010-09-23T14:37:44.487730Z -b02ecaea01c5990cbde09689be12ec7d -2010-02-02T17:02:32.020293Z -3360 -edavis10 +2011-03-03T11:40:18.000000Z +b9f366b3f38bd42149e09e6ed0ed8755 +2011-02-28T12:09:32.515358Z +4962 +tmaruyama has-props @@ -58,7 +58,7 @@ -3306 +3358 bazaar.rb file @@ -66,11 +66,11 @@ -2010-09-23T14:37:44.483732Z -84591e1c5afa1b74a10954dd521ceb4e -2008-06-14T15:44:36.838876Z -1537 -jplang +2011-03-03T11:40:18.000000Z +d6a230859a110341c0d64865248db51c +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -92,7 +92,7 @@ -3617 +3877 git.rb file @@ -100,10 +100,10 @@ -2011-01-13T14:09:10.000000Z -a3363c594162378e93390bb64f908183 -2011-01-02T09:45:05.291687Z -4613 +2011-03-03T11:40:18.000000Z +dfce133f28c5c85af0740865903d5320 +2011-03-01T05:14:03.146872Z +4975 tmaruyama has-props @@ -126,7 +126,7 @@ -3147 +4245 mercurial.rb file @@ -134,10 +134,10 @@ -2011-01-13T14:09:10.000000Z -4b0702e606f495c7db57461f3527181e -2011-01-13T12:04:51.838288Z -4704 +2011-03-03T11:40:18.000000Z +d659744391dfa02d54481d4dd8752930 +2011-03-01T05:14:03.146872Z +4975 tmaruyama has-props @@ -160,7 +160,7 @@ -5003 +4022 filesystem.rb file @@ -168,11 +168,11 @@ -2010-09-23T14:37:44.483732Z -ed75a7df6cfdc54b7059c9bb20c079d3 -2008-06-08T15:40:24.603157Z -1508 -jplang +2011-03-03T11:40:18.000000Z +994276556c2feac05d149117eea01413 +2011-03-01T05:14:03.146872Z +4975 +tmaruyama has-props @@ -194,7 +194,7 @@ -1258 +1451 cvs.rb file @@ -202,11 +202,11 @@ -2010-09-23T14:37:44.483732Z -4bf6afb2a5e03df854a06fb116fc6fd2 -2008-08-26T12:28:15.338708Z -1768 -jplang +2011-03-03T11:40:18.000000Z +5eecf7abe1216489c4d1c2f6a107c36b +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -228,7 +228,7 @@ -6357 +6952 darcs.rb file @@ -236,11 +236,11 @@ -2010-09-23T14:37:44.483732Z -75c2836fd6ba92e0aef7a9cfc249ebb7 -2010-02-02T17:02:32.020293Z -3360 -edavis10 +2011-03-03T11:40:18.000000Z +03bf9128aa09528266cabb76ff0808a9 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -262,5 +262,5 @@ -3566 +3826 diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/bazaar.rb.svn-base --- a/app/models/repository/.svn/text-base/bazaar.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/bazaar.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,16 +19,24 @@ class Repository::Bazaar < Repository attr_protected :root_url - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + "log_encoding" => "Commit messages encoding", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::BazaarAdapter end - + def self.scm_name 'Bazaar' end - + def entries(path=nil, identifier=nil) entries = scm.entries(path, identifier) if entries diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/cvs.rb.svn-base --- a/app/models/repository/.svn/text-base/cvs.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/cvs.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,16 +19,25 @@ require 'digest/sha1' class Repository::Cvs < Repository - validates_presence_of :url, :root_url + validates_presence_of :url, :root_url, :log_encoding - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "CVSROOT", + "root_url" => "Module", + "log_encoding" => "Commit messages encoding", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::CvsAdapter end - + def self.scm_name 'CVS' end - + def entry(path=nil, identifier=nil) rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) @@ -104,23 +113,28 @@ scm.revisions('', fetch_since, nil, :with_paths => true) do |revision| # only add the change to the database, if it doen't exists. the cvs log # is not exclusive at all. - unless changes.find_by_path_and_revision(scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) - revision + tmp_time = revision.time.clone + unless changes.find_by_path_and_revision( + scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) + cmt = Changeset.normalize_comments(revision.message, repo_log_encoding) cs = changesets.find(:first, :conditions=>{ - :committed_on=>revision.time-time_delta..revision.time+time_delta, + :committed_on=>tmp_time - time_delta .. tmp_time + time_delta, :committer=>revision.author, - :comments=>Changeset.normalize_comments(revision.message) + :comments=>cmt }) # create a new changeset.... unless cs # we use a temporaray revision number here (just for inserting) # later on, we calculate a continous positive number - latest = changesets.find(:first, :order => 'id DESC') + tmp_time2 = tmp_time.clone.gmtime + branch = revision.paths[0][:branch] + scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") cs = Changeset.create(:repository => self, - :revision => "_#{tmp_rev_num}", + :revision => "tmp#{tmp_rev_num}", + :scmid => scmid, :committer => revision.author, - :committed_on => revision.time, + :committed_on => tmp_time, :comments => revision.message) tmp_rev_num += 1 end @@ -144,10 +158,13 @@ end # Renumber new changesets in chronological order - changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset| + changesets.find( + :all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'" + ).each do |changeset| changeset.update_attribute :revision, next_revision_number end end # transaction + @current_revision_number = nil end private @@ -155,7 +172,9 @@ # Returns the next revision number to assign to a CVS changeset def next_revision_number # Need to retrieve existing revision numbers to sort them as integers - @current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0) + sql = "SELECT revision FROM #{Changeset.table_name} " + sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'" + @current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0) @current_revision_number += 1 end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/darcs.rb.svn-base --- a/app/models/repository/.svn/text-base/darcs.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/darcs.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -18,16 +18,24 @@ require 'redmine/scm/adapters/darcs_adapter' class Repository::Darcs < Repository - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + "log_encoding" => "Commit messages encoding", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::DarcsAdapter end - + def self.scm_name 'Darcs' end - + def entry(path=nil, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, patch.nil? ? nil : patch.scmid) diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/filesystem.rb.svn-base --- a/app/models/repository/.svn/text-base/filesystem.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/filesystem.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -24,14 +24,21 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::FilesystemAdapter end - + def self.scm_name 'Filesystem' end - + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/git.rb.svn-base --- a/app/models/repository/.svn/text-base/git.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/git.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -21,14 +21,25 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Path to repository", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::GitAdapter end - + def self.scm_name 'Git' end + def repo_log_encoding + 'UTF-8' + end + # Returns the identifier for the given git changeset def self.changeset_identifier(changeset) changeset.scmid @@ -47,6 +58,13 @@ scm.tags end + def find_changeset_by_name(name) + return nil if name.nil? || name.empty? + e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) + return e if e + changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) + end + # With SCM's that have a sequential commit numbering, redmine is able to be # clever and only fetch changesets going forward from the most recent one # it knows about. However, with git, you never know if people have merged @@ -72,7 +90,28 @@ revisions.reject!{|r| recent_revisions.include?(r.scmid)} # Save the remaining ones to the database - revisions.each{|r| r.save(self)} unless revisions.nil? + unless revisions.nil? + revisions.each do |rev| + transaction do + changeset = Changeset.new( + :repository => self, + :revision => rev.identifier, + :scmid => rev.scmid, + :committer => rev.author, + :committed_on => rev.time, + :comments => rev.message) + + if changeset.save + rev.paths.each do |file| + Change.create( + :changeset => changeset, + :action => file[:action], + :path => file[:path]) + end + end + end + end + end end def latest_changesets(path,rev,limit=10) diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/mercurial.rb.svn-base --- a/app/models/repository/.svn/text-base/mercurial.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/mercurial.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -24,7 +24,16 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + FETCH_AT_ONCE = 100 # number of changesets to fetch at once + + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::MercurialAdapter end @@ -32,6 +41,10 @@ 'Mercurial' end + def repo_log_encoding + 'UTF-8' + end + # Returns the readable identifier for the given mercurial changeset def self.format_changeset_identifier(changeset) "#{changeset.revision}:#{changeset.scmid}" @@ -42,33 +55,18 @@ changeset.scmid end + def branches + nil + end + + def tags + nil + end + def diff_format_revisions(cs, cs_to, sep=':') super(cs, cs_to, ' ') end - def entries(path=nil, identifier=nil) - entries=scm.entries(path, identifier) - if entries - entries.each do |entry| - next unless entry.is_file? - # Set the filesize unless browsing a specific revision - if identifier.nil? - full_path = File.join(root_url, entry.path) - entry.size = File.stat(full_path).size if File.file?(full_path) - end - # Search the DB for the entry's last change - change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC") - if change - entry.lastrev.identifier = change.changeset.revision - entry.lastrev.name = change.changeset.revision - entry.lastrev.author = change.changeset.committer - entry.lastrev.revision = change.revision - end - end - end - entries - end - # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) return nil if name.nil? || name.empty? @@ -82,50 +80,39 @@ end # Returns the latest changesets for +path+; sorted by revision number + # Default behavior is to search in cached changesets def latest_changesets(path, rev, limit=10) if path.blank? changesets.find(:all, :include => :user, :limit => limit) else - changes.find(:all, :include => {:changeset => :user}, - :conditions => ["path = ?", path.with_leading_slash], - :order => "#{Changeset.table_name}.id DESC", - :limit => limit).collect(&:changeset) + changesets.find(:all, :select => "DISTINCT #{Changeset.table_name}.*", + :joins => :changes, + :conditions => ["#{Change.table_name}.path = ? OR #{Change.table_name}.path LIKE ? ESCAPE ?", + path.with_leading_slash, + "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%", '\\'], + :include => :user, :limit => limit) end end def fetch_changesets - scm_info = scm.info - if scm_info - # latest revision found in database - db_revision = latest_changeset ? latest_changeset.revision.to_i : -1 - # latest revision in the repository - latest_revision = scm_info.lastrev - return if latest_revision.nil? - scm_revision = latest_revision.identifier.to_i - if db_revision < scm_revision - logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug? - identifier_from = db_revision + 1 - while (identifier_from <= scm_revision) - # loads changesets by batches of 100 - identifier_to = [identifier_from + 99, scm_revision].min - revisions = scm.revisions('', identifier_from, identifier_to, :with_paths => true) - transaction do - revisions.each do |revision| - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :scmid => revision.scmid, - :committer => revision.author, - :committed_on => revision.time, - :comments => revision.message) - - revision.paths.each do |change| - changeset.create_change(change) - end - end - end unless revisions.nil? - identifier_from = identifier_to + 1 + scm_rev = scm.info.lastrev.revision.to_i + db_rev = latest_changeset ? latest_changeset.revision.to_i : -1 + return unless db_rev < scm_rev # already up-to-date + + logger.debug "Fetching changesets for repository #{url}" if logger + (db_rev + 1).step(scm_rev, FETCH_AT_ONCE) do |i| + transaction do + scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re| + cs = Changeset.create(:repository => self, + :revision => re.revision, + :scmid => re.scmid, + :committer => re.author, + :committed_on => re.time, + :comments => re.message) + re.paths.each { |e| cs.create_change(e) } end end end + self end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/.svn/text-base/subversion.rb.svn-base --- a/app/models/repository/.svn/text-base/subversion.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/.svn/text-base/subversion.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -22,14 +22,18 @@ validates_presence_of :url validates_format_of :url, :with => /^(http|https|svn(\+[^\s:\/\\]+)?|file):\/\/.+/i - def scm_adapter + def self.scm_adapter_class Redmine::Scm::Adapters::SubversionAdapter end - + def self.scm_name 'Subversion' end + def repo_log_encoding + 'UTF-8' + end + def latest_changesets(path, rev, limit=10) revisions = scm.revisions(path, rev, nil, :limit => limit) revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : [] diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/bazaar.rb --- a/app/models/repository/bazaar.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/bazaar.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,16 +19,24 @@ class Repository::Bazaar < Repository attr_protected :root_url - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + "log_encoding" => "Commit messages encoding", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::BazaarAdapter end - + def self.scm_name 'Bazaar' end - + def entries(path=nil, identifier=nil) entries = scm.entries(path, identifier) if entries diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/cvs.rb --- a/app/models/repository/cvs.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/cvs.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,16 +19,25 @@ require 'digest/sha1' class Repository::Cvs < Repository - validates_presence_of :url, :root_url + validates_presence_of :url, :root_url, :log_encoding - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "CVSROOT", + "root_url" => "Module", + "log_encoding" => "Commit messages encoding", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::CvsAdapter end - + def self.scm_name 'CVS' end - + def entry(path=nil, identifier=nil) rev = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, rev.nil? ? nil : rev.committed_on) @@ -104,23 +113,28 @@ scm.revisions('', fetch_since, nil, :with_paths => true) do |revision| # only add the change to the database, if it doen't exists. the cvs log # is not exclusive at all. - unless changes.find_by_path_and_revision(scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) - revision + tmp_time = revision.time.clone + unless changes.find_by_path_and_revision( + scm.with_leading_slash(revision.paths[0][:path]), revision.paths[0][:revision]) + cmt = Changeset.normalize_comments(revision.message, repo_log_encoding) cs = changesets.find(:first, :conditions=>{ - :committed_on=>revision.time-time_delta..revision.time+time_delta, + :committed_on=>tmp_time - time_delta .. tmp_time + time_delta, :committer=>revision.author, - :comments=>Changeset.normalize_comments(revision.message) + :comments=>cmt }) # create a new changeset.... unless cs # we use a temporaray revision number here (just for inserting) # later on, we calculate a continous positive number - latest = changesets.find(:first, :order => 'id DESC') + tmp_time2 = tmp_time.clone.gmtime + branch = revision.paths[0][:branch] + scmid = branch + "-" + tmp_time2.strftime("%Y%m%d-%H%M%S") cs = Changeset.create(:repository => self, - :revision => "_#{tmp_rev_num}", + :revision => "tmp#{tmp_rev_num}", + :scmid => scmid, :committer => revision.author, - :committed_on => revision.time, + :committed_on => tmp_time, :comments => revision.message) tmp_rev_num += 1 end @@ -144,10 +158,13 @@ end # Renumber new changesets in chronological order - changesets.find(:all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE '_%'").each do |changeset| + changesets.find( + :all, :order => 'committed_on ASC, id ASC', :conditions => "revision LIKE 'tmp%'" + ).each do |changeset| changeset.update_attribute :revision, next_revision_number end end # transaction + @current_revision_number = nil end private @@ -155,7 +172,9 @@ # Returns the next revision number to assign to a CVS changeset def next_revision_number # Need to retrieve existing revision numbers to sort them as integers - @current_revision_number ||= (connection.select_values("SELECT revision FROM #{Changeset.table_name} WHERE repository_id = #{id} AND revision NOT LIKE '_%'").collect(&:to_i).max || 0) + sql = "SELECT revision FROM #{Changeset.table_name} " + sql << "WHERE repository_id = #{id} AND revision NOT LIKE 'tmp%'" + @current_revision_number ||= (connection.select_values(sql).collect(&:to_i).max || 0) @current_revision_number += 1 end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/darcs.rb --- a/app/models/repository/darcs.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/darcs.rb Thu Mar 03 12:02:03 2011 +0000 @@ -18,16 +18,24 @@ require 'redmine/scm/adapters/darcs_adapter' class Repository::Darcs < Repository - validates_presence_of :url + validates_presence_of :url, :log_encoding - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + "log_encoding" => "Commit messages encoding", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::DarcsAdapter end - + def self.scm_name 'Darcs' end - + def entry(path=nil, identifier=nil) patch = identifier.nil? ? nil : changesets.find_by_revision(identifier) scm.entry(path, patch.nil? ? nil : patch.scmid) diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/filesystem.rb --- a/app/models/repository/filesystem.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/filesystem.rb Thu Mar 03 12:02:03 2011 +0000 @@ -24,14 +24,21 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::FilesystemAdapter end - + def self.scm_name 'Filesystem' end - + def entries(path=nil, identifier=nil) scm.entries(path, identifier) end diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/git.rb --- a/app/models/repository/git.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/git.rb Thu Mar 03 12:02:03 2011 +0000 @@ -21,14 +21,25 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + ATTRIBUTE_KEY_NAMES = { + "url" => "Path to repository", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::GitAdapter end - + def self.scm_name 'Git' end + def repo_log_encoding + 'UTF-8' + end + # Returns the identifier for the given git changeset def self.changeset_identifier(changeset) changeset.scmid @@ -47,6 +58,13 @@ scm.tags end + def find_changeset_by_name(name) + return nil if name.nil? || name.empty? + e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) + return e if e + changesets.find(:first, :conditions => ['scmid LIKE ?', "#{name}%"]) + end + # With SCM's that have a sequential commit numbering, redmine is able to be # clever and only fetch changesets going forward from the most recent one # it knows about. However, with git, you never know if people have merged @@ -72,7 +90,28 @@ revisions.reject!{|r| recent_revisions.include?(r.scmid)} # Save the remaining ones to the database - revisions.each{|r| r.save(self)} unless revisions.nil? + unless revisions.nil? + revisions.each do |rev| + transaction do + changeset = Changeset.new( + :repository => self, + :revision => rev.identifier, + :scmid => rev.scmid, + :committer => rev.author, + :committed_on => rev.time, + :comments => rev.message) + + if changeset.save + rev.paths.each do |file| + Change.create( + :changeset => changeset, + :action => file[:action], + :path => file[:path]) + end + end + end + end + end end def latest_changesets(path,rev,limit=10) diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/mercurial.rb --- a/app/models/repository/mercurial.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/mercurial.rb Thu Mar 03 12:02:03 2011 +0000 @@ -24,7 +24,16 @@ attr_protected :root_url validates_presence_of :url - def scm_adapter + FETCH_AT_ONCE = 100 # number of changesets to fetch at once + + ATTRIBUTE_KEY_NAMES = { + "url" => "Root directory", + } + def self.human_attribute_name(attribute_key_name) + ATTRIBUTE_KEY_NAMES[attribute_key_name] || super + end + + def self.scm_adapter_class Redmine::Scm::Adapters::MercurialAdapter end @@ -32,6 +41,10 @@ 'Mercurial' end + def repo_log_encoding + 'UTF-8' + end + # Returns the readable identifier for the given mercurial changeset def self.format_changeset_identifier(changeset) "#{changeset.revision}:#{changeset.scmid}" @@ -42,33 +55,18 @@ changeset.scmid end + def branches + nil + end + + def tags + nil + end + def diff_format_revisions(cs, cs_to, sep=':') super(cs, cs_to, ' ') end - def entries(path=nil, identifier=nil) - entries=scm.entries(path, identifier) - if entries - entries.each do |entry| - next unless entry.is_file? - # Set the filesize unless browsing a specific revision - if identifier.nil? - full_path = File.join(root_url, entry.path) - entry.size = File.stat(full_path).size if File.file?(full_path) - end - # Search the DB for the entry's last change - change = changes.find(:first, :conditions => ["path = ?", scm.with_leading_slash(entry.path)], :order => "#{Changeset.table_name}.committed_on DESC") - if change - entry.lastrev.identifier = change.changeset.revision - entry.lastrev.name = change.changeset.revision - entry.lastrev.author = change.changeset.committer - entry.lastrev.revision = change.revision - end - end - end - entries - end - # Finds and returns a revision with a number or the beginning of a hash def find_changeset_by_name(name) return nil if name.nil? || name.empty? @@ -82,50 +80,39 @@ end # Returns the latest changesets for +path+; sorted by revision number + # Default behavior is to search in cached changesets def latest_changesets(path, rev, limit=10) if path.blank? changesets.find(:all, :include => :user, :limit => limit) else - changes.find(:all, :include => {:changeset => :user}, - :conditions => ["path = ?", path.with_leading_slash], - :order => "#{Changeset.table_name}.id DESC", - :limit => limit).collect(&:changeset) + changesets.find(:all, :select => "DISTINCT #{Changeset.table_name}.*", + :joins => :changes, + :conditions => ["#{Change.table_name}.path = ? OR #{Change.table_name}.path LIKE ? ESCAPE ?", + path.with_leading_slash, + "#{path.with_leading_slash.gsub(/[%_\\]/) { |s| "\\#{s}" }}/%", '\\'], + :include => :user, :limit => limit) end end def fetch_changesets - scm_info = scm.info - if scm_info - # latest revision found in database - db_revision = latest_changeset ? latest_changeset.revision.to_i : -1 - # latest revision in the repository - latest_revision = scm_info.lastrev - return if latest_revision.nil? - scm_revision = latest_revision.identifier.to_i - if db_revision < scm_revision - logger.debug "Fetching changesets for repository #{url}" if logger && logger.debug? - identifier_from = db_revision + 1 - while (identifier_from <= scm_revision) - # loads changesets by batches of 100 - identifier_to = [identifier_from + 99, scm_revision].min - revisions = scm.revisions('', identifier_from, identifier_to, :with_paths => true) - transaction do - revisions.each do |revision| - changeset = Changeset.create(:repository => self, - :revision => revision.identifier, - :scmid => revision.scmid, - :committer => revision.author, - :committed_on => revision.time, - :comments => revision.message) - - revision.paths.each do |change| - changeset.create_change(change) - end - end - end unless revisions.nil? - identifier_from = identifier_to + 1 + scm_rev = scm.info.lastrev.revision.to_i + db_rev = latest_changeset ? latest_changeset.revision.to_i : -1 + return unless db_rev < scm_rev # already up-to-date + + logger.debug "Fetching changesets for repository #{url}" if logger + (db_rev + 1).step(scm_rev, FETCH_AT_ONCE) do |i| + transaction do + scm.each_revision('', i, [i + FETCH_AT_ONCE - 1, scm_rev].min) do |re| + cs = Changeset.create(:repository => self, + :revision => re.revision, + :scmid => re.scmid, + :committer => re.author, + :committed_on => re.time, + :comments => re.message) + re.paths.each { |e| cs.create_change(e) } end end end + self end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/repository/subversion.rb --- a/app/models/repository/subversion.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/repository/subversion.rb Thu Mar 03 12:02:03 2011 +0000 @@ -22,14 +22,18 @@ validates_presence_of :url validates_format_of :url, :with => /^(http|https|svn(\+[^\s:\/\\]+)?|file):\/\/.+/i - def scm_adapter + def self.scm_adapter_class Redmine::Scm::Adapters::SubversionAdapter end - + def self.scm_name 'Subversion' end + def repo_log_encoding + 'UTF-8' + end + def latest_changesets(path, rev, limit=10) revisions = scm.revisions(path, rev, nil, :limit => limit) revisions ? changesets.find_all_by_revision(revisions.collect(&:identifier), :order => "committed_on DESC", :include => :user) : [] diff -r fca2657f4aa5 -r eeebe205a056 app/models/setting.rb --- a/app/models/setting.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/setting.rb Thu Mar 03 12:02:03 2011 +0000 @@ -65,6 +65,7 @@ UTF-16LE EUC-JP Shift_JIS + CP932 GB18030 GBK ISCII91 diff -r fca2657f4aa5 -r eeebe205a056 app/models/user.rb --- a/app/models/user.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/user.rb Thu Mar 03 12:02:03 2011 +0000 @@ -89,7 +89,9 @@ def before_save # update hashed_password if password was set - self.hashed_password = User.hash_password(self.password) if self.password && self.auth_source_id.blank? + if self.password && self.auth_source_id.blank? + salt_password(password) + end end def reload(*args) @@ -131,7 +133,7 @@ return nil unless user.auth_source.authenticate(login, password) else # authentication with local password - return nil unless User.hash_password(password) == user.hashed_password + return nil unless user.check_password?(password) end else # user is not yet registered, try to authenticate with available sources @@ -210,13 +212,21 @@ update_attribute(:status, STATUS_LOCKED) end + # Returns true if +clear_password+ is the correct user's password, otherwise false def check_password?(clear_password) if auth_source_id.present? auth_source.authenticate(self.login, clear_password) else - User.hash_password(clear_password) == self.hashed_password + User.hash_password("#{salt}#{User.hash_password clear_password}") == hashed_password end end + + # Generates a random salt and computes hashed_password for +clear_password+ + # The hashed password is stored in the following form: SHA1(salt + SHA1(password)) + def salt_password(clear_password) + self.salt = User.generate_salt + self.hashed_password = User.hash_password("#{salt}#{User.hash_password clear_password}") + end # Does the backend storage allow this user to change their password? def change_password_allowed? @@ -434,7 +444,12 @@ when 'all' true when 'selected' - # Handled by the Project + # user receives notifications for created/assigned issues on unselected projects + if object.is_a?(Issue) && (object.author == self || object.assigned_to == self) + true + else + false + end when 'none' false when 'only_my_events' @@ -478,6 +493,20 @@ end anonymous_user end + + # Salts all existing unsalted passwords + # It changes password storage scheme from SHA1(password) to SHA1(salt + SHA1(password)) + # This method is used in the SaltPasswords migration and is to be kept as is + def self.salt_unsalted_passwords! + transaction do + User.find_each(:conditions => "salt IS NULL OR salt = ''") do |user| + next if user.hashed_password.blank? + salt = User.generate_salt + hashed_password = User.hash_password("#{salt}#{user.hashed_password}") + User.update_all("salt = '#{salt}', hashed_password = '#{hashed_password}'", ["id = ?", user.id] ) + end + end + end protected @@ -519,6 +548,12 @@ def self.hash_password(clear_password) Digest::SHA1.hexdigest(clear_password || "") end + + # Returns a 128bits random salt as a hex string (32 chars long) + def self.generate_salt + ActiveSupport::SecureRandom.hex(16) + end + end class AnonymousUser < User diff -r fca2657f4aa5 -r eeebe205a056 app/models/user_preference.rb --- a/app/models/user_preference.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/user_preference.rb Thu Mar 03 12:02:03 2011 +0000 @@ -51,4 +51,7 @@ def comments_sorting; self[:comments_sorting] end def comments_sorting=(order); self[:comments_sorting]=order end + + def warn_on_leaving_unsaved; self[:warn_on_leaving_unsaved] || '1'; end + def warn_on_leaving_unsaved=(value); self[:warn_on_leaving_unsaved]=value; end end diff -r fca2657f4aa5 -r eeebe205a056 app/models/wiki_page.rb --- a/app/models/wiki_page.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/models/wiki_page.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ # Redmine - project management software -# Copyright (C) 2006-2009 Jean-Philippe Lang +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -149,17 +149,13 @@ end end -class WikiDiff - attr_reader :diff, :words, :content_to, :content_from +class WikiDiff < Redmine::Helpers::Diff + attr_reader :content_to, :content_from def initialize(content_to, content_from) @content_to = content_to @content_from = content_from - @words = content_to.text.split(/(\s+)/) - @words = @words.select {|word| word != ' '} - words_from = content_from.text.split(/(\s+)/) - words_from = words_from.select {|word| word != ' '} - @diff = words_from.diff @words + super(content_to.text, content_from.text) end end diff -r fca2657f4aa5 -r eeebe205a056 app/sweepers/.svn/entries --- a/app/sweepers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/sweepers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/sweepers +4993 +http://redmine.rubyforge.org/svn/trunk/app/sweepers http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 app/views/.svn/all-wcprops --- a/app/views/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4731/trunk/app/views +/svn/!svn/ver/4983/trunk/app/views END diff -r fca2657f4aa5 -r eeebe205a056 app/views/.svn/entries --- a/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views http://redmine.rubyforge.org/svn -2011-01-16T16:36:58.753919Z -4731 -jplang +2011-03-01T10:27:51.597350Z +4983 +tmaruyama @@ -38,52 +38,52 @@ members dir -welcome +context_menus dir -context_menus +welcome dir journals dir +time_entry_reports +dir + workflows dir -time_entry_reports -dir - reports dir -timelog -dir - -settings -dir - layouts dir custom_fields dir -issue_moves +settings +dir + +timelog dir users dir +issue_moves +dir + files dir previews dir -auth_sources +ldap_auth_sources dir -ldap_auth_sources +auth_sources dir search @@ -92,10 +92,10 @@ messages dir -versions +issue_relations dir -issue_relations +versions dir mailer diff -r fca2657f4aa5 -r eeebe205a056 app/views/account/.svn/entries --- a/app/views/account/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/account/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/account +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/account http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 232ce32581d2f869b81c300244decff5 2010-01-28T18:54:51.800438Z 3341 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z cf3d603bbb4825640988086c7871c165 2007-09-22T13:17:49.935719Z 747 @@ -100,7 +100,7 @@ -2011-01-13T12:46:09.000000Z +2011-03-03T11:05:11.000000Z 82c6920dc6c95e35b0248de4be82885b 2009-04-21T13:43:57.529967Z 2678 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 72b586f183037fcab519bc7575d3b2b5 2010-03-03T20:21:05.265018Z 3530 diff -r fca2657f4aa5 -r eeebe205a056 app/views/activities/.svn/entries --- a/app/views/activities/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/activities/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/activities +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/activities http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:11.000000Z 9e6d9091be2c8769f8e262500d974f84 2010-08-27T14:05:54.014502Z 4047 diff -r fca2657f4aa5 -r eeebe205a056 app/views/admin/.svn/entries --- a/app/views/admin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/admin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/admin +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/admin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z a7b3d0461b8dac7e68d5b758e6b93b45 2009-12-19T20:33:24.113306Z 3200 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z aacfd3ff934f52585eba4f460f52df31 2008-11-16T17:12:02.001794Z 2041 @@ -100,7 +100,7 @@ -2010-09-10T14:59:24.000000Z +2011-03-03T11:05:11.000000Z a2dcf50c0d70604e64f18cd28f15280b 2010-08-04T00:38:22.739166Z 3909 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 8db715728d1f5851c242e085110f2bb6 2008-01-05T11:33:49.132886Z 1040 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 35378eb3f0e385475e3bd0586f22324a 2009-12-17T18:21:02.630202Z 3176 @@ -202,7 +202,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:11.000000Z 9aaefdc17951db18479f38fb0db73ea7 2010-10-22T15:11:04.321155Z 4271 diff -r fca2657f4aa5 -r eeebe205a056 app/views/attachments/.svn/entries --- a/app/views/attachments/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/attachments/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/attachments +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/attachments http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 6f5329a1a81f3798a84a26b0261f5000 2008-12-09T16:54:46.963649Z 2116 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z b8bc854a91c56c3e3d45390e8ed4bb8d 2009-04-25T09:35:14.494071Z 2693 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 9cd3f9685ce632814961d9f7e67c4d26 2010-07-25T10:34:55.569539Z 3879 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 43e4ae1b5703daa55b37eb438a169304 2009-04-25T09:35:14.494071Z 2693 diff -r fca2657f4aa5 -r eeebe205a056 app/views/auth_sources/.svn/entries --- a/app/views/auth_sources/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/auth_sources/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/auth_sources +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/auth_sources http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 2f1b944eb2979ed37624c653969fa6bf 2010-02-15T16:41:21.789274Z 3436 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 6f4f645b6d66417180eaadb0e204a56e 2007-03-12T17:59:02.654744Z 333 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 4ea0fc7f46738e3709d552778de7a756 2010-05-23T03:16:31.304135Z 3744 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 1cc2f5049536de6e5d6d4e926f96ab38 2007-03-12T17:59:02.654744Z 333 diff -r fca2657f4aa5 -r eeebe205a056 app/views/auto_completes/.svn/entries --- a/app/views/auto_completes/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/auto_completes/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/auto_completes +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/auto_completes http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-10T14:59:24.000000Z +2011-03-03T11:05:10.000000Z d325b0677890591680b96985e16a0139 2010-08-17T15:03:58.074505Z 3945 diff -r fca2657f4aa5 -r eeebe205a056 app/views/boards/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/boards/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/svn/!svn/ver/4889/trunk/app/views/boards +END +show.rhtml +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/4889/trunk/app/views/boards/show.rhtml +END +_form.rhtml +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/529/trunk/app/views/boards/_form.rhtml +END +edit.rhtml +K 25 +svn:wc:ra_dav:version-url +V 51 +/svn/!svn/ver/529/trunk/app/views/boards/edit.rhtml +END +index.rhtml +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/4047/trunk/app/views/boards/index.rhtml +END +new.rhtml +K 25 +svn:wc:ra_dav:version-url +V 50 +/svn/!svn/ver/529/trunk/app/views/boards/new.rhtml +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/boards/.svn/entries --- a/app/views/boards/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/boards/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/boards +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/boards http://redmine.rubyforge.org/svn -2010-08-27T14:05:54.014502Z -4047 -edavis10 +2011-02-20T13:11:10.508449Z +4889 +jplang @@ -32,10 +32,10 @@ -2010-08-12T15:03:25.000000Z -74a37f0fbb3bb635f2c0389a2624988e -2010-02-14T11:52:12.027647Z -3426 +2011-03-03T11:40:18.000000Z +0f9b1735f403a56ed575c63dc474a611 +2011-02-20T13:11:10.508449Z +4889 jplang has-props @@ -58,7 +58,7 @@ -3365 +3402 _form.rhtml file @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 0416740cf4bf599b0da68e597c0cd44c 2007-05-13T17:09:56.765659Z 529 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 00f3643ebd3d5af2322b92c885a6eec6 2007-05-13T17:09:56.765659Z 529 @@ -134,7 +134,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:10.000000Z 5c323ebf8fea05f556896ed49186773b 2010-08-27T14:05:54.014502Z 4047 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z b951b4d73988508c5a42fdb7b7df695c 2007-05-13T17:09:56.765659Z 529 diff -r fca2657f4aa5 -r eeebe205a056 app/views/boards/.svn/text-base/show.rhtml.svn-base --- a/app/views/boards/.svn/text-base/show.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/boards/.svn/text-base/show.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -69,4 +69,5 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %> + <%= stylesheet_link_tag 'scm' %> <% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/boards/show.rhtml --- a/app/views/boards/show.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/boards/show.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -69,4 +69,5 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:format => 'atom', :key => User.current.rss_key}, :title => "#{@project}: #{@board}") %> + <%= stylesheet_link_tag 'scm' %> <% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/calendars/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/calendars/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 44 +/svn/!svn/ver/4911/trunk/app/views/calendars +END +show.html.erb +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/4911/trunk/app/views/calendars/show.html.erb +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/calendars/.svn/entries --- a/app/views/calendars/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/calendars/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/calendars +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/calendars http://redmine.rubyforge.org/svn -2010-10-07T15:26:53.500793Z -4238 -winterheart +2011-02-21T14:02:22.565987Z +4911 +jplang @@ -32,11 +32,11 @@ -2010-11-30T13:11:53.000000Z -d47ece5d0e0ff017f3f1b5ce4b776ba0 -2010-10-07T15:26:53.500793Z -4238 -winterheart +2011-03-03T11:40:18.000000Z +7da8933c1cb08241ebe459d9cabe8043 +2011-02-21T14:02:22.565987Z +4911 +jplang has-props @@ -58,5 +58,5 @@ -1946 +2007 diff -r fca2657f4aa5 -r eeebe205a056 app/views/calendars/.svn/text-base/show.html.erb.svn-base --- a/app/views/calendars/.svn/text-base/show.html.erb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/calendars/.svn/text-base/show.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,10 +1,10 @@ -

<%= l(:label_calendar) %>

+

<%= @query.new_record? ? l(:label_calendar) : h(@query.name) %>

<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %> <%= hidden_field_tag('project_id', @project.to_param) if @project%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -20,16 +20,16 @@ <%= select_year(@year, :prefix => "year", :discard_type => true) %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :set_filter => 1 }, :update => "content", :with => "Form.serialize('query_form')" }, :class => 'icon icon-checked' %> <%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/calendars/show.html.erb --- a/app/views/calendars/show.html.erb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/calendars/show.html.erb Thu Mar 03 12:02:03 2011 +0000 @@ -1,10 +1,10 @@ -

<%= l(:label_calendar) %>

+

<%= @query.new_record? ? l(:label_calendar) : h(@query.name) %>

<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %> <%= hidden_field_tag('project_id', @project.to_param) if @project%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -20,16 +20,16 @@ <%= select_year(@year, :prefix => "year", :discard_type => true) %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :set_filter => 1 }, :update => "content", :with => "Form.serialize('query_form')" }, :class => 'icon icon-checked' %> <%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/common/.svn/all-wcprops --- a/app/views/common/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/common/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -9,18 +9,18 @@ V 53 /svn/!svn/ver/3585/trunk/app/views/common/_file.rhtml END +error.html.erb +K 25 +svn:wc:ra_dav:version-url +V 56 +/svn/!svn/ver/4286/trunk/app/views/common/error.html.erb +END feed.atom.rxml K 25 svn:wc:ra_dav:version-url V 56 /svn/!svn/ver/2768/trunk/app/views/common/feed.atom.rxml END -error.html.erb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/4286/trunk/app/views/common/error.html.erb -END _preview.rhtml K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 app/views/common/.svn/entries --- a/app/views/common/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/common/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/common http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z f95c4268a6ac374ab617da665e57a3ad 2010-03-14T13:22:50.317701Z 3585 @@ -60,13 +60,47 @@ 369 +error.html.erb +file + + + + +2011-03-03T11:05:11.000000Z +882dace2c9ea129616067a2052cebef4 +2010-10-23T11:07:04.019894Z +4286 +jplang + + + + + + + + + + + + + + + + + + + + + +156 + feed.atom.rxml file -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z e2b0309f637e9a49ef39f8401f3190c5 2009-05-26T08:28:36.964305Z 2768 @@ -94,47 +128,13 @@ 1410 -error.html.erb -file - - - - -2010-11-19T13:04:49.456921Z -882dace2c9ea129616067a2052cebef4 -2010-10-23T11:07:04.019894Z -4286 -jplang - - - - - - - - - - - - - - - - - - - - - -156 - _preview.rhtml file -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z d03b1c3719bd49af7d930d210a8e8328 2008-07-26T12:54:54.604420Z 1699 @@ -168,7 +168,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:11.000000Z 1938ad8ac1793e75074891018e795398 2011-01-01T13:40:36.520874Z 4604 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z 18b2d631fabd5720aa07d369da11d0de 2010-06-19T22:52:15.523619Z 3790 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.523788Z +2011-03-03T11:05:11.000000Z 6e7716818f87ed1ad9839c6e9a92ed1b 2009-12-14T20:13:29.438642Z 3174 diff -r fca2657f4aa5 -r eeebe205a056 app/views/context_menus/.svn/entries --- a/app/views/context_menus/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/context_menus/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/context_menus +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/context_menus http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z 1a873e0d09f011b6b274e955460d35a1 2010-11-16T19:49:08.085592Z 4409 diff -r fca2657f4aa5 -r eeebe205a056 app/views/custom_fields/.svn/entries --- a/app/views/custom_fields/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/custom_fields/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/custom_fields +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/custom_fields http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z 7c1accc3dd22bd872e2e9b6a7f02a5c2 2010-11-07T14:15:01.891476Z 4382 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 0c149f63c965988c70ecf48bde3222b3 2009-12-09T10:49:58.529326Z 3144 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 3372a4aeafa9f940744f07c4ce8ca434 2010-04-16T15:33:49.924704Z 3672 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 6441c559d374310cabfc9649eb5b3617 2009-09-12T09:13:13.676884Z 2871 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 7658107f6af4536cedfc075202ad3f7c 2009-12-09T10:49:58.529326Z 3144 diff -r fca2657f4aa5 -r eeebe205a056 app/views/documents/.svn/entries --- a/app/views/documents/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/documents/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/documents +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/documents http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 755690362ea0b5f92a82326872d3b0ea 2010-03-18T20:02:17.358992Z 3602 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z a7c10b428fb4d74827a6ffdcc3651a25 2010-03-18T20:06:16.936785Z 3603 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 9d05f76602471c3dc339d8c54d2f4abc 2009-05-30T23:30:36.923541Z 2777 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 41a0e984e939e8fad03f2be67b33a4fc 2007-03-12T17:59:02.654744Z 333 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z cf8b8406d31262625c1f2ab2b66020b2 2009-01-22T16:34:54.303755Z 2295 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 60e54f2c42af4454d69bfc812bbf55ca 2008-02-29T19:46:58.834023Z 1180 diff -r fca2657f4aa5 -r eeebe205a056 app/views/enumerations/.svn/entries --- a/app/views/enumerations/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/enumerations/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/enumerations +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/enumerations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z b4f45f24d2fb9546e609fd3299912be6 2010-05-09T11:19:15.980195Z 3734 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 0a47386b406e4f425fe541d12c780467 2009-10-21T22:34:28.905707Z 2946 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 668687299206262ccf34ac3a44f57c33 2009-07-05T12:22:02.133266Z 2810 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z b9c8a97c172197a30cbb6c08000a9fa7 2008-06-17T19:10:54.015252Z 1558 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z e6eaade1aac54267080f56f5a09d3fd1 2009-07-05T12:22:02.133266Z 2810 diff -r fca2657f4aa5 -r eeebe205a056 app/views/files/.svn/entries --- a/app/views/files/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/files/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/files +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z 05986f09d13424caeb68601c7c9ff16b 2010-10-22T14:45:02.987126Z 4268 @@ -66,7 +66,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:10.000000Z 7cd15d28fd27afa1f10b921c8b35cd7a 2010-09-14T16:24:07.840869Z 4085 diff -r fca2657f4aa5 -r eeebe205a056 app/views/gantts/.svn/all-wcprops --- a/app/views/gantts/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/gantts/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4528/trunk/app/views/gantts +/svn/!svn/ver/4913/trunk/app/views/gantts END show.html.erb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4528/trunk/app/views/gantts/show.html.erb +/svn/!svn/ver/4913/trunk/app/views/gantts/show.html.erb END diff -r fca2657f4aa5 -r eeebe205a056 app/views/gantts/.svn/entries --- a/app/views/gantts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/gantts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/gantts http://redmine.rubyforge.org/svn -2010-12-17T15:25:07.681776Z -4528 +2011-02-21T15:06:11.321114Z +4913 jplang @@ -32,10 +32,10 @@ -2011-01-13T14:09:29.000000Z -85e8095f9a3c80cf6a53b73c6b694323 -2010-12-17T15:25:07.681776Z -4528 +2011-03-03T11:40:18.000000Z +6f609d119b323e4fd1a249dfbd614e38 +2011-02-21T15:06:11.321114Z +4913 jplang has-props @@ -58,5 +58,5 @@ -6232 +6326 diff -r fca2657f4aa5 -r eeebe205a056 app/views/gantts/.svn/text-base/show.html.erb.svn-base --- a/app/views/gantts/.svn/text-base/show.html.erb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/gantts/.svn/text-base/show.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,11 +1,11 @@ <% @gantt.view = self %> -

<%= l(:label_gantt) %>

+

<%= @query.new_record? ? l(:label_gantt) : h(@query.name) %>

<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %> <%= hidden_field_tag('project_id', @project.to_param) if @project%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -23,16 +23,16 @@ <%= hidden_field_tag 'zoom', @gantt.zoom %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :set_filter => 1 }, :update => "content", :with => "Form.serialize('query_form')" }, :class => 'icon icon-checked' %> <%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> @@ -60,7 +60,7 @@ # Width of the entire chart g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom -@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width) +@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width) g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max t_height = g_height + headers_height diff -r fca2657f4aa5 -r eeebe205a056 app/views/gantts/show.html.erb --- a/app/views/gantts/show.html.erb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/gantts/show.html.erb Thu Mar 03 12:02:03 2011 +0000 @@ -1,11 +1,11 @@ <% @gantt.view = self %> -

<%= l(:label_gantt) %>

+

<%= @query.new_record? ? l(:label_gantt) : h(@query.name) %>

<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %> <%= hidden_field_tag('project_id', @project.to_param) if @project%> -
+
"> <%= l(:label_filter_plural) %> -
+
"> <%= render :partial => 'queries/filters', :locals => {:query => @query} %>
@@ -23,16 +23,16 @@ <%= hidden_field_tag 'zoom', @gantt.zoom %> <%= link_to_remote l(:button_apply), - { :url => { :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :set_filter => 1 }, :update => "content", :with => "Form.serialize('query_form')" }, :class => 'icon icon-checked' %> <%= link_to_remote l(:button_clear), - { :url => { :project_id => @project, :set_filter => (@query.new_record? ? 1 : nil) }, + { :url => { :project_id => @project, :set_filter => 1 }, :method => :put, :update => "content", - }, :class => 'icon icon-reload' if @query.new_record? %> + }, :class => 'icon icon-reload' %>

<% end %> @@ -60,7 +60,7 @@ # Width of the entire chart g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom -@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width) +@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width, :subject_width => subject_width) g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max t_height = g_height + headers_height diff -r fca2657f4aa5 -r eeebe205a056 app/views/groups/.svn/entries --- a/app/views/groups/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/groups/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/groups +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/groups http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 8798190a9ed51cd47a32f7fa3b14962b 2009-09-11T21:11:20.141433Z 2864 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 77b68adb1216f00c034d0afa77a50bff 2009-09-12T09:13:13.676884Z 2871 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 61731ddfe926e25ea2108a99a7dc594d 2009-07-05T11:38:40.659710Z 2807 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z f122118621575d0b74331d392b4aba4b 2010-02-06T13:26:29.318273Z 3375 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 5fc442e9118fe012a7d4049daa4d68b4 2009-09-12T16:12:42.876344Z 2879 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 5f484ae9be041e266944cc2710caa394 2010-05-09T11:19:15.980195Z 3734 @@ -236,7 +236,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:11.000000Z 7738dc0db4c4ad48e82613829c1e991a 2010-10-30T16:47:33.260585Z 4312 @@ -270,7 +270,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z ee1e9b07710ccd0b0dee7791dddc93bb 2009-07-05T13:54:34.821434Z 2812 @@ -304,7 +304,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 09eeec211f50994f28b31bcff9be43ef 2009-09-05T11:19:00.617770Z 2858 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issue_categories/.svn/entries --- a/app/views/issue_categories/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issue_categories/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/issue_categories +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/issue_categories http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 61ef938e10897a71008d145439614aa8 2010-03-06T18:43:00.594668Z 3549 @@ -66,7 +66,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:11.000000Z e0d28729320423a7b8fcb6309b58de9a 2010-11-07T14:56:12.614499Z 4385 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z fc3f04670edce3c08e645d254198a89c 2007-09-14T11:34:08.234701Z 725 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z f7b34c60cf2f117d3c53be7b0840fe28 2008-02-29T22:54:07.325361Z 1182 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issue_moves/.svn/entries --- a/app/views/issue_moves/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issue_moves/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issue_moves http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:16.000000Z +2011-03-03T11:05:10.000000Z 9a221a421165c46becefe4e15dc6266c 2010-12-29T20:48:51.915261Z 4583 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issue_relations/.svn/entries --- a/app/views/issue_relations/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issue_relations/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issue_relations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 7024ae266ddb4d218d7c24c3b17fa790 2010-12-12T16:04:28.950669Z 4502 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issue_statuses/.svn/entries --- a/app/views/issue_statuses/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issue_statuses/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/issue_statuses +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/issue_statuses http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 2d8b318bb1dbbe6dbb478716d52e65e9 2010-03-17T20:46:22.413470Z 3600 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z e4ea04eeab7c1f7265858a9dd09f1b7b 2009-12-12T10:33:12.138303Z 3157 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 21f8b2f134a83413d09ae7e4d004c642 2009-07-05T12:22:02.133266Z 2810 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z af751ca552f43d9954a0cb1bbdb6e362 2009-07-05T12:22:02.133266Z 2810 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/.svn/all-wcprops --- a/app/views/issues/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 41 -/svn/!svn/ver/4652/trunk/app/views/issues +/svn/!svn/ver/4908/trunk/app/views/issues END _relations.rhtml K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4065/trunk/app/views/issues/_relations.rhtml +/svn/!svn/ver/4741/trunk/app/views/issues/_relations.rhtml END _history.rhtml K 25 @@ -49,7 +49,7 @@ K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4012/trunk/app/views/issues/_sidebar.rhtml +/svn/!svn/ver/4908/trunk/app/views/issues/_sidebar.rhtml END _list.rhtml K 25 @@ -93,23 +93,23 @@ V 53 /svn/!svn/ver/3946/trunk/app/views/issues/_edit.rhtml END +edit.rhtml +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/1129/trunk/app/views/issues/edit.rhtml +END _attributes.rhtml K 25 svn:wc:ra_dav:version-url V 59 /svn/!svn/ver/4090/trunk/app/views/issues/_attributes.rhtml END -edit.rhtml -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/1129/trunk/app/views/issues/edit.rhtml -END show.api.rsb K 25 svn:wc:ra_dav:version-url V 54 -/svn/!svn/ver/4512/trunk/app/views/issues/show.api.rsb +/svn/!svn/ver/4741/trunk/app/views/issues/show.api.rsb END destroy.rhtml K 25 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/.svn/entries --- a/app/views/issues/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/issues http://redmine.rubyforge.org/svn -2011-01-08T00:19:51.192586Z -4652 -tmaruyama +2011-02-21T13:34:33.010064Z +4908 +jplang @@ -32,11 +32,11 @@ -2010-09-24T12:48:29.596042Z -4659150afe6ae87105eaa29894e4d488 -2010-09-06T00:48:44.764418Z -4065 -edavis10 +2011-03-03T11:05:11.000000Z +071e7d5deebfed5ec01c6fa478e57a6d +2011-01-22T13:28:20.816262Z +4741 +jplang has-props @@ -58,7 +58,7 @@ -1816 +1763 _history.rhtml file @@ -66,7 +66,7 @@ -2010-09-24T12:48:29.596042Z +2011-03-03T11:05:11.000000Z 8d719ade30044f529f104cda9dcdd6f4 2010-09-05T22:57:20.669640Z 4062 @@ -100,7 +100,7 @@ -2010-11-19T13:04:50.824922Z +2011-03-03T11:05:11.000000Z 74c6e939ebb113c49a367fff0f463f63 2010-10-15T23:11:05.712143Z 4258 @@ -134,7 +134,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:11.000000Z f3bdc270087564333ffdacd38f1d363c 2010-12-18T14:14:04.023240Z 4533 @@ -168,7 +168,7 @@ -2010-11-19T13:04:50.824922Z +2011-03-03T11:05:11.000000Z 7c3d2a41291eabbd1c7e28139be69e49 2010-10-30T16:15:31.867344Z 4311 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z 00a1336147a304d10f556a97f7105a83 2009-12-11T18:48:34.197724Z 3151 @@ -236,7 +236,7 @@ -2010-09-24T12:48:29.596042Z +2011-03-03T11:05:11.000000Z 5a8516dceeaac8769ab1780f8e9cccd9 2010-09-16T21:33:49.399868Z 4093 @@ -270,11 +270,11 @@ -2010-09-23T14:37:44.571741Z -c2e4e73b27a58d99224ccc2d7f35dc84 -2010-08-22T18:30:26.413363Z -4012 -edavis10 +2011-03-03T11:40:18.000000Z +b9c2ef98cde787dfe8b1b0b4df497613 +2011-02-21T13:34:33.010064Z +4908 +jplang has-props @@ -296,7 +296,7 @@ -1135 +901 _list.rhtml file @@ -304,7 +304,7 @@ -2010-09-24T12:48:29.596042Z +2011-03-03T11:05:11.000000Z b5bd20e1b16f321b87b14ec6d0b7a9e7 2010-09-03T19:59:49.465806Z 4056 @@ -338,7 +338,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:11.000000Z db6f5533a330ebdcd1dd5e4c47098024 2010-12-11T13:13:49.013705Z 4489 @@ -372,7 +372,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:11.000000Z f147a1cbca0263a122d10bf674d6dcbf 2010-12-18T13:40:50.641112Z 4530 @@ -406,7 +406,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z 5cac68d4655699c1a4ce40ef17da7b0a 2009-07-29T19:04:27.717761Z 2827 @@ -440,7 +440,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z 334ec8cd87b661a181185092c242c41d 2010-08-08T07:07:20.961363Z 3924 @@ -474,7 +474,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:11.000000Z eca2b7cfea14ef6185c358e55f1b8b48 2011-01-08T00:19:51.192586Z 4652 @@ -508,7 +508,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z ebae2e20ea4028620967382b877b5860 2010-08-18T15:01:35.032314Z 3946 @@ -536,13 +536,47 @@ 2768 +edit.rhtml +file + + + + +2011-03-03T11:05:11.000000Z +4b6048de503364b0ef668df08cceb602 +2008-02-09T16:11:18.249226Z +1129 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +90 + _attributes.rhtml file -2010-09-24T12:48:29.599802Z +2011-03-03T11:05:11.000000Z e2c801f0755567e34186cdbbc510d29d 2010-09-16T18:27:33.887969Z 4090 @@ -570,16 +604,16 @@ 2461 -edit.rhtml +show.api.rsb file -2010-09-23T14:37:44.575742Z -4b6048de503364b0ef668df08cceb602 -2008-02-09T16:11:18.249226Z -1129 +2011-03-03T11:05:11.000000Z +cdb3db6cd78da1f46578c9da61923c4e +2011-01-22T13:28:20.816262Z +4741 jplang has-props @@ -602,41 +636,7 @@ -90 - -show.api.rsb -file - - - - -2011-01-13T14:09:38.000000Z -47d5c2be3301716cd4351c51904801a3 -2010-12-14T19:03:17.057916Z -4512 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2836 +2808 destroy.rhtml file @@ -644,7 +644,7 @@ -2010-09-23T14:37:44.571741Z +2011-03-03T11:05:11.000000Z b429d0e7dd6b3ef7bc1a28bdf0aeaf34 2009-04-24T17:18:36.117696Z 2685 @@ -678,7 +678,7 @@ -2010-11-19T13:04:50.824922Z +2011-03-03T11:05:11.000000Z 9889d4cce0dfd6d224e85fc1f489c623 2010-10-30T16:15:31.867344Z 4311 diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/.svn/text-base/_relations.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_relations.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/.svn/text-base/_relations.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -6,9 +6,9 @@

<%=l(:label_related_issues)%>

-<% if @issue.relations.any? %> +<% if @relations.present? %> -<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %> +<% @relations.each do |relation| %> <% roles.each do |role, count| -%> <% end -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/_form.html.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/workflows/_form.html.erb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,40 @@ +
<%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/.svn/text-base/_sidebar.rhtml.svn-base --- a/app/views/issues/.svn/text-base/_sidebar.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/.svn/text-base/_sidebar.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -13,11 +13,5 @@ <% end %> <%= call_hook(:view_issues_sidebar_planning_bottom) %> -<% unless sidebar_queries.empty? -%> -

<%= l(:label_query_plural) %>

- -<% sidebar_queries.each do |query| -%> -<%= link_to(h(query.name), :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query) %>
-<% end -%> +<%= render_sidebar_queries %> <%= call_hook(:view_issues_sidebar_queries_bottom) %> -<% end -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/.svn/text-base/show.api.rsb.svn-base --- a/app/views/issues/.svn/text-base/show.api.rsb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/.svn/text-base/show.api.rsb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -26,10 +26,10 @@ render_api_issue_children(@issue, api) if include_in_api_response?('children') api.array :relations do - @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| + @relations.each do |relation| api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) end - end if include_in_api_response?('relations') + end if include_in_api_response?('relations') && @relations.present? api.array :changesets do @issue.changesets.each do |changeset| diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/_relations.rhtml --- a/app/views/issues/_relations.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/_relations.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -6,9 +6,9 @@

<%=l(:label_related_issues)%>

-<% if @issue.relations.any? %> +<% if @relations.present? %> -<% @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| %> +<% @relations.each do |relation| %> -<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> +<% changeset = @project.repository.find_changeset_by_name(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> - + <% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/repositories/_breadcrumbs.rhtml --- a/app/views/repositories/_breadcrumbs.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/repositories/_breadcrumbs.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -16,6 +16,6 @@ / <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %> <% end %> -<%= "@ #{h revision}" if revision %> +<%= "@ #{h format_revision(@changeset)}" if @changeset %> <% html_title(with_leading_slash(path)) -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/repositories/_dir_list_content.rhtml --- a/app/views/repositories/_dir_list_content.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/repositories/_dir_list_content.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -1,25 +1,27 @@ <% @entries.each do |entry| %> <% tr_id = Digest::MD5.hexdigest(entry.path) depth = params[:depth].to_i %> +<% ent_path = replace_invalid_utf8(entry.path) %> +<% ent_name = replace_invalid_utf8(entry.name) %> -<% changeset = @project.repository.changesets.find_by_revision(entry.lastrev.identifier.to_s) if entry.lastrev && entry.lastrev.identifier %> +<% changeset = @project.repository.find_changeset_by_name(entry.lastrev.identifier) if entry.lastrev && entry.lastrev.identifier %> - + <% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/roles/.svn/entries --- a/app/views/roles/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/roles/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/roles +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/roles http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z cbcd3851055c3f5a5aa20d005b086872 2009-07-05T12:22:02.133266Z 2810 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 82f5657ab6c01b56b039af0cf2312ade 2010-02-15T16:41:16.346582Z 3435 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 652c40985320a23285c8e27439418f22 2008-10-24T15:24:35.832581Z 1943 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 4bcaa15de1de193dd1f98128b71a420b 2009-10-25T13:28:36.522470Z 2979 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 0ff8206c0e77e6356f9d16ccaeff13e2 2009-07-05T12:22:02.133266Z 2810 diff -r fca2657f4aa5 -r eeebe205a056 app/views/search/.svn/entries --- a/app/views/search/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/search/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/search +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/search http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 0235b1dd9d5f01dbaaab2b59dc006f2e 2009-09-20T14:06:57.257282Z 2895 diff -r fca2657f4aa5 -r eeebe205a056 app/views/settings/.svn/all-wcprops --- a/app/views/settings/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/settings/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4730/trunk/app/views/settings +/svn/!svn/ver/4983/trunk/app/views/settings END _issues.rhtml K 25 @@ -37,7 +37,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/3198/trunk/app/views/settings/_display.rhtml +/svn/!svn/ver/4811/trunk/app/views/settings/_display.rhtml END edit.rhtml K 25 @@ -49,7 +49,7 @@ K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/4470/trunk/app/views/settings/_repositories.rhtml +/svn/!svn/ver/4983/trunk/app/views/settings/_repositories.rhtml END _notifications.rhtml K 25 diff -r fca2657f4aa5 -r eeebe205a056 app/views/settings/.svn/entries --- a/app/views/settings/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/settings/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/settings http://redmine.rubyforge.org/svn -2011-01-16T15:36:42.998302Z -4730 -jplang +2011-03-01T10:27:51.597350Z +4983 +tmaruyama @@ -32,7 +32,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z dad877e4db2f583979314edcb017bb1b 2010-12-15T21:18:06.237327Z 4513 @@ -66,7 +66,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:10.000000Z 7307d5f65399ab2f28eac1162a330678 2010-11-25T20:27:44.648840Z 4426 @@ -100,7 +100,7 @@ -2010-11-19T13:04:48.200851Z +2011-03-03T11:05:10.000000Z 8005b162966a27cd4e7c30022320b47e 2010-10-29T22:28:24.886659Z 4306 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.683778Z +2011-03-03T11:05:10.000000Z 1da887b84f272fe4cde6fafaf198529a 2009-12-23T18:35:19.208194Z 3226 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.687777Z +2011-03-03T11:05:10.000000Z 1836fa87f24f7f62eafaed8d1886ca67 2007-10-13T14:11:06.987513Z 837 @@ -202,11 +202,11 @@ -2010-09-23T14:37:44.683778Z -af00d651b626c36ca365bd748f55ec40 -2009-12-19T20:07:09.039389Z -3198 -jplang +2011-03-03T11:40:18.000000Z +55169c45bb26caf3ff0c92c5b07d7bbe +2011-02-12T08:16:37.660908Z +4811 +jbbarth has-props @@ -228,7 +228,7 @@ -1041 +1061 edit.rhtml file @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.687777Z +2011-03-03T11:05:10.000000Z a629426fc7edef8be6c4545bce9a5abd 2009-09-12T09:13:13.676884Z 2871 @@ -270,11 +270,11 @@ -2011-01-13T14:09:10.000000Z -da15c28695cd56ff6539df1d45159797 -2010-12-05T11:45:09.061840Z -4470 -jplang +2011-03-03T11:40:18.000000Z +7bc500aa382125fa379e7539d4566431 +2011-03-01T10:27:51.597350Z +4983 +tmaruyama has-props @@ -296,7 +296,7 @@ -2303 +2231 _notifications.rhtml file @@ -304,7 +304,7 @@ -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:10.000000Z 9f784c1426ed466df89a56d5ae835efe 2011-01-16T15:36:42.998302Z 4730 @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.687777Z +2011-03-03T11:05:10.000000Z de489dd7dc60d569a855c1f33d941552 2009-12-19T20:07:09.039389Z 3198 diff -r fca2657f4aa5 -r eeebe205a056 app/views/settings/.svn/text-base/_display.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_display.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/settings/.svn/text-base/_display.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -15,7 +15,7 @@

<%= setting_check_box :gravatar_enabled %>

-

<%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid']], :blank => :label_none %>

+

<%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid'], ["Retro", "retro"]], :blank => :label_none %>

<%= submit_tag l(:button_save) %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/settings/.svn/text-base/_repositories.rhtml.svn-base --- a/app/views/settings/.svn/text-base/_repositories.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/settings/.svn/text-base/_repositories.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -18,8 +18,6 @@

<%= setting_text_field :repositories_encodings, :size => 60 %>
<%= l(:text_comma_separated) %>

-

<%= setting_select :commit_logs_encoding, Setting::ENCODINGS %>

-

<%= setting_text_field :repository_log_display_limit, :size => 6 %>

diff -r fca2657f4aa5 -r eeebe205a056 app/views/settings/_display.rhtml --- a/app/views/settings/_display.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/settings/_display.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -15,7 +15,7 @@

<%= setting_check_box :gravatar_enabled %>

-

<%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid']], :blank => :label_none %>

+

<%= setting_select :gravatar_default, [["Wavatars", 'wavatar'], ["Identicons", 'identicon'], ["Monster ids", 'monsterid'], ["Retro", "retro"]], :blank => :label_none %>

<%= submit_tag l(:button_save) %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/settings/_repositories.rhtml --- a/app/views/settings/_repositories.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/settings/_repositories.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -18,8 +18,6 @@

<%= setting_text_field :repositories_encodings, :size => 60 %>
<%= l(:text_comma_separated) %>

-

<%= setting_select :commit_logs_encoding, Setting::ENCODINGS %>

-

<%= setting_text_field :repository_log_display_limit, :size => 6 %>

diff -r fca2657f4aa5 -r eeebe205a056 app/views/time_entry_reports/.svn/entries --- a/app/views/time_entry_reports/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/time_entry_reports/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/time_entry_reports +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/time_entry_reports http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z d896f5cf56b2a3cd64887f239e584fdc 2010-10-07T15:51:09.349542Z 4239 @@ -66,7 +66,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z 5fa73daf0a67b2a39fd10320bcd7ab45 2010-10-05T16:07:17.015270Z 4232 diff -r fca2657f4aa5 -r eeebe205a056 app/views/timelog/.svn/entries --- a/app/views/timelog/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/timelog/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/timelog http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 128d8975cacb0db79fc14a461544db09 2010-10-12T15:55:21.984670Z 4250 @@ -66,7 +66,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 404d6b75c96def01a9a6bf86a6f58697 2010-10-07T15:51:09.349542Z 4239 @@ -100,7 +100,7 @@ -2011-01-13T14:09:16.000000Z +2011-03-03T11:05:10.000000Z 9faa66f4b89685010b3683f26c387512 2010-12-04T17:43:39.823144Z 4466 @@ -134,7 +134,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 3bb82a2517a120b7a44add17f3369082 2010-10-11T15:31:42.953914Z 4248 @@ -168,7 +168,7 @@ -2010-11-19T13:04:48.784870Z +2011-03-03T11:05:10.000000Z 43628f95cde9503c20744c3b9fe9dfcd 2010-10-06T18:23:45.014848Z 4235 @@ -202,7 +202,7 @@ -2011-01-13T14:09:16.000000Z +2011-03-03T11:05:10.000000Z 5838cace900e781466a5826ba75b9f44 2010-12-04T17:43:39.823144Z 4466 diff -r fca2657f4aa5 -r eeebe205a056 app/views/trackers/.svn/entries --- a/app/views/trackers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/trackers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/trackers +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/trackers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 952031a6216d1b67897c30936b8c656c 2010-02-15T16:41:27.289923Z 3437 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 0b8a4f0aead4d21c20c9cc8dd29141e5 2009-12-12T15:23:22.060140Z 3162 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z ac4b0e11130741048a5f7c7405bff3de 2009-12-09T11:03:55.646494Z 3146 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z cf313c286d40c5c44da29ad261b01421 2009-12-09T11:03:55.646494Z 3146 diff -r fca2657f4aa5 -r eeebe205a056 app/views/users/.svn/all-wcprops --- a/app/views/users/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/users/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4729/trunk/app/views/users +/svn/!svn/ver/4900/trunk/app/views/users END _general.rhtml K 25 @@ -51,18 +51,18 @@ V 52 /svn/!svn/ver/4493/trunk/app/views/users/_form.rhtml END +_preferences.html.erb +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4900/trunk/app/views/users/_preferences.html.erb +END edit.rhtml K 25 svn:wc:ra_dav:version-url V 51 /svn/!svn/ver/4729/trunk/app/views/users/edit.rhtml END -_preferences.html.erb -K 25 -svn:wc:ra_dav:version-url -V 62 -/svn/!svn/ver/4223/trunk/app/views/users/_preferences.html.erb -END index.rhtml K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 app/views/users/.svn/entries --- a/app/views/users/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/users/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/users http://redmine.rubyforge.org/svn -2011-01-16T15:23:11.666065Z -4729 +2011-02-21T09:53:29.844413Z +4900 jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z 27e27971f72ee72e276157b29606a4f8 2010-10-11T20:34:33.692909Z 4249 @@ -66,7 +66,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 82d8afa73a30d32a1df6dbf0a6ec9ccc 2010-12-12T21:21:57.860671Z 4508 @@ -100,7 +100,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z f19cc195f524459954b4b4be5bfdcff5 2010-09-30T18:22:46.611444Z 4230 @@ -134,7 +134,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z 488647d93840c1ffa5834cc45817c1c3 2010-09-29T16:00:45.891709Z 4229 @@ -168,7 +168,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z e6086313266e733c482de5431e85f7a1 2010-12-12T14:25:23.262992Z 4497 @@ -202,7 +202,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 2232eeac9e0dea5001f5c7dbd9156a79 2010-12-11T13:13:49.013705Z 4489 @@ -236,7 +236,7 @@ -2010-11-19T13:04:49.388892Z +2011-03-03T11:05:10.000000Z 1914aa4c363a1dab0cdba1e49ccc13ff 2010-11-07T14:15:01.891476Z 4382 @@ -270,7 +270,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 35c46993d584ac75dd129b95ac411a10 2010-12-12T13:39:55.171678Z 4493 @@ -298,13 +298,47 @@ 1644 +_preferences.html.erb +file + + + + +2011-03-03T11:40:18.000000Z +819ceb2599cdb65121387da777ec7454 +2011-02-21T09:53:29.844413Z +4900 +jplang + + + + + + + + + + + + + + + + + + + + + +502 + edit.rhtml file -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:10.000000Z 334693af38532eb4e5c8801223e2c718 2011-01-16T15:23:11.666065Z 4729 @@ -332,47 +366,13 @@ 523 -_preferences.html.erb -file - - - - -2010-11-19T13:04:49.392852Z -ebc1d625f2d6809ea491e7303f758e7a -2010-09-28T22:13:06.534232Z -4223 -edavis10 - - - - - - - - - - - - - - - - - - - - - -441 - index.rhtml file -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:10.000000Z 82f2de0e0ade1e3dc2c39d3415d5580c 2011-01-16T15:23:11.666065Z 4729 @@ -406,7 +406,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 5af24df58230f005be3a6814c6f53e33 2010-12-11T10:19:11.273304Z 4486 diff -r fca2657f4aa5 -r eeebe205a056 app/views/users/.svn/text-base/_preferences.html.erb.svn-base --- a/app/views/users/.svn/text-base/_preferences.html.erb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/users/.svn/text-base/_preferences.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -2,5 +2,6 @@

<%= pref_fields.check_box :hide_mail %>

<%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %>

<%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>

+

<%= pref_fields.check_box :warn_on_leaving_unsaved %>

<% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/users/_preferences.html.erb --- a/app/views/users/_preferences.html.erb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/users/_preferences.html.erb Thu Mar 03 12:02:03 2011 +0000 @@ -2,5 +2,6 @@

<%= pref_fields.check_box :hide_mail %>

<%= pref_fields.select :time_zone, ActiveSupport::TimeZone.all.collect {|z| [ z.to_s, z.name ]}, :include_blank => true %>

<%= pref_fields.select :comments_sorting, [[l(:label_chronological_order), 'asc'], [l(:label_reverse_chronological_order), 'desc']] %>

+

<%= pref_fields.check_box :warn_on_leaving_unsaved %>

<% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/versions/.svn/entries --- a/app/views/versions/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/versions/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/versions +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/versions http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:10.000000Z a50c2acc01c8d25be8e2c8cd082a2272 2010-09-11T14:00:23.147923Z 4082 @@ -66,7 +66,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:10.000000Z d53190d87d1c24abce0fc949f816a706 2010-09-17T15:55:08.377083Z 4097 @@ -100,7 +100,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z ae897448ea943e1856633a3683c17a79 2010-10-29T22:40:02.439890Z 4307 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z acf01b501fb1e345fd7abf572233ead9 2009-12-06T10:28:20.099964Z 3123 @@ -168,7 +168,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:10.000000Z b5364f2d6f4cb92d1f747cd3dda5098f 2010-09-17T16:11:43.740142Z 4098 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 6e68f24a6d6571388df3018bc915d37a 2009-11-15T15:22:55.021661Z 3064 @@ -236,7 +236,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:10.000000Z 85ddc3502659176221220bebef002d6c 2010-09-17T15:55:08.377083Z 4097 diff -r fca2657f4aa5 -r eeebe205a056 app/views/watchers/.svn/entries --- a/app/views/watchers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/watchers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/watchers +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/watchers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 7ece4fb161c765ac7e63c30883733d99 2010-03-13T17:45:41.194736Z 3579 diff -r fca2657f4aa5 -r eeebe205a056 app/views/welcome/.svn/entries --- a/app/views/welcome/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/welcome/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/welcome +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/welcome http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T12:46:09.000000Z +2011-03-03T11:05:10.000000Z df32441c6802182ffb9a205c97ec8f3b 2010-08-27T14:05:54.014502Z 4047 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z dbe04ed0b787a5470a99a1f286c0685e 2009-01-27T17:27:50.299725Z 2319 diff -r fca2657f4aa5 -r eeebe205a056 app/views/wiki/.svn/all-wcprops --- a/app/views/wiki/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wiki/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4651/trunk/app/views/wiki +/svn/!svn/ver/4953/trunk/app/views/wiki END export_multiple.rhtml K 25 @@ -31,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4651/trunk/app/views/wiki/history.rhtml +/svn/!svn/ver/4740/trunk/app/views/wiki/history.rhtml END edit.rhtml K 25 @@ -55,7 +55,7 @@ K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4551/trunk/app/views/wiki/diff.rhtml +/svn/!svn/ver/4953/trunk/app/views/wiki/diff.rhtml END _content.rhtml K 25 @@ -69,15 +69,15 @@ V 54 /svn/!svn/ver/4296/trunk/app/views/wiki/annotate.rhtml END +date_index.html.erb +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/4303/trunk/app/views/wiki/date_index.html.erb +END destroy.rhtml K 25 svn:wc:ra_dav:version-url V 53 /svn/!svn/ver/4296/trunk/app/views/wiki/destroy.rhtml END -date_index.html.erb -K 25 -svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4303/trunk/app/views/wiki/date_index.html.erb -END diff -r fca2657f4aa5 -r eeebe205a056 app/views/wiki/.svn/entries --- a/app/views/wiki/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wiki/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/wiki http://redmine.rubyforge.org/svn -2011-01-06T21:24:32.739169Z -4651 +2011-02-27T12:50:47.369941Z +4953 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.719778Z +2011-03-03T11:05:11.000000Z 071f00658656d063a029ff9efcfda553 2009-11-11T11:10:03.406528Z 3026 @@ -66,7 +66,7 @@ -2010-11-19T13:04:50.809800Z +2011-03-03T11:05:11.000000Z d47125b655bae6af3af29514ca23ec15 2010-10-25T16:16:46.309025Z 4290 @@ -100,7 +100,7 @@ -2010-11-19T13:04:50.809800Z +2011-03-03T11:05:11.000000Z 1ebc19864533a067dc46a3bc6f3e9b22 2010-10-28T21:25:38.778234Z 4303 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.719778Z +2011-03-03T11:05:11.000000Z 2ec7fba790578844437bd62bf95a9856 2009-11-11T11:10:03.406528Z 3026 @@ -168,10 +168,10 @@ -2011-01-13T14:09:29.000000Z -a4820ed36a470c301cd1f3c5d1d32993 -2011-01-06T21:24:32.739169Z -4651 +2011-03-03T11:05:11.000000Z +032cfe657db049a60473a31d2d0391a2 +2011-01-22T13:21:24.424880Z +4740 jplang has-props @@ -194,7 +194,7 @@ -1656 +1594 edit.rhtml file @@ -202,7 +202,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z cc9828c34998619dbd4b4925bf511be8 2010-10-28T21:25:38.778234Z 4303 @@ -236,7 +236,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z b45d32467f7beb06dbe055ecf7fdb247 2010-11-06T14:30:32.528294Z 4375 @@ -270,7 +270,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z 619db9d2a58a28c4b5c4baeaee88cc41 2010-10-27T16:27:06.240747Z 4296 @@ -304,10 +304,10 @@ -2011-01-13T14:09:29.000000Z -da40592a7819a8786e7e436b2ecff8b1 -2010-12-20T22:33:44.015948Z -4551 +2011-03-03T11:40:18.000000Z +954230b09809d40bbd6f6514fb1fcc59 +2011-02-27T12:50:47.369941Z +4953 jplang has-props @@ -330,7 +330,7 @@ -879 +931 _content.rhtml file @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.719778Z +2011-03-03T11:05:11.000000Z 8705c97ebf1405603afbbd8614ee9d2b 2007-11-12T14:36:33.182682Z 897 @@ -372,7 +372,7 @@ -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z 36a354ea1a705ec4843972e520ce2bd6 2010-10-27T16:27:06.240747Z 4296 @@ -400,13 +400,47 @@ 1212 +date_index.html.erb +file + + + + +2011-03-03T11:05:11.000000Z +5edb3698546c4aad9913945d39005221 +2010-10-28T21:25:38.778234Z +4303 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +1117 + destroy.rhtml file -2010-11-19T13:04:50.812967Z +2011-03-03T11:05:11.000000Z 5f032c821889bfc8bf9e6eeca1023f58 2010-10-27T16:27:06.240747Z 4296 @@ -434,37 +468,3 @@ 908 -date_index.html.erb -file - - - - -2010-11-19T13:04:50.812967Z -5edb3698546c4aad9913945d39005221 -2010-10-28T21:25:38.778234Z -4303 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -1117 - diff -r fca2657f4aa5 -r eeebe205a056 app/views/wiki/.svn/text-base/diff.rhtml.svn-base --- a/app/views/wiki/.svn/text-base/diff.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wiki/.svn/text-base/diff.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -12,6 +12,6 @@ (<%= @diff.content_to.author ? @diff.content_to.author.name : "anonyme" %>, <%= format_time(@diff.content_to.updated_on) %>)

-
- -<%= html_diff(@diff) %> +
+<%= simple_format_without_paragraph @diff.to_html %> +
diff -r fca2657f4aa5 -r eeebe205a056 app/views/wiki/.svn/text-base/history.rhtml.svn-base --- a/app/views/wiki/.svn/text-base/history.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wiki/.svn/text-base/history.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -3,7 +3,6 @@

<%= l(:label_history) %>

<% form_tag({:action => "diff"}, :method => :get) do %> - <%= hidden_field_tag('project_id', h(@project.to_param)) %>
<%= l(relation.label_for(@issue)) %> <%= "(#{l('datetime.distance_in_words.x_days', :count => relation.delay)})" if relation.delay && relation.delay != 0 %> <%= h(relation.other_issue(@issue).project) + ' - ' if Setting.cross_project_issue_relations? %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/_sidebar.rhtml --- a/app/views/issues/_sidebar.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/_sidebar.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -13,11 +13,5 @@ <% end %> <%= call_hook(:view_issues_sidebar_planning_bottom) %> -<% unless sidebar_queries.empty? -%> -

<%= l(:label_query_plural) %>

- -<% sidebar_queries.each do |query| -%> -<%= link_to(h(query.name), :controller => 'issues', :action => 'index', :project_id => @project, :query_id => query) %>
-<% end -%> +<%= render_sidebar_queries %> <%= call_hook(:view_issues_sidebar_queries_bottom) %> -<% end -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/issues/show.api.rsb --- a/app/views/issues/show.api.rsb Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/issues/show.api.rsb Thu Mar 03 12:02:03 2011 +0000 @@ -26,10 +26,10 @@ render_api_issue_children(@issue, api) if include_in_api_response?('children') api.array :relations do - @issue.relations.select {|r| r.other_issue(@issue).visible? }.each do |relation| + @relations.each do |relation| api.relation(:id => relation.id, :issue_id => relation.other_issue(@issue).id, :relation_type => relation.relation_type_for(@issue), :delay => relation.delay) end - end if include_in_api_response?('relations') + end if include_in_api_response?('relations') && @relations.present? api.array :changesets do @issue.changesets.each do |changeset| diff -r fca2657f4aa5 -r eeebe205a056 app/views/journals/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/svn/!svn/ver/4954/trunk/app/views/journals +END +_notes_form.rhtml +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/2924/trunk/app/views/journals/_notes_form.rhtml +END +update.rjs +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/3596/trunk/app/views/journals/update.rjs +END +edit.rjs +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/1105/trunk/app/views/journals/edit.rjs +END +diff.html.erb +K 25 +svn:wc:ra_dav:version-url +V 57 +/svn/!svn/ver/4954/trunk/app/views/journals/diff.html.erb +END +index.rxml +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4034/trunk/app/views/journals/index.rxml +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/journals/.svn/entries --- a/app/views/journals/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/journals/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/journals +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/journals http://redmine.rubyforge.org/svn -2010-08-23T15:04:36.844654Z -4034 -edavis10 +2011-02-27T13:34:41.060565Z +4954 +jplang @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z fb8a5b1bfdbadbbaaa17ce7fc1dfcf3c 2009-10-11T10:36:11.599175Z 2924 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 269ec86216a5d0340e02940f1b190d51 2010-03-17T04:13:05.342620Z 3596 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z ce552c52f7c423630412d0593cc1ee61 2008-02-02T10:50:31.694950Z 1105 @@ -128,13 +128,47 @@ 140 +diff.html.erb +file + + + + +2011-03-03T11:40:18.000000Z +073352211ae7cecb9e1ff5ea1ce17150 +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +408 + index.rxml file -2010-09-10T14:59:24.000000Z +2011-03-03T11:05:10.000000Z ef7f777c9318cee52e909377c4f96e8b 2010-08-23T15:04:36.844654Z 4034 diff -r fca2657f4aa5 -r eeebe205a056 app/views/journals/.svn/prop-base/diff.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/.svn/prop-base/diff.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/journals/.svn/text-base/diff.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/.svn/text-base/diff.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,10 @@ +

<%=h @issue.tracker %> #<%= @issue.id %>

+

<%= authoring @journal.created_on, @journal.user, :label => :label_updated_time_by %>

+ +
+<%= simple_format_without_paragraph @diff.to_html %> +
+ +

<%= link_to l(:button_back), issue_path(@issue), :onclick => 'history.back(); return false;' %>

+ +<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/journals/diff.html.erb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/journals/diff.html.erb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,10 @@ +

<%=h @issue.tracker %> #<%= @issue.id %>

+

<%= authoring @journal.created_on, @journal.user, :label => :label_updated_time_by %>

+ +
+<%= simple_format_without_paragraph @diff.to_html %> +
+ +

<%= link_to l(:button_back), issue_path(@issue), :onclick => 'history.back(); return false;' %>

+ +<% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/layouts/.svn/all-wcprops --- a/app/views/layouts/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/layouts/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/4731/trunk/app/views/layouts +/svn/!svn/ver/4965/trunk/app/views/layouts END base.rhtml K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4731/trunk/app/views/layouts/base.rhtml +/svn/!svn/ver/4965/trunk/app/views/layouts/base.rhtml END mailer.text.plain.erb K 25 diff -r fca2657f4aa5 -r eeebe205a056 app/views/layouts/.svn/entries --- a/app/views/layouts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/layouts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/layouts http://redmine.rubyforge.org/svn -2011-01-16T16:36:58.753919Z -4731 +2011-02-28T16:44:02.921792Z +4965 jplang @@ -32,10 +32,10 @@ -2011-01-19T15:03:32.000000Z -0bc162aa0af44b46e02548061da67700 -2011-01-16T16:36:58.753919Z -4731 +2011-03-03T11:40:18.000000Z +be984c02903b5fdba04df41a14c73242 +2011-02-28T16:44:02.921792Z +4965 jplang has-props @@ -58,7 +58,7 @@ -2927 +2912 mailer.text.plain.erb file @@ -66,7 +66,7 @@ -2010-11-19T13:04:48.184855Z +2011-03-03T11:05:10.000000Z 490231bbc42932a0f9e1735a94d06260 2010-11-02T19:00:36.834304Z 4362 @@ -100,7 +100,7 @@ -2010-11-19T13:04:48.184855Z +2011-03-03T11:05:10.000000Z 5073a425d4e7896c725996f9cf35f74b 2010-11-02T19:00:36.834304Z 4362 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.583752Z +2011-03-03T11:05:10.000000Z cc6ca08e56314fb510561e8eeb4ede46 2009-12-17T18:21:02.630202Z 3176 diff -r fca2657f4aa5 -r eeebe205a056 app/views/layouts/.svn/text-base/base.rhtml.svn-base --- a/app/views/layouts/.svn/text-base/base.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/layouts/.svn/text-base/base.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -8,7 +8,7 @@ <%= favicon %> <%= stylesheet_link_tag 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> -<%= javascript_include_tag :defaults %> +<%= javascript_heads %> <%= heads_for_theme %> <%= heads_for_wiki_formatter %> <%= yield :header_tags -%> - +
diff -r fca2657f4aa5 -r eeebe205a056 app/views/layouts/base.rhtml --- a/app/views/layouts/base.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/layouts/base.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -8,7 +8,7 @@ <%= favicon %> <%= stylesheet_link_tag 'application', :media => 'all' %> <%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> -<%= javascript_include_tag :defaults %> +<%= javascript_heads %> <%= heads_for_theme %> <%= heads_for_wiki_formatter %> <%= yield :header_tags -%> - +
diff -r fca2657f4aa5 -r eeebe205a056 app/views/ldap_auth_sources/.svn/entries --- a/app/views/ldap_auth_sources/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/ldap_auth_sources/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/ldap_auth_sources +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/ldap_auth_sources http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 7eaca2b2857c3c1ef6fa72633333d56f 2010-05-23T03:16:31.304135Z 3744 diff -r fca2657f4aa5 -r eeebe205a056 app/views/mailer/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/mailer/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,197 @@ +K 25 +svn:wc:ra_dav:version-url +V 41 +/svn/!svn/ver/4892/trunk/app/views/mailer +END +wiki_content_added.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/4296/trunk/app/views/mailer/wiki_content_added.text.plain.rhtml +END +account_activated.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/2484/trunk/app/views/mailer/account_activated.text.plain.rhtml +END +register.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/877/trunk/app/views/mailer/register.text.html.rhtml +END +account_activation_request.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/915/trunk/app/views/mailer/account_activation_request.text.plain.rhtml +END +account_activation_request.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/3452/trunk/app/views/mailer/account_activation_request.text.html.rhtml +END +attachments_added.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/877/trunk/app/views/mailer/attachments_added.text.plain.rhtml +END +issue_edit.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 69 +/svn/!svn/ver/2493/trunk/app/views/mailer/issue_edit.text.plain.rhtml +END +issue_edit.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/3452/trunk/app/views/mailer/issue_edit.text.html.rhtml +END +issue_add.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/3452/trunk/app/views/mailer/issue_add.text.html.rhtml +END +message_posted.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3452/trunk/app/views/mailer/message_posted.text.html.rhtml +END +reminder.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/2493/trunk/app/views/mailer/reminder.text.plain.rhtml +END +reminder.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/2814/trunk/app/views/mailer/reminder.text.html.rhtml +END +wiki_content_added.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4296/trunk/app/views/mailer/wiki_content_added.text.html.rhtml +END +test.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/877/trunk/app/views/mailer/test.text.plain.rhtml +END +test.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/877/trunk/app/views/mailer/test.text.html.rhtml +END +account_activated.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/2484/trunk/app/views/mailer/account_activated.text.html.rhtml +END +register.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/877/trunk/app/views/mailer/register.text.plain.rhtml +END +_issue_text_plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/4892/trunk/app/views/mailer/_issue_text_plain.rhtml +END +_issue_text_html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4892/trunk/app/views/mailer/_issue_text_html.rhtml +END +news_added.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/877/trunk/app/views/mailer/news_added.text.plain.rhtml +END +attachments_added.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/3452/trunk/app/views/mailer/attachments_added.text.html.rhtml +END +news_added.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/3452/trunk/app/views/mailer/news_added.text.html.rhtml +END +document_added.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/877/trunk/app/views/mailer/document_added.text.plain.rhtml +END +document_added.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3452/trunk/app/views/mailer/document_added.text.html.rhtml +END +issue_add.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/2493/trunk/app/views/mailer/issue_add.text.plain.rhtml +END +account_information.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/877/trunk/app/views/mailer/account_information.text.plain.rhtml +END +message_posted.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/932/trunk/app/views/mailer/message_posted.text.plain.rhtml +END +account_information.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/3452/trunk/app/views/mailer/account_information.text.html.rhtml +END +wiki_content_updated.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4296/trunk/app/views/mailer/wiki_content_updated.text.plain.rhtml +END +lost_password.text.plain.rhtml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1683/trunk/app/views/mailer/lost_password.text.plain.rhtml +END +wiki_content_updated.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4296/trunk/app/views/mailer/wiki_content_updated.text.html.rhtml +END +lost_password.text.html.rhtml +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/3452/trunk/app/views/mailer/lost_password.text.html.rhtml +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/mailer/.svn/entries --- a/app/views/mailer/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/mailer/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/mailer http://redmine.rubyforge.org/svn -2010-10-27T16:27:06.240747Z -4296 -edavis10 +2011-02-20T14:27:34.168395Z +4892 +jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.420968Z +2011-03-03T11:05:10.000000Z 1729c597befa0c9411266eb9d1c5b577 2010-10-27T16:27:06.240747Z 4296 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.599741Z +2011-03-03T11:05:10.000000Z e54fccdf5cf9e146cddf2adc5797d76f 2009-02-20T17:04:47.905923Z 2484 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 55d268cfc5ec4c2375739d401a00e9ca 2007-11-04T10:43:39.403792Z 877 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 157b6123ac6990f3cb83d1a24c441599 2007-11-18T17:46:55.863051Z 915 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 99836d2f584d6975add91d6f4885dfa3 2010-02-18T19:13:38.135448Z 3452 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 0fcec4c9195f18d0d58724feb863a27e 2007-11-04T10:43:39.403792Z 877 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 501bcdc81562733bce55a29655f6fd89 2009-02-21T11:04:50.579477Z 2493 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 746db1ca981aa5fc37569de58a3be57b 2010-02-18T19:13:38.135448Z 3452 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 55b994ef0e81fdc6d78f280c8716f230 2010-02-18T19:13:38.135448Z 3452 @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 76b612bb95df0f232af66dcfa75908a9 2010-02-18T19:13:38.135448Z 3452 @@ -372,7 +372,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 6a0fb1622f40125ab40706fa05705436 2009-02-21T11:04:50.579477Z 2493 @@ -406,7 +406,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 6efcff34ccd9ec0ebd5c501a38bd9e61 2009-07-05T14:14:44.411724Z 2814 @@ -440,7 +440,7 @@ -2010-11-19T13:04:49.420968Z +2011-03-03T11:05:10.000000Z 37e05984b98664e4b97c26b51196f9ab 2010-10-27T16:27:06.240747Z 4296 @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 62a282059a34f2aaa4d56b609e94e27c 2007-11-04T10:43:39.403792Z 877 @@ -508,7 +508,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z b95faada3d8a7eac9ddd90de85d377eb 2007-11-04T10:43:39.403792Z 877 @@ -542,7 +542,7 @@ -2010-09-23T14:37:44.599741Z +2011-03-03T11:05:10.000000Z b6dee3a7f5ce5253d3d66ea2d0aed032 2009-02-20T17:04:47.905923Z 2484 @@ -576,7 +576,7 @@ -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 382940abff8d469305e2b82eaac09875 2007-11-04T10:43:39.403792Z 877 @@ -610,8 +610,76 @@ -2010-09-23T14:37:44.599741Z -1f73b58bdc0fd4474073437ce2e219bd +2011-03-03T11:40:18.000000Z +76a51edc640a60b59fca8e679d0161b6 +2011-02-20T14:27:34.168395Z +4892 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +498 + +_issue_text_html.rhtml +file + + + + +2011-03-03T11:40:18.000000Z +68467469e0b5a8d3dc67dba7ba7e42b0 +2011-02-20T14:27:34.168395Z +4892 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +635 + +news_added.text.plain.rhtml +file + + + + +2011-03-03T11:05:10.000000Z +0cbce1fe1b288482af3095ce9bc555ed 2007-11-04T10:43:39.403792Z 877 jplang @@ -636,41 +704,7 @@ -492 - -_issue_text_html.rhtml -file - - - - -2010-09-23T14:37:44.599741Z -871cf6abc13d895f9de91ef4ac36c2bd -2010-02-18T19:13:38.135448Z -3452 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -629 +87 attachments_added.text.html.rhtml file @@ -678,7 +712,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z db9ef17343824d59b7a19db7036ee2f1 2010-02-18T19:13:38.135448Z 3452 @@ -706,47 +740,13 @@ 144 -news_added.text.plain.rhtml -file - - - - -2010-09-23T14:37:44.607738Z -0cbce1fe1b288482af3095ce9bc555ed -2007-11-04T10:43:39.403792Z -877 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -87 - news_added.text.html.rhtml file -2010-09-23T14:37:44.607738Z +2011-03-03T11:05:10.000000Z 7dffb9cfc22aef3b03d0d771179f26d6 2010-02-18T19:13:38.135448Z 3452 @@ -780,7 +780,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z d4eae87a9e17f49caeb6913659b9c42d 2007-11-04T10:43:39.403792Z 877 @@ -808,13 +808,47 @@ 107 +document_added.text.html.rhtml +file + + + + +2011-03-03T11:05:10.000000Z +06d5fbff057e28328f2be88419207f80 +2010-02-18T19:13:38.135448Z +3452 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +163 + issue_add.text.plain.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 52a0f774acd5b7aeeb3768de943af901 2009-02-21T11:04:50.579477Z 2493 @@ -842,47 +876,13 @@ 224 -document_added.text.html.rhtml -file - - - - -2010-09-23T14:37:44.603754Z -06d5fbff057e28328f2be88419207f80 -2010-02-18T19:13:38.135448Z -3452 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -163 - account_information.text.plain.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 2b46c7d28f33cec521374ccae2fd8451 2007-11-04T10:43:39.403792Z 877 @@ -910,13 +910,47 @@ 295 +message_posted.text.plain.rhtml +file + + + + +2011-03-03T11:05:10.000000Z +9b7ab36ebc57f0c02756d2b076e67b19 +2007-11-26T18:47:49.588558Z +932 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +68 + account_information.text.html.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z e7e91d7f18dd1547cfebafdf4822a18f 2010-02-18T19:13:38.135448Z 3452 @@ -944,17 +978,17 @@ 368 -message_posted.text.plain.rhtml +wiki_content_updated.text.plain.rhtml file -2010-09-23T14:37:44.603754Z -9b7ab36ebc57f0c02756d2b076e67b19 -2007-11-26T18:47:49.588558Z -932 -jplang +2011-03-03T11:05:10.000000Z +0cb005c22ad144fdbe29238b0080f28b +2010-10-27T16:27:06.240747Z +4296 +edavis10 has-props @@ -976,7 +1010,7 @@ -68 +288 lost_password.text.plain.rhtml file @@ -984,7 +1018,7 @@ -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z 44018a44ceaecb5c9be3fed66e759064 2008-07-21T19:13:46.546624Z 1683 @@ -1012,47 +1046,13 @@ 97 -wiki_content_updated.text.plain.rhtml -file - - - - -2010-11-19T13:04:49.420968Z -0cb005c22ad144fdbe29238b0080f28b -2010-10-27T16:27:06.240747Z -4296 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -288 - lost_password.text.html.rhtml file -2010-09-23T14:37:44.603754Z +2011-03-03T11:05:10.000000Z a53d9ea13c19cbce1edc375a01b5753d 2010-02-18T19:13:38.135448Z 3452 @@ -1086,7 +1086,7 @@ -2010-11-19T13:04:49.420968Z +2011-03-03T11:05:10.000000Z f35cf0d09dd393a255db2d428a3d30f0 2010-10-27T16:27:06.240747Z 4296 diff -r fca2657f4aa5 -r eeebe205a056 app/views/mailer/.svn/text-base/_issue_text_html.rhtml.svn-base --- a/app/views/mailer/.svn/text-base/_issue_text_html.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/mailer/.svn/text-base/_issue_text_html.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -7,7 +7,7 @@
  • <%=l(:field_assigned_to)%>: <%=h issue.assigned_to %>
  • <%=l(:field_category)%>: <%=h issue.category %>
  • <%=l(:field_fixed_version)%>: <%=h issue.fixed_version %>
  • -<% issue.custom_values.each do |c| %> +<% issue.custom_field_values.each do |c| %>
  • <%=h c.custom_field.name %>: <%=h show_value(c) %>
  • <% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/mailer/.svn/text-base/_issue_text_plain.rhtml.svn-base --- a/app/views/mailer/.svn/text-base/_issue_text_plain.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/mailer/.svn/text-base/_issue_text_plain.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -7,7 +7,7 @@ <%=l(:field_assigned_to)%>: <%= issue.assigned_to %> <%=l(:field_category)%>: <%= issue.category %> <%=l(:field_fixed_version)%>: <%= issue.fixed_version %> -<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> +<% issue.custom_field_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> <% end %> <%= issue.description %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/mailer/_issue_text_html.rhtml --- a/app/views/mailer/_issue_text_html.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/mailer/_issue_text_html.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -7,7 +7,7 @@
  • <%=l(:field_assigned_to)%>: <%=h issue.assigned_to %>
  • <%=l(:field_category)%>: <%=h issue.category %>
  • <%=l(:field_fixed_version)%>: <%=h issue.fixed_version %>
  • -<% issue.custom_values.each do |c| %> +<% issue.custom_field_values.each do |c| %>
  • <%=h c.custom_field.name %>: <%=h show_value(c) %>
  • <% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/mailer/_issue_text_plain.rhtml --- a/app/views/mailer/_issue_text_plain.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/mailer/_issue_text_plain.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -7,7 +7,7 @@ <%=l(:field_assigned_to)%>: <%= issue.assigned_to %> <%=l(:field_category)%>: <%= issue.category %> <%=l(:field_fixed_version)%>: <%= issue.fixed_version %> -<% issue.custom_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> +<% issue.custom_field_values.each do |c| %><%= c.custom_field.name %>: <%= show_value(c) %> <% end %> <%= issue.description %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/members/.svn/entries --- a/app/views/members/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/members/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/members +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/members http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 9e105ea0b16e73250d47d57f07d71cff 2009-09-12T08:36:46.650954Z 2869 diff -r fca2657f4aa5 -r eeebe205a056 app/views/messages/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/messages/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/svn/!svn/ver/4889/trunk/app/views/messages +END +show.rhtml +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/3877/trunk/app/views/messages/show.rhtml +END +_form.rhtml +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/3339/trunk/app/views/messages/_form.rhtml +END +edit.rhtml +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4889/trunk/app/views/messages/edit.rhtml +END +new.rhtml +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/1205/trunk/app/views/messages/new.rhtml +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/messages/.svn/entries --- a/app/views/messages/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/messages/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/messages +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/messages http://redmine.rubyforge.org/svn -2010-07-25T10:02:12.905073Z -3877 +2011-02-20T13:11:10.508449Z +4889 jplang @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z c68f1ef8a922f2a408e0349d80db4376 2010-07-25T10:02:12.905073Z 3877 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 4fecf6ec48e549e01ada68dc8d623f38 2010-01-25T17:26:02.255593Z 3339 @@ -100,10 +100,10 @@ -2010-08-12T15:03:25.000000Z -72a4fb6eecd42aceb751370901633f24 -2008-03-07T17:49:44.664945Z -1205 +2011-03-03T11:40:18.000000Z +65fbdcd20ac7f10349863c836306f7d3 +2011-02-20T13:11:10.508449Z +4889 jplang has-props @@ -126,7 +126,7 @@ -883 +965 new.rhtml file @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 3512563f842c2e951d7738870f2d4065 2008-03-07T17:49:44.664945Z 1205 diff -r fca2657f4aa5 -r eeebe205a056 app/views/messages/.svn/text-base/edit.rhtml.svn-base --- a/app/views/messages/.svn/text-base/edit.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/messages/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -12,3 +12,7 @@ }, :accesskey => accesskey(:preview) %> <% end %>
    + +<% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> +<% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/messages/edit.rhtml --- a/app/views/messages/edit.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/messages/edit.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -12,3 +12,7 @@ }, :accesskey => accesskey(:preview) %> <% end %>
    + +<% content_for :header_tags do %> + <%= stylesheet_link_tag 'scm' %> +<% end %> diff -r fca2657f4aa5 -r eeebe205a056 app/views/my/.svn/entries --- a/app/views/my/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/my/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4707 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/my http://redmine.rubyforge.org/svn -2010-11-07T12:36:19.797484Z -4380 +2011-01-15T14:04:11.836008Z +4722 jplang @@ -32,7 +32,7 @@ -2010-11-19T13:04:47.012855Z +2011-03-03T11:05:10.000000Z 746c4ac2d5bc111d91747aa0b0c54a5a 2010-09-28T22:13:06.534232Z 4223 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z afa83dffe27e19383284d8177f1f4687 2010-03-04T19:02:57.949679Z 3542 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.623783Z +2011-03-03T11:05:10.000000Z a43c901172c8b1750d24612b24f2db22 2009-04-21T13:43:57.529967Z 2678 @@ -137,7 +137,7 @@ -2010-09-23T14:37:44.619750Z +2011-03-03T11:05:10.000000Z 91a0469f13d98fd2504ca036e16660f1 2010-06-19T16:50:13.340830Z 3775 @@ -171,7 +171,7 @@ -2010-09-23T14:37:44.619750Z +2011-03-03T11:05:10.000000Z efb09bc859f5527d219f0dd3d5c12fe8 2009-02-26T16:15:07.718565Z 2528 @@ -205,10 +205,10 @@ -2010-11-19T13:04:47.012855Z -afbc3db612a251e1fcb34498f27c50b8 -2010-11-07T12:36:19.797484Z -4380 +2011-03-03T11:05:10.000000Z +852c99d50bf883063cd77b7042c145d4 +2011-01-15T14:04:11.836008Z +4722 jplang has-props @@ -231,5 +231,5 @@ -4274 +4275 diff -r fca2657f4aa5 -r eeebe205a056 app/views/my/blocks/.svn/entries --- a/app/views/my/blocks/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/my/blocks/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/my/blocks +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/my/blocks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 0b880299704151a6acd66b5632f60426 2010-03-10T05:10:43.201527Z 3557 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 6aa71a8cc8a018c4c564915c10355709 2007-04-20T09:53:44.242780Z 449 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 55339408a7e093de86505f92845ed977 2009-03-17T17:34:49.297132Z 2598 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z bf22b792b1b79c60dc866718c074f370 2009-05-30T23:30:36.923541Z 2777 @@ -168,7 +168,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:10.000000Z 2ba11e15a7f15f88fe061979d921b59d 2010-10-15T23:37:01.382819Z 4259 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z a21d8649f0daec69caabb118e9b6375c 2008-08-26T11:08:45.487893Z 1766 @@ -236,7 +236,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 3894ab9b2f76b3622a362843be2162be 2010-01-30T11:23:17.508662Z 3351 diff -r fca2657f4aa5 -r eeebe205a056 app/views/news/.svn/entries --- a/app/views/news/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/news/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/news http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-19T13:04:49.428894Z +2011-03-03T11:05:10.000000Z 2501c1cef884fd4a56abb3a4e736825f 2010-09-27T16:51:12.033537Z 4214 @@ -66,7 +66,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 194919e4bc598629f690752af5340b5b 2010-12-12T17:00:52.100205Z 4505 @@ -100,7 +100,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:10.000000Z 969b4f69a93036097550cd14be8023bc 2010-11-20T09:38:54.291843Z 4412 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.627781Z +2011-03-03T11:05:10.000000Z e06c154a981d18d975bcba8eb682df30 2007-09-22T17:52:43.686392Z 750 @@ -168,7 +168,7 @@ -2010-11-19T13:04:49.432892Z +2011-03-03T11:05:10.000000Z dd2c968c6b42916bff9b9e5de055e007 2010-09-27T16:51:12.033537Z 4214 @@ -202,7 +202,7 @@ -2010-11-19T13:04:49.432892Z +2011-03-03T11:05:10.000000Z 764ec3719917039d0cac3d375ec819c4 2010-10-22T14:42:38.351679Z 4267 @@ -236,7 +236,7 @@ -2010-11-19T13:04:49.432892Z +2011-03-03T11:05:10.000000Z 1e7f24dd1dc6a117b245a76174e4c8ae 2010-09-27T16:51:12.033537Z 4214 diff -r fca2657f4aa5 -r eeebe205a056 app/views/previews/.svn/entries --- a/app/views/previews/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/previews/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/previews +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/previews http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-10T14:59:24.000000Z +2011-03-03T11:05:10.000000Z 359c6608ef716c8b3b62fd96c241a680 2010-08-18T15:01:35.032314Z 3946 diff -r fca2657f4aa5 -r eeebe205a056 app/views/projects/.svn/entries --- a/app/views/projects/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/projects/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/projects http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.643780Z +2011-03-03T11:05:11.000000Z 26653788620aef89a25b8ad819144e03 2010-03-21T11:17:29.163519Z 3608 @@ -69,7 +69,7 @@ -2011-01-13T14:09:29.000000Z +2011-03-03T11:05:11.000000Z 89a2baf21090ed983ffe265fa0929b29 2011-01-06T21:02:19.982329Z 4648 @@ -103,7 +103,7 @@ -2011-01-13T14:09:29.000000Z +2011-03-03T11:05:11.000000Z 4eef8200b378cb9b074da5abac7c5dfa 2010-12-23T13:34:44.668484Z 4572 @@ -137,7 +137,7 @@ -2010-09-23T14:37:44.643780Z +2011-03-03T11:05:11.000000Z 66d45b68c4615d2b502b2c6d06cf0951 2009-09-12T09:13:13.676884Z 2871 @@ -171,7 +171,7 @@ -2010-11-19T13:04:49.468916Z +2011-03-03T11:05:11.000000Z bbcdfa64f2a80d809b80b00c26fd0c8c 2010-11-07T14:15:01.891476Z 4382 @@ -205,7 +205,7 @@ -2011-01-13T14:09:29.000000Z +2011-03-03T11:05:11.000000Z b0519f745853f4f4e673c2e30389dc40 2011-01-06T21:02:19.982329Z 4648 @@ -239,7 +239,7 @@ -2010-09-24T12:48:28.959844Z +2011-03-03T11:05:11.000000Z e3a6cb86da5f31cae6c8fc0a4e6bad35 2010-09-09T18:57:21.507694Z 4071 @@ -273,7 +273,7 @@ -2010-09-23T14:37:44.643780Z +2011-03-03T11:05:11.000000Z 0f2ffbd9b87d4ecc80f5c8bcac0cc9e9 2009-10-29T18:44:16.555741Z 2990 @@ -307,7 +307,7 @@ -2010-09-23T14:37:44.639741Z +2011-03-03T11:05:11.000000Z f880a7facfac62099e5b3fc4ebe862b3 2010-08-19T22:24:37.242219Z 4009 @@ -341,7 +341,7 @@ -2010-09-24T12:48:28.959844Z +2011-03-03T11:05:11.000000Z cb60b85b211b8c78058e4ccc5cdefc82 2010-09-07T15:00:27.481481Z 4069 @@ -375,7 +375,7 @@ -2011-01-13T14:09:29.000000Z +2011-03-03T11:05:11.000000Z c49d7ceec0060eb7437c7e3f2b7629ed 2010-12-11T10:19:11.273304Z 4486 @@ -409,7 +409,7 @@ -2010-09-24T12:48:28.959844Z +2011-03-03T11:05:11.000000Z 308fa6064dd3e4d6d85be448402ba7b2 2010-09-09T18:57:21.507694Z 4071 diff -r fca2657f4aa5 -r eeebe205a056 app/views/projects/settings/.svn/entries --- a/app/views/projects/settings/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/projects/settings/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/projects/settings http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.647782Z +2011-03-03T11:05:11.000000Z 3f93ad7df3a43b70f004499bacc76cdf 2010-05-09T11:19:15.980195Z 3734 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.651752Z +2011-03-03T11:05:11.000000Z 1fd25ea9af565c8a79ac61c918cbd3fc 2010-01-21T18:21:56.082191Z 3336 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.651752Z +2011-03-03T11:05:11.000000Z 1ee550d6ee54d0c528eee8bb142c496d 2008-02-12T22:43:37.870107Z 1143 @@ -134,7 +134,7 @@ -2010-09-24T12:48:28.400004Z +2011-03-03T11:05:11.000000Z 14f07f16cc36c896e6dc4d975c7ef807 2010-09-10T16:00:49.687515Z 4075 @@ -168,7 +168,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:11.000000Z 6dc73d6291a5471699054e6fbd33da8e 2011-01-06T20:57:17.003359Z 4647 @@ -202,7 +202,7 @@ -2010-11-19T13:04:49.460909Z +2011-03-03T11:05:11.000000Z 4f26d985da6ada4c0d724095490050c5 2010-10-29T22:40:02.439890Z 4307 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.647782Z +2011-03-03T11:05:11.000000Z 1d2eb75d2aa1ff66975f701d6b45c059 2010-05-09T11:19:15.980195Z 3734 @@ -270,7 +270,7 @@ -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:11.000000Z 6e7a70ea4a2a2fe46b75b968d19bb68e 2011-01-15T13:20:18.866830Z 4719 diff -r fca2657f4aa5 -r eeebe205a056 app/views/queries/.svn/entries --- a/app/views/queries/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/queries/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/queries +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/queries http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 409f5db0d48427b0a9077eb0804d13f9 2009-11-28T11:59:45.246623Z 3106 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 9d6312b02ab4243f7f899de6e37e260b 2009-11-28T11:34:12.256986Z 3105 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z b2d901380f08af968240e5dc82b90fc4 2007-10-01T11:39:34.113865Z 784 @@ -134,7 +134,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:11.000000Z e57491c4634e00f0ef53c44959c58d46 2010-11-07T15:38:51.908839Z 4387 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 214378e8574ddebfc274513b423f51a2 2007-11-05T18:38:42.932265Z 887 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z d42e88aaf70a65db3b609d51857fb711 2009-09-20T14:06:57.257282Z 2895 diff -r fca2657f4aa5 -r eeebe205a056 app/views/reports/.svn/entries --- a/app/views/reports/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/reports/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/reports +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/reports http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z d150c943c49d910431268e3b5b148f5d 2010-06-20T03:37:42.430179Z 3797 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z faf9d3d189ffa44154f1272c333808b5 2010-01-07T21:12:16.849243Z 3283 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z b0028f798f34512aa7c5f8c014ad73f7 2010-01-07T21:12:16.849243Z 3283 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:10.000000Z 58b8758e6fc3da959cb412ae64e9237f 2007-03-12T17:59:02.654744Z 333 diff -r fca2657f4aa5 -r eeebe205a056 app/views/repositories/.svn/all-wcprops --- a/app/views/repositories/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/repositories/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4698/trunk/app/views/repositories +/svn/!svn/ver/4921/trunk/app/views/repositories END stats.rhtml K 25 @@ -31,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/4613/trunk/app/views/repositories/_dir_list_content.rhtml +/svn/!svn/ver/4921/trunk/app/views/repositories/_dir_list_content.rhtml END diff.rhtml K 25 @@ -91,5 +91,5 @@ K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/3613/trunk/app/views/repositories/_breadcrumbs.rhtml +/svn/!svn/ver/4733/trunk/app/views/repositories/_breadcrumbs.rhtml END diff -r fca2657f4aa5 -r eeebe205a056 app/views/repositories/.svn/entries --- a/app/views/repositories/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/repositories/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/repositories http://redmine.rubyforge.org/svn -2011-01-11T16:04:07.541291Z -4698 +2011-02-22T08:16:05.081549Z +4921 tmaruyama @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z bafc924316c90c31dc1cd9a6daf124ef 2009-09-20T14:06:57.257282Z 2895 @@ -66,7 +66,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:11.000000Z 8599ffd3e73ccf24e2c81c6e0a20c906 2011-01-02T09:45:05.291687Z 4613 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z 59dbb643c447518053d9cdb1a86cb5ef 2009-11-24T17:55:45.336708Z 3086 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z 012e1437dd062433556a6281439b3900 2009-08-15T22:41:40.505056Z 2840 @@ -168,10 +168,10 @@ -2011-01-13T14:09:24.000000Z -e22fd8ddf680ee0773ea1da9b5ed9518 -2011-01-02T09:45:05.291687Z -4613 +2011-03-03T11:40:18.000000Z +9e9a1bb7f64971403644f55f38f9ccce +2011-02-22T08:16:05.081549Z +4921 tmaruyama has-props @@ -194,7 +194,7 @@ -1715 +1839 diff.rhtml file @@ -202,7 +202,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:11.000000Z 76c0335206cfde112a6416937072848b 2011-01-11T16:04:07.541291Z 4698 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z cde7a86a5ec0cf9915b0540c9acbb820 2009-08-15T22:41:40.505056Z 2840 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.667779Z +2011-03-03T11:05:11.000000Z 8c004b6e433ac1a6ca64c97a35512f28 2008-01-02T22:41:53.166620Z 1032 @@ -304,7 +304,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:11.000000Z d3aaac2a6c4b7c77b844324970afff64 2011-01-02T09:45:05.291687Z 4613 @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z 5608dc13675382cd62688058ca0b77d1 2009-09-01T12:13:17.386587Z 2849 @@ -372,7 +372,7 @@ -2011-01-13T14:09:24.000000Z +2011-03-03T11:05:11.000000Z 61a2e63b2e36b7d622d95745cc864583 2011-01-02T09:45:05.291687Z 4613 @@ -406,7 +406,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z f2efac3274e0c46cf32037372907a644 2009-08-15T22:41:40.505056Z 2840 @@ -440,7 +440,7 @@ -2010-09-23T14:37:44.671737Z +2011-03-03T11:05:11.000000Z 2db96b0dcaab42c8e67b7fc590618fd3 2008-12-15T18:02:25.843227Z 2137 @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.667779Z +2011-03-03T11:05:11.000000Z a86ac8a045315f57fa32acb29c08f19f 2009-09-01T12:13:17.386587Z 2849 @@ -508,11 +508,11 @@ -2010-09-23T14:37:44.667779Z -17818458dc60da031d02ae162930c320 -2010-03-27T12:46:45.030950Z -3613 -jplang +2011-03-03T11:05:11.000000Z +a8822300e64f74b50bbb1e90d1a61dda +2011-01-21T13:22:08.161817Z +4733 +tmaruyama has-props @@ -534,5 +534,5 @@ -666 +687 diff -r fca2657f4aa5 -r eeebe205a056 app/views/repositories/.svn/text-base/_breadcrumbs.rhtml.svn-base --- a/app/views/repositories/.svn/text-base/_breadcrumbs.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/repositories/.svn/text-base/_breadcrumbs.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -16,6 +16,6 @@ / <%= link_to h(filename), :action => 'changes', :id => @project, :path => to_path_param("#{link_path}/#{filename}"), :rev => @rev %> <% end %> -<%= "@ #{h revision}" if revision %> +<%= "@ #{h format_revision(@changeset)}" if @changeset %> <% html_title(with_leading_slash(path)) -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/repositories/.svn/text-base/_dir_list_content.rhtml.svn-base --- a/app/views/repositories/.svn/text-base/_dir_list_content.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/repositories/.svn/text-base/_dir_list_content.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,25 +1,27 @@ <% @entries.each do |entry| %> <% tr_id = Digest::MD5.hexdigest(entry.path) depth = params[:depth].to_i %> +<% ent_path = replace_invalid_utf8(entry.path) %> +<% ent_name = replace_invalid_utf8(entry.name) %>
    <% if entry.is_dir? %> - "scmEntryClick('#{tr_id}')"%>">  <% end %> -<%= link_to h(entry.name), - {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(entry.path), :rev => @rev}, - :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(entry.name)}")%> +<%= link_to h(ent_name), + {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(ent_path), :rev => @rev}, + :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(ent_name)}")%> <%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %><%= link_to_revision(changeset, @project) if changeset %> <%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %><%= changeset.nil? ? h(entry.lastrev.author.to_s.split('<').first) : changeset.author if entry.lastrev %><%= changeset.nil? ? h(replace_invalid_utf8(entry.lastrev.author.to_s.split('<').first)) : changeset.author if entry.lastrev %> <%=h truncate(changeset.comments, :length => 50) unless changeset.nil? %>
    <% if entry.is_dir? %> - "scmEntryClick('#{tr_id}')"%>">  <% end %> -<%= link_to h(entry.name), - {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(entry.path), :rev => @rev}, - :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(entry.name)}")%> +<%= link_to h(ent_name), + {:action => (entry.is_dir? ? 'show' : 'changes'), :id => @project, :path => to_path_param(ent_path), :rev => @rev}, + :class => (entry.is_dir? ? 'icon icon-folder' : "icon icon-file #{Redmine::MimeType.css_class_of(ent_name)}")%> <%= (entry.size ? number_to_human_size(entry.size) : "?") unless entry.is_dir? %><%= link_to_revision(changeset, @project) if changeset %> <%= distance_of_time_in_words(entry.lastrev.time, Time.now) if entry.lastrev && entry.lastrev.time %><%= changeset.nil? ? h(entry.lastrev.author.to_s.split('<').first) : changeset.author if entry.lastrev %><%= changeset.nil? ? h(replace_invalid_utf8(entry.lastrev.author.to_s.split('<').first)) : changeset.author if entry.lastrev %> <%=h truncate(changeset.comments, :length => 50) unless changeset.nil? %>
    diff -r fca2657f4aa5 -r eeebe205a056 app/views/wiki/diff.rhtml --- a/app/views/wiki/diff.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wiki/diff.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -12,6 +12,6 @@ (<%= @diff.content_to.author ? @diff.content_to.author.name : "anonyme" %>, <%= format_time(@diff.content_to.updated_on) %>)

    -
    - -<%= html_diff(@diff) %> +
    +<%= simple_format_without_paragraph @diff.to_html %> +
    diff -r fca2657f4aa5 -r eeebe205a056 app/views/wiki/history.rhtml --- a/app/views/wiki/history.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wiki/history.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -3,7 +3,6 @@

    <%= l(:label_history) %>

    <% form_tag({:action => "diff"}, :method => :get) do %> - <%= hidden_field_tag('project_id', h(@project.to_param)) %>
    #
    diff -r fca2657f4aa5 -r eeebe205a056 app/views/wikis/.svn/entries --- a/app/views/wikis/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/wikis/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/app/views/wikis +4993 +http://redmine.rubyforge.org/svn/trunk/app/views/wikis http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 6edeee3130b12027d4d8dbfeca809abb 2007-09-14T11:34:08.234701Z 725 diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/.svn/all-wcprops --- a/app/views/workflows/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/workflows/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4428/trunk/app/views/workflows +/svn/!svn/ver/4895/trunk/app/views/workflows END copy.rhtml K 25 @@ -19,11 +19,17 @@ K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/3694/trunk/app/views/workflows/edit.rhtml +/svn/!svn/ver/4895/trunk/app/views/workflows/edit.rhtml END index.rhtml K 25 svn:wc:ra_dav:version-url V 56 -/svn/!svn/ver/4428/trunk/app/views/workflows/index.rhtml +/svn/!svn/ver/4890/trunk/app/views/workflows/index.rhtml END +_form.html.erb +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/4895/trunk/app/views/workflows/_form.html.erb +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/.svn/entries --- a/app/views/workflows/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/workflows/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/app/views/workflows http://redmine.rubyforge.org/svn -2010-11-27T09:54:16.602477Z -4428 +2011-02-20T15:38:07.840581Z +4895 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.727733Z +2011-03-03T11:05:10.000000Z d7c2b6481788394f541fe6af5dadd598 2009-12-12T10:06:07.860865Z 3154 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.727733Z +2011-03-03T11:05:10.000000Z 2457a85600aa051fcf9edf06010e6fcc 2009-12-12T10:06:07.860865Z 3154 @@ -100,10 +100,10 @@ -2010-09-23T14:37:44.727733Z -ee551cfe66cd8df0fbd5bc7bac081200 -2010-04-27T17:54:27.767853Z -3694 +2011-03-03T11:40:18.000000Z +f52bc187d855a23aea0bc36061a8d179 +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -126,7 +126,7 @@ -2474 +2211 index.rhtml file @@ -134,10 +134,10 @@ -2011-01-13T14:09:10.000000Z -40709e258d1a829cf73046d8e1b5d7f3 -2010-11-27T09:54:16.602477Z -4428 +2011-03-03T11:40:18.000000Z +0943677a780ac0d9c0ba1a7000148f13 +2011-02-20T13:13:10.623157Z +4890 jplang has-props @@ -162,3 +162,37 @@ 851 +_form.html.erb +file + + + + +2011-03-03T11:40:18.000000Z +a2442c53d709a008d9026746d5f3cfd3 +2011-02-20T15:38:07.840581Z +4895 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1673 + diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/.svn/prop-base/_form.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/workflows/.svn/prop-base/_form.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/.svn/text-base/_form.html.erb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/app/views/workflows/.svn/text-base/_form.html.erb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,40 @@ +
    #
    + + + + + + + + <% for new_status in @statuses %> + + <% end %> + + + + <% for old_status in @statuses %> + "> + + <% for new_status in @statuses -%> + + <% end -%> + + <% end %> + +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=l(:label_current_status)%> + <%=l(:label_new_statuses_allowed)%>
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.new-status-#{new_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=h new_status.name %> +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.old-status-#{old_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + + <%=h old_status.name %> + + <%= check_box_tag "issue_status[#{ old_status.id }][#{new_status.id}][]", name, workflows.detect {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id}, + :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> +
    \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/.svn/text-base/edit.rhtml.svn-base --- a/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/workflows/.svn/text-base/edit.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -20,54 +20,31 @@

    <% end %> - <% if @tracker && @role && @statuses.any? %> -<% form_tag({}, :id => 'workflow_form' ) do %> -<%= hidden_field_tag 'tracker_id', @tracker.id %> -<%= hidden_field_tag 'role_id', @role.id %> -
    - - - - - - - - - <% for new_status in @statuses %> - - <% end %> - - - - <% for old_status in @statuses %> - "> - - <% new_status_ids_allowed = old_status.find_new_statuses_allowed_to([@role], @tracker).collect(&:id) -%> - <% for new_status in @statuses -%> - - <% end -%> - - <% end %> - -
    <%=l(:label_current_status)%><%=l(:label_new_statuses_allowed)%>
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.new-status-#{new_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - <%= new_status.name %> -
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.old-status-#{old_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - - <%= old_status.name %> - - <%= check_box_tag "issue_status[#{ old_status.id }][]", new_status.id, new_status_ids_allowed.include?(new_status.id), - :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> -
    -
    -

    <%= check_all_links 'workflow_form' %>

    - -<%= submit_tag l(:button_save) %> -<% end %> + <% form_tag({}, :id => 'workflow_form' ) do %> + <%= hidden_field_tag 'tracker_id', @tracker.id %> + <%= hidden_field_tag 'role_id', @role.id %> +
    + <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %> + +
    + Autorisations supplémentaires lorsque l'utilisateur a créé la demande +
    + <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> +
    +
    + <%= javascript_tag "hideFieldset($('author_workflows'))" unless @workflows['author'].present? %> + +
    + Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur +
    + <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> +
    +
    + <%= javascript_tag "hideFieldset($('assignee_workflows'))" unless @workflows['assignee'].present? %> +
    + <%= submit_tag l(:button_save) %> + <% end %> <% end %> <% html_title(l(:label_workflow)) -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/.svn/text-base/index.rhtml.svn-base --- a/app/views/workflows/.svn/text-base/index.rhtml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/workflows/.svn/text-base/index.rhtml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -24,7 +24,7 @@
    <%= h tracker %> - <%= link_to((count > 1 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %> + <%= link_to((count > 0 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %>
    + + + + + + + + <% for new_status in @statuses %> + + <% end %> + + + + <% for old_status in @statuses %> + "> + + <% for new_status in @statuses -%> + + <% end -%> + + <% end %> + +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=l(:label_current_status)%> + <%=l(:label_new_statuses_allowed)%>
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.new-status-#{new_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + <%=h new_status.name %> +
    + <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('table.transitions-#{name} input.old-status-#{old_status.id}')", + :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> + + <%=h old_status.name %> + + <%= check_box_tag "issue_status[#{ old_status.id }][#{new_status.id}][]", name, workflows.detect {|w| w.old_status_id == old_status.id && w.new_status_id == new_status.id}, + :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> +
    \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/edit.rhtml --- a/app/views/workflows/edit.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/workflows/edit.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -20,54 +20,31 @@

    <% end %> - <% if @tracker && @role && @statuses.any? %> -<% form_tag({}, :id => 'workflow_form' ) do %> -<%= hidden_field_tag 'tracker_id', @tracker.id %> -<%= hidden_field_tag 'role_id', @role.id %> -
    - - - - - - - - - <% for new_status in @statuses %> - - <% end %> - - - - <% for old_status in @statuses %> - "> - - <% new_status_ids_allowed = old_status.find_new_statuses_allowed_to([@role], @tracker).collect(&:id) -%> - <% for new_status in @statuses -%> - - <% end -%> - - <% end %> - -
    <%=l(:label_current_status)%><%=l(:label_new_statuses_allowed)%>
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.new-status-#{new_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - <%= new_status.name %> -
    - <%= link_to_function(image_tag('toggle_check.png'), "toggleCheckboxesBySelector('input.old-status-#{old_status.id}')", - :title => "#{l(:button_check_all)}/#{l(:button_uncheck_all)}") %> - - <%= old_status.name %> - - <%= check_box_tag "issue_status[#{ old_status.id }][]", new_status.id, new_status_ids_allowed.include?(new_status.id), - :class => "old-status-#{old_status.id} new-status-#{new_status.id}" %> -
    -
    -

    <%= check_all_links 'workflow_form' %>

    - -<%= submit_tag l(:button_save) %> -<% end %> + <% form_tag({}, :id => 'workflow_form' ) do %> + <%= hidden_field_tag 'tracker_id', @tracker.id %> + <%= hidden_field_tag 'role_id', @role.id %> +
    + <%= render :partial => 'form', :locals => {:name => 'always', :workflows => @workflows['always']} %> + +
    + Autorisations supplémentaires lorsque l'utilisateur a créé la demande +
    + <%= render :partial => 'form', :locals => {:name => 'author', :workflows => @workflows['author']} %> +
    +
    + <%= javascript_tag "hideFieldset($('author_workflows'))" unless @workflows['author'].present? %> + +
    + Autorisations supplémentaires lorsque la demande est assignée à l'utilisateur +
    + <%= render :partial => 'form', :locals => {:name => 'assignee', :workflows => @workflows['assignee']} %> +
    +
    + <%= javascript_tag "hideFieldset($('assignee_workflows'))" unless @workflows['assignee'].present? %> +
    + <%= submit_tag l(:button_save) %> + <% end %> <% end %> <% html_title(l(:label_workflow)) -%> diff -r fca2657f4aa5 -r eeebe205a056 app/views/workflows/index.rhtml --- a/app/views/workflows/index.rhtml Thu Jan 20 09:59:02 2011 +0000 +++ b/app/views/workflows/index.rhtml Thu Mar 03 12:02:03 2011 +0000 @@ -24,7 +24,7 @@ <%= h tracker %> <% roles.each do |role, count| -%> - <%= link_to((count > 1 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %> + <%= link_to((count > 0 ? count : image_tag('false.png')), {:action => 'edit', :role_id => role, :tracker_id => tracker}, :title => l(:button_edit)) %> <% end -%> diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/all-wcprops --- a/config/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/config/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 31 -/svn/!svn/ver/4729/trunk/config +/svn/!svn/ver/4955/trunk/config END settings.yml K 25 @@ -9,11 +9,11 @@ V 44 /svn/!svn/ver/4513/trunk/config/settings.yml END -email.yml.example +configuration.yml.example K 25 svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3448/trunk/config/email.yml.example +V 57 +/svn/!svn/ver/4950/trunk/config/configuration.yml.example END routes.rb K 25 @@ -31,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/3372/trunk/config/environment.rb +/svn/!svn/ver/4904/trunk/config/environment.rb END additional_environment.rb.example K 25 @@ -43,5 +43,5 @@ K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3564/trunk/config/database.yml.example +/svn/!svn/ver/4753/trunk/config/database.yml.example END diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/dir-prop-base --- a/config/.svn/dir-prop-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/.svn/dir-prop-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,8 @@ K 10 svn:ignore -V 23 +V 41 database.yml email.yml +configuration.yml END diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/entries --- a/config/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/config/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/config http://redmine.rubyforge.org/svn -2011-01-16T15:23:11.666065Z -4729 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -32,7 +32,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:14.000000Z 0f6fe2db3317d8b40af42a6d534da87e 2010-12-15T21:18:06.237327Z 4513 @@ -60,17 +60,17 @@ 4246 -email.yml.example +configuration.yml.example file -2010-09-23T14:37:44.731779Z -a1c44811380e661aff4e67b6b366f2db -2010-02-18T05:20:52.515080Z -3448 -edavis10 +2011-03-03T11:40:18.000000Z +69243d1b5b9b111da631c7034d51ba71 +2011-02-26T13:09:25.657748Z +4950 +jplang has-props @@ -92,7 +92,7 @@ -2120 +4886 locales dir @@ -103,7 +103,7 @@ -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:14.000000Z b03599e0dc8d0a6b03c3173864eb57bd 2011-01-16T15:23:11.666065Z 4729 @@ -137,7 +137,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:14.000000Z 2969e2a7b5ab1b2a014b5f0c94bac872 2010-12-17T08:34:29.830642Z 4516 @@ -174,10 +174,10 @@ -2010-09-23T14:37:44.731779Z -197d8958c94ce40f08a4b8f1d2c49f6e -2010-02-06T10:40:21.867545Z -3372 +2011-03-03T11:40:18.000000Z +cc9c7d7f9a4bd800d2c4a8737147e4c3 +2011-02-21T11:02:18.659691Z +4904 jplang has-props @@ -200,7 +200,7 @@ -2494 +2553 environments dir @@ -211,7 +211,7 @@ -2010-09-23T14:37:44.731779Z +2011-03-03T11:05:14.000000Z 6b63489cdd262e653712af1aa96cd390 2009-11-08T02:16:42.659918Z 3018 @@ -245,10 +245,10 @@ -2010-09-23T14:37:44.731779Z -b315245d4b4a47a512931d087b03435f -2010-03-12T13:48:14.426661Z -3564 +2011-03-03T11:05:14.000000Z +f33e1e1bf73ba5d10ef3a6f170da3088 +2011-01-23T10:25:48.265995Z +4753 jplang has-props @@ -271,5 +271,5 @@ -750 +755 diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/prop-base/configuration.yml.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/.svn/prop-base/configuration.yml.example.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/prop-base/email.yml.example.svn-base --- a/config/.svn/prop-base/email.yml.example.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/text-base/configuration.yml.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/.svn/text-base/configuration.yml.example.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,147 @@ +# = Redmine configuration file +# +# Each environment has it's own configuration options. If you are only +# running in production, only the production block needs to be configured. +# Environment specific configuration options override the default ones. +# +# Note that this file needs to be a valid YAML file. +# +# == Outgoing email settings (email_delivery setting) +# +# === Common configurations +# +# ==== Sendmail command +# +# production: +# email_delivery: +# delivery_method: :sendmail +# +# ==== Simple SMTP server at localhost +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "localhost" +# port: 25 +# +# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :login +# domain: 'foo.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at example.com using PLAIN authentication +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :plain +# domain: 'example.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at using TLS (GMail) +# +# This requires some additional configuration. See the article at: +# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# tls: true +# address: "smtp.gmail.com" +# port: 587 +# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps +# authentication: :plain +# user_name: "your_email@gmail.com" +# password: "your_password" +# +# +# === More configuration options +# +# See the "Configuration options" at the following website for a list of the +# full options allowed: +# +# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer + + +# default configuration options for all environments +default: + # Outgoing emails configuration (see examples above) + email_delivery: + delivery_method: :smtp + smtp_settings: + address: smtp.example.net + port: 25 + domain: example.net + authentication: :login + user_name: "redmine@example.net" + password: "redmine" + + # Absolute path to the directory where attachments are stored. + # The default is the 'files' directory in your Redmine instance. + # Your Redmine instance needs to have write permission on this + # directory. + # Examples: + # attachments_storage_path: /var/redmine/files + # attachments_storage_path: D:/redmine/files + attachments_storage_path: + + # Configuration of the autologin cookie. + # autologin_cookie_name: the name of the cookie (default: autologin) + # autologin_cookie_path: the cookie path (default: /) + # autologin_cookie_secure: true sets the cookie secure flag (default: false) + autologin_cookie_name: + autologin_cookie_path: + autologin_cookie_secure: + + # Configuration of SCM executable command. + # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) + # On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. + # Examples: + # scm_subversion_command: svn # (default: svn) + # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) + # scm_git_command: /usr/local/bin/git # (default: git) + # scm_cvs_command: cvs # (default: cvs) + # scm_bazaar_command: bzr.exe # (default: bzr) + # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) + scm_subversion_command: + scm_mercurial_command: + scm_git_command: + scm_cvs_command: + scm_bazaar_command: + scm_darcs_command: + + # Key used to encrypt sensitive data in the database (SCM and LDAP passwords). + # If you don't want to enable data encryption, just leave it blank. + # WARNING: losing/changing this key will make encrypted data unreadable. + # + # If you want to encrypt existing passwords in your database: + # * set the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + # + # If you have encrypted data and want to change this key, you have to: + # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first + # * change the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + database_cipher_key: + +# specific configuration options for production environment +# that overrides the default ones +production: + +# specific configuration options for development environment +# that overrides the default ones +development: diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/text-base/database.yml.example.svn-base --- a/config/.svn/text-base/database.yml.example.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/.svn/text-base/database.yml.example.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -36,4 +36,4 @@ test_sqlite3: adapter: sqlite3 - database: db/test.db + database: db/test.sqlite3 diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/text-base/email.yml.example.svn-base --- a/config/.svn/text-base/email.yml.example.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -# = Outgoing email settings -# -# Each environment has it's own configuration options. If you are only -# running in production, only the production block needs to be configured. -# -# == Common configurations -# -# === Sendmail command -# -# production: -# delivery_method: :sendmail -# -# === Simple SMTP server at localhost -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "localhost" -# port: 25 -# -# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :login -# domain: 'foo.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at example.com using PLAIN authentication -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :plain -# domain: 'example.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at using TLS (GMail) -# -# This requires some additional configuration. See the article at: -# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ -# -# production: -# delivery_method: :smtp -# smtp_settings: -# tls: true -# address: "smtp.gmail.com" -# port: 587 -# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps -# authentication: :plain -# user_name: "your_email@gmail.com" -# password: "your_password" -# -# -# == More configuration options -# -# See the "Configuration options" at the following website for a list of the -# full options allowed: -# -# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer - -production: - delivery_method: :smtp - smtp_settings: - address: smtp.example.net - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" - -development: - delivery_method: :smtp - smtp_settings: - address: 127.0.0.1 - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" diff -r fca2657f4aa5 -r eeebe205a056 config/.svn/text-base/environment.rb.svn-base --- a/config/.svn/text-base/environment.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/.svn/text-base/environment.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -5,7 +5,7 @@ # ENV['RAILS_ENV'] ||= 'production' # Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION +RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') @@ -24,7 +24,7 @@ # config.frameworks -= [ :action_web_service, :action_mailer ] # Add additional load paths for sweepers - config.load_paths += %W( #{RAILS_ROOT}/app/sweepers ) + config.autoload_paths += %W( #{RAILS_ROOT}/app/sweepers ) # Force all environments to use the same logger level # (by default production uses :info, the others :debug) @@ -46,11 +46,12 @@ # config.active_record.schema_format = :ruby # Deliveries are disabled by default. Do NOT modify this section. - # Define your email configuration in email.yml instead. + # Define your email configuration in configuration.yml instead. # It will automatically turn deliveries on config.action_mailer.perform_deliveries = false config.gem 'rubytree', :lib => 'tree' + config.gem 'coderay', :version => '~>0.9.7' # Load any local configuration that is kept out of source control # (e.g. gems, patches). diff -r fca2657f4aa5 -r eeebe205a056 config/configuration.yml.example --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/configuration.yml.example Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,147 @@ +# = Redmine configuration file +# +# Each environment has it's own configuration options. If you are only +# running in production, only the production block needs to be configured. +# Environment specific configuration options override the default ones. +# +# Note that this file needs to be a valid YAML file. +# +# == Outgoing email settings (email_delivery setting) +# +# === Common configurations +# +# ==== Sendmail command +# +# production: +# email_delivery: +# delivery_method: :sendmail +# +# ==== Simple SMTP server at localhost +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "localhost" +# port: 25 +# +# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :login +# domain: 'foo.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at example.com using PLAIN authentication +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# address: "example.com" +# port: 25 +# authentication: :plain +# domain: 'example.com' +# user_name: 'myaccount' +# password: 'password' +# +# ==== SMTP server at using TLS (GMail) +# +# This requires some additional configuration. See the article at: +# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ +# +# production: +# email_delivery: +# delivery_method: :smtp +# smtp_settings: +# tls: true +# address: "smtp.gmail.com" +# port: 587 +# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps +# authentication: :plain +# user_name: "your_email@gmail.com" +# password: "your_password" +# +# +# === More configuration options +# +# See the "Configuration options" at the following website for a list of the +# full options allowed: +# +# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer + + +# default configuration options for all environments +default: + # Outgoing emails configuration (see examples above) + email_delivery: + delivery_method: :smtp + smtp_settings: + address: smtp.example.net + port: 25 + domain: example.net + authentication: :login + user_name: "redmine@example.net" + password: "redmine" + + # Absolute path to the directory where attachments are stored. + # The default is the 'files' directory in your Redmine instance. + # Your Redmine instance needs to have write permission on this + # directory. + # Examples: + # attachments_storage_path: /var/redmine/files + # attachments_storage_path: D:/redmine/files + attachments_storage_path: + + # Configuration of the autologin cookie. + # autologin_cookie_name: the name of the cookie (default: autologin) + # autologin_cookie_path: the cookie path (default: /) + # autologin_cookie_secure: true sets the cookie secure flag (default: false) + autologin_cookie_name: + autologin_cookie_path: + autologin_cookie_secure: + + # Configuration of SCM executable command. + # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) + # On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. + # Examples: + # scm_subversion_command: svn # (default: svn) + # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) + # scm_git_command: /usr/local/bin/git # (default: git) + # scm_cvs_command: cvs # (default: cvs) + # scm_bazaar_command: bzr.exe # (default: bzr) + # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) + scm_subversion_command: + scm_mercurial_command: + scm_git_command: + scm_cvs_command: + scm_bazaar_command: + scm_darcs_command: + + # Key used to encrypt sensitive data in the database (SCM and LDAP passwords). + # If you don't want to enable data encryption, just leave it blank. + # WARNING: losing/changing this key will make encrypted data unreadable. + # + # If you want to encrypt existing passwords in your database: + # * set the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + # + # If you have encrypted data and want to change this key, you have to: + # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first + # * change the cipher key here in your configuration file + # * encrypt data using 'rake db:encrypt RAILS_ENV=production' + database_cipher_key: + +# specific configuration options for production environment +# that overrides the default ones +production: + +# specific configuration options for development environment +# that overrides the default ones +development: diff -r fca2657f4aa5 -r eeebe205a056 config/database.yml.example --- a/config/database.yml.example Thu Jan 20 09:59:02 2011 +0000 +++ b/config/database.yml.example Thu Mar 03 12:02:03 2011 +0000 @@ -36,4 +36,4 @@ test_sqlite3: adapter: sqlite3 - database: db/test.db + database: db/test.sqlite3 diff -r fca2657f4aa5 -r eeebe205a056 config/email.yml.example --- a/config/email.yml.example Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -# = Outgoing email settings -# -# Each environment has it's own configuration options. If you are only -# running in production, only the production block needs to be configured. -# -# == Common configurations -# -# === Sendmail command -# -# production: -# delivery_method: :sendmail -# -# === Simple SMTP server at localhost -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "localhost" -# port: 25 -# -# === SMTP server at example.com using LOGIN authentication and checking HELO for foo.com -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :login -# domain: 'foo.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at example.com using PLAIN authentication -# -# production: -# delivery_method: :smtp -# smtp_settings: -# address: "example.com" -# port: 25 -# authentication: :plain -# domain: 'example.com' -# user_name: 'myaccount' -# password: 'password' -# -# === SMTP server at using TLS (GMail) -# -# This requires some additional configuration. See the article at: -# http://redmineblog.com/articles/setup-redmine-to-send-email-using-gmail/ -# -# production: -# delivery_method: :smtp -# smtp_settings: -# tls: true -# address: "smtp.gmail.com" -# port: 587 -# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps -# authentication: :plain -# user_name: "your_email@gmail.com" -# password: "your_password" -# -# -# == More configuration options -# -# See the "Configuration options" at the following website for a list of the -# full options allowed: -# -# http://wiki.rubyonrails.org/rails/pages/HowToSendEmailsWithActionMailer - -production: - delivery_method: :smtp - smtp_settings: - address: smtp.example.net - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" - -development: - delivery_method: :smtp - smtp_settings: - address: 127.0.0.1 - port: 25 - domain: example.net - authentication: :login - user_name: "redmine@example.net" - password: "redmine" diff -r fca2657f4aa5 -r eeebe205a056 config/environment.rb --- a/config/environment.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/config/environment.rb Thu Mar 03 12:02:03 2011 +0000 @@ -5,7 +5,7 @@ # ENV['RAILS_ENV'] ||= 'production' # Specifies gem version of Rails to use when vendor/rails is not present -RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION +RAILS_GEM_VERSION = '2.3.11' unless defined? RAILS_GEM_VERSION # Bootstrap the Rails environment, frameworks, and default configuration require File.join(File.dirname(__FILE__), 'boot') @@ -24,7 +24,7 @@ # config.frameworks -= [ :action_web_service, :action_mailer ] # Add additional load paths for sweepers - config.load_paths += %W( #{RAILS_ROOT}/app/sweepers ) + config.autoload_paths += %W( #{RAILS_ROOT}/app/sweepers ) # Force all environments to use the same logger level # (by default production uses :info, the others :debug) @@ -46,11 +46,12 @@ # config.active_record.schema_format = :ruby # Deliveries are disabled by default. Do NOT modify this section. - # Define your email configuration in email.yml instead. + # Define your email configuration in configuration.yml instead. # It will automatically turn deliveries on config.action_mailer.perform_deliveries = false config.gem 'rubytree', :lib => 'tree' + config.gem 'coderay', :version => '~>0.9.7' # Load any local configuration that is kept out of source control # (e.g. gems, patches). diff -r fca2657f4aa5 -r eeebe205a056 config/environments/.svn/entries --- a/config/environments/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/config/environments/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/config/environments +4993 +http://redmine.rubyforge.org/svn/trunk/config/environments http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:14.000000Z 08b25fdea5e3e041116340c3c3090b18 2010-11-14T15:14:19.280754Z 4405 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 02eadf22aa59353271c702e4865138b1 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 213279c73e8c922d0a9d43f3c1cc6943 2010-02-08T18:53:07.634937Z 3397 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z d08152d4dda4608f254785b23840140a 2007-09-27T22:30:57.196220Z 772 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 213279c73e8c922d0a9d43f3c1cc6943 2010-02-08T18:53:07.634937Z 3397 @@ -202,7 +202,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:14.000000Z 17a6fbb168f3951191541f0f5a554454 2010-09-26T16:54:38.112012Z 4182 diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/.svn/all-wcprops --- a/config/initializers/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/config/initializers/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4679/trunk/config/initializers +/svn/!svn/ver/4904/trunk/config/initializers END inflections.rb K 25 @@ -19,7 +19,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4516/trunk/config/initializers/10-patches.rb +/svn/!svn/ver/4904/trunk/config/initializers/10-patches.rb END backtrace_silencers.rb K 25 @@ -27,12 +27,6 @@ V 67 /svn/!svn/ver/2895/trunk/config/initializers/backtrace_silencers.rb END -40-email.rb -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/1625/trunk/config/initializers/40-email.rb -END 20-mime_types.rb K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/.svn/entries --- a/config/initializers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/config/initializers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/config/initializers http://redmine.rubyforge.org/svn -2011-01-10T18:25:12.105765Z -4679 +2011-02-21T11:02:18.659691Z +4904 jplang has-props @@ -32,7 +32,7 @@ -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z acc71445fc1c65ebe6fdeba695fea714 2009-09-20T14:06:57.257282Z 2895 @@ -66,7 +66,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:14.000000Z 45627c8ad9bafcee93e6ce01b92b57d1 2011-01-10T18:25:12.105765Z 4679 @@ -100,10 +100,10 @@ -2011-01-13T14:09:38.000000Z -e83154f604f9f3b0307e1b435f9cc95c -2010-12-17T08:34:29.830642Z -4516 +2011-03-03T11:40:18.000000Z +17f5c9eadec957cb8fb2b6d1f07b61ae +2011-02-21T11:02:18.659691Z +4904 jplang has-props @@ -126,7 +126,7 @@ -3149 +2907 backtrace_silencers.rb file @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z ca8db2f40b067cb8615263fa5a238517 2009-09-20T14:06:57.257282Z 2895 @@ -162,47 +162,13 @@ 404 -40-email.rb -file - - - - -2010-09-23T14:37:44.743734Z -386c37f359a87852920a3c3f3e4bbc84 -2008-07-04T18:55:45.736676Z -1625 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -534 - 20-mime_types.rb file -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z 0005ed7b233f71646e0f75b9994cf219 2008-09-10T18:26:13.133776Z 1797 @@ -236,7 +202,7 @@ -2010-09-23T14:37:44.743734Z +2011-03-03T11:05:14.000000Z a7948d8e86bcd799c74945fe91b4a8b1 2009-09-20T14:06:57.257282Z 2895 diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/.svn/prop-base/40-email.rb.svn-base --- a/config/initializers/.svn/prop-base/40-email.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/.svn/text-base/10-patches.rb.svn-base --- a/config/initializers/.svn/text-base/10-patches.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/initializers/.svn/text-base/10-patches.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -79,16 +79,12 @@ ActionMailer::Base.send :include, AsynchronousMailer -# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6. -# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608 -module I18n - module Backend - module Base - def warn_syntax_deprecation!(*args) - return if @skip_syntax_deprecation - warn "The {{key}} interpolation syntax in I18n messages is deprecated and will be removed in Redmine 1.2. Please use %{key} instead, see http://www.redmine.org/issues/7013 for more information." - @skip_syntax_deprecation = true - end +# TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7 +# triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest) +module TMail + class Unquoter + class << self + alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1 end end end diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/.svn/text-base/40-email.rb.svn-base --- a/config/initializers/.svn/text-base/40-email.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# Loads action_mailer settings from email.yml -# and turns deliveries on if configuration file is found - -filename = File.join(File.dirname(__FILE__), '..', 'email.yml') -if File.file?(filename) - mailconfig = YAML::load_file(filename) - - if mailconfig.is_a?(Hash) && mailconfig.has_key?(Rails.env) - # Enable deliveries - ActionMailer::Base.perform_deliveries = true - - mailconfig[Rails.env].each do |k, v| - v.symbolize_keys! if v.respond_to?(:symbolize_keys!) - ActionMailer::Base.send("#{k}=", v) - end - end -end diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/10-patches.rb --- a/config/initializers/10-patches.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/config/initializers/10-patches.rb Thu Mar 03 12:02:03 2011 +0000 @@ -79,16 +79,12 @@ ActionMailer::Base.send :include, AsynchronousMailer -# TODO: Hack to support i18n 4.x on Rails 2.3.5. Remove post 2.3.6. -# See http://www.redmine.org/issues/6428 and http://www.redmine.org/issues/5608 -module I18n - module Backend - module Base - def warn_syntax_deprecation!(*args) - return if @skip_syntax_deprecation - warn "The {{key}} interpolation syntax in I18n messages is deprecated and will be removed in Redmine 1.2. Please use %{key} instead, see http://www.redmine.org/issues/7013 for more information." - @skip_syntax_deprecation = true - end +# TMail::Unquoter.convert_to_with_fallback_on_iso_8859_1 introduced in TMail 1.2.7 +# triggers a test failure in test_add_issue_with_japanese_keywords(MailHandlerTest) +module TMail + class Unquoter + class << self + alias_method :convert_to, :convert_to_without_fallback_on_iso_8859_1 end end end diff -r fca2657f4aa5 -r eeebe205a056 config/initializers/40-email.rb --- a/config/initializers/40-email.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# Loads action_mailer settings from email.yml -# and turns deliveries on if configuration file is found - -filename = File.join(File.dirname(__FILE__), '..', 'email.yml') -if File.file?(filename) - mailconfig = YAML::load_file(filename) - - if mailconfig.is_a?(Hash) && mailconfig.has_key?(Rails.env) - # Enable deliveries - ActionMailer::Base.perform_deliveries = true - - mailconfig[Rails.env].each do |k, v| - v.symbolize_keys! if v.respond_to?(:symbolize_keys!) - ActionMailer::Base.send("#{k}=", v) - end - end -end diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/all-wcprops --- a/config/locales/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,263 +1,269 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4724/trunk/config/locales +/svn/!svn/ver/4955/trunk/config/locales END lt.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/lt.yml +/svn/!svn/ver/4955/trunk/config/locales/lt.yml END sr-YU.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4554/trunk/config/locales/sr-YU.yml +/svn/!svn/ver/4955/trunk/config/locales/sr-YU.yml END ro.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/ro.yml +/svn/!svn/ver/4955/trunk/config/locales/ro.yml END lv.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/lv.yml +/svn/!svn/ver/4955/trunk/config/locales/lv.yml END zh.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/zh.yml +/svn/!svn/ver/4955/trunk/config/locales/zh.yml END pt.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/pt.yml +/svn/!svn/ver/4955/trunk/config/locales/pt.yml END ca.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/ca.yml +/svn/!svn/ver/4955/trunk/config/locales/ca.yml END pt-BR.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4554/trunk/config/locales/pt-BR.yml +/svn/!svn/ver/4955/trunk/config/locales/pt-BR.yml END tr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/tr.yml +/svn/!svn/ver/4955/trunk/config/locales/tr.yml END ru.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/ru.yml +/svn/!svn/ver/4955/trunk/config/locales/ru.yml END en-GB.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4519/trunk/config/locales/en-GB.yml +/svn/!svn/ver/4955/trunk/config/locales/en-GB.yml END id.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/id.yml +/svn/!svn/ver/4955/trunk/config/locales/id.yml END el.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/el.yml +/svn/!svn/ver/4955/trunk/config/locales/el.yml END en.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4519/trunk/config/locales/en.yml +/svn/!svn/ver/4954/trunk/config/locales/en.yml END gl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/gl.yml +/svn/!svn/ver/4955/trunk/config/locales/gl.yml END cs.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/cs.yml +/svn/!svn/ver/4955/trunk/config/locales/cs.yml END mk.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/mk.yml +/svn/!svn/ver/4955/trunk/config/locales/mk.yml END es.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/es.yml +/svn/!svn/ver/4955/trunk/config/locales/es.yml END ko.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/ko.yml +/svn/!svn/ver/4955/trunk/config/locales/ko.yml END eu.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/eu.yml +/svn/!svn/ver/4955/trunk/config/locales/eu.yml END zh-TW.yml K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4593/trunk/config/locales/zh-TW.yml +/svn/!svn/ver/4955/trunk/config/locales/zh-TW.yml END mn.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/mn.yml +/svn/!svn/ver/4955/trunk/config/locales/mn.yml END it.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4657/trunk/config/locales/it.yml +/svn/!svn/ver/4955/trunk/config/locales/it.yml END sk.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/sk.yml +/svn/!svn/ver/4955/trunk/config/locales/sk.yml END sl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/sl.yml +/svn/!svn/ver/4955/trunk/config/locales/sl.yml END uk.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/uk.yml +/svn/!svn/ver/4955/trunk/config/locales/uk.yml END da.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/da.yml +/svn/!svn/ver/4955/trunk/config/locales/da.yml END sr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/sr.yml +/svn/!svn/ver/4955/trunk/config/locales/sr.yml +END +fa.yml +K 25 +svn:wc:ra_dav:version-url +V 46 +/svn/!svn/ver/4955/trunk/config/locales/fa.yml +END +sv.yml +K 25 +svn:wc:ra_dav:version-url +V 46 +/svn/!svn/ver/4955/trunk/config/locales/sv.yml END bg.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4656/trunk/config/locales/bg.yml +/svn/!svn/ver/4955/trunk/config/locales/bg.yml END de.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4592/trunk/config/locales/de.yml -END -sv.yml -K 25 -svn:wc:ra_dav:version-url -V 46 -/svn/!svn/ver/4518/trunk/config/locales/sv.yml +/svn/!svn/ver/4955/trunk/config/locales/de.yml END ja.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4594/trunk/config/locales/ja.yml +/svn/!svn/ver/4955/trunk/config/locales/ja.yml END he.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/he.yml +/svn/!svn/ver/4955/trunk/config/locales/he.yml END fi.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/fi.yml +/svn/!svn/ver/4955/trunk/config/locales/fi.yml END bs.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/bs.yml +/svn/!svn/ver/4955/trunk/config/locales/bs.yml END fr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4724/trunk/config/locales/fr.yml +/svn/!svn/ver/4954/trunk/config/locales/fr.yml END nl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4701/trunk/config/locales/nl.yml +/svn/!svn/ver/4955/trunk/config/locales/nl.yml END hr.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/hr.yml +/svn/!svn/ver/4955/trunk/config/locales/hr.yml END pl.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4595/trunk/config/locales/pl.yml +/svn/!svn/ver/4955/trunk/config/locales/pl.yml END th.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/th.yml +/svn/!svn/ver/4955/trunk/config/locales/th.yml END no.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/no.yml +/svn/!svn/ver/4955/trunk/config/locales/no.yml END hu.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/hu.yml +/svn/!svn/ver/4955/trunk/config/locales/hu.yml END vi.yml K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4554/trunk/config/locales/vi.yml +/svn/!svn/ver/4955/trunk/config/locales/vi.yml END diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/entries --- a/config/locales/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/config/locales http://redmine.rubyforge.org/svn -2011-01-15T14:25:11.532146Z -4724 +2011-02-27T13:43:18.863191Z +4955 jplang @@ -32,10 +32,10 @@ -2011-01-13T14:09:38.000000Z -04a33a87317c990f209c9e0b23a94dfb -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +3542e97eeeee34df7a3d6d64a4ce0407 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -58,7 +58,7 @@ -43738 +44029 sr-YU.yml file @@ -66,10 +66,10 @@ -2011-01-13T14:09:38.000000Z -c066a5e1a32e5c7141a461819119ca09 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +b05d928becf91c52a78271c93715bb1b +2011-02-27T13:43:18.863191Z +4955 jplang @@ -92,7 +92,7 @@ -42004 +42299 ro.yml file @@ -100,10 +100,10 @@ -2011-01-13T14:09:38.000000Z -4127de9dda4a292a21188ddb864bdb22 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +dd9fb4aae0fa69165e4f4e1100c3fa26 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -126,7 +126,7 @@ -40126 +40417 lv.yml file @@ -134,10 +134,10 @@ -2011-01-13T14:09:38.000000Z -0b93573ed1b6c4d16c566facc9c51ea3 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +12f9b4e9c849923a86334f56fbb65f1a +2011-02-27T13:43:18.863191Z +4955 jplang @@ -160,7 +160,7 @@ -42010 +42305 zh.yml file @@ -168,10 +168,10 @@ -2011-01-13T14:09:38.000000Z -dabc9f1dd8c6fe2a6af4e19d03e9ed65 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +dde46f425abed5caa3d8d3afe9049fb7 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -194,7 +194,7 @@ -38012 +38303 pt.yml file @@ -202,10 +202,10 @@ -2011-01-13T14:09:38.000000Z -4c86c4b56c721fac90f5939dd7f5a4ad -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +017dbb90319bfa26bab5a45296b337b3 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -228,7 +228,7 @@ -41486 +41777 ca.yml file @@ -236,10 +236,10 @@ -2011-01-13T14:09:38.000000Z -ee91e7c266c44fdcaee547bf143ba5fe -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +55d3137cb8850d53bce7337a8a0cf720 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -262,7 +262,7 @@ -41935 +42226 pt-BR.yml file @@ -270,10 +270,10 @@ -2011-01-13T14:09:38.000000Z -390265b3732a994f563d7137967e2278 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +0714d61f3439e9e8058f26487eae91b2 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -296,7 +296,7 @@ -41370 +41661 tr.yml file @@ -304,10 +304,10 @@ -2011-01-13T14:09:38.000000Z -f36ff0ac378a574be6bb66ea4340bdfa -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +5bc442cb54c4373e1aeea7dd56e30bd0 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -330,7 +330,7 @@ -40004 +40295 ru.yml file @@ -338,10 +338,10 @@ -2011-01-13T14:09:38.000000Z -b19c21ea18bf2e9d14353dde9f48301b -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +6a3741281160ebb7f27f6d2bb03499c8 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -364,7 +364,7 @@ -61833 +62124 en-GB.yml file @@ -372,10 +372,10 @@ -2011-01-13T14:09:38.000000Z -1c06a4a68ae568c890ae0c1b76477f22 -2010-12-17T09:14:54.583423Z -4519 +2011-03-03T11:40:18.000000Z +831604fd1ce5d6f72e64688ce6f62581 +2011-02-27T13:43:18.863191Z +4955 jplang @@ -398,7 +398,7 @@ -39390 +39685 id.yml file @@ -406,10 +406,10 @@ -2011-01-13T14:09:38.000000Z -cee65e2ec68fbd913b617131805cb378 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +eb45d7f2bc3d3e7fd8ab01db1a3041a4 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -432,7 +432,7 @@ -39746 +40037 el.yml file @@ -440,10 +440,10 @@ -2011-01-13T14:09:38.000000Z -762ca0186f8e7567f3038b8ea6f5bb5c -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +98b4f21cce1a0242221eecb23f5fc727 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -466,7 +466,7 @@ -54854 +55145 en.yml file @@ -474,10 +474,10 @@ -2011-01-13T14:09:38.000000Z -9bf57c4bbbe21feffb9b80b1dd359dc0 -2010-12-17T09:14:54.583423Z -4519 +2011-03-03T11:40:18.000000Z +4265d626f893cc08f2142d0a254e2ac7 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -500,7 +500,7 @@ -38492 +38787 gl.yml file @@ -508,10 +508,10 @@ -2011-01-13T14:09:38.000000Z -b3d6b890444008ad69a9b22d6ebbd8ae -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +03aa773b8d01d5bc421b8896fc9c861b +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -534,7 +534,7 @@ -40604 +40895 cs.yml file @@ -542,10 +542,10 @@ -2011-01-13T14:09:38.000000Z -b5d7dae55451b82b6050007739026770 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +85ac61a4067ad6dda83d43acbf874cf6 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -568,7 +568,7 @@ -41330 +41752 mk.yml file @@ -576,10 +576,10 @@ -2011-01-13T14:09:38.000000Z -8a4d25a273edbf55ec8118387a78e386 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +626a66d6d98190418f4a4fd43077734f +2011-02-27T13:43:18.863191Z +4955 jplang @@ -602,7 +602,7 @@ -49123 +49418 es.yml file @@ -610,10 +610,10 @@ -2011-01-13T14:09:38.000000Z -2a2cc7f9b081a6c28f36452f0df75c3c -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +6ef7d2fb0af3cce0f6afbdea3ff9ab17 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -636,7 +636,75 @@ -43379 +43670 + +ko.yml +file + + + + +2011-03-03T11:40:18.000000Z +1ff250f0b17ecb9465add49dfcf9bb91 +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +44501 + +eu.yml +file + + + + +2011-03-03T11:40:18.000000Z +b3ba93d14600b4b992e65fbd243759ae +2011-02-27T13:43:18.863191Z +4955 +jplang + + + + + + + + + + + + + + + + + + + + + +42568 zh-TW.yml file @@ -644,10 +712,10 @@ -2011-01-13T14:09:38.000000Z -a40f011945cb425a77762a94d6fa4387 -2010-12-30T15:43:02.374736Z -4593 +2011-03-03T11:40:18.000000Z +f4c6a612b84e5087ed4d023414dab628 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -670,75 +738,7 @@ -42317 - -eu.yml -file - - - - -2011-01-13T14:09:38.000000Z -0272605dbb554b76e81e7d80f1ce376e -2010-12-22T20:40:56.075532Z -4554 -jplang - - - - - - - - - - - - - - - - - - - - - -42073 - -ko.yml -file - - - - -2011-01-13T14:09:38.000000Z -3e5ad3b8bb49d5d19bbcd4c06d3f6a91 -2010-12-22T20:40:56.075532Z -4554 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -44210 +42608 mn.yml file @@ -746,10 +746,10 @@ -2011-01-13T14:09:38.000000Z -29ec44faa431f0307ebd9701359928ae -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +b9e2987cb3cbaab826c7388d09b74f75 +2011-02-27T13:43:18.863191Z +4955 jplang @@ -772,7 +772,7 @@ -53787 +54082 it.yml file @@ -780,10 +780,10 @@ -2011-01-13T14:09:38.000000Z -a0ea06ad26b6d7dfe722fa0560a8894d -2011-01-08T10:03:34.099825Z -4657 +2011-03-03T11:40:18.000000Z +f80f107e4d9318b8a8cea65b2e13d579 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -806,7 +806,7 @@ -41145 +41436 sk.yml file @@ -814,10 +814,10 @@ -2011-01-13T14:09:38.000000Z -0730abc697f821268506266b6c751713 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +e7901c1e26424f863f96dd86164419c2 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -840,7 +840,7 @@ -41396 +41687 sl.yml file @@ -848,10 +848,10 @@ -2011-01-13T14:09:38.000000Z -b089982aac098938ed2da68ca38cff41 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +808c04baadb112b6be492be9dc78ef89 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -874,7 +874,7 @@ -39572 +39863 uk.yml file @@ -882,10 +882,10 @@ -2011-01-13T14:09:38.000000Z -aeb872b59227da163151d3e953557196 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +430d26c543f2d9d31ffe77c9ef3eb4f8 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -908,7 +908,41 @@ -47150 +47441 + +da.yml +file + + + + +2011-03-03T11:40:18.000000Z +a7ae693463d0d34fb5fd212ccbda0aff +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +39983 sr.yml file @@ -916,10 +950,10 @@ -2011-01-13T14:09:38.000000Z -313da32a9af9ee91d2fa5d51d27bdc70 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +adf2619297b8e142957c327c6a76c786 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -942,18 +976,18 @@ -54264 +54555 -da.yml +fa.yml file -2011-01-13T14:09:38.000000Z -ca814f3069c69727b7a7c8e701386321 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +6f585dcad4e6b03d987ea0f5e7d7e91f +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -976,7 +1010,75 @@ -39692 +51085 + +bg.yml +file + + + + +2011-03-03T11:40:18.000000Z +e0df426fe104bb05be553a362f46610b +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +54718 + +de.yml +file + + + + +2011-03-03T11:40:18.000000Z +80e835963312388a9077a8f27452d429 +2011-02-27T13:43:18.863191Z +4955 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +42574 sv.yml file @@ -984,10 +1086,10 @@ -2011-01-13T14:09:38.000000Z -3cd749fe11dfb32ca3a7f95ee9f27cb4 -2010-12-17T08:50:13.997413Z -4518 +2011-03-03T11:40:18.000000Z +59f72f202281205f1ed729183db2a402 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1010,75 +1112,7 @@ -41841 - -de.yml -file - - - - -2011-01-13T14:09:38.000000Z -09443567159c66c54aaa5b19b3ab6e6a -2010-12-30T15:38:41.284110Z -4592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -42283 - -bg.yml -file - - - - -2011-01-13T14:09:38.000000Z -3a0f9832952705d7f032bfe03f53b98a -2011-01-08T10:01:09.575922Z -4656 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -54054 +42180 ja.yml file @@ -1086,10 +1120,10 @@ -2011-01-13T14:09:38.000000Z -a5ff4810afb580a1bb2735638fde6bdf -2010-12-30T15:44:02.412420Z -4594 +2011-03-03T11:40:18.000000Z +03fac78c16fdf9c77069f24fec7b2796 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1112,7 +1146,7 @@ -45900 +46191 he.yml file @@ -1120,10 +1154,10 @@ -2011-01-13T14:09:38.000000Z -ece84cb2ec7974a6de73e50e301822c8 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +03045c9539de31b255a14c9207fb8eaa +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1146,7 +1180,7 @@ -45142 +45433 fi.yml file @@ -1154,10 +1188,10 @@ -2011-01-13T14:09:38.000000Z -ec72709b8e1f3730f778ecf48f8a477f -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +18dd7ae78913bad4b75e0d5f16068290 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1180,7 +1214,7 @@ -40650 +40941 bs.yml file @@ -1188,10 +1222,10 @@ -2011-01-13T14:09:38.000000Z -868e34aff97e83b737f1583b26949127 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +0fdc9e453941e547e3b40fee917fcf02 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1214,7 +1248,7 @@ -40587 +40878 fr.yml file @@ -1222,10 +1256,10 @@ -2011-01-19T15:03:32.000000Z -87a842c407ed2a726eeb7c23b10cadb9 -2011-01-15T14:25:11.532146Z -4724 +2011-03-03T11:40:18.000000Z +95995431647aa0e13c850df4250a57d0 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -1248,7 +1282,7 @@ -42743 +43081 nl.yml file @@ -1256,10 +1290,10 @@ -2011-01-13T14:09:38.000000Z -795dcdb14c3b4755c54be2b52b7b0df3 -2011-01-11T20:35:50.950842Z -4701 +2011-03-03T11:40:18.000000Z +06358d3f035a3fcc20cde865e7295023 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1282,7 +1316,7 @@ -40142 +40433 hr.yml file @@ -1290,10 +1324,10 @@ -2011-01-13T14:09:38.000000Z -43b90dedeffa52a46acb911eaad02d3f -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +3fbb52f4fa0ba97dfd179ad0c8e020c3 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1316,7 +1350,7 @@ -40250 +40541 pl.yml file @@ -1324,10 +1358,10 @@ -2011-01-13T14:09:38.000000Z -f44541d5733c0a3b474b64151f751080 -2010-12-30T15:49:08.314847Z -4595 +2011-03-03T11:40:18.000000Z +afca79760eefe54e70833751f3d9b0bb +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1350,7 +1384,7 @@ -42545 +42836 th.yml file @@ -1358,10 +1392,10 @@ -2011-01-13T14:09:38.000000Z -52810a3efa019c1099e06641996a89b5 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +e9737687144c1c4fd63eacb68f2682f1 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1384,7 +1418,7 @@ -53010 +53301 no.yml file @@ -1392,10 +1426,10 @@ -2011-01-13T14:09:38.000000Z -7b92f62c72c56981439726858c94d19e -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +8fff009aa1fe3602b8b4dff6210f8497 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1418,7 +1452,7 @@ -38453 +38744 hu.yml file @@ -1426,10 +1460,10 @@ -2011-01-13T14:09:38.000000Z -992bb63025a60c01ea886ef5278e6f17 -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +5c2041121ebd0cd3bcf252d54e21786b +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1452,7 +1486,7 @@ -42977 +43268 vi.yml file @@ -1460,10 +1494,10 @@ -2011-01-13T14:09:38.000000Z -8ec5b444728e6a8f70e5de5b5d43784a -2010-12-22T20:40:56.075532Z -4554 +2011-03-03T11:40:18.000000Z +37a28f575513649d20833ce31e5fce23 +2011-02-27T13:43:18.863191Z +4955 jplang has-props @@ -1486,5 +1520,5 @@ -43545 +43836 diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/prop-base/fa.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/locales/.svn/prop-base/fa.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/bg.yml.svn-base --- a/config/locales/.svn/text-base/bg.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/bg.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,11 +1,12 @@ bg: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! - default: "%Y-%m-%d" + default: "%d-%m-%Y" short: "%b %d" long: "%B %d, %Y" @@ -65,12 +66,13 @@ other: "почти %{count} години" number: + # Default format for numbers format: separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: precision: 1 delimiter: "" storage_units: @@ -83,7 +85,8 @@ mb: "MB" gb: "GB" tb: "TB" - + + # Used in array.to_sentence. support: array: @@ -94,8 +97,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "1 грешка попречи този %{model} да бъде запиÑан" + other: "%{count} грешки попречиха този %{model} да бъде запиÑан" messages: inclusion: "не ÑъщеÑтвува в ÑпиÑъка" exclusion: "е запазено" @@ -120,6 +123,7 @@ greater_than_start_date: "трÑбва да е Ñлед началната дата" not_same_project: "не е от ÑÑŠÑ‰Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚" circular_dependency: "Тази Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ Ñ‰Ðµ доведе до безкрайна завиÑимоÑÑ‚" + cant_link_an_issue_with_a_descendant: "Една задача не може да бъде Ñвързвана към ÑÐ²Ð¾Ñ Ð¿Ð¾Ð´Ð·Ð°Ð´Ð°Ñ‡Ð°" actionview_instancetag_blank_option: Изберете @@ -150,24 +154,61 @@ notice_file_not_found: ÐеÑъщеÑтвуваща или премеÑтена Ñтраница. notice_locking_conflict: Друг потребител Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ‚ÐµÐ·Ð¸ данни в момента. notice_not_authorized: ÐÑмате право на доÑтъп до тази Ñтраница. + notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. notice_email_sent: "Изпратен e-mail на %{value}" notice_email_error: "Грешка при изпращане на e-mail (%{value})" notice_feeds_access_key_reseted: Ð’Ð°ÑˆÐ¸Ñ ÐºÐ»ÑŽÑ‡ за RSS доÑтъп беше променен. + notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. + notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %{count} задачи от %{total} избрани: %{ids}." + notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): %{errors}." + notice_no_issue_selected: "ÐÑма избрани задачи." + notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." + notice_default_data_loaded: Примерната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ðµ заредена уÑпешно. + notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ + notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. + notice_issue_done_ratios_updated: Обновен процент на завършените задачи. + notice_gantt_chart_truncated: МрежовиÑÑ‚ график е Ñъкратен, понеже броÑÑ‚ на обектите, които могат да бъдат показани е твърде голÑм (%{max}) + error_can_t_load_default_data: "Грешка при зареждане на примерната информациÑ: %{value}" error_scm_not_found: ÐеÑъщеÑтвуващ обект в хранилището. error_scm_command_failed: "Грешка при опит за ÐºÐ¾Ð¼ÑƒÐ½Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ: %{value}" + error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." + error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' + error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. + error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). + error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле + error_can_not_delete_tracker: Този тракер Ñъдържа задачи и не може да бъде изтрит. + error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. + error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново + error_can_not_archive_project: Този проект не може да бъде архивиран + error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. + error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ + error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). + error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача + error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) + warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." mail_subject_lost_password: "Вашата парола (%{value})" mail_body_lost_password: 'За да Ñмените паролата Ñи, използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° профил (%{value})" mail_body_register: 'За да активирате профила Ñи използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' + mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ %{value} профил за вход." + mail_body_account_information: ИнформациÑта за профила ви + mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в %{value}" + mail_body_account_activation_request: "Има новорегиÑтриран потребител (%{value}), очакващ вашето одобрение:" + mail_subject_reminder: "%{count} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите %{days} дни" + mail_body_reminder: "%{count} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите %{days} дни:" + mail_subject_wiki_content_added: "Wiki Ñтраницата '%{id}' беше добавена" + mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. + mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' не беше обновена" + mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. gui_validation_error: 1 грешка gui_validation_error_plural: "%{count} грешки" field_name: Име field_description: ОпиÑание - field_summary: Групиран изглед + field_summary: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ field_is_required: Задължително field_firstname: Име field_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ @@ -200,6 +241,7 @@ field_priority: Приоритет field_fixed_version: Планувана верÑÐ¸Ñ field_user: Потребител + field_principal: Principal field_role: Ð Ð¾Ð»Ñ field_homepage: Ðачална Ñтраница field_is_public: Публичен @@ -225,6 +267,7 @@ field_attr_lastname: Ðтрибут Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ (Lastname) field_attr_mail: Ðтрибут Email field_onthefly: Динамично Ñъздаване на потребител + field_start_date: Ðачална дата field_done_ratio: % ÐŸÑ€Ð¾Ð³Ñ€ÐµÑ field_auth_source: Ðачин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ field_hide_mail: Скрий e-mail адреÑа ми @@ -242,7 +285,25 @@ field_assignable: Възможно е възлагане на задачи за тази Ñ€Ð¾Ð»Ñ field_redirect_existing_links: ПренаÑочване на ÑъщеÑтвуващи линкове field_estimated_hours: ИзчиÑлено време + field_column_names: Колони + field_time_entries: Log time + field_time_zone: ЧаÑова зона + field_searchable: С възможноÑÑ‚ за търÑене field_default_value: СтойноÑÑ‚ по подразбиране + field_comments_sorting: Сортиране на коментарите + field_parent_title: РодителÑка Ñтраница + field_editable: Editable + field_watcher: Ðаблюдател + field_identity_url: OpenID URL + field_content: Съдържание + field_group_by: Групиране на резултатите по + field_sharing: Sharing + field_parent_issue: РодителÑка задача + field_member_of_group: Член на група + field_assigned_to_role: Assignee's role + field_text: ТекÑтово поле + field_visible: Видим + field_warn_on_leaving_unsaved: Предупреди ме, когато напуÑкам Ñтраница Ñ Ð½ÐµÐ·Ð°Ð¿Ð¸Ñано Ñъдържание setting_app_title: Заглавие setting_app_subtitle: ОпиÑание @@ -253,26 +314,132 @@ setting_attachment_max_size: МакÑимална големина на прикачен файл setting_issues_export_limit: МакÑимален брой задачи за екÑпорт setting_mail_from: E-mail Ð°Ð´Ñ€ÐµÑ Ð·Ð° емиÑии + setting_bcc_recipients: Получатели на Ñкрито копие (bcc) + setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) setting_host_name: ХоÑÑ‚ setting_text_formatting: Форматиране на текÑта setting_wiki_compression: Wiki компреÑиране на иÑториÑта setting_feeds_limit: МакÑимален брой за емиÑии + setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране setting_autofetch_changesets: Ðвтоматично обработване на ревизиите setting_sys_api_enabled: Разрешаване на WS за управление setting_commit_ref_keywords: ОтбелÑзващи ключови думи setting_commit_fix_keywords: Приключващи ключови думи setting_autologin: Ðвтоматичен вход setting_date_format: Формат на датата + setting_time_format: Формат на чаÑа setting_cross_project_issue_relations: Релации на задачи между проекти + setting_issue_list_default_columns: Показвани колони по подразбиране + setting_repositories_encodings: Кодови таблици + setting_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване + setting_emails_header: Emails header + setting_emails_footer: ПодтекÑÑ‚ за e-mail + setting_protocol: Протокол + setting_per_page_options: Опции за Ñтраниране + setting_user_format: ПотребителÑки формат + setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚ + setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране + setting_enabled_scm: Разрешена SCM + setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове + setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и + setting_mail_handler_api_key: API ключ + setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори + setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar + setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar + setting_diff_max_lines_displayed: МакÑимален брой показани diff редове + setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline + setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла + setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ + setting_password_min_length: Минимална дължина на парола + setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор + setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект + setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ + setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ' + setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите + setting_start_of_week: Първи ден на Ñедмицата + setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ + setting_cache_formatted_text: Cache formatted text + setting_default_notification_option: Подразбиращ Ñе начин за извеÑÑ‚Ñване + setting_commit_logtime_enabled: Разрешаване на отчитането на работното време + setting_commit_logtime_activity_id: ДейноÑÑ‚ при отчитане на работното време + setting_gantt_items_limit: МакÑимален брой обекти, които да Ñе показват в мрежов график + permission_add_project: Създаване на проект + permission_add_subprojects: Създаване на подпроекти + permission_edit_project: Редактиране на проект + permission_select_project_modules: Избор на проектни модули + permission_manage_members: Управление на членовете (на екип) + permission_manage_project_activities: Управление на дейноÑтите на проекта + permission_manage_versions: Управление на верÑиите + permission_manage_categories: Управление на категориите + permission_view_issues: Разглеждане на задачите + permission_add_issues: ДобавÑне на задачи + permission_edit_issues: Редактиране на задачи + permission_manage_issue_relations: Управление на връзките между задачите + permission_add_issue_notes: Добаване на бележки + permission_edit_issue_notes: Редактиране на бележки + permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки + permission_move_issues: ПремеÑтване на задачи + permission_delete_issues: Изтриване на задачи + permission_manage_public_queries: Управление на публичните заÑвки + permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) + permission_view_gantt: Разглеждане на мрежов график + permission_view_calendar: Разглеждане на календари + permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ + permission_add_issue_watchers: ДобавÑне на наблюдатели + permission_delete_issue_watchers: Изтриване на наблюдатели + permission_log_time: Log spent time + permission_view_time_entries: Разглеждане на изразходваното време + permission_edit_time_entries: Редактиране на time logs + permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs + permission_manage_news: Управление на новини + permission_comment_news: Коментиране на новини + permission_manage_documents: Управление на документи + permission_view_documents: Разглеждане на документи + permission_manage_files: Управление на файлове + permission_view_files: Разглеждане на файлове + permission_manage_wiki: Управление на wiki + permission_rename_wiki_pages: Преименуване на wiki Ñтраници + permission_delete_wiki_pages: Изтриване на wiki Ñтраници + permission_view_wiki_pages: Разглеждане на wiki + permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ + permission_edit_wiki_pages: Редактиране на wiki Ñтраници + permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki Ñтраници + permission_protect_wiki_pages: Заключване на wiki Ñтраници + permission_manage_repository: Управление на хранилища + permission_browse_repository: Разглеждане на хранилища + permission_view_changesets: Разглеждане на changesets + permission_commit_access: ПоверÑване + permission_manage_boards: Управление на boards + permission_view_messages: Разглеждане на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_add_messages: Публикуване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_edit_messages: Редактиране на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_edit_own_messages: Редактиране на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_delete_messages: Изтриване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_delete_own_messages: Изтриване на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници + permission_manage_subtasks: Управление на подзадачите + + project_module_issue_tracking: Тракинг + project_module_time_tracking: ОтделÑне на време + project_module_news: Ðовини + project_module_documents: Документи + project_module_files: Файлове + project_module_wiki: Wiki + project_module_repository: Хранилище + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Мрежов график + label_user: Потребител label_user_plural: Потребители label_user_new: Ðов потребител + label_user_anonymous: Ðнонимен label_project: Проект label_project_new: Ðов проект label_project_plural: Проекти label_x_projects: - zero: 0 проекти + zero: 0 проекта one: 1 проект other: "%{count} проекта" label_project_all: Ð’Ñички проекти @@ -281,9 +448,13 @@ label_issue_new: Ðова задача label_issue_plural: Задачи label_issue_view_all: Ð’Ñички задачи + label_issues_by: "Задачи по %{value}" + label_issue_added: Добавена задача + label_issue_updated: Обновена задача label_document: Документ label_document_new: Ðов документ label_document_plural: Документи + label_document_added: Добавен документ label_role: Ð Ð¾Ð»Ñ label_role_plural: Роли label_role_new: Ðова Ñ€Ð¾Ð»Ñ @@ -310,11 +481,13 @@ label_information_plural: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ label_please_login: Вход label_register: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ + label_login_with_open_id_option: или вход чрез OpenID label_password_lost: Забравена парола label_home: Ðачало label_my_page: Лична Ñтраница label_my_account: Профил label_my_projects: Проекти, в които учаÑтвам + label_my_page_block: Блокове в личната Ñтраница label_administration: ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_login: Вход label_logout: Изход @@ -324,6 +497,8 @@ label_last_login: ПоÑледно Ñвързване label_registered_on: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_activity: ДейноÑÑ‚ + label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ + label_user_activity: "ÐктивноÑÑ‚ на %{value}" label_new: Ðов label_logged_as: Здравейте, label_environment: Среда @@ -332,10 +507,13 @@ label_auth_source_new: Ðов начин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ label_auth_source_plural: Ðачини на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ label_subproject_plural: Подпроекти + label_subproject_new: Ðов подпроект + label_and_its_subprojects: "%{value} и неговите подпроекти" label_min_max_length: Минимална - макÑимална дължина label_list: СпиÑък label_date: Дата label_integer: ЦелочиÑлен + label_float: Дробно label_boolean: Ð§ÐµÐºÐ±Ð¾ÐºÑ label_string: ТекÑÑ‚ label_text: Дълъг текÑÑ‚ @@ -350,6 +528,7 @@ label_attachment_new: Ðов файл label_attachment_delete: Изтриване label_attachment_plural: Файлове + label_file_added: Добавен файл label_report: Справка label_report_plural: Справки label_news: Ðовини @@ -357,11 +536,13 @@ label_news_plural: Ðовини label_news_latest: ПоÑледни новини label_news_view_all: Виж вÑички + label_news_added: Добавена новина label_settings: ÐаÑтройки label_overview: Общ изглед label_version: ВерÑÐ¸Ñ label_version_new: Ðова верÑÐ¸Ñ label_version_plural: ВерÑии + label_close_versions: ЗатварÑне на завършените верÑии label_confirmation: Одобрение label_export_to: ЕкÑпорт към label_read: Read... @@ -388,6 +569,7 @@ label_new_statuses_allowed: Позволени ÑÑŠÑтоÑÐ½Ð¸Ñ label_all: вÑички label_none: никакви + label_nobody: никой label_next: Следващ label_previous: Предишен label_used_by: Използва Ñе от @@ -413,15 +595,26 @@ label_query: ПотребителÑка Ñправка label_query_plural: ПотребителÑки Ñправки label_query_new: Ðова заÑвка + label_my_queries: Моите заÑвки label_filter_add: Добави филтър label_filter_plural: Филтри label_equals: е label_not_equals: не е label_in_less_than: Ñлед по-малко от label_in_more_than: Ñлед повече от + label_greater_or_equal: ">=" + label_less_or_equal: <= label_in: в Ñледващите label_today: Ð´Ð½ÐµÑ + label_all_time: вÑички + label_yesterday: вчера label_this_week: тази Ñедмица + label_last_week: поÑледната Ñедмица + label_last_n_days: "поÑледните %{count} дни" + label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец + label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец + label_this_year: текущата година + label_date_range: Период label_less_than_ago: преди по-малко от label_more_than_ago: преди повече от label_ago: преди @@ -429,17 +622,25 @@ label_not_contains: не Ñъдържа label_day_plural: дни label_repository: Хранилище + label_repository_plural: Хранилища label_browse: Разглеждане label_modification: "%{count} промÑна" label_modification_plural: "%{count} промени" + label_branch: работен вариант + label_tag: ВерÑÐ¸Ñ label_revision: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ label_revision_plural: Ревизии + label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} + label_associated_revisions: ÐÑоциирани ревизии label_added: добавено label_modified: променено + label_copied: копирано + label_renamed: преименувано label_deleted: изтрито label_latest_revision: ПоÑледна Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ label_latest_revision_plural: ПоÑледни ревизии label_view_revisions: Виж ревизиите + label_view_all_revisions: Разглеждане на вÑички ревизии label_max_size: МакÑимална големина label_sort_highest: ПремеÑти най-горе label_sort_higher: ПремеÑти по-горе @@ -465,6 +666,7 @@ label_changes_details: Подробни промени label_issue_tracking: Тракинг label_spent_time: Отделено време + label_overall_spent_time: Общо употребено време label_f_hour: "%{value} чаÑ" label_f_hour_plural: "%{value} чаÑа" label_time_tracking: ОтделÑне на време @@ -486,6 +688,7 @@ label_relation_delete: Изтриване на Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ label_relates_to: Ñвързана ÑÑŠÑ label_duplicates: дублира + label_duplicated_by: дублирана от label_blocks: блокира label_blocked_by: блокирана от label_precedes: предшеÑтва @@ -501,10 +704,13 @@ label_board: Форум label_board_new: Ðов форум label_board_plural: Форуми + label_board_locked: Заключена + label_board_sticky: Sticky label_topic_plural: Теми label_message_plural: Ð¡ÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ label_message_last: ПоÑледно Ñъобщение label_message_new: Ðова тема + label_message_posted: Добавено Ñъобщение label_reply_plural: Отговори label_send_information: Изпращане на информациÑта до Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ label_year: Година @@ -515,12 +721,81 @@ label_language_based: Ð’ завиÑимоÑÑ‚ от езика label_sort_by: "Сортиране по %{value}" label_send_test_email: Изпращане на теÑтов e-mail + label_feeds_access_key: RSS access ключ + label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп label_feeds_access_key_created_on: "%{value} от Ñъздаването на RSS ключа" label_module_plural: Модули label_added_time_by: "Публикувана от %{author} преди %{age}" + label_updated_time_by: "Обновена от %{author} преди %{age}" label_updated_time: "Обновена преди %{value}" label_jump_to_a_project: Проект... - + label_file_plural: Файлове + label_changeset_plural: Ревизии + label_default_columns: По подразбиране + label_no_change_option: (Без промÑна) + label_bulk_edit_selected_issues: Редактиране на задачи + label_theme: Тема + label_default: По подразбиране + label_search_titles_only: Само в заглавиÑта + label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам" + label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..." + label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)" + label_user_mail_option_only_my_events: Само за неща, в които Ñъм включен/а + label_user_mail_option_only_assigned: Само за неща, назначени на мен + label_user_mail_option_only_owner: Само за неща, на които аз Ñъм ÑобÑтвеник + label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени" + label_registration_activation_by_email: активиране на профила по email + label_registration_manual_activation: ръчно активиране + label_registration_automatic_activation: автоматично активиране + label_display_per_page: "Ðа Ñтраница по: %{value}" + label_age: ВъзраÑÑ‚ + label_change_properties: ПромÑна на наÑтройки + label_general: ОÑновни + label_more: Още + label_scm: SCM (СиÑтема за контрол на верÑиите) + label_plugins: Плъгини + label_ldap_authentication: LDAP Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ + label_downloads_abbr: D/L + label_optional_description: Ðезадължително опиÑание + label_add_another_file: ДобавÑне на друг файл + label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ + label_chronological_order: Хронологичен ред + label_reverse_chronological_order: Обратен хронологичен ред + label_planning: Планиране + label_incoming_emails: ВходÑщи e-mail-и + label_generate_key: Генериране на ключ + label_issue_watchers: Ðаблюдатели + label_example: Пример + label_display: Display + label_sort: Сортиране + label_ascending: ÐараÑтващ + label_descending: ÐамалÑващ + label_date_from_to: От %{start} до %{end} + label_wiki_content_added: Wiki Ñтраница беше добавена + label_wiki_content_updated: Wiki Ñтраница беше обновена + label_group: Група + label_group_plural: Групи + label_group_new: Ðова група + label_time_entry_plural: Използвано време + label_version_sharing_none: Ðе Ñподелен + label_version_sharing_descendants: С подпроекти + label_version_sharing_hierarchy: С проектна Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ + label_version_sharing_tree: С дърво на проектите + label_version_sharing_system: С вÑички проекти + label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи + label_copy_source: Източник + label_copy_target: Цел + label_copy_same_as_target: Също като целта + label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер + label_api_access_key: API ключ за доÑтъп + label_missing_api_access_key: ЛипÑващ API ключ + label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди %{value} + label_profile: Профил + label_subtask_plural: Подзадачи + label_project_copy_notifications: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта + label_principal_search: "ТърÑене на потребител или група:" + label_user_search: "ТърÑене на потребител:" + button_login: Вход button_submit: Прикачване button_save: Ð—Ð°Ð¿Ð¸Ñ @@ -528,8 +803,10 @@ button_uncheck_all: ИзчиÑтване на вÑички button_delete: Изтриване button_create: Създаване + button_create_and_continue: Създаване и продължаване button_test: ТеÑÑ‚ button_edit: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ + button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}" button_add: ДобавÑне button_change: ПромÑна button_apply: Приложи @@ -540,6 +817,7 @@ button_list: СпиÑък button_view: Преглед button_move: ПремеÑтване + button_move_and_follow: ПремеÑтване и продължаване button_back: Ðазад button_cancel: Отказ button_activate: ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ @@ -553,26 +831,49 @@ button_unarchive: Разархивиране button_reset: Генериране наново button_rename: Преименуване + button_change_password: ПромÑна на парола + button_copy: Копиране + button_copy_and_follow: Копиране и продължаване + button_annotate: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ + button_update: ОбновÑване + button_configure: Конфигуриране + button_quote: Цитат + button_duplicate: Дублиране + button_show: Показване status_active: активен status_registered: региÑтриран status_locked: заключен + version_status_open: отворена + version_status_locked: заключена + version_status_closed: затворена + + field_active: Ðктивен + text_select_mail_notifications: Изберете ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° изпращане на e-mail. text_regexp_info: пр. ^[A-Z0-9]+$ text_min_max_length_info: 0 - без Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ text_project_destroy_confirmation: Сигурни ли Ñте, че иÑкате да изтриете проекта и данните в него? + text_subprojects_destroy_warning: "Ðеговите подпроекти: %{value} Ñъщо ще бъдат изтрити." text_workflow_edit: Изберете Ñ€Ð¾Ð»Ñ Ð¸ тракер за да редактирате Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ text_are_you_sure: Сигурни ли Ñте? - text_tip_task_begin_day: задача започваща този ден - text_tip_task_end_day: задача завършваща този ден - text_tip_task_begin_end_day: задача започваща и завършваща този ден + text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? + text_journal_changed: "%{label} променен от %{old} на %{new}" + text_journal_set_to: "%{label} уÑтановен на %{value}" + text_journal_deleted: "%{label} изтрит (%{old})" + text_journal_added: "Добавено %{label} %{value}" + text_tip_issue_begin_day: задача, започваща този ден + text_tip_issue_end_day: задача, завършваща този ден + text_tip_issue_begin_end_day: задача, започваща и завършваща този ден text_project_identifier_info: 'Позволени Ñа малки букви (a-z), цифри и тирета.
    Ðевъзможна промÑна Ñлед запиÑ.' text_caracters_maximum: "До %{count} Ñимвола." + text_caracters_minimum: "Минимум %{count} Ñимвола." text_length_between: "От %{min} до %{max} Ñимвола." text_tracker_no_workflow: ÐÑма дефиниран работен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° този тракер text_unallowed_characters: Ðепозволени Ñимволи text_comma_separated: Позволено е изброÑване (Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ» запетаÑ). + text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). text_issues_ref_in_commit_messages: ОтбелÑзване и приключване на задачи от ревизии text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ %{id} (от %{author})." text_issue_updated: "Задача %{id} е обновена (от %{author})." @@ -580,7 +881,37 @@ text_issue_category_destroy_question: "Има задачи (%{count}) обвързани Ñ Ñ‚Ð°Ð·Ð¸ категориÑ. Какво ще изберете?" text_issue_category_destroy_assignments: Премахване на връзките Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñта text_issue_category_reassign_to: Преобвързване Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ - + text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." + text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." + text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ + text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}." + text_time_logged_by_changeset: Приложено в Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}. + text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' + text_select_project_modules: 'Изберете активните модули за този проект:' + text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил + text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ + text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ + text_rmagick_available: Ðаличен RMagick (по избор) + text_destroy_time_entries_question: "%{hours} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" + text_destroy_time_entries: Изтриване на отделеното време + text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект + text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' + text_user_wrote: "%{value} напиÑа:" + text_enumeration_destroy_question: "%{count} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." + text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' + text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/configuration.yml и реÑтартирайте Redmine, за да ги разрешите." + text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, ÑъответÑтващи на потребителите в дневника на хранилището (repository).\nПотребителите Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¸ имена в Redmine и хранилищата Ñе ÑъвмеÑÑ‚Ñват автоматично." + text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' + text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' + text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? + text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници + text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants + text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница + text_own_membership_delete_confirmation: "Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това да не можете да редактирате този проект.\nСигурен ли Ñте, че иÑкате да продължите?" + text_zoom_in: Увеличаване + text_zoom_out: ÐамалÑване + text_warn_on_leaving_unsaved: Страницата Ñъдържа незапиÑано Ñъдържание, което може да бъде загубено, ако Ñ Ð½Ð°Ð¿ÑƒÑнете. + default_role_manager: Мениджър default_role_developer: Разработчик default_role_reporter: Публикуващ @@ -602,333 +933,10 @@ default_priority_immediate: Веднага default_activity_design: Дизайн default_activity_development: Разработка - + enumeration_issue_priorities: Приоритети на задачи enumeration_doc_categories: Категории документи enumeration_activities: ДейноÑти (time tracking) - label_file_plural: Файлове - label_changeset_plural: Ревизии - field_column_names: Колони - label_default_columns: По подразбиране - setting_issue_list_default_columns: Показвани колони по подразбиране - setting_repositories_encodings: Кодови таблици - notice_no_issue_selected: "ÐÑма избрани задачи." - label_bulk_edit_selected_issues: Редактиране на задачи - label_no_change_option: (Без промÑна) - notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %{count} задачи от %{total} избрани: %{ids}." - label_theme: Тема - label_default: По подразбиране - label_search_titles_only: Само в заглавиÑта - label_nobody: никой - button_change_password: ПромÑна на парола - text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." - label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..." - label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам" - label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)" - setting_emails_footer: ПодтекÑÑ‚ за e-mail - label_float: Дробно - button_copy: Копиране - mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ %{value} профил за вход." - mail_body_account_information: ИнформациÑта за профила ви - setting_protocol: Протокол - label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени" - setting_time_format: Формат на чаÑа - label_registration_activation_by_email: активиране на профила по email - mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в %{value}" - mail_body_account_activation_request: "Има новорегиÑтриран потребител (%{value}), очакващ вашето одобрение:" - label_registration_automatic_activation: автоматично активиране - label_registration_manual_activation: ръчно активиране - notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." - field_time_zone: ЧаÑова зона - text_caracters_minimum: "Минимум %{count} Ñимвола." - setting_bcc_recipients: Получатели на Ñкрито копие (bcc) - button_annotate: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ - label_issues_by: "Задачи по %{value}" - field_searchable: С възможноÑÑ‚ за търÑене - label_display_per_page: "Ðа Ñтраница по: %{value}" - setting_per_page_options: Опции за Ñтраниране - label_age: ВъзраÑÑ‚ - notice_default_data_loaded: Примерната информациÑта е уÑпешно заредена. - text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." - error_can_t_load_default_data: "Грешка при зареждане на примерната информациÑ: %{value}" - button_update: ОбновÑване - label_change_properties: ПромÑна на наÑтройки - label_general: ОÑновни - label_repository_plural: Хранилища - label_associated_revisions: ÐÑоциирани ревизии - setting_user_format: ПотребителÑки формат - text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}." - label_more: Още - text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' - label_scm: SCM (СиÑтема за контрол на кода) - text_select_project_modules: 'Изберете активните модули за този проект:' - label_issue_added: Добавена задача - label_issue_updated: Обновена задача - label_document_added: Добавен документ - label_message_posted: Добавено Ñъобщение - label_file_added: Добавен файл - label_news_added: Добавена новина - project_module_boards: Форуми - project_module_issue_tracking: Тракинг - project_module_wiki: Wiki - project_module_files: Файлове - project_module_documents: Документи - project_module_repository: Хранилище - project_module_news: Ðовини - project_module_time_tracking: ОтделÑне на време - text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ - text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил - text_rmagick_available: Ðаличен RMagick (по избор) - button_configure: Конфигуриране - label_plugins: Плъгини - label_ldap_authentication: LDAP Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ - label_downloads_abbr: D/L - label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец - label_last_n_days: "поÑледните %{count} дни" - label_all_time: вÑички - label_this_year: текущата година - label_date_range: Период - label_last_week: поÑледната Ñедмица - label_yesterday: вчера - label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец - label_add_another_file: ДобавÑне на друг файл - label_optional_description: Ðезадължително опиÑание - text_destroy_time_entries_question: "%{hours} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" - error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' - text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект - text_destroy_time_entries: Изтриване на отделеното време - text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' - setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚ - label_chronological_order: Хронологичен ред - field_comments_sorting: Сортиране на коментарите - label_reverse_chronological_order: Обратен хронологичен ред - label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ - setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране - label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ - setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране - error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." - label_planning: Планиране - text_subprojects_destroy_warning: "Ðеговите подпроекти: %{value} Ñъщо ще бъдат изтрити." - label_and_its_subprojects: "%{value} и неговите подпроекти" - mail_body_reminder: "%{count} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите %{days} дни:" - mail_subject_reminder: "%{count} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите %{days} дни" - text_user_wrote: "%{value} напиÑа:" - label_duplicated_by: дублирана от - setting_enabled_scm: Разрешена SCM - text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' - text_enumeration_destroy_question: "%{count} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." - label_incoming_emails: ВходÑщи e-mail-и - label_generate_key: Генериране на ключ - setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и - setting_mail_handler_api_key: API ключ - text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/email.yml и реÑтартирайте Redmine, за да ги разрешите." - field_parent_title: РодителÑка Ñтраница - label_issue_watchers: Ðаблюдатели - setting_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване - button_quote: Цитат - setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори - notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ - label_renamed: преименувано - label_copied: копирано - setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) - permission_view_files: Разглеждане на файлове - permission_edit_issues: Редактиране на задачи - permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs - permission_manage_public_queries: Управление на публичните заÑвки - permission_add_issues: ДобавÑне на задачи - permission_log_time: Log spent time - permission_view_changesets: Разглеждане на changesets - permission_view_time_entries: Разглеждане на изразходваното време - permission_manage_versions: Управление на верÑиите - permission_manage_wiki: Управление на wiki - permission_manage_categories: Управление на категориите задачи - permission_protect_wiki_pages: Заключване на wiki Ñтраници - permission_comment_news: Коментиране на новини - permission_delete_messages: Изтриване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_select_project_modules: Избор на проектни модули - permission_manage_documents: Управление на документи - permission_edit_wiki_pages: Редактиране на wiki Ñтраници - permission_add_issue_watchers: ДобавÑне на наблюдатели - permission_view_gantt: Разглеждане на мрежов график - permission_move_issues: ПремеÑтване на задачи - permission_manage_issue_relations: Управление на връзките между задачите - permission_delete_wiki_pages: Изтриване на wiki Ñтраници - permission_manage_boards: Управление на boards - permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове - permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ - permission_add_messages: Публикуване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_view_messages: Разглеждане на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_manage_files: Управление на файлове - permission_edit_issue_notes: Редактиране на бележки - permission_manage_news: Управление на новини - permission_view_calendar: Разглеждане на календари - permission_manage_members: Управление на членовете (на екип) - permission_edit_messages: Редактиране на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_issues: Изтриване на задачи - permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ - permission_manage_repository: Управление на хранилища - permission_commit_access: ПоверÑване - permission_browse_repository: Разглеждане на хранилища - permission_view_documents: Разглеждане на документи - permission_edit_project: Редактиране на проект - permission_add_issue_notes: Добаване на бележки - permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) - permission_view_wiki_pages: Разглеждане на wiki - permission_rename_wiki_pages: Преименуване на wiki Ñтраници - permission_edit_time_entries: Редактиране на time logs - permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки - setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar - label_example: Пример - text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - permission_edit_own_messages: Редактиране на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_own_messages: Изтриване на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - label_user_activity: "ÐктивноÑÑ‚ на %{value}" - label_updated_time_by: "Обновена от %{author} преди %{age}" - text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' - setting_diff_max_lines_displayed: МакÑимален брой показани diff редове - text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ - warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." - button_create_and_continue: Създаване и продължаване - text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' - label_display: Display - field_editable: Editable - setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла - setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline - field_watcher: Ðаблюдател - setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ - field_identity_url: OpenID URL - label_login_with_open_id_option: или вход чрез OpenID - field_content: Съдържание - label_descending: ÐамалÑващ - label_sort: Сортиране - label_ascending: ÐараÑтващ - label_date_from_to: От %{start} до %{end} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? - text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница - text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници - text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants - setting_password_min_length: Минимална дължина на парола - field_group_by: Групиране на резултатите по - mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' не беше обновена" - label_wiki_content_added: Wiki Ñтраница беше добавена - mail_subject_wiki_content_added: "Wiki Ñтраницата '%{id}' беше добавена" - mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. - label_wiki_content_updated: Wiki Ñтраница беше обновена - mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. - permission_add_project: Създаване на проект - setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор - label_view_all_revisions: Разглеждане на вÑички ревизии - label_tag: ВерÑÐ¸Ñ - label_branch: работен вариант - error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. - error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). - text_journal_changed: "%{label} променен от %{old} на %{new}" - text_journal_set_to: "%{label} уÑтановен на %{value}" - text_journal_deleted: "%{label} изтрит (%{old})" - label_group_plural: Групи - label_group: Група - label_group_new: Ðова група - label_time_entry_plural: Използвано време - text_journal_added: "Добавено %{label} %{value}" - field_active: Ðктивен enumeration_system_activity: СиÑтемна активноÑÑ‚ - permission_delete_issue_watchers: Изтриване на наблюдатели - version_status_closed: затворена - version_status_locked: заключена - version_status_open: отворена - error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново - label_user_anonymous: Ðнонимен - button_move_and_follow: ПремеÑтване и продължаване - setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект - setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar - field_sharing: Sharing - label_version_sharing_hierarchy: С проектна Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ - label_version_sharing_system: С вÑички проекти - label_version_sharing_descendants: С подпроекти - label_version_sharing_tree: С дърво на проектите - label_version_sharing_none: Ðе Ñподелен - error_can_not_archive_project: Този проект не може да бъде архивиран - button_duplicate: Дублиране - button_copy_and_follow: Копиране и продължаване - label_copy_source: Източник - setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ - setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите - error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. - error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). - setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ' - label_copy_same_as_target: Също като целта - label_copy_target: Цел - notice_issue_done_ratios_updated: Обновен процент на завършените задачи. - error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ - label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи - setting_start_of_week: Първи ден на Ñедмицата - permission_view_issues: Разглеждане на задачите - label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер - label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} - label_api_access_key: API ключ за доÑтъп - label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди %{value} - label_feeds_access_key: RSS access ключ - notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. - setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ - label_missing_api_access_key: ЛипÑващ API ключ - label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп - button_show: Показване - text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). - setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове - permission_add_subprojects: Създаване на подпроекти - label_subproject_new: Ðов подпроект - text_own_membership_delete_confirmation: |- - Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това на да не можете да редатирате този проект. - Сигурен ли Ñте, че иÑкате да продължите? - label_close_versions: ЗатварÑне на завършените верÑии - label_board_sticky: Sticky - label_board_locked: Заключена - permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници - setting_cache_formatted_text: Cache formatted text - permission_manage_project_activities: Управление на дейноÑтите на проекта - error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача - label_profile: Профил - permission_manage_subtasks: Управление на подзадачите - field_parent_issue: РодителÑка задача - label_subtask_plural: Подзадачи - label_project_copy_notifications: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта - error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле - error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) - error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. - error_can_not_delete_tracker: Този тракер Ñъдържа задачи и не може да бъде изтрит. - field_principal: Principal - label_my_page_block: Блокове в личната Ñтраница - notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): %{errors}." - text_zoom_out: ÐамалÑване - text_zoom_in: Увеличаване - notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. - label_overall_spent_time: Общо употребено време - field_time_entries: Log time - notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. - text_tip_issue_end_day: задача, завършваща този ден - field_text: ТекÑтово поле - label_user_mail_option_only_owner: Само за неща, на които аз Ñъм ÑобÑтвеник - field_member_of_group: Член на група - project_module_gantt: Мрежов график - text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? - text_tip_issue_begin_end_day: задача, започваща и завършваща този ден - setting_default_notification_option: Подразбиращ Ñе начин за извеÑÑ‚Ñване - project_module_calendar: Календар - label_user_mail_option_only_my_events: Само за неща, в които Ñъм включен/а - text_tip_issue_begin_day: задача, започваща този ден - label_user_mail_option_only_assigned: Само за неща, назначени на мен - button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}" - field_assigned_to_role: Assignee's role - field_start_date: Ðачална дата - label_principal_search: "ТърÑене на потребител или група:" - label_user_search: "ТърÑене на потребител:" - field_visible: Видим - setting_emails_header: Emails header - setting_commit_logtime_activity_id: ДейноÑÑ‚ при отчитане на работното време - text_time_logged_by_changeset: Приложено в Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}. - setting_commit_logtime_enabled: Разрешаване на отчитането на работното време - notice_gantt_chart_truncated: МрежовиÑÑ‚ график е Ñъкратен, понеже броÑÑ‚ на обектите, които могат да бъдат показани е твърде голÑм (%{max}) - setting_gantt_items_limit: МакÑимален брой обекти, които да Ñе показват в мрежов график + + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/bs.yml.svn-base --- a/config/locales/.svn/text-base/bs.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/bs.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -787,7 +787,7 @@ text_user_wrote: "%{value} je napisao/la:" text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost." text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:' - text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/email.yml i restartuj aplikaciju nakon toga." + text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga." text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisniÄko ima naÄ‘eno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju." text_diff_truncated: '... Ovaj prikaz razlike je odsjeÄen poÅ¡to premaÅ¡uje maksimalnu veliÄinu za prikaz' text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost' @@ -950,3 +950,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/ca.yml.svn-base --- a/config/locales/.svn/text-base/ca.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/ca.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -880,7 +880,7 @@ text_user_wrote: "%{value} va escriure:" text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor." text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:" - text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo." + text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.yml i reinicieu l'aplicació per habilitar-lo." text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament." text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar." text_custom_field_possible_values_info: "Una línia per a cada valor" @@ -939,3 +939,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/cs.yml.svn-base --- a/config/locales/.svn/text-base/cs.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/cs.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,4 +1,9 @@ +# Update to 1.1 by Michal Gebauer +# Updated by Josef LiÅ¡ka +# CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz +# Based on original CZ translation by Jan KadleÄek cs: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: @@ -26,7 +31,7 @@ long: "%B %d, %Y %H:%M" am: "dop." pm: "odp." - + datetime: distance_in_words: half_a_minute: "půl minuty" @@ -65,24 +70,26 @@ other: "téměř %{count} roky" number: + # Výchozí formát pro Äísla format: - separator: "." + separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: + delimiter: "" precision: 1 - delimiter: "" - storage_units: + storage_units: format: "%n %u" - units: - kb: KB - tb: TB - gb: GB - byte: - one: Byte - other: Bytes - mb: MB + units: + byte: + one: "Bajt" + other: "Bajtů" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in array.to_sentence. support: @@ -94,8 +101,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "1 chyba zabránila uložení %{model}" + other: "%{count} chyb zabránilo uložení %{model}" messages: inclusion: "není zahrnuto v seznamu" exclusion: "je rezervováno" @@ -122,10 +129,6 @@ circular_dependency: "Tento vztah by vytvoÅ™il cyklickou závislost" cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílÄích úkolů" - # Updated by Josef LiÅ¡ka - # CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz - # Based on original CZ translation by Jan KadleÄek - actionview_instancetag_blank_option: Prosím vyberte general_text_No: 'Ne' @@ -154,20 +157,40 @@ notice_successful_connection: Úspěšné pÅ™ipojení. notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána. notice_locking_conflict: Údaje byly zmÄ›nÄ›ny jiným uživatelem. - notice_scm_error: Záznam a/nebo revize neexistuje v repozitáři. notice_not_authorized: Nemáte dostateÄná práva pro zobrazení této stránky. + notice_not_authorized_archived_project: Projekt ke kterému se snažíte pÅ™istupovat byl archivován. notice_email_sent: "Na adresu %{value} byl odeslán email" notice_email_error: "PÅ™i odesílání emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃ­Ä pro přístup k RSS byl resetován. + notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. notice_failed_to_save_issues: "Chyba pÅ™i uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}." + notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat" notice_account_pending: "Váš úÄet byl vytvoÅ™en, nyní Äeká na schválení administrátorem." notice_default_data_loaded: Výchozí konfigurace úspěšnÄ› nahrána. + notice_unable_delete_version: Nemohu odstanit verzi + notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. + notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. + notice_gantt_chart_truncated: Graf byl oříznut, poÄet položek pÅ™esáhl limit pro zobrazení (%{max}) error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}" error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři." error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: %{value}" + error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu' + error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. + error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). + error_can_not_delete_custom_field: Nelze smazat volitelné pole + error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. + error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. + error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en + error_can_not_archive_project: Tento projekt nemůže být archivován + error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. + error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly + error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) + error_unable_delete_issue_status: Nelze smazat stavy úkolů + error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) + warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pro zmÄ›nu vaÅ¡eho hesla kliknÄ›te na následující odkaz:' @@ -177,6 +200,12 @@ mail_body_account_information: Informace o vaÅ¡em úÄtu mail_subject_account_activation_request: "Aktivace %{value} úÄtu" mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." + mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" + mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní (%{days}):" + mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" + mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." + mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" + mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." gui_validation_error: 1 chyba gui_validation_error_plural: "%{count} chyb(y)" @@ -216,6 +245,7 @@ field_priority: Priorita field_fixed_version: Cílová verze field_user: Uživatel + field_principal: Hlavní field_role: Role field_homepage: Domovská stránka field_is_public: VeÅ™ejný @@ -260,10 +290,23 @@ field_redirect_existing_links: PÅ™esmÄ›rovat stvávající odkazy field_estimated_hours: Odhadovaná doba field_column_names: Sloupce + field_time_entries: Zaznamenaný Äas field_time_zone: ÄŒasové pásmo field_searchable: Umožnit vyhledávání field_default_value: Výchozí hodnota field_comments_sorting: Zobrazit komentáře + field_parent_title: RodiÄovská stránka + field_editable: Editovatelný + field_watcher: Sleduje + field_identity_url: OpenID URL + field_content: Obsah + field_group_by: Seskupovat výsledky podle + field_sharing: Sdílení + field_parent_issue: RodiÄovský úkol + field_member_of_group: Skupina pÅ™iÅ™aditele + field_assigned_to_role: Role pÅ™iÅ™aditele + field_text: Textové pole + field_visible: Viditelný setting_app_title: Název aplikace setting_app_subtitle: Podtitulek aplikace @@ -275,6 +318,7 @@ setting_issues_export_limit: Limit pro export úkolů setting_mail_from: Odesílat emaily z adresy setting_bcc_recipients: Příjemci skryté kopie (bcc) + setting_plain_text_mail: pouze prostý text (ne HTML) setting_host_name: Jméno serveru setting_text_formatting: Formátování textu setting_wiki_compression: Komprese historie Wiki @@ -290,12 +334,94 @@ setting_cross_project_issue_relations: Povolit vazby úkolů napÅ™Ã­Ä projekty setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů setting_repositories_encodings: Kódování + setting_commit_logs_encoding: Kódování zpráv pÅ™i commitu + setting_emails_header: HlaviÄka emailů setting_emails_footer: PatiÄka emailů setting_protocol: Protokol setting_per_page_options: Povolené poÄty řádků na stránce setting_user_format: Formát zobrazení uživatele setting_activity_days_default: Dny zobrazené v Äinnosti projektu setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu + setting_enabled_scm: Povolené SCM + setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků + setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily + setting_mail_handler_api_key: API klÃ­Ä + setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů + setting_gravatar_enabled: Použít uživatelské ikony Gravatar + setting_gravatar_default: Výchozí Gravatar + setting_diff_max_lines_displayed: Maximální poÄet zobrazenách řádků rozdílů + setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce + setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru + setting_openid: Umožnit pÅ™ihlaÅ¡ování a registrace s OpenID + setting_password_min_length: Minimální délka hesla + setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il + setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt + setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s + setting_issue_done_ratio_issue_field: Použít pole úkolu + setting_issue_done_ratio_issue_status: Použít stav úkolu + setting_start_of_week: ZaÄínat kalendáře + setting_rest_api_enabled: Zapnout službu REST + setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti + setting_default_notification_option: Výchozí nastavení oznámení + setting_commit_logtime_enabled: Povolit zapisování Äasu + setting_commit_logtime_activity_id: Aktivita pro zapsaný Äas + setting_gantt_items_limit: Maximální poÄet položek zobrazený na ganttovÄ› grafu + + permission_add_project: VytvoÅ™it projekt + permission_add_subprojects: VytvoÅ™it podprojekty + permission_edit_project: Úprava projektů + permission_select_project_modules: VýbÄ›r modulů projektu + permission_manage_members: Spravování Älenství + permission_manage_project_activities: Spravovat aktivity projektu + permission_manage_versions: Spravování verzí + permission_manage_categories: Spravování kategorií úkolů + permission_view_issues: Zobrazit úkoly + permission_add_issues: PÅ™idávání úkolů + permission_edit_issues: Upravování úkolů + permission_manage_issue_relations: Spravování vztahů mezi úkoly + permission_add_issue_notes: PÅ™idávání poznámek + permission_edit_issue_notes: Upravování poznámek + permission_edit_own_issue_notes: Upravování vlastních poznámek + permission_move_issues: PÅ™esouvání úkolů + permission_delete_issues: Mazání úkolů + permission_manage_public_queries: Správa veÅ™ejných dotazů + permission_save_queries: Ukládání dotazů + permission_view_gantt: Zobrazené Ganttova diagramu + permission_view_calendar: Prohlížení kalendáře + permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů + permission_add_issue_watchers: PÅ™idání sledujících uživatelů + permission_delete_issue_watchers: Smazat pÅ™ihlížející + permission_log_time: Zaznamenávání stráveného Äasu + permission_view_time_entries: Zobrazení stráveného Äasu + permission_edit_time_entries: Upravování záznamů o stráveném Äasu + permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase + permission_manage_news: Spravování novinek + permission_comment_news: Komentování novinek + permission_manage_documents: Správa dokumentů + permission_view_documents: Prohlížení dokumentů + permission_manage_files: Spravování souborů + permission_view_files: Prohlížení souborů + permission_manage_wiki: Spravování Wiki + permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek + permission_delete_wiki_pages: Mazání stránek na Wiki + permission_view_wiki_pages: Prohlížení Wiki + permission_view_wiki_edits: Prohlížení historie Wiki + permission_edit_wiki_pages: Upravování stránek Wiki + permission_delete_wiki_pages_attachments: Mazání příloh + permission_protect_wiki_pages: ZabezpeÄení Wiki stránek + permission_manage_repository: Spravování repozitáře + permission_browse_repository: Procházení repozitáře + permission_view_changesets: Zobrazování sady zmÄ›n + permission_commit_access: Commit přístup + permission_manage_boards: Správa diskusních fór + permission_view_messages: Prohlížení zpráv + permission_add_messages: Posílání zpráv + permission_edit_messages: Upravování zpráv + permission_edit_own_messages: Upravit vlastní zprávy + permission_delete_messages: Mazání zpráv + permission_delete_own_messages: Smazat vlastní zprávy + permission_export_wiki_pages: Exportovat Wiki stránky + permission_manage_subtasks: Spravovat podúkoly project_module_issue_tracking: Sledování úkolů project_module_time_tracking: Sledování Äasu @@ -305,10 +431,13 @@ project_module_wiki: Wiki project_module_repository: Repozitář project_module_boards: Diskuse + project_module_calendar: Kalendář + project_module_gantt: Gantt label_user: Uživatel label_user_plural: Uživatelé label_user_new: Nový uživatel + label_user_anonymous: Anonymní label_project: Projekt label_project_new: Nový projekt label_project_plural: Projekty @@ -355,11 +484,13 @@ label_information_plural: Informace label_please_login: Prosím pÅ™ihlaÅ¡te se label_register: Registrovat + label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID label_password_lost: Zapomenuté heslo label_home: Úvodní label_my_page: Moje stránka label_my_account: Můj úÄet label_my_projects: Moje projekty + label_my_page_block: Bloky na mé stránce label_administration: Administrace label_login: PÅ™ihlášení label_logout: Odhlášení @@ -370,6 +501,7 @@ label_registered_on: Registrován label_activity: Aktivita label_overall_activity: Celková aktivita + label_user_activity: "Aktivita uživatele: %{value}" label_new: Nový label_logged_as: PÅ™ihlášen jako label_environment: ProstÅ™edí @@ -378,6 +510,8 @@ label_auth_source_new: Nový mód autentifikace label_auth_source_plural: Módy autentifikace label_subproject_plural: Podprojekty + label_subproject_new: Nový podprojekt + label_and_its_subprojects: "%{value} a jeho podprojekty" label_min_max_length: Min - Max délka label_list: Seznam label_date: Datum @@ -411,6 +545,7 @@ label_version: Verze label_version_new: Nová verze label_version_plural: Verze + label_close_versions: Zavřít dokonÄené verze label_confirmation: Potvrzení label_export_to: 'Také k dispozici:' label_read: NaÄítá se... @@ -469,6 +604,8 @@ label_not_equals: není label_in_less_than: je měší než label_in_more_than: je vÄ›tší než + label_greater_or_equal: '>=' + label_less_or_equal: '<=' label_in: v label_today: dnes label_all_time: vÅ¡e @@ -491,15 +628,21 @@ label_browse: Procházet label_modification: "%{count} zmÄ›na" label_modification_plural: "%{count} zmÄ›n" + label_branch: VÄ›tev + label_tag: Tag label_revision: Revize label_revision_plural: Revizí + label_revision_id: "Revize %{value}" label_associated_revisions: Související verze label_added: pÅ™idáno label_modified: zmÄ›nÄ›no + label_copied: zkopírováno + label_renamed: pÅ™ejmenováno label_deleted: odstranÄ›no label_latest_revision: Poslední revize label_latest_revision_plural: Poslední revize label_view_revisions: Zobrazit revize + label_view_all_revisions: Zobrazit vÅ¡echny revize label_max_size: Maximální velikost label_sort_highest: PÅ™esunout na zaÄátek label_sort_higher: PÅ™esunout nahoru @@ -525,6 +668,7 @@ label_changes_details: Detail vÅ¡ech zmÄ›n label_issue_tracking: Sledování úkolů label_spent_time: Strávený Äas + label_overall_spent_time: Celkem strávený Äas label_f_hour: "%{value} hodina" label_f_hour_plural: "%{value} hodin" label_time_tracking: Sledování Äasu @@ -545,8 +689,9 @@ label_relation_new: Nová souvislost label_relation_delete: Odstranit souvislost label_relates_to: související s - label_duplicates: duplicity - label_blocks: bloků + label_duplicates: duplikuje + label_duplicated_by: zduplikován + label_blocks: blokuje label_blocked_by: zablokován label_precedes: pÅ™edchází label_follows: následuje @@ -561,6 +706,8 @@ label_board: Fórum label_board_new: Nové fórum label_board_plural: Fóra + label_board_locked: UzamÄeno + label_board_sticky: Nálepka label_topic_plural: Témata label_message_plural: Zprávy label_message_last: Poslední zpráva @@ -576,9 +723,12 @@ label_language_based: Podle výchozího jazyku label_sort_by: "SeÅ™adit podle %{value}" label_send_test_email: Poslat testovací email + label_feeds_access_key: Přístupový klÃ­Ä pro RSS + label_missing_feeds_access_key: Postrádá přístupový klÃ­Ä pro RSS label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro RSS byl vytvoÅ™en pÅ™ed %{value}" label_module_plural: Moduly label_added_time_by: "PÅ™idáno uživatelem %{author} pÅ™ed %{age}" + label_updated_time_by: "Aktualizováno uživatelem %{author} pÅ™ed %{age}" label_updated_time: "Aktualizováno pÅ™ed %{value}" label_jump_to_a_project: Vyberte projekt... label_file_plural: Soubory @@ -591,6 +741,10 @@ label_search_titles_only: Vyhledávat pouze v názvech label_user_mail_option_all: "Pro vÅ¡echny události vÅ¡ech mých projektů" label_user_mail_option_selected: "Pro vÅ¡echny události vybraných projektů..." + label_user_mail_option_none: "Žádné události" + label_user_mail_option_only_my_events: "Jen pro vÄ›ci co sleduji nebo jsem v nich zapojen" + label_user_mail_option_only_assigned: "Jen pro vÅ¡eci kterým sem pÅ™iÅ™azen" + label_user_mail_option_only_owner: "Jen pro vÄ›ci které vlastním" label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvoÅ™ených zmÄ›nách" label_registration_activation_by_email: aktivace úÄtu emailem label_registration_manual_activation: manuální aktivace úÄtu @@ -609,6 +763,40 @@ label_preferences: Nastavení label_chronological_order: V chronologickém poÅ™adí label_reverse_chronological_order: V obrácaném chronologickém poÅ™adí + label_planning: Plánování + label_incoming_emails: Příchozí e-maily + label_generate_key: Generovat klÃ­Ä + label_issue_watchers: Sledování + label_example: Příklad + label_display: Zobrazit + label_sort: Řazení + label_ascending: VzestupnÄ› + label_descending: SestupnÄ› + label_date_from_to: Od %{start} do %{end} + label_wiki_content_added: Wiki stránka pÅ™idána + label_wiki_content_updated: Wiki stránka aktualizována + label_group: Skupina + label_group_plural: Skupiny + label_group_new: Nová skupina + label_time_entry_plural: Strávený Äas + label_version_sharing_none: Nesdíleno + label_version_sharing_descendants: S podprojekty + label_version_sharing_hierarchy: S hierarchií projektu + label_version_sharing_tree: Se stromem projektu + label_version_sharing_system: Se vÅ¡emi projekty + label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů + label_copy_source: Zdroj + label_copy_target: Cíl + label_copy_same_as_target: Stejný jako cíl + label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou + label_api_access_key: API přístupový klÃ­Ä + label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API + label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} + label_profile: Profil + label_subtask_plural: Podúkol + label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu + label_principal_search: "Hledat uživatele nebo skupinu:" + label_user_search: "Hledat uživatele:" button_login: PÅ™ihlásit button_submit: Potvrdit @@ -617,8 +805,10 @@ button_uncheck_all: OdÅ¡rtnout vÅ¡e button_delete: Odstranit button_create: VytvoÅ™it - button_test: Test + button_create_and_continue: VytvoÅ™it a pokraÄovat + button_test: Testovat button_edit: Upravit + button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" button_add: PÅ™idat button_change: ZmÄ›nit button_apply: Použít @@ -629,6 +819,7 @@ button_list: Vypsat button_view: Zobrazit button_move: PÅ™esunout + button_move_and_follow: PÅ™esunout a následovat button_back: ZpÄ›t button_cancel: Storno button_activate: Aktivovat @@ -640,24 +831,40 @@ button_reply: OdpovÄ›dÄ›t button_archive: Archivovat button_unarchive: Odarchivovat - button_reset: Reset + button_reset: Resetovat button_rename: PÅ™ejmenovat button_change_password: ZmÄ›nit heslo button_copy: Kopírovat + button_copy_and_follow: Kopírovat a následovat button_annotate: Komentovat button_update: Aktualizovat button_configure: Konfigurovat + button_quote: Citovat + button_duplicate: Duplikát + button_show: Zobrazit status_active: aktivní status_registered: registrovaný status_locked: uzamÄený + version_status_open: otevÅ™ený + version_status_locked: uzamÄený + version_status_closed: zavÅ™ený + + field_active: Aktivní + text_select_mail_notifications: Vyberte akci pÅ™i které bude zasláno upozornÄ›ní emailem. text_regexp_info: napÅ™. ^[A-Z0-9]+$ text_min_max_length_info: 0 znamená bez limitu text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a vÅ¡echna související data ? + text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." text_workflow_edit: Vyberte roli a frontu k editaci průbÄ›hu práce text_are_you_sure: Jste si jisti? + text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? + text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" + text_journal_set_to: "%{label} nastaven na %{value}" + text_journal_deleted: "%{label} smazán (%{old})" + text_journal_added: "%{label} %{value} pÅ™idán" text_tip_issue_begin_day: úkol zaÄíná v tento den text_tip_issue_end_day: úkol konÄí v tento den text_tip_issue_begin_end_day: úkol zaÄíná a konÄí v tento den @@ -668,6 +875,7 @@ text_tracker_no_workflow: Pro tuto frontu není definován žádný průbÄ›h práce text_unallowed_characters: Nepovolené znaky text_comma_separated: Povoleno více hodnot (oddÄ›lÄ›né Äárkou). + text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů text_issue_added: "Úkol %{id} byl vytvoÅ™en uživatelem %{author}." text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}." @@ -679,15 +887,31 @@ text_no_configuration_data: "Role, fronty, stavy úkolů ani průbÄ›h práce nebyly zatím nakonfigurovány.\nVelice doporuÄujeme nahrát výchozí konfiguraci. Po té si můžete vÅ¡e upravit" text_load_default_configuration: Nahrát výchozí konfiguraci text_status_changed_by_changeset: "Použito v changesetu %{value}." + text_time_logged_by_changeset: Aplikováno v changesetu %{value}. text_issues_destroy_confirmation: 'Opravdu si pÅ™ejete odstranit vÅ¡echny zvolené úkoly?' text_select_project_modules: 'Aktivní moduly v tomto projektu:' text_default_administrator_account_changed: Výchozí nastavení administrátorského úÄtu zmÄ›nÄ›no text_file_repository_writable: Povolen zápis do adresáře ukládání souborů + text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets text_rmagick_available: RMagick k dispozici (volitelné) text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udÄ›lat?" text_destroy_time_entries: Odstranit evidované hodiny. text_assign_time_entries_to_project: PÅ™iÅ™adit evidované hodiny projektu text_reassign_time_entries: 'PÅ™eÅ™adit evidované hodiny k tomuto úkolu:' + text_user_wrote: "%{value} napsal:" + text_enumeration_destroy_question: "NÄ›kolik (%{count}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." + text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' + text_email_delivery_not_configured: "DoruÄování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci." + text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky." + text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' + text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' + text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? + text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky + text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky + text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi + text_own_membership_delete_confirmation: "Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokraÄovat?" + text_zoom_in: PÅ™iblížit + text_zoom_out: Oddálit default_role_manager: Manažer default_role_developer: Vývojář @@ -714,225 +938,9 @@ enumeration_issue_priorities: Priority úkolů enumeration_doc_categories: Kategorie dokumentů enumeration_activities: Aktivity (sledování Äasu) - error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." - label_planning: Plánování - text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." - label_and_its_subprojects: "%{value} a jeho podprojekty" - mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní (%{days}):" - mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" - text_user_wrote: "%{value} napsal:" - label_duplicated_by: duplikováno od - setting_enabled_scm: Povolené SCM - text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' - text_enumeration_destroy_question: "NÄ›kolik (%{count}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." - label_incoming_emails: Příchozí e-maily - label_generate_key: Generovat klÃ­Ä - setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily - setting_mail_handler_api_key: API klÃ­Ä - text_email_delivery_not_configured: "DoruÄování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci." - field_parent_title: RodiÄovská stránka - label_issue_watchers: Sledování - setting_commit_logs_encoding: Kódování zpráv pÅ™i commitu - button_quote: Citovat - setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů - notice_unable_delete_version: Nemohu odstanit verzi - label_renamed: pÅ™ejmenováno - label_copied: zkopírováno - setting_plain_text_mail: pouze prostý text (ne HTML) - permission_view_files: Prohlížení souborů - permission_edit_issues: Upravování úkolů - permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase - permission_manage_public_queries: Správa veÅ™ejných dotazů - permission_add_issues: PÅ™idávání úkolů - permission_log_time: Zaznamenávání stráveného Äasu - permission_view_changesets: Zobrazování sady zmÄ›n - permission_view_time_entries: Zobrazení stráveného Äasu - permission_manage_versions: Spravování verzí - permission_manage_wiki: Spravování Wiki - permission_manage_categories: Spravování kategorií úkolů - permission_protect_wiki_pages: ZabezpeÄení Wiki stránek - permission_comment_news: Komentování novinek - permission_delete_messages: Mazání zpráv - permission_select_project_modules: VýbÄ›r modulů projektu - permission_manage_documents: Správa dokumentů - permission_edit_wiki_pages: Upravování stránek Wiki - permission_add_issue_watchers: PÅ™idání sledujících uživatelů - permission_view_gantt: Zobrazené Ganttova diagramu - permission_move_issues: PÅ™esouvání úkolů - permission_manage_issue_relations: Spravování vztahů mezi úkoly - permission_delete_wiki_pages: Mazání stránek na Wiki - permission_manage_boards: Správa diskusních fór - permission_delete_wiki_pages_attachments: Mazání příloh - permission_view_wiki_edits: Prohlížení historie Wiki - permission_add_messages: Posílání zpráv - permission_view_messages: Prohlížení zpráv - permission_manage_files: Spravování souborů - permission_edit_issue_notes: Upravování poznámek - permission_manage_news: Spravování novinek - permission_view_calendar: Prohlížení kalendáře - permission_manage_members: Spravování Älenství - permission_edit_messages: Upravování zpráv - permission_delete_issues: Mazání úkolů - permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů - permission_manage_repository: Spravování repozitáře - permission_commit_access: Commit přístup - permission_browse_repository: Procházení repozitáře - permission_view_documents: Prohlížení dokumentů - permission_edit_project: Úprava projektů - permission_add_issue_notes: PÅ™idávání poznámek - permission_save_queries: Ukládání dotazů - permission_view_wiki_pages: Prohlížení Wiki - permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek - permission_edit_time_entries: Upravování záznamů o stráveném Äasu - permission_edit_own_issue_notes: Upravování vlastních poznámek - setting_gravatar_enabled: Použít uživatelské ikony Gravatar - label_example: Příklad - text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky." - permission_edit_own_messages: Upravit vlastní zprávy - permission_delete_own_messages: Smazat vlastní zprávy - label_user_activity: "Aktivita uživatele: %{value}" - label_updated_time_by: "Akutualizováno: %{author} pÅ™ed: %{age}" - text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' - setting_diff_max_lines_displayed: Maximální poÄet zobrazenách řádků rozdílů - text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets - warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." - button_create_and_continue: VytvoÅ™it a pokraÄovat - text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' - label_display: Zobrazit - field_editable: Editovatelný - setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru - setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce - field_watcher: Sleduje - setting_openid: Umožnit pÅ™ihlaÅ¡ování a registrace s OpenID - field_identity_url: OpenID URL - label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID - field_content: Obsah - label_descending: SestupnÄ› - label_sort: Řazení - label_ascending: VzestupnÄ› - label_date_from_to: Od %{start} do %{end} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? - text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi - text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky - text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky - setting_password_min_length: Minimální délka hesla - field_group_by: Seskupovat výsledky podle - mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" - label_wiki_content_added: Wiki stránka pÅ™idána - mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" - mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." - label_wiki_content_updated: Wiki stránka aktualizována - mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." - permission_add_project: VytvoÅ™it projekt - setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il - label_view_all_revisions: Zobrazit vÅ¡echny revize - label_tag: Tag - label_branch: Branch - error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. - error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). - text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" - text_journal_set_to: "%{label} nastaven na %{value}" - text_journal_deleted: "%{label} smazán (%{old})" - label_group_plural: Skupiny - label_group: Skupina - label_group_new: Nová skupina - label_time_entry_plural: Strávený Äas - text_journal_added: "%{label} %{value} pÅ™idán" - field_active: Aktivní enumeration_system_activity: Systémová aktivita - permission_delete_issue_watchers: Smazat pÅ™ihlížející - version_status_closed: zavÅ™ený - version_status_locked: uzamÄený - version_status_open: otevÅ™ený - error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en - label_user_anonymous: Anonymní - button_move_and_follow: PÅ™esunout a následovat - setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt - setting_gravatar_default: Výchozí Gravatar - field_sharing: Sdílení - label_version_sharing_hierarchy: S hierarchií projektu - label_version_sharing_system: Se vÅ¡emi projekty - label_version_sharing_descendants: S podprojekty - label_version_sharing_tree: Se stromem projektu - label_version_sharing_none: Nesdíleno - error_can_not_archive_project: Tento projekt nemůže být archivován - button_duplicate: Duplikát - button_copy_and_follow: Kopírovat a následovat - label_copy_source: Zdroj - setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s - setting_issue_done_ratio_issue_status: Použít stav úkolu - error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. - error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) - setting_issue_done_ratio_issue_field: Použít pole úkolu - label_copy_same_as_target: Stejný jako cíl - label_copy_target: Cíl - notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. - error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly - label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů - setting_start_of_week: ZaÄínat kalendáře - permission_view_issues: Zobrazit úkoly - label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou - label_revision_id: Revize %{value} - label_api_access_key: API přístupový klÃ­Ä - label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} - label_feeds_access_key: RSS přístupový klÃ­Ä - notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. - setting_rest_api_enabled: Zapnout službu REST - label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API - label_missing_feeds_access_key: ChybÄ›jící přístupový klÃ­Ä RSS - button_show: Zobrazit - text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). - setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků - permission_add_subprojects: VytvoÅ™it podprojekty - label_subproject_new: Nový podprojekt - text_own_membership_delete_confirmation: |- - Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt. - Opravdu chcete pokraÄovat? - label_close_versions: Zavřít dokonÄené verze - label_board_sticky: Nálepka - label_board_locked: UzamÄeno - permission_export_wiki_pages: Exportovat Wiki stránky - setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti - permission_manage_project_activities: Spravovat aktivity projektu - error_unable_delete_issue_status: Nelze smazat stavy úkolů - label_profile: Profil - permission_manage_subtasks: Spravovat podúkoly - field_parent_issue: RodiÄovský úkol - label_subtask_plural: Podúkol - label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu - error_can_not_delete_custom_field: Nelze smazat volitelné pole - error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) - error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. - error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. - field_principal: Hlavní - label_my_page_block: Bloky na mé stránce - notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." - text_zoom_out: Oddálit - text_zoom_in: PÅ™iblížit - notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. - label_overall_spent_time: CelkovÄ› strávený Äas - field_time_entries: Zaznamenaný Äas - project_module_gantt: Gantt - project_module_calendar: Kalendář - button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" - text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? - field_text: Textové pole - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/da.yml.svn-base --- a/config/locales/.svn/text-base/da.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/da.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -753,7 +753,7 @@ setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer setting_plain_text_mail: Emails som almindelig tekst (ingen HTML) field_parent_title: Siden over - text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slÃ¥et fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse." + text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slÃ¥et fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse." permission_protect_wiki_pages: Beskyt wiki sider permission_manage_documents: Administrér dokumenter permission_add_issue_watchers: Tilføj overvÃ¥gere @@ -952,3 +952,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/de.yml.svn-base --- a/config/locales/.svn/text-base/de.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/de.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -898,7 +898,7 @@ text_user_wrote: "%{value} schrieb:" text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet." text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:' - text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu." + text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu." text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' text_custom_field_possible_values_info: 'Eine Zeile pro Wert' @@ -953,3 +953,7 @@ setting_commit_logtime_enabled: Aktiviere Zeitlogging notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden. + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/el.yml.svn-base --- a/config/locales/.svn/text-base/el.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/el.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -798,7 +798,7 @@ text_user_wrote: "%{value} έγÏαψε:" text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή." text_enumeration_category_reassign_to: 'ΕπανεκχώÏηση τους στην παÏοÏσα αξία:' - text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/email.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." + text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." text_repository_usernames_mapping: "Επιλέξτε ή ενημεÏώστε τον χÏήστη Redmine που αντιστοιχεί σε κάθε όνομα χÏήστη στο ιστοÏικό του αποθετηÏίου.\nΧÏήστες με το ίδιο όνομα χÏήστη ή email στο Redmine και στο αποθετηÏίο αντιστοιχίζονται αυτόματα." text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπεÏβαίνει το μέγιστο μέγεθος που μποÏεί να Ï€Ïοβληθεί.' text_custom_field_possible_values_info: 'Μία γÏαμμή για κάθε τιμή' @@ -936,3 +936,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/en-GB.yml.svn-base --- a/config/locales/.svn/text-base/en-GB.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/en-GB.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -864,7 +864,7 @@ text_user_wrote: "%{value} wrote:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' @@ -940,3 +940,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/en.yml.svn-base --- a/config/locales/.svn/text-base/en.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/en.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -303,6 +303,7 @@ field_assigned_to_role: "Assignee's role" field_text: Text field field_visible: Visible + field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" setting_app_title: Application title setting_app_subtitle: Application subtitle @@ -594,6 +595,7 @@ label_query: Custom query label_query_plural: Custom queries label_query_new: New query + label_my_queries: My custom queries label_filter_add: Add filter label_filter_plural: Filters label_equals: is @@ -858,6 +860,7 @@ text_are_you_sure: Are you sure ? text_are_you_sure_with_children: "Delete issue and all child issues?" text_journal_changed: "%{label} changed from %{old} to %{new}" + text_journal_changed_no_detail: "%{label} updated" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} deleted (%{old})" text_journal_added: "%{label} %{value} added" @@ -897,7 +900,7 @@ text_user_wrote: "%{value} wrote:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' @@ -908,6 +911,7 @@ text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_zoom_in: Zoom in text_zoom_out: Zoom out + text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." default_role_manager: Manager default_role_developer: Developer diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/es.yml.svn-base --- a/config/locales/.svn/text-base/es.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/es.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -795,7 +795,7 @@ text_destroy_time_entries: Borrar las horas text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' - text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios." + text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios." text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' text_enumeration_destroy_question: "%{count} objetos con este valor asignado." text_file_repository_writable: Se puede escribir en el repositorio @@ -973,3 +973,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/eu.yml.svn-base --- a/config/locales/.svn/text-base/eu.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/eu.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -99,8 +99,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "Errore batek %{model} hau godetzea galarazi du." + other: "%{count} errorek %{model} hau gordetzea galarazi dute." messages: inclusion: "ez dago zerrendan" exclusion: "erreserbatuta dago" @@ -125,7 +125,7 @@ greater_than_start_date: "hasiera data baino handiagoa izan behar du" not_same_project: "ez dago proiektu berdinean" circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." actionview_instancetag_blank_option: Hautatu mesedez @@ -277,7 +277,7 @@ field_issue_to: Erlazionatutako zereginak field_delay: Atzerapena field_assignable: Arazoak rol honetara esleitu daitezke - field_redirect_existing_links: Existitzen diren estelak berbideratu + field_redirect_existing_links: Existitzen diren estekak berbideratu field_estimated_hours: Estimatutako denbora field_column_names: Zutabeak field_time_zone: Ordu zonaldea @@ -318,7 +318,7 @@ setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak setting_repositories_encodings: Biltegien kodeketak - setting_commit_logs_encoding: Commit-en mezuen kodetzea + setting_commit_logs_encoding: Commit-en egunkarien kodetzea setting_emails_footer: Eposten oina setting_protocol: Protokoloa setting_per_page_options: Orriko objektuen aukerak @@ -363,7 +363,7 @@ permission_delete_issues: Zereginak ezabatu permission_manage_public_queries: Galdera publikoak kudeatu permission_save_queries: Galderak gorde - permission_view_gantt: Gantt diagrama ikusi + permission_view_gantt: Gantt grafikoa ikusi permission_view_calendar: Egutegia ikusi permission_view_issue_watchers: Behatzaileen zerrenda ikusi permission_add_issue_watchers: Behatzaileak gehitu @@ -441,7 +441,7 @@ label_tracker: Aztarnaria label_tracker_plural: Aztarnariak label_tracker_new: Aztarnari berria - label_workflow: Workflow + label_workflow: Lan-fluxua label_issue_status: Zeregin egoera label_issue_status_plural: Zeregin egoerak label_issue_status_new: Egoera berria @@ -506,7 +506,7 @@ label_file_added: Fitxategia gehituta label_report: Berri ematea label_report_plural: Berri emateak - label_news: Beria + label_news: Berria label_news_new: Berria gehitu label_news_plural: Berriak label_news_latest: Azken berriak @@ -553,7 +553,7 @@ label_add_note: Oharra gehitu label_per_page: Orriko label_calendar: Egutegia - label_months_from: months from + label_months_from: hilabete noiztik label_gantt: Gantt label_internal: Barnekoa label_last_changes: "azken %{count} aldaketak" @@ -784,7 +784,7 @@ button_cancel: Ezeztatu button_activate: Gahitu button_sort: Ordenatu - button_log_time: Denbora apuntatu + button_log_time: Denbora erregistratu button_rollback: Itzuli bertsio honetara button_watch: Behatu button_unwatch: Behatzen utzi @@ -824,9 +824,9 @@ text_journal_set_to: "%{label}-k %{value} balioa hartu du" text_journal_deleted: "%{label} ezabatuta (%{old})" text_journal_added: "%{label} %{value} gehituta" - text_tip_issue_begin_day: gaur hasten diren atazak - text_tip_issue_end_day: gaur bukatzen diren atazak - text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren atazak + text_tip_issue_begin_day: gaur hasten diren zereginak + text_tip_issue_end_day: gaur bukatzen diren zereginak + text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
    Gorde eta gero identifikadorea ezin da aldatu.' text_caracters_maximum: "%{count} karaktere gehienez." text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." @@ -859,7 +859,7 @@ text_user_wrote: "%{value}-(e)k idatzi zuen:" text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' - text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/email.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." + text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' @@ -895,7 +895,7 @@ enumeration_doc_categories: Dokumentu kategoriak enumeration_activities: Jarduerak (denbora kontrola)) enumeration_system_activity: Sistemako Jarduera - label_board_sticky: Itxaskorra + label_board_sticky: Itsaskorra label_board_locked: Blokeatuta permission_export_wiki_pages: Wiki orriak esportatu setting_cache_formatted_text: Formatudun testua katxeatu @@ -903,40 +903,44 @@ error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu label_profile: Profila permission_manage_subtasks: Azpiatazak kudeatu - field_parent_issue: Guraso ataza + field_parent_issue: Zeregin gurasoa label_subtask_plural: Azpiatazak label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali - error_can_not_delete_custom_field: Ezin da eremu pertsonallizatua ezabatu + error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu error_unable_to_connect: Ezin da konektatu (%{value}) error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time + field_principal: Ekintzaile + label_my_page_block: "Nire orriko blokea" + notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." + text_zoom_out: Zooma txikiagotu + text_zoom_in: Zooma handiagotu + notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." + label_overall_spent_time: Igarotako denbora guztira + field_time_entries: "Denbora erregistratu" project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + project_module_calendar: Egutegia + button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" + text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?" + field_text: Testu eremua + label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik" + setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" + label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" + label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik" + label_user_mail_option_none: "Gertakaririk ez" + field_member_of_group: "Esleituta duenaren taldea" + field_assigned_to_role: "Esleituta duenaren rola" + notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." + label_principal_search: "Bilatu erabiltzaile edo taldea:" + label_user_search: "Erabiltzailea bilatu:" + field_visible: Ikusgai + setting_emails_header: "Eposten goiburua" + setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" + text_time_logged_by_changeset: "%{value} aldaketan egindakoa." + setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" + notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) + setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/fa.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/locales/.svn/text-base/fa.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,945 @@ +fa: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: rtl + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y/%m/%d" + short: "%b %d" + long: "%B %d, %Y" + + day_names: [یک‌شنبه, دوشنبه, سه‌شنبه, چهارشنبه, پنج‌شنبه, آدینه, شنبه] + abbr_day_names: [یک, دو, سه, چهار, پنج, آدینه, شنبه] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, ژانویه, Ùوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] + abbr_month_names: [~, ژان, Ùور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا] + # Used in date_select and datime_select. + order: [ :year, :month, :day ] + + time: + formats: + default: "%Y/%m/%d %p %I:%M" + time: "%p %I:%M" + short: "%d %b %H:%M" + long: "%B %d, %Y %H:%M" + am: "Ù‚.ظ" + pm: "ب.ظ" + + datetime: + distance_in_words: + half_a_minute: "نیم دقیقه" + less_than_x_seconds: + one: "کمتر از 1 ثانیه" + other: "کمتر از %{count} ثانیه" + x_seconds: + one: "1 ثانیه" + other: "%{count} ثانیه" + less_than_x_minutes: + one: "کمتر از 1 دقیقه" + other: "کمتر از %{count} دقیقه" + x_minutes: + one: "1 دقیقه" + other: "%{count} دقیقه" + about_x_hours: + one: "نزدیک 1 ساعت" + other: "نزدیک %{count} ساعت" + x_days: + one: "1 روز" + other: "%{count} روز" + about_x_months: + one: "نزدیک 1 ماه" + other: "نزدیک %{count} ماه" + x_months: + one: "1 ماه" + other: "%{count} ماه" + about_x_years: + one: "نزدیک 1 سال" + other: "نزدیک %{count} سال" + over_x_years: + one: "بیش از 1 سال" + other: "بیش از %{count} سال" + almost_x_years: + one: "نزدیک 1 سال" + other: "نزدیک %{count} سال" + + number: + # Default format for numbers + format: + separator: "Ù«" + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "بایت" + other: "بایت" + kb: "کیلوبایت" + mb: "مگابایت" + gb: "گیگابایت" + tb: "ترابایت" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "Ùˆ" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 ایراد از ذخیره سازی این %{model} جلوگیری کرد" + other: "%{count} ایراد از ذخیره سازی این %{model} جلوگیری کرد" + messages: + inclusion: "در Ùهرست نیامده است" + exclusion: "رزرو شده است" + invalid: "نادرست است" + confirmation: "با بررسی سازگاری ندارد" + accepted: "باید Ù¾Ø°ÛŒØ±ÙØªÙ‡ شود" + empty: "نمی‌تواند تهی باشد" + blank: "نمی‌تواند تهی باشد" + too_long: "خیلی بلند است (بیشترین اندازه %{count} نویسه است)" + too_short: "خیلی کوتاه است (کمترین اندازه %{count} نویسه است)" + wrong_length: "اندازه نادرست است (باید %{count} نویسه باشد)" + taken: "پیش از این Ú¯Ø±ÙØªÙ‡ شده است" + not_a_number: "شماره درستی نیست" + not_a_date: "تاریخ درستی نیست" + greater_than: "باید بزرگتر از %{count} باشد" + greater_than_or_equal_to: "باید بزرگتر از یا برابر با %{count} باشد" + equal_to: "باید برابر با %{count} باشد" + less_than: "باید کمتر از %{count} باشد" + less_than_or_equal_to: "باید کمتر از یا برابر با %{count} باشد" + odd: "باید ÙØ±Ø¯ باشد" + even: "باید زوج باشد" + greater_than_start_date: "باید از تاریخ آغاز بزرگتر باشد" + not_same_project: "به همان پروژه وابسته نیست" + circular_dependency: "این وابستگی یک وابستگی دایره وار خواهد ساخت" + cant_link_an_issue_with_a_descendant: "یک پیامد نمی‌تواند به یکی از زیر کارهایش پیوند بخورد" + + actionview_instancetag_blank_option: گزینش کنید + + general_text_No: 'خیر' + general_text_Yes: 'آری' + general_text_no: 'خیر' + general_text_yes: 'آری' + general_lang_name: 'Persian (پارسی)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '6' + + notice_account_updated: حساب شما بروز شد. + notice_account_invalid_creditentials: نام کاربری یا گذرواژه نادرست است + notice_account_password_updated: گذرواژه بروز شد + notice_account_wrong_password: گذرواژه نادرست است + notice_account_register_done: حساب ساخته شد. برای ÙØ¹Ø§Ù„ نمودن آن، روی پیوندی Ú©Ù‡ به شما ایمیل شده کلیک کنید. + notice_account_unknown_email: کاربر شناخته نشد. + notice_can_t_change_password: این حساب یک روش شناسایی بیرونی را به کار Ú¯Ø±ÙØªÙ‡ است. گذرواژه را نمی‌توان جایگزین کرد. + notice_account_lost_email_sent: یک ایمیل با راهنمایی درباره گزینش گذرواژه تازه برای شما ÙØ±Ø³ØªØ§Ø¯Ù‡ شد. + notice_account_activated: حساب شما ÙØ¹Ø§Ù„ شده است. اکنون می‌توانید وارد شوید. + notice_successful_create: با موÙقیت ساخته شد. + notice_successful_update: با موÙقیت بروز شد. + notice_successful_delete: با موÙقیت برداشته شد. + notice_successful_connection: با موÙقیت متصل شد. + notice_file_not_found: برگه درخواستی شما در دسترس نیست یا پاک شده است. + notice_locking_conflict: داده‌ها را کاربر دیگری بروز کرده است. + notice_not_authorized: شما به این برگه دسترسی ندارید. + notice_not_authorized_archived_project: پروژه درخواستی شما بایگانی شده است. + notice_email_sent: "یک ایمیل به %{value} ÙØ±Ø³ØªØ§Ø¯Ù‡ شد." + notice_email_error: "یک ایراد در ÙØ±Ø³ØªØ§Ø¯Ù† ایمیل پیش آمد (%{value})." + notice_feeds_access_key_reseted: کلید دسترسی RSS شما بازنشانی شد. + notice_api_access_key_reseted: کلید دسترسی API شما بازنشانی شد. + notice_failed_to_save_issues: "ذخیره سازی %{count} پیامد از %{total} پیامد گزینش شده شکست خورد: %{ids}." + notice_failed_to_save_members: "ذخیره سازی اعضا شکست خورد: %{errors}." + notice_no_issue_selected: "هیچ پیامدی برگزیده نشده است! پیامدهایی Ú©Ù‡ می‌خواهید ویرایش کنید را برگزینید." + notice_account_pending: "حساب شما ساخته شد Ùˆ اکنون چشم به راه روادید سرپرست است." + notice_default_data_loaded: پیکربندی پیش‌گزیده با موÙقیت بار شد. + notice_unable_delete_version: نگارش را نمی‌توان پاک کرد. + notice_unable_delete_time_entry: زمان گزارش شده را نمی‌توان پاک کرد. + notice_issue_done_ratios_updated: اندازه انجام شده پیامد بروز شد. + notice_gantt_chart_truncated: "نمودار بریده شد چون از بیشترین شماری Ú©Ù‡ می‌توان نشان داد بزگتر است (%{max})." + + error_can_t_load_default_data: "پیکربندی پیش‌گزیده نمی‌تواند بار شود: %{value}" + error_scm_not_found: "بخش یا نگارش در انباره پیدا نشد." + error_scm_command_failed: "ایرادی در دسترسی به انباره پیش آمد: %{value}" + error_scm_annotate: "بخش پیدا نشد یا نمی‌توان برای آن یادداشت نوشت." + error_issue_not_found_in_project: 'پیامد پیدا نشد یا به این پروژه وابسته نیست.' + error_no_tracker_in_project: 'هیچ پیگردی به این پروژه پیوسته نشده است. پیکربندی پروژه را بررسی کنید.' + error_no_default_issue_status: 'هیچ وضعیت پیامد پیش‌گزیده‌ای مشخص نشده است. پیکربندی را بررسی کنید (به «پیکربندی -> وضعیت‌های پیامد» بروید).' + error_can_not_delete_custom_field: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ را نمی‌توان پاک کرد. + error_can_not_delete_tracker: "این پیگرد دارای پیامد است Ùˆ نمی‌توان آن را پاک کرد." + error_can_not_remove_role: "این نقش به کار Ú¯Ø±ÙØªÙ‡ شده است Ùˆ نمی‌توان آن را پاک کرد." + error_can_not_reopen_issue_on_closed_version: 'یک پیامد Ú©Ù‡ به یک نگارش بسته شده وابسته است را نمی‌توان باز کرد.' + error_can_not_archive_project: این پروژه را نمی‌توان بایگانی کرد. + error_issue_done_ratios_not_updated: "اندازه انجام شده پیامد بروز نشد." + error_workflow_copy_source: 'یک پیگرد یا نقش منبع را برگزینید.' + error_workflow_copy_target: 'پیگردها یا نقش‌های مقصد را برگزینید.' + error_unable_delete_issue_status: 'وضعیت پیامد را نمی‌توان پاک کرد.' + error_unable_to_connect: "نمی‌توان متصل شد (%{value})" + warning_attachments_not_saved: "%{count} پرونده ذخیره نشد." + + mail_subject_lost_password: "گذرواژه حساب %{value} شما" + mail_body_lost_password: 'برای جایگزینی گذرواژه خود، بر روی پیوند زیر کلیک کنید:' + mail_subject_register: "ÙØ¹Ø§Ù„سازی حساب %{value} شما" + mail_body_register: 'برای ÙØ¹Ø§Ù„سازی حساب خود، بر روی پیوند زیر کلیک کنید:' + mail_body_account_information_external: "شما می‌توانید حساب %{value} خود را برای ورود به کار برید." + mail_body_account_information: داده‌های حساب شما + mail_subject_account_activation_request: "درخواست ÙØ¹Ø§Ù„سازی حساب %{value}" + mail_body_account_activation_request: "یک کاربر تازه (%{value}) نامنویسی کرده است. این حساب چشم به راه روادید شماست:" + mail_subject_reminder: "زمان رسیدگی به %{count} پیامد در %{days} روز آینده سر می‌رسد" + mail_body_reminder: "زمان رسیدگی به %{count} پیامد Ú©Ù‡ به شما واگذار شده است، در %{days} روز آینده سر می‌رسد:" + mail_subject_wiki_content_added: "برگه ویکی «%{id}» Ø§ÙØ²ÙˆØ¯Ù‡ شد" + mail_body_wiki_content_added: "برگه ویکی «%{id}» به دست %{author} Ø§ÙØ²ÙˆØ¯Ù‡ شد." + mail_subject_wiki_content_updated: "برگه ویکی «%{id}» بروز شد" + mail_body_wiki_content_updated: "برگه ویکی «%{id}» به دست %{author} بروز شد." + + gui_validation_error: 1 ایراد + gui_validation_error_plural: "%{count} ایراد" + + field_name: نام + field_description: توضیح + field_summary: خلاصه + field_is_required: الزامی + field_firstname: نام Ú©ÙˆÚ†Ú© + field_lastname: نام خانوادگی + field_mail: ایمیل + field_filename: پرونده + field_filesize: اندازه + field_downloads: Ø¯Ø±ÛŒØ§ÙØªâ€ŒÙ‡Ø§ + field_author: نویسنده + field_created_on: ساخته شده در + field_updated_on: بروز شده در + field_field_format: قالب + field_is_for_all: برای همه پروژه‌ها + field_possible_values: مقادیر ممکن + field_regexp: عبارت منظم + field_min_length: کمترین اندازه + field_max_length: بیشترین اندازه + field_value: مقدار + field_category: دسته + field_title: عنوان + field_project: پروژه + field_issue: پیامد + field_status: وضعیت + field_notes: یادداشت‌ها + field_is_closed: پیامد بسته شده + field_is_default: مقدار پیش‌گزیده + field_tracker: پیگرد + field_subject: موضوع + field_due_date: زمان سررسید + field_assigned_to: واگذار شده به + field_priority: برتری + field_fixed_version: نگارش هد٠+ field_user: کاربر + field_principal: دستور دهنده + field_role: نقش + field_homepage: برگه خانه + field_is_public: همگانی + field_parent: پروژه پدر + field_is_in_roadmap: این پیامدها در نقشه راه نشان داده شوند + field_login: ورود + field_mail_notification: آگاه سازی‌های ایمیلی + field_admin: سرپرست + field_last_login_on: آخرین ورود + field_language: زبان + field_effective_date: تاریخ + field_password: گذرواژه + field_new_password: گذرواژه تازه + field_password_confirmation: بررسی گذرواژه + field_version: نگارش + field_type: گونه + field_host: میزبان + field_port: درگاه + field_account: حساب + field_base_dn: DN پایه + field_attr_login: نشانه ورود + field_attr_firstname: نشانه نام Ú©ÙˆÚ†Ú© + field_attr_lastname: نشانه نام خانوادگی + field_attr_mail: نشانه ایمیل + field_onthefly: ساخت کاربر بیدرنگ + field_start_date: تاریخ آغاز + field_done_ratio: Ùª انجام شده + field_auth_source: روش شناسایی + field_hide_mail: ایمیل من پنهان شود + field_comments: دیدگاه + field_url: نشانی + field_start_page: برگه آغاز + field_subproject: زیر پروژه + field_hours: ساعت‌ + field_activity: ÙØ¹Ø§Ù„یت + field_spent_on: در تاریخ + field_identifier: شناسه + field_is_filter: پالایش پذیر + field_issue_to: پیامد وابسته + field_delay: دیرکرد + field_assignable: پیامدها می‌توانند به این نقش واگذار شوند + field_redirect_existing_links: پیوندهای پیشین به پیوند تازه راهنمایی شوند + field_estimated_hours: زمان برآورد شده + field_column_names: ستون‌ها + field_time_entries: زمان نوشتن + field_time_zone: پهنه زمانی + field_searchable: جستجو پذیر + field_default_value: مقدار پیش‌گزیده + field_comments_sorting: نمایش دیدگاه‌ها + field_parent_title: برگه پدر + field_editable: ویرایش پذیر + field_watcher: دیده‌بان + field_identity_url: نشانی OpenID + field_content: محتوا + field_group_by: دسته بندی با + field_sharing: اشتراک گذاری + field_parent_issue: کار پدر + field_member_of_group: "دسته واگذار شونده" + field_assigned_to_role: "نقش واگذار شونده" + field_text: Ùیلد متنی + field_visible: آشکار + + setting_app_title: نام برنامه + setting_app_subtitle: زیرنام برنامه + setting_welcome_text: نوشتار خوش‌آمد گویی + setting_default_language: زبان پیش‌گزیده + setting_login_required: الزامی بودن ورود + setting_self_registration: خود نام نویسی + setting_attachment_max_size: بیشترین اندازه پیوست + setting_issues_export_limit: کرانه صدور پییامدها + setting_mail_from: نشانی ÙØ±Ø³ØªÙ†Ø¯Ù‡ ایمیل + setting_bcc_recipients: گیرندگان ایمیل دیده نشوند (bcc) + setting_plain_text_mail: ایمیل نوشته ساده (بدون HTML) + setting_host_name: نام میزبان Ùˆ نشانی + setting_text_formatting: قالب بندی نوشته + setting_wiki_compression: ÙØ´Ø±Ø¯Ù‡â€ŒØ³Ø§Ø²ÛŒ پیشینه ویکی + setting_feeds_limit: کرانه محتوای خوراک + setting_default_projects_public: حالت پیش‌گزیده پروژه‌های تازه، همگانی است + setting_autofetch_changesets: Ø¯Ø±ÛŒØ§ÙØª خودکار تغییرات + setting_sys_api_enabled: ÙØ¹Ø§Ù„ سازی وب سرویس برای سرپرستی انباره + setting_commit_ref_keywords: کلیدواژه‌های نشانه + setting_commit_fix_keywords: کلیدواژه‌های انجام + setting_autologin: ورود خودکار + setting_date_format: قالب تاریخ + setting_time_format: قالب زمان + setting_cross_project_issue_relations: توانایی وابستگی میان پروژه‌ای پیامدها + setting_issue_list_default_columns: ستون‌های پیش‌گزیده نمایش داده شده در Ùهرست پیامدها + setting_repositories_encodings: کدگذاری انباره‌ها + setting_commit_logs_encoding: کدگذاری پیام‌های انباره + setting_emails_header: سرنویس ایمیل‌ها + setting_emails_footer: پانویس ایمیل‌ها + setting_protocol: پیوندنامه + setting_per_page_options: گزینه‌های اندازه داده‌های هر برگ + setting_user_format: قالب نمایشی کاربران + setting_activity_days_default: روزهای نمایش داده شده در ÙØ¹Ø§Ù„یت پروژه + setting_display_subprojects_issues: پیش‌گزیده نمایش پیامدهای زیرپروژه در پروژه پدر + setting_enabled_scm: ÙØ¹Ø§Ù„سازی SCM + setting_mail_handler_body_delimiters: "بریدن ایمیل‌ها پس از یکی از این ردیÙ‌ها" + setting_mail_handler_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس برای ایمیل‌های آمده + setting_mail_handler_api_key: کلید API + setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه + setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر + setting_gravatar_default: عکس Gravatar پیش‌گزیده + setting_diff_max_lines_displayed: بیشترین اندازه ردیÙ‌های ØªÙØ§ÙˆØª نشان داده شده + setting_file_max_size_displayed: بیشترین اندازه پرونده‌های نمایش داده شده درون خطی + setting_repository_log_display_limit: بیشترین شمار نگارش‌های نمایش داده شده در گزارش پرونده + setting_openid: پذیرش ورود Ùˆ نام نویسی با OpenID + setting_password_min_length: کمترین اندازه گذرواژه + setting_new_project_user_role_id: نقش داده شده به کاربری Ú©Ù‡ سرپرست نیست Ùˆ پروژه می‌سازد + setting_default_projects_modules: پیمانه‌های پیش‌گزیده ÙØ¹Ø§Ù„ برای پروژه‌های تازه + setting_issue_done_ratio: برآورد اندازه انجام شده پیامد با + setting_issue_done_ratio_issue_field: کاربرد Ùیلد پیامد + setting_issue_done_ratio_issue_status: کاربرد وضعیت پیامد + setting_start_of_week: آغاز گاهشمار از + setting_rest_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس‌های REST + setting_cache_formatted_text: نهان سازی نوشته‌های قالب بندی شده + setting_default_notification_option: آگاه سازی پیش‌گزیده + setting_commit_logtime_enabled: ÙØ¹Ø§Ù„سازی زمان گذاشته شده + setting_commit_logtime_activity_id: ÙØ¹Ø§Ù„یت زمان گذاشته شده + setting_gantt_items_limit: بیشترین شمار بخش‌های نمایش داده شده در نمودار گانت + + permission_add_project: ساخت پروژه + permission_add_subprojects: ساخت زیرپروژه + permission_edit_project: ویرایش پروژه + permission_select_project_modules: گزینش پیمانه‌های پروژه + permission_manage_members: سرپرستی اعضا + permission_manage_project_activities: سرپرستی ÙØ¹Ø§Ù„یت‌های پروژه + permission_manage_versions: سرپرستی نگارش‌ها + permission_manage_categories: سرپرستی دسته‌های پیامد + permission_view_issues: دیدن پیامدها + permission_add_issues: Ø§ÙØ²ÙˆØ¯Ù† پیامدها + permission_edit_issues: ویرایش پیامدها + permission_manage_issue_relations: سرپرستی وابستگی پیامدها + permission_add_issue_notes: Ø§ÙØ²ÙˆØ¯Ù† یادداشت‌ها + permission_edit_issue_notes: ویرایش یادداشت‌ها + permission_edit_own_issue_notes: ویرایش یادداشت خود + permission_move_issues: جابجایی پیامدها + permission_delete_issues: پاک کردن پیامدها + permission_manage_public_queries: سرپرستی پرس‌وجوهای همگانی + permission_save_queries: ذخیره سازی پرس‌وجوها + permission_view_gantt: دیدن نمودار گانت + permission_view_calendar: دیدن گاهشمار + permission_view_issue_watchers: دیدن Ùهرست دیده‌بان‌ها + permission_add_issue_watchers: Ø§ÙØ²ÙˆØ¯Ù† دیده‌بان‌ها + permission_delete_issue_watchers: پاک کردن دیده‌بان‌ها + permission_log_time: نوشتن زمان گذاشته شده + permission_view_time_entries: دیدن زمان گذاشته شده + permission_edit_time_entries: ویرایش زمان گذاشته شده + permission_edit_own_time_entries: ویرایش زمان گذاشته شده خود + permission_manage_news: سرپرستی رویدادها + permission_comment_news: گذاشتن دیدگاه روی رویدادها + permission_manage_documents: سرپرستی نوشتارها + permission_view_documents: دیدن نوشتارها + permission_manage_files: سرپرستی پرونده‌ها + permission_view_files: دیدن پرونده‌ها + permission_manage_wiki: سرپرستی ویکی + permission_rename_wiki_pages: نامگذاری برگه ویکی + permission_delete_wiki_pages: پاک کردن برگه ویکی + permission_view_wiki_pages: دیدن ویکی + permission_view_wiki_edits: دیدن پیشینه ویکی + permission_edit_wiki_pages: ویرایش برگه‌های ویکی + permission_delete_wiki_pages_attachments: پاک کردن پیوست‌های برگه ویکی + permission_protect_wiki_pages: نگه‌داری برگه‌های ویکی + permission_manage_repository: سرپرستی انباره + permission_browse_repository: چریدن در انباره + permission_view_changesets: دیدن تغییرات + permission_commit_access: دسترسی تغییر انباره + permission_manage_boards: سرپرستی انجمن‌ها + permission_view_messages: دیدن پیام‌ها + permission_add_messages: ÙØ±Ø³ØªØ§Ø¯Ù† پیام‌ها + permission_edit_messages: ویرایش پیام‌ها + permission_edit_own_messages: ویرایش پیام خود + permission_delete_messages: پاک کردن پیام‌ها + permission_delete_own_messages: پاک کردن پیام خود + permission_export_wiki_pages: صدور برگه‌های ویکی + permission_manage_subtasks: سرپرستی زیرکارها + + project_module_issue_tracking: پیگیری پیامدها + project_module_time_tracking: پیگیری زمان + project_module_news: رویدادها + project_module_documents: نوشتارها + project_module_files: پرونده‌ها + project_module_wiki: ویکی + project_module_repository: انباره + project_module_boards: انجمن‌ها + project_module_calendar: گاهشمار + project_module_gantt: گانت + + label_user: کاربر + label_user_plural: کاربر + label_user_new: کاربر تازه + label_user_anonymous: ناشناس + label_project: پروژه + label_project_new: پروژه تازه + label_project_plural: پروژه + label_x_projects: + zero: بدون پروژه + one: "1 پروژه" + other: "%{count} پروژه" + label_project_all: همه پروژه‌ها + label_project_latest: آخرین پروژه‌ها + label_issue: پیامد + label_issue_new: پیامد تازه + label_issue_plural: پیامد + label_issue_view_all: دیدن همه پیامدها + label_issues_by: "پیامدهای دست%{value}" + label_issue_added: پیامد Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_issue_updated: پیامد بروز شد + label_document: نوشتار + label_document_new: نوشتار تازه + label_document_plural: نوشتار + label_document_added: نوشتار Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_role: نقش + label_role_plural: نقش + label_role_new: نقش تازه + label_role_and_permissions: نقش‌ها Ùˆ پروانه‌ها + label_member: عضو + label_member_new: عضو تازه + label_member_plural: عضو + label_tracker: پیگرد + label_tracker_plural: پیگرد + label_tracker_new: پیگرد تازه + label_workflow: گردش کار + label_issue_status: وضعیت پیامد + label_issue_status_plural: وضعیت پیامد + label_issue_status_new: وضعیت تازه + label_issue_category: دسته پیامد + label_issue_category_plural: دسته پیامد + label_issue_category_new: دسته تازه + label_custom_field: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ + label_custom_field_plural: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ + label_custom_field_new: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ تازه + label_enumerations: برشمردنی‌ها + label_enumeration_new: مقدار تازه + label_information: داده + label_information_plural: داده + label_please_login: وارد شوید + label_register: نام نویسی کنید + label_login_with_open_id_option: یا با OpenID وارد شوید + label_password_lost: Ø¨Ø§Ø²ÛŒØ§ÙØª گذرواژه + label_home: سرآغاز + label_my_page: برگه من + label_my_account: حساب من + label_my_projects: پروژه‌های من + label_my_page_block: بخش برگه من + label_administration: سرپرستی + label_login: ورود + label_logout: خروج + label_help: راهنما + label_reported_issues: پیامدهای گزارش شده + label_assigned_to_me_issues: پیامدهای واگذار شده به من + label_last_login: آخرین ورود + label_registered_on: نام نویسی شده در + label_activity: ÙØ¹Ø§Ù„یت + label_overall_activity: ÙØ¹Ø§Ù„یت روی هم Ø±ÙØªÙ‡ + label_user_activity: "ÙØ¹Ø§Ù„یت %{value}" + label_new: تازه + label_logged_as: "نام کاربری:" + label_environment: محیط + label_authentication: شناسایی + label_auth_source: روش شناسایی + label_auth_source_new: روش شناسایی تازه + label_auth_source_plural: روش شناسایی + label_subproject_plural: زیرپروژه + label_subproject_new: زیرپروژه تازه + label_and_its_subprojects: "%{value} Ùˆ زیرپروژه‌هایش" + label_min_max_length: کمترین Ùˆ بیشترین اندازه + label_list: Ùهرست + label_date: تاریخ + label_integer: شماره درست + label_float: شماره شناور + label_boolean: درست/نادرست + label_string: نوشته + label_text: نوشته بلند + label_attribute: نشانه + label_attribute_plural: نشانه + label_download: "%{count} بار Ø¯Ø±ÛŒØ§ÙØª شده" + label_download_plural: "%{count} بار Ø¯Ø±ÛŒØ§ÙØª شده" + label_no_data: هیچ داده‌ای برای نمایش نیست + label_change_status: جایگزینی وضعیت + label_history: پیشینه + label_attachment: پرونده + label_attachment_new: پرونده تازه + label_attachment_delete: پاک کردن پرونده + label_attachment_plural: پرونده + label_file_added: پرونده Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_report: گزارش + label_report_plural: گزارش + label_news: رویداد + label_news_new: Ø§ÙØ²ÙˆØ¯Ù† رویداد + label_news_plural: رویداد + label_news_latest: آخرین رویدادها + label_news_view_all: دیدن همه رویدادها + label_news_added: رویداد Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_settings: پیکربندی + label_overview: دورنما + label_version: نگارش + label_version_new: نگارش تازه + label_version_plural: نگارش + label_close_versions: بستن نگارش‌های انجام شده + label_confirmation: بررسی + label_export_to: 'قالب‌های دیگر:' + label_read: خواندن... + label_public_projects: پروژه‌های همگانی + label_open_issues: باز + label_open_issues_plural: باز + label_closed_issues: بسته + label_closed_issues_plural: بسته + label_x_open_issues_abbr_on_total: + zero: 0 باز از %{total} + one: 1 باز از %{total} + other: "%{count} باز از %{total}" + label_x_open_issues_abbr: + zero: 0 باز + one: 1 باز + other: "%{count} باز" + label_x_closed_issues_abbr: + zero: 0 بسته + one: 1 بسته + other: "%{count} بسته" + label_total: جمله + label_permissions: پروانه‌ها + label_current_status: وضعیت کنونی + label_new_statuses_allowed: وضعیت‌های Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ تازه + label_all: همه + label_none: هیچ + label_nobody: هیچکس + label_next: پسین + label_previous: پیشین + label_used_by: به کار Ø±ÙØªÙ‡ در + label_details: ریزه‌کاری + label_add_note: Ø§ÙØ²ÙˆØ¯Ù† یادداشت + label_per_page: ردیÙ‌ها در هر برگه + label_calendar: گاهشمار + label_months_from: از ماه + label_gantt: گانت + label_internal: درونی + label_last_changes: "%{count} تغییر آخر" + label_change_view_all: دیدن همه تغییرات + label_personalize_page: Ø³ÙØ§Ø±Ø´ÛŒ نمودن این برگه + label_comment: دیدگاه + label_comment_plural: دیدگاه + label_x_comments: + zero: بدون دیدگاه + one: 1 دیدگاه + other: "%{count} دیدگاه" + label_comment_add: Ø§ÙØ²ÙˆØ¯Ù† دیدگاه + label_comment_added: دیدگاه Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_comment_delete: پاک کردن دیدگاه‌ها + label_query: پرس‌وجوی Ø³ÙØ§Ø±Ø´ÛŒ + label_query_plural: پرس‌وجوی Ø³ÙØ§Ø±Ø´ÛŒ + label_query_new: پرس‌وجوی تازه + label_filter_add: Ø§ÙØ²ÙˆØ¯Ù† پالایه + label_filter_plural: پالایه + label_equals: برابر است با + label_not_equals: برابر نیست با + label_in_less_than: کمتر است از + label_in_more_than: بیشتر است از + label_greater_or_equal: بیشتر یا برابر است با + label_less_or_equal: کمتر یا برابر است با + label_in: در + label_today: امروز + label_all_time: همیشه + label_yesterday: دیروز + label_this_week: این Ù‡ÙØªÙ‡ + label_last_week: Ù‡ÙØªÙ‡ پیشین + label_last_n_days: "%{count} روز گذشته" + label_this_month: این ماه + label_last_month: ماه پیشین + label_this_year: امسال + label_date_range: بازه تاریخ + label_less_than_ago: کمتر از چند روز پیشین + label_more_than_ago: بیشتر از چند روز پیشین + label_ago: روز پیشین + label_contains: دارد + label_not_contains: ندارد + label_day_plural: روز + label_repository: انباره + label_repository_plural: انباره + label_browse: چریدن + label_modification: "%{count} جایگذاری" + label_modification_plural: "%{count} جایگذاری" + label_branch: شاخه + label_tag: برچسب + label_revision: بازبینی + label_revision_plural: بازبینی + label_revision_id: "بازبینی %{value}" + label_associated_revisions: بازبینی‌های وابسته + label_added: Ø§ÙØ²ÙˆØ¯Ù‡ شده + label_modified: پیراسته شده + label_copied: رونویسی شده + label_renamed: نامگذاری شده + label_deleted: پاکسازی شده + label_latest_revision: آخرین بازبینی + label_latest_revision_plural: آخرین بازبینی + label_view_revisions: دیدن بازبینی‌ها + label_view_all_revisions: دیدن همه بازبینی‌ها + label_max_size: بیشترین اندازه + label_sort_highest: بردن به آغاز + label_sort_higher: بردن به بالا + label_sort_lower: بردن به پایین + label_sort_lowest: بردن به پایان + label_roadmap: نقشه راه + label_roadmap_due_in: "سررسید در %{value}" + label_roadmap_overdue: "%{value} دیرکرد" + label_roadmap_no_issues: هیچ پیامدی برای این نگارش نیست + label_search: جستجو + label_result_plural: دست‌آورد + label_all_words: همه واژه‌ها + label_wiki: ویکی + label_wiki_edit: ویرایش ویکی + label_wiki_edit_plural: ویرایش ویکی + label_wiki_page: برگه ویکی + label_wiki_page_plural: برگه ویکی + label_index_by_title: شاخص بر اساس نام + label_index_by_date: شاخص بر اساس تاریخ + label_current_version: نگارش کنونی + label_preview: پیش‌نمایش + label_feed_plural: خوراک + label_changes_details: ریز همه جایگذاری‌ها + label_issue_tracking: پیگیری پیامد + label_spent_time: زمان گذاشته شده + label_overall_spent_time: زمان گذاشته شده روی هم + label_f_hour: "%{value} ساعت" + label_f_hour_plural: "%{value} ساعت" + label_time_tracking: پیگیری زمان + label_change_plural: جایگذاری + label_statistics: سرشماری + label_commits_per_month: تغییر در هر ماه + label_commits_per_author: تغییر هر نویسنده + label_view_diff: دیدن ØªÙØ§ÙˆØªâ€ŒÙ‡Ø§ + label_diff_inline: همراستا + label_diff_side_by_side: کنار به کنار + label_options: گزینه‌ها + label_copy_workflow_from: رونویسی گردش کار از روی + label_permissions_report: گزارش پروانه‌ها + label_watched_issues: پیامدهای دیده‌بانی شده + label_related_issues: پیامدهای وابسته + label_applied_status: وضعیت به کار Ø±ÙØªÙ‡ + label_loading: بار گذاری... + label_relation_new: وابستگی تازه + label_relation_delete: پاک کردن وابستگی + label_relates_to: وابسته به + label_duplicates: نگارش دیگری از + label_duplicated_by: نگارشی دیگر در + label_blocks: بازداشت‌ها + label_blocked_by: بازداشت به دست + label_precedes: جلوتر است از + label_follows: پستر است از + label_end_to_start: پایان به آغاز + label_end_to_end: پایان به پایان + label_start_to_start: آغاز به آغاز + label_start_to_end: آغاز به پایان + label_stay_logged_in: وارد شده بمانید + label_disabled: ØºÛŒØ±ÙØ¹Ø§Ù„ + label_show_completed_versions: نمایش نگارش‌های انجام شده + label_me: من + label_board: انجمن + label_board_new: انجمن تازه + label_board_plural: انجمن + label_board_locked: Ù‚ÙÙ„ شده + label_board_sticky: چسبناک + label_topic_plural: Ø³Ø±ÙØµÙ„ + label_message_plural: پیام + label_message_last: آخرین پیام + label_message_new: پیام تازه + label_message_posted: پیام Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_reply_plural: پاسخ + label_send_information: ÙØ±Ø³ØªØ§Ø¯Ù† داده‌های حساب به کاربر + label_year: سال + label_month: ماه + label_week: Ù‡ÙØªÙ‡ + label_date_from: از + label_date_to: تا + label_language_based: بر اساس زبان کاربر + label_sort_by: "جور کرد با %{value}" + label_send_test_email: ÙØ±Ø³ØªØ§Ø¯Ù† ایمیل آزمایشی + label_feeds_access_key: کلید دسترسی RSS + label_missing_feeds_access_key: کلید دسترسی RSS در دسترس نیست + label_feeds_access_key_created_on: "کلید دسترسی RSS %{value} پیش ساخته شده است" + label_module_plural: پیمانه + label_added_time_by: "Ø§ÙØ²ÙˆØ¯Ù‡ شده به دست %{author} در %{age} پیش" + label_updated_time_by: "بروز شده به دست %{author} در %{age} پیش" + label_updated_time: "بروز شده در %{value} پیش" + label_jump_to_a_project: پرش به یک پروژه... + label_file_plural: پرونده + label_changeset_plural: تغییر + label_default_columns: ستون‌های پیش‌گزیده + label_no_change_option: (بدون تغییر) + label_bulk_edit_selected_issues: ویرایش دسته‌ای پیامدهای گزینش شده + label_theme: پوسته + label_default: پیش‌گزیده + label_search_titles_only: تنها نام‌ها جستجو شود + label_user_mail_option_all: "برای هر رویداد در همه پروژه‌ها" + label_user_mail_option_selected: "برای هر رویداد تنها در پروژه‌های گزینش شده..." + label_user_mail_option_none: "هیچ رویدادی" + label_user_mail_option_only_my_events: "تنها برای چیزهایی Ú©Ù‡ دیده‌بان هستم یا در آن‌ها درگیر هستم" + label_user_mail_option_only_assigned: "تنها برای چیزهایی Ú©Ù‡ به من واگذار شده" + label_user_mail_option_only_owner: "تنها برای چیزهایی Ú©Ù‡ من دارنده آن‌ها هستم" + label_user_mail_no_self_notified: "نمی‌خواهم از تغییراتی Ú©Ù‡ خودم می‌دهم آگاه شوم" + label_registration_activation_by_email: ÙØ¹Ø§Ù„سازی حساب با ایمیل + label_registration_manual_activation: ÙØ¹Ø§Ù„سازی حساب دستی + label_registration_automatic_activation: ÙØ¹Ø§Ù„سازی حساب خودکار + label_display_per_page: "ردیÙ‌ها در هر برگه: %{value}" + label_age: سن + label_change_properties: ویرایش ویژگی‌ها + label_general: همگانی + label_more: بیشتر + label_scm: SCM + label_plugins: Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ + label_ldap_authentication: شناساییLDAP + label_downloads_abbr: Ø¯Ø±ÛŒØ§ÙØª + label_optional_description: توضیح اختیاری + label_add_another_file: Ø§ÙØ²ÙˆØ¯Ù† پرونده دیگر + label_preferences: پسندها + label_chronological_order: به ترتیب تاریخ + label_reverse_chronological_order: برعکس ترتیب تاریخ + label_planning: برنامه ریزی + label_incoming_emails: ایمیل‌های آمده + label_generate_key: ساخت کلید + label_issue_watchers: دیده‌بان‌ها + label_example: نمونه + label_display: نمایش + label_sort: جور کرد + label_ascending: Ø§ÙØ²Ø§ÛŒØ´ÛŒ + label_descending: کاهشی + label_date_from_to: از %{start} تا %{end} + label_wiki_content_added: برگه ویکی Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_wiki_content_updated: برگه ویکی بروز شد + label_group: دسته + label_group_plural: دسته + label_group_new: دسته تازه + label_time_entry_plural: زمان گذاشته شده + label_version_sharing_none: بدون اشتراک + label_version_sharing_descendants: با زیر پروژه‌ها + label_version_sharing_hierarchy: با رشته پروژه‌ها + label_version_sharing_tree: با درخت پروژه + label_version_sharing_system: با همه پروژه‌ها + label_update_issue_done_ratios: بروز رسانی اندازه انجام شده پیامد + label_copy_source: منبع + label_copy_target: مقصد + label_copy_same_as_target: مانند مقصد + label_display_used_statuses_only: تنها وضعیت‌هایی نشان داده شوند Ú©Ù‡ در این پیگرد به کار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯ + label_api_access_key: کلید دسترسی API + label_missing_api_access_key: کلید دسترسی API در دسترس نیست + label_api_access_key_created_on: "کلید دسترسی API %{value} پیش ساخته شده است" + label_profile: نمایه + label_subtask_plural: زیرکار + label_project_copy_notifications: در هنگام رونویسی پروژه ایمیل‌های آگاه‌سازی را Ø¨ÙØ±Ø³Øª + label_principal_search: "جستجو برای کاربر یا دسته:" + label_user_search: "جستجو برای کاربر:" + + button_login: ورود + button_submit: واگذاری + button_save: نگهداری + button_check_all: گزینش همه + button_uncheck_all: گزینش هیچ + button_delete: پاک + button_create: ساخت + button_create_and_continue: ساخت Ùˆ ادامه + button_test: آزمایش + button_edit: ویرایش + button_edit_associated_wikipage: "ویرایش برگه ویکی وابسته: %{page_title}" + button_add: Ø§ÙØ²ÙˆØ¯Ù† + button_change: ویرایش + button_apply: انجام + button_clear: پاک + button_lock: گذاشتن Ù‚ÙÙ„ + button_unlock: برداشتن Ù‚ÙÙ„ + button_download: Ø¯Ø±ÛŒØ§ÙØª + button_list: Ùهرست + button_view: دیدن + button_move: جابجایی + button_move_and_follow: جابجایی Ùˆ ادامه + button_back: برگشت + button_cancel: بازگشت + button_activate: ÙØ¹Ø§Ù„سازی + button_sort: جور کرد + button_log_time: زمان‌نویسی + button_rollback: برگرد به این نگارش + button_watch: دیده‌بانی + button_unwatch: نا‌دیده‌بانی + button_reply: پاسخ + button_archive: بایگانی + button_unarchive: برگشت از بایگانی + button_reset: بازنشانی + button_rename: نامگذاری + button_change_password: جایگزینی گذرواژه + button_copy: رونوشت + button_copy_and_follow: رونوشت Ùˆ ادامه + button_annotate: یادداشت + button_update: بروز رسانی + button_configure: پیکربندی + button_quote: نقل قول + button_duplicate: نگارش دیگر + button_show: نمایش + + status_active: ÙØ¹Ø§Ù„ + status_registered: نام‌نویسی شده + status_locked: Ù‚ÙÙ„ + + version_status_open: باز + version_status_locked: Ù‚ÙÙ„ + version_status_closed: بسته + + field_active: ÙØ¹Ø§Ù„ + + text_select_mail_notifications: ÙØ±Ù…ان‌هایی Ú©Ù‡ برای آن‌ها باید ایمیل ÙØ±Ø³ØªØ§Ø¯Ù‡ شود را برگزینید. + text_regexp_info: برای نمونه ^[A-Z0-9]+$ + text_min_max_length_info: 0 یعنی بدون کران + text_project_destroy_confirmation: آیا براستی می‌خواهید این پروژه Ùˆ همه داده‌های آن را پاک کنید؟ + text_subprojects_destroy_warning: "زیرپروژه‌های آن: %{value} هم پاک خواهند شد." + text_workflow_edit: یک نقش Ùˆ یک پیگرد را برای ویرایش گردش کار برگزینید + text_are_you_sure: آیا این کار انجام شود؟ + text_are_you_sure_with_children: "آیا پیامد Ùˆ همه زیرپیامدهای آن پاک شوند؟" + text_journal_changed: "«%{label}» از «%{old}» به «%{new}» جایگزین شد" + text_journal_set_to: "«%{label}» به «%{value}» نشانده شد" + text_journal_deleted: "«%{label}» پاک شد (%{old})" + text_journal_added: "«%{label}»، «%{value}» را Ø§ÙØ²ÙˆØ¯" + text_tip_task_begin_day: روز آغاز پیامد + text_tip_task_end_day: روز پایان پیامد + text_tip_task_begin_end_day: روز آغاز Ùˆ پایان پیامد + text_project_identifier_info: 'تنها نویسه‌های Ú©ÙˆÚ†Ú© (a-z)ØŒ شماره‌ها Ùˆ خط تیره Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است.
    پس از ذخیره سازی، شناسه نمی‌تواند جایگزین شود.' + text_caracters_maximum: "بیشترین اندازه %{count} است." + text_caracters_minimum: "کمترین اندازه %{count} است." + text_length_between: "باید میان %{min} Ùˆ %{max} نویسه باشد." + text_tracker_no_workflow: هیچ گردش کاری برای این پیگرد مشخص نشده است + text_unallowed_characters: نویسه‌های ناپسند + text_comma_separated: چند مقدار Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است (با «,» از هم جدا شوند). + text_line_separated: چند مقدار Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است (هر مقدار در یک خط). + text_issues_ref_in_commit_messages: نشانه روی Ùˆ بستن پیامدها در پیام‌های انباره + text_issue_added: "پیامد %{id} به دست %{author} گزارش شد." + text_issue_updated: "پیامد %{id} به دست %{author} بروز شد." + text_wiki_destroy_confirmation: آیا براستی می‌خواهید این ویکی Ùˆ همه محتوای آن را پاک کنید؟ + text_issue_category_destroy_question: "برخی پیامدها (%{count}) به این دسته واگذار شده‌اند. می‌خواهید Ú†Ù‡ کنید؟" + text_issue_category_destroy_assignments: پاک کردن واگذاری به دسته + text_issue_category_reassign_to: واگذاری دوباره پیامدها به این دسته + text_user_mail_option: "برای پروژه‌های گزینش نشده، تنها ایمیل‌هایی درباره چیزهایی Ú©Ù‡ دیده‌بان یا درگیر آن‌ها هستید Ø¯Ø±ÛŒØ§ÙØª خواهید کرد (مانند پیامدهایی Ú©Ù‡ نویسنده آن‌ها هستید یا به شما واگذار شده‌اند)." + text_no_configuration_data: "نقش‌ها، پیگردها، وضعیت‌های پیامد Ùˆ گردش کار هنوز پیکربندی نشده‌اند. \nبه سختی پیشنهاد می‌شود Ú©Ù‡ پیکربندی پیش‌گزیده را بار کنید. سپس می‌توانید آن را ویرایش کنید." + text_load_default_configuration: بارگذاری پیکربندی پیش‌گزیده + text_status_changed_by_changeset: "در تغییر %{value} بروز شده است." + text_time_logged_by_changeset: "در تغییر %{value} نوشته شده است." + text_issues_destroy_confirmation: 'آیا براستی می‌خواهید پیامدهای گزینش شده را پاک کنید؟' + text_select_project_modules: 'پیمانه‌هایی Ú©Ù‡ باید برای این پروژه ÙØ¹Ø§Ù„ شوند را برگزینید:' + text_default_administrator_account_changed: حساب سرپرستی پیش‌گزیده جایگزین شد + text_file_repository_writable: پوشه پیوست‌ها نوشتنی است + text_plugin_assets_writable: پوشه دارایی‌های Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ نوشتنی است + text_rmagick_available: RMagick در دسترس است (اختیاری) + text_destroy_time_entries_question: "%{hours} ساعت روی پیامدهایی Ú©Ù‡ می‌خواهید پاک کنید کار گزارش شده است. می‌خواهید Ú†Ù‡ کنید؟" + text_destroy_time_entries: ساعت‌های گزارش شده پاک شوند + text_assign_time_entries_to_project: ساعت‌های گزارش شده به پروژه واگذار شوند + text_reassign_time_entries: 'ساعت‌های گزارش شده به این پیامد واگذار شوند:' + text_user_wrote: "%{value} نوشت:" + text_enumeration_destroy_question: "%{count} داده به این برشمردنی وابسته شده‌اند." + text_enumeration_category_reassign_to: 'به این برشمردنی وابسته شوند:' + text_email_delivery_not_configured: "Ø¯Ø±ÛŒØ§ÙØª ایمیل پیکربندی نشده است Ùˆ آگاه‌سازی‌ها غیر ÙØ¹Ø§Ù„ هستند.\nکارگزار SMTP خود را در config/email.yml پیکربندی کنید Ùˆ برنامه را بازنشانی کنید تا ÙØ¹Ø§Ù„ شوند." + text_repository_usernames_mapping: "کاربر Redmine Ú©Ù‡ به هر نام کاربری پیام‌های انباره نگاشت می‌شود را برگزینید.\nکاربرانی Ú©Ù‡ نام کاربری یا ایمیل همسان دارند، خود به خود نگاشت می‌شوند." + text_diff_truncated: '... این ØªÙØ§ÙˆØª بریده شده چون بیشتر از بیشترین اندازه نمایش دادنی است.' + text_custom_field_possible_values_info: 'یک خط برای هر مقدار' + text_wiki_page_destroy_question: "این برگه %{descendants} زیربرگه دارد.می‌خواهید Ú†Ù‡ کنید؟" + text_wiki_page_nullify_children: "زیربرگه‌ها برگه ریشه شوند" + text_wiki_page_destroy_children: "زیربرگه‌ها Ùˆ زیربرگه‌های آن‌ها پاک شوند" + text_wiki_page_reassign_children: "زیربرگه‌ها به زیر این برگه پدر بروند" + text_own_membership_delete_confirmation: "شما دارید برخی یا همه پروانه‌های خود را برمی‌دارید Ùˆ شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا می‌خواهید این کار را بکنید؟" + text_zoom_in: درشتنمایی + text_zoom_out: ریزنمایی + + default_role_manager: سرپرست + default_role_developer: برنامه‌نویس + default_role_reporter: گزارش‌دهنده + default_tracker_bug: ایراد + default_tracker_feature: ویژگی + default_tracker_support: پشتیبانی + default_issue_status_new: تازه + default_issue_status_in_progress: در گردش + default_issue_status_resolved: درست شده + default_issue_status_feedback: بازخورد + default_issue_status_closed: بسته + default_issue_status_rejected: برگشت خورده + default_doc_category_user: نوشتار کاربر + default_doc_category_tech: نوشتار ÙÙ†ÛŒ + default_priority_low: پایین + default_priority_normal: میانه + default_priority_high: بالا + default_priority_urgent: زود + default_priority_immediate: بیدرنگ + default_activity_design: طراحی + default_activity_development: ساخت + + enumeration_issue_priorities: برتری‌های پیامد + enumeration_doc_categories: دسته‌های نوشتار + enumeration_activities: ÙØ¹Ø§Ù„یت‌ها (پیگیری زمان) + enumeration_system_activity: ÙØ¹Ø§Ù„یت سامانه + + text_tip_issue_begin_day: issue beginning this day + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_tip_issue_begin_end_day: issue beginning and ending this day + text_tip_issue_end_day: issue ending this day + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/fi.yml.svn-base --- a/config/locales/.svn/text-base/fi.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/fi.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -750,7 +750,7 @@ label_generate_key: Luo avain setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille setting_mail_handler_api_key: API avain - text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/email.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." + text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." field_parent_title: Aloitussivu label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa @@ -957,3 +957,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/fr.yml.svn-base --- a/config/locales/.svn/text-base/fr.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/fr.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -166,10 +166,10 @@ notice_successful_create: Création effectuée avec succès. notice_successful_update: Mise à jour effectuée avec succès. notice_successful_delete: Suppression effectuée avec succès. - notice_successful_connection: Connection réussie. + notice_successful_connection: Connexion réussie. notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée." notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible. - notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page." + notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page." notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé. notice_email_sent: "Un email a été envoyé à %{value}" notice_email_error: "Erreur lors de l'envoi de l'email (%{value})" @@ -307,6 +307,7 @@ field_active: Actif field_parent_issue: Tâche parente field_visible: Visible + field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé" setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application @@ -323,11 +324,11 @@ setting_text_formatting: Formatage du texte setting_wiki_compression: Compression historique wiki setting_feeds_limit: Limite du contenu des flux RSS - setting_default_projects_public: Définir les nouveaux projects comme publics par défaut + setting_default_projects_public: Définir les nouveaux projets comme publics par défaut setting_autofetch_changesets: Récupération auto. des commits setting_sys_api_enabled: Activer les WS pour la gestion des dépôts - setting_commit_ref_keywords: Mot-clés de référencement - setting_commit_fix_keywords: Mot-clés de résolution + setting_commit_ref_keywords: Mots-clés de référencement + setting_commit_fix_keywords: Mots-clés de résolution setting_autologin: Autologin setting_date_format: Format de date setting_time_format: Format d'heure @@ -349,7 +350,7 @@ setting_gravatar_enabled: Afficher les Gravatar des utilisateurs setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne - setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier" + setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier" setting_openid: "Autoriser l'authentification et l'enregistrement OpenID" setting_password_min_length: Longueur minimum des mots de passe setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet @@ -369,7 +370,7 @@ permission_add_subprojects: Créer des sous-projets permission_edit_project: Modifier le projet permission_select_project_modules: Choisir les modules - permission_manage_members: Gérer les members + permission_manage_members: Gérer les membres permission_manage_versions: Gérer les versions permission_manage_categories: Gérer les catégories de demandes permission_view_issues: Voir les demandes @@ -596,6 +597,7 @@ label_query: Rapport personnalisé label_query_plural: Rapports personnalisés label_query_new: Nouveau rapport + label_my_queries: Mes rapports personnalisés label_filter_add: "Ajouter le filtre " label_filter_plural: Filtres label_equals: égal @@ -859,7 +861,7 @@ text_issue_added: "La demande %{id} a été soumise par %{author}." text_issue_updated: "La demande %{id} a été mise à jour par %{author}." text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ? - text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégories. Que voulez-vous faire ?" + text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?" text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)." @@ -880,7 +882,7 @@ text_user_wrote: "%{value} a écrit :" text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets." text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:' - text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer." + text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer." text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés." text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.' text_custom_field_possible_values_info: 'Une ligne par valeur' @@ -889,6 +891,7 @@ text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes" text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page" text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?" + text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page." default_role_manager: "Manager " default_role_developer: "Développeur " @@ -923,6 +926,7 @@ error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet." error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)." text_journal_changed: "%{label} changé de %{old} à %{new}" + text_journal_changed_no_detail: "%{label} mis à jour" text_journal_set_to: "%{label} mis à %{value}" text_journal_deleted: "%{label} %{old} supprimé" text_journal_added: "%{label} %{value} ajouté" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/gl.yml.svn-base --- a/config/locales/.svn/text-base/gl.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/gl.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -772,7 +772,7 @@ text_destroy_time_entries: Borrar as horas text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ? text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.' - text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/email.yml e reinicie a aplicación para activar os cambios." + text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios." text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:' text_enumeration_destroy_question: "%{count} obxectos con este valor asignado." text_file_repository_writable: Pódese escribir no repositorio @@ -948,3 +948,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/he.yml.svn-base --- a/config/locales/.svn/text-base/he.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/he.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -889,7 +889,7 @@ text_user_wrote: "%{value} כתב:" text_enumeration_destroy_question: "%{count} ××•×‘×™×§×˜×™× ×ž×•×¦×‘×™× ×œ×¢×¨×š ×–×”." text_enumeration_category_reassign_to: 'הצב מחדש לערך ×”×–×”:' - text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/email.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' + text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' text_repository_usernames_mapping: "בחר ×ו עדכן ×ת משתמש Redmine הממופה לכל ×©× ×ž×©×ª×ž×© ביומן המ×גר.\n×ž×©×ª×ž×©×™× ×‘×¢×œ×™ ×©× ×ו כתובת דו×ר ×–×”×” ב־Redmine ובמ×גר ×ž×ž×•×¤×™× ×‘×ופן ×וטומטי." text_diff_truncated: '... ×”×©×™× ×•×™×™× ×¢×•×‘×¨×™× ×ת מספר השורות המירבי לתצוגה, ולכן ×”× ×§×•×¦×¦×•.' text_custom_field_possible_values_info: שורה ×חת לכל ערך @@ -941,3 +941,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/hr.yml.svn-base --- a/config/locales/.svn/text-base/hr.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/hr.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -854,7 +854,7 @@ text_user_wrote: "%{value} je napisao/la:" text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti." text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... Ovaj diff je odrezan zato Å¡to prelazi maksimalnu veliÄinu koja može biti prikazana.' text_custom_field_possible_values_info: 'One line for each value' @@ -943,3 +943,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/hu.yml.svn-base --- a/config/locales/.svn/text-base/hu.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/hu.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -748,7 +748,7 @@ label_generate_key: Kulcs generálása setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez setting_mail_handler_api_key: API kulcs - text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÃllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." + text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÃllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." field_parent_title: SzülÅ‘ oldal label_issue_watchers: MegfigyelÅ‘k setting_commit_logs_encoding: Commit üzenetek kódlapja @@ -955,3 +955,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/id.yml.svn-base --- a/config/locales/.svn/text-base/id.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/id.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -833,7 +833,7 @@ text_user_wrote: "%{value} menulis:" text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini." text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:' - text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/email.yml dan restart kembali aplikasi untuk mengaktifkan." + text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan." text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan." text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.' text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai' @@ -944,3 +944,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/it.yml.svn-base --- a/config/locales/.svn/text-base/it.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/it.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -730,7 +730,7 @@ label_generate_key: Genera una chiave setting_mail_handler_api_enabled: Abilita WS per le email in arrivo setting_mail_handler_api_key: Chiave API - text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle." + text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle." field_parent_title: Pagina principale label_issue_watchers: Osservatori setting_commit_logs_encoding: Codifica dei messaggi di commit @@ -937,3 +937,7 @@ setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/ja.yml.svn-base --- a/config/locales/.svn/text-base/ja.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/ja.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -919,7 +919,7 @@ text_user_wrote: "%{value} ã¯æ›¸ãã¾ã—ãŸ:" text_enumeration_destroy_question: "%{count}個ã®ã‚ªãƒ–ジェクトãŒã“ã®å€¤ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" text_enumeration_category_reassign_to: '次ã®å€¤ã«å‰²ã‚Šå½“ã¦ç›´ã™:' - text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/email.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" + text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/configuration.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" text_repository_usernames_mapping: "リãƒã‚¸ãƒˆãƒªã®ãƒ­ã‚°ã‹ã‚‰æ¤œå‡ºã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’ã©ã®Redmineユーザーã«é–¢é€£ã¥ã‘ã‚‹ã®ã‹é¸æŠžã—ã¦ãã ã•ã„。\nログ上ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒRedmineã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ä¸€è‡´ã™ã‚‹å ´åˆã¯è‡ªå‹•çš„ã«é–¢é€£ã¥ã‘られã¾ã™ã€‚" text_diff_truncated: '... 差分ã®è¡Œæ•°ãŒè¡¨ç¤ºå¯èƒ½ãªä¸Šé™ã‚’è¶…ãˆã¾ã—ãŸã€‚è¶…éŽåˆ†ã¯è¡¨ç¤ºã—ã¾ã›ã‚“。' text_custom_field_possible_values_info: 'é¸æŠžè‚¢ã®å€¤ã¯1行ã«1個ãšã¤è¨˜è¿°ã—ã¦ãã ã•ã„。' @@ -957,3 +957,7 @@ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間トラッキング) enumeration_system_activity: システム作業分類 + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/ko.yml.svn-base --- a/config/locales/.svn/text-base/ko.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/ko.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -843,7 +843,7 @@ text_user_wrote: "%{value}ì˜ ë§ê¸€:" text_enumeration_category_reassign_to: '새로운 ê°’ì„ ì„¤ì •:' text_enumeration_destroy_question: "%{count} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." - text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/email.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." + text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/configuration.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." text_repository_usernames_mapping: "저장소 로그ì—서 ë°œê²¬ëœ ê° ì‚¬ìš©ìžì— ë ˆë“œë§ˆì¸ ì‚¬ìš©ìžë¥¼ ì—…ë°ì´íŠ¸í• ë•Œ ì„ íƒí•©ë‹ˆë‹¤.\n레드마ì¸ê³¼ ì €ìž¥ì†Œì˜ ì´ë¦„ì´ë‚˜ ì´ë©”ì¼ì´ ê°™ì€ ì‚¬ìš©ìžê°€ ìžë™ìœ¼ë¡œ ì—°ê²°ë©ë‹ˆë‹¤." text_diff_truncated: '... ì´ ì°¨ì´ì ì€ 표시할 수 있는 최대 줄수를 초과해서 ì´ ì°¨ì´ì ì€ 잘렸습니다.' text_custom_field_possible_values_info: 'ê° ê°’ 당 한 줄' @@ -988,3 +988,7 @@ setting_commit_logtime_enabled: 커밋 시ì ì— 작업 시간 ê¸°ë¡ í™œì„±í™” notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/lt.yml.svn-base --- a/config/locales/.svn/text-base/lt.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/lt.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -885,7 +885,7 @@ text_user_wrote: "%{value} parašė:" text_enumeration_destroy_question: "%{count} objektai priskirti Å¡iai reikÅ¡mei." text_enumeration_category_reassign_to: 'Priskirti juos Å¡iai reikÅ¡mei:' - text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/email.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." + text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardÄ… kiekvienam saugyklos vardui, kuris paminÄ—tas saugyklos log'e.\nVartotojai, turintys tÄ… patį Redmine ir saugyklos vardÄ… ar el.paÅ¡tÄ… automatiÅ¡kai suriÅ¡ti." text_diff_truncated: "... Å is diff'as nukarpytas, nes jis virÅ¡ijo maksimalų rodomÄ… eiluÄių skaiÄių." text_custom_field_possible_values_info: 'Po vienÄ… eilutÄ™ kiekvienai reikÅ¡mei' @@ -996,3 +996,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/lv.yml.svn-base --- a/config/locales/.svn/text-base/lv.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/lv.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -854,7 +854,7 @@ text_user_wrote: "%{value} rakstÄ«ja:" text_enumeration_destroy_question: "%{count} objekti ir piešķirti Å¡ai vÄ“rtÄ«bai." text_enumeration_category_reassign_to: 'Piešķirt tos Å¡ai vÄ“rtÄ«bai:' - text_email_delivery_not_configured: "E-pastu nosÅ«tīšana nav konfigurÄ“ta, un ziņojumi ir izslÄ“gti.\nKonfigurÄ“jiet savu SMTP serveri datnÄ“ config/email.yml un pÄrstartÄ“jiet lietotni." + text_email_delivery_not_configured: "E-pastu nosÅ«tīšana nav konfigurÄ“ta, un ziņojumi ir izslÄ“gti.\nKonfigurÄ“jiet savu SMTP serveri datnÄ“ config/configuration.yml un pÄrstartÄ“jiet lietotni." text_repository_usernames_mapping: "IzvÄ“lieties vai atjaunojiet Redmine lietotÄju, saistÄ«tu ar katru lietotÄjvÄrdu, kas atrodams repozitorija žurnÄlÄ.\nLietotÄji ar to paÅ¡u Redmine un repozitorija lietotÄjvÄrdu bÅ«s saistÄ«ti automÄtiski." text_diff_truncated: '... Å is diff tika nošķelts, jo tas pÄrsniedz maksimÄlo izmÄ“ru, ko var parÄdÄ«t.' text_custom_field_possible_values_info: 'Katra vÄ“rtÄ«bas savÄ rindÄ' @@ -931,3 +931,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/mk.yml.svn-base --- a/config/locales/.svn/text-base/mk.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/mk.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -877,7 +877,7 @@ text_user_wrote: "%{value} напиша:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "ДоÑтавата по е-пошта не е конфигурирана, и извеÑтувањата Ñе оневозможени.\nКонфигурирајте го Вашиот SMTP Ñервер во config/email.yml и реÑтартирајте ја апликацијата." + text_email_delivery_not_configured: "ДоÑтавата по е-пошта не е конфигурирана, и извеÑтувањата Ñе оневозможени.\nКонфигурирајте го Вашиот SMTP Ñервер во config/configuration.yml и реÑтартирајте ја апликацијата." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' @@ -936,3 +936,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/mn.yml.svn-base --- a/config/locales/.svn/text-base/mn.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/mn.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -859,7 +859,7 @@ text_user_wrote: "%{value} бичихдÑÑ:" text_enumeration_destroy_question: "Ð­Ð½Ñ ÑƒÑ‚Ð³Ð°Ð´ %{count} обьект оноогдÑон байна." text_enumeration_category_reassign_to: 'ТÑдгÑÑрийг ÑÐ½Ñ ÑƒÑ‚Ð³Ð°Ð´ дахин оноо:' - text_email_delivery_not_configured: "ИмÑйлийн тохиргоог хараахан тохируулаагүй байна, тиймÑÑÑ Ð¸Ð¼Ñйл мÑдÑгдÑл Ñвуулах боломжгүй байна.\nSMTP ÑервÑÑ€ÑÑ config/email.yml файл дотор тохируулаад төÑлийн менежерÑÑ Ð´Ð°Ñ…Ð¸Ð°Ð´ ÑхлүүлÑÑÑ€Ñй." + text_email_delivery_not_configured: "ИмÑйлийн тохиргоог хараахан тохируулаагүй байна, тиймÑÑÑ Ð¸Ð¼Ñйл мÑдÑгдÑл Ñвуулах боломжгүй байна.\nSMTP ÑервÑÑ€ÑÑ config/configuration.yml файл дотор тохируулаад төÑлийн менежерÑÑ Ð´Ð°Ñ…Ð¸Ð°Ð´ ÑхлүүлÑÑÑ€Ñй." text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх Ñ…ÑÑ€ÑглÑгчийн нÑрүүдÑд харгалзÑан ТөÑлийн Менежер ÑиÑтемд бүртгÑлтÑй Ñ…ÑÑ€ÑглÑгчдийг Сонгох юмуу шинÑÑ‡Ð¸Ð»Ð½Ñ Ò¯Ò¯.\nТөÑлийн менежер болон репозиторид байгаа ижилхÑн нÑÑ€ юмуу имÑйлтÑй Ñ…ÑÑ€ÑглÑгчид харилцан харгалзна." text_diff_truncated: '... Файлын Ñлгаврын Ñ…ÑмжÑÑ Ò¯Ð·Ò¯Ò¯Ð»ÑÑ…Ñд дÑндүү урт байгаа ÑƒÑ‡Ñ€Ð°Ð°Ñ Ñ‚Ó©Ð³ÑÐ³Ó©Ð»Ó©Ó©Ñ Ð½ÑŒ хаÑч үзүүлÑв.' text_custom_field_possible_values_info: 'One line for each value' @@ -937,3 +937,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/nl.yml.svn-base --- a/config/locales/.svn/text-base/nl.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/nl.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -742,7 +742,7 @@ text_destroy_time_entries: Verwijder gerapporteerde uren text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?" text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.' - text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/email.yml en herstart de applicatie om dit te activeren." + text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren." text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:' text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository beschrijfbaar @@ -918,3 +918,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/no.yml.svn-base --- a/config/locales/.svn/text-base/no.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/no.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -716,7 +716,7 @@ label_generate_key: Generer en nøkkel setting_mail_handler_api_enabled: Skru pÃ¥ WS for innkommende e-post setting_mail_handler_api_key: API-nøkkel - text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/email.yml og start programmet pÃ¥ nytt for Ã¥ skru det pÃ¥." + text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet pÃ¥ nytt for Ã¥ skru det pÃ¥." field_parent_title: Foreldreside label_issue_watchers: OvervÃ¥kere setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger @@ -923,3 +923,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/pl.yml.svn-base --- a/config/locales/.svn/text-base/pl.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/pl.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -771,7 +771,7 @@ text_default_administrator_account_changed: Zmieniono domyÅ›lne hasÅ‚o administratora text_destroy_time_entries: UsuÅ„ wpisy dziennika text_destroy_time_entries_question: Przepracowano %{hours} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić? - text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostaÅ‚o skonfigurowane, wiÄ™c powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml a nastÄ™pnie zrestartuj aplikacjÄ™ i uaktywnij to." + text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostaÅ‚o skonfigurowane, wiÄ™c powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a nastÄ™pnie zrestartuj aplikacjÄ™ i uaktywnij to." text_enumeration_category_reassign_to: 'ZmieÅ„ przypisanie na tÄ… wartość:' text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartoÅ›ci." text_file_repository_writable: Zapisywalne repozytorium plików @@ -953,3 +953,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/pt-BR.yml.svn-base --- a/config/locales/.svn/text-base/pt-BR.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/pt-BR.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -728,7 +728,7 @@ text_user_wrote: "%{value} escreveu:" text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:' - text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/email.yml e reinicie a aplicação para ativá-las." + text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las." default_role_manager: Gerente default_role_developer: Desenvolvedor @@ -956,3 +956,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/pt.yml.svn-base --- a/config/locales/.svn/text-base/pt.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/pt.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -715,7 +715,7 @@ text_user_wrote: "%{value} escreveu:" text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:' - text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/email.yml e reinicie a aplicação para activar estas funcionalidades." + text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades." default_role_manager: Gestor default_role_developer: Programador @@ -940,3 +940,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/ro.yml.svn-base --- a/config/locales/.svn/text-base/ro.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/ro.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -774,7 +774,7 @@ text_user_wrote: "%{value} a scris:" text_enumeration_destroy_question: "Această valoare are %{count} obiecte." text_enumeration_category_reassign_to: 'Atribuie la această valoare:' - text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/email.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." + text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/configuration.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." text_repository_usernames_mapping: "SelectaÈ›i sau modificaÈ›i contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine È™i depozit sunt echivalate automat." text_diff_truncated: '... ComparaÈ›ia a fost trunchiată pentru ca depășeÈ™te lungimea maximă de text care poate fi afiÈ™at.' text_custom_field_possible_values_info: 'O linie pentru fiecare valoare' @@ -929,3 +929,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/ru.yml.svn-base --- a/config/locales/.svn/text-base/ru.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/ru.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -913,7 +913,7 @@ text_destroy_time_entries_question: Ð’Ñ‹ ÑобираетеÑÑŒ удалить %{hours} чаÑа(ов), прикрепленных за Ñтой задачей. text_destroy_time_entries: Удалить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ text_diff_truncated: '... Этот diff ограничен, так как превышает макÑимальный отображаемый размер.' - text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/email.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." + text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/configuration.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." text_enumeration_category_reassign_to: 'Ðазначить им Ñледующее значение:' text_enumeration_destroy_question: "%{count} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." text_file_repository_writable: Хранилище Ñ Ð´Ð¾Ñтупом на запиÑÑŒ @@ -1049,3 +1049,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/sk.yml.svn-base --- a/config/locales/.svn/text-base/sk.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/sk.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -723,7 +723,7 @@ label_generate_key: VygenerovaÅ¥ kÄ¾ÃºÄ setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily setting_mail_handler_api_key: API kÄ¾ÃºÄ - text_email_delivery_not_configured: "DoruÄenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reÅ¡tartnite aplikáciu pre aktiváciu funkcie." + text_email_delivery_not_configured: "DoruÄenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reÅ¡tartnite aplikáciu pre aktiváciu funkcie." field_parent_title: Nadradená stránka label_issue_watchers: Pozorovatelia setting_commit_logs_encoding: Kódovanie prenášaných správ @@ -931,3 +931,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/sl.yml.svn-base --- a/config/locales/.svn/text-base/sl.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/sl.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -761,7 +761,7 @@ text_user_wrote: "%{value} je napisal(a):" text_enumeration_destroy_question: "%{count} objektov je doloÄenih tej vrednosti." text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:' - text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/email.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" + text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniÅ¡kemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniÅ¡kem imenu ali e-poÅ¡tnem naslovu so samodejno dodeljeni." text_diff_truncated: '... Ta sprememba je bila odsekana ker presega najveÄjo velikost ki je lahko prikazana.' @@ -932,3 +932,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/sr-YU.yml.svn-base --- a/config/locales/.svn/text-base/sr-YU.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/sr-YU.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -874,7 +874,7 @@ text_user_wrote: "%{value} je napisao:" text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' - text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveÅ¡tenja su onemogućena.\nPodesite vaÅ¡ SMTP server u config/email.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." + text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveÅ¡tenja su onemogućena.\nPodesite vaÅ¡ SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisniÄkog imena pronaÄ‘enog u evidenciji spremiÅ¡ta.\nKorisnici sa istim Redmine imenom i imenom spremiÅ¡ta ili e-adresom su automatski mapirani." text_diff_truncated: '... Ova razlika je iseÄena jer je dostignuta maksimalna veliÄina prikaza.' text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' @@ -936,3 +936,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/sr.yml.svn-base --- a/config/locales/.svn/text-base/sr.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/sr.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -874,7 +874,7 @@ text_user_wrote: "%{value} је напиÑао:" text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредноÑти." text_enumeration_category_reassign_to: 'Додели их поново овој вредноÑти:' - text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/email.yml и покрените поново апликацију за њихово омогућавање." + text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање." text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориÑнике мапирањем Ñваког кориÑничког имена пронађеног у евиденцији Ñпремишта.\nКориÑници Ñа иÑтим Redmine именом и именом Ñпремишта или е-адреÑом Ñу аутоматÑки мапирани." text_diff_truncated: '... Ова разлика је иÑечена јер је доÑтигнута макÑимална величина приказа.' text_custom_field_possible_values_info: 'Један ред за Ñваку вредноÑÑ‚' @@ -937,3 +937,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/sv.yml.svn-base --- a/config/locales/.svn/text-base/sv.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/sv.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -208,6 +208,7 @@ notice_unable_delete_version: Denna version var inte möjlig att ta bort. notice_unable_delete_time_entry: Tidloggning kunde inte tas bort. notice_issue_done_ratios_updated: % klart uppdaterade. + notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som fÃ¥r visas (%{max})" error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv." @@ -217,7 +218,7 @@ error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.' error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (GÃ¥ till "Administration -> Ärendestatus").' error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält - error_can_not_delete_tracker: Det finns ärenden av denna typ och den är därför inte möjlig att ta bort. + error_can_not_delete_tracker: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort." error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort." error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas pÃ¥ nytt' error_can_not_archive_project: Detta projekt kan inte arkiveras @@ -225,7 +226,7 @@ error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll' error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mÃ¥l' error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort' - error_unable_to_connect: Kan inte ansluta (%{value}) + error_unable_to_connect: "Kan inte ansluta (%{value})" warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas." @@ -240,9 +241,9 @@ mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna" mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:" mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till" - mail_body_wiki_content_added: The '%{id}' wikisida has lagts till av %{author}. + mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}." mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats" - mail_body_wiki_content_updated: The '%{id}' wikisida har uppdaterats av %{author}. + mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}." gui_validation_error: 1 fel gui_validation_error_plural: "%{count} fel" @@ -340,8 +341,8 @@ field_group_by: Gruppera resultat efter field_sharing: Delning field_parent_issue: Förälderaktivitet - field_member_of_group: Tilldelad användares grupp - field_assigned_to_role: Tilldelad användares roll + field_member_of_group: "Tilldelad användares grupp" + field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält field_visible: Synlig @@ -380,7 +381,7 @@ setting_activity_days_default: Dagar som visas pÃ¥ projektaktivitet setting_display_subprojects_issues: Visa ärenden frÃ¥n underprojekt i huvudprojekt setting_enabled_scm: Aktivera SCM - setting_mail_handler_body_delimiters: Trunkera mail efter en av följande rader + setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader" setting_mail_handler_api_enabled: Aktivera WS för inkommande mail setting_mail_handler_api_key: API-nyckel setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt @@ -400,6 +401,9 @@ setting_rest_api_enabled: Aktivera REST webbtjänst setting_cache_formatted_text: Cacha formaterad text setting_default_notification_option: Standard notifieringsalternativ + setting_commit_logtime_enabled: Aktivera tidloggning + setting_commit_logtime_activity_id: Aktivitet för loggad tid + setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat permission_add_project: Skapa projekt permission_add_subprojects: Skapa underprojekt @@ -581,7 +585,7 @@ label_version_plural: Versioner label_close_versions: Stäng klara versioner label_confirmation: Bekräftelse - label_export_to: Exportera till + label_export_to: 'Finns även som:' label_read: Läs... label_public_projects: Publika projekt label_open_issues: öppen @@ -666,7 +670,7 @@ label_tag: Tag label_revision: Revision label_revision_plural: Revisioner - label_revision_id: Revision %{value} + label_revision_id: "Revision %{value}" label_associated_revisions: Associerade revisioner label_added: tillagd label_modified: modifierad @@ -775,10 +779,10 @@ label_search_titles_only: Sök endast i titlar label_user_mail_option_all: "För alla händelser i mina projekt" label_user_mail_option_selected: "För alla händelser i markerade projekt..." - label_user_mail_option_none: Inga händelser - label_user_mail_option_only_my_events: Endast för saker jag bevakar eller är inblandad i - label_user_mail_option_only_assigned: Endast för saker jag är tilldelad - label_user_mail_option_only_owner: Endast för saker jag äger + label_user_mail_option_none: "Inga händelser" + label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i" + label_user_mail_option_only_assigned: "Endast för saker jag är tilldelad" + label_user_mail_option_only_owner: "Endast för saker jag äger" label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort" label_registration_activation_by_email: kontoaktivering med mail label_registration_manual_activation: manuell kontoaktivering @@ -825,7 +829,7 @@ label_display_used_statuses_only: Visa endast status som används av denna ärendetyp label_api_access_key: API-nyckel label_missing_api_access_key: Saknar en API-nyckel - label_api_access_key_created_on: API-nyckel skapad för %{value} sedan + label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan" label_profile: Profil label_subtask_plural: Underaktiviteter label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras @@ -921,6 +925,7 @@ text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst." text_load_default_configuration: Läs in standardkonfiguration text_status_changed_by_changeset: "Tilldelad i changeset %{value}." + text_time_logged_by_changeset: "Tilldelad i changeset %{value}." text_issues_destroy_confirmation: 'Är du säker pÃ¥ att du vill radera markerade ärende(n) ?' text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:' text_default_administrator_account_changed: Standardadministratörens konto ändrat @@ -934,14 +939,14 @@ text_user_wrote: "%{value} skrev:" text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde." text_enumeration_category_reassign_to: 'Ã…tertilldela till detta värde:' - text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/email.yml och starta om applikationen för att aktivera dem." + text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem." text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i bÃ¥de Redmine och versionsarkivet mappas automatiskt." text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.' text_custom_field_possible_values_info: 'Ett värde per rad' - text_wiki_page_destroy_question: Denna sida har %{descendants} underliggande sidor. Vad vill du göra? - text_wiki_page_nullify_children: BehÃ¥ll undersidor som rotsidor - text_wiki_page_destroy_children: Ta bort alla underliggande sidor - text_wiki_page_reassign_children: Flytta undersidor till denna föräldersida + text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?" + text_wiki_page_nullify_children: "BehÃ¥ll undersidor som rotsidor" + text_wiki_page_destroy_children: "Ta bort alla underliggande sidor" + text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida" text_own_membership_delete_confirmation: "NÃ¥gra av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?" text_zoom_out: Zooma ut text_zoom_in: Zooma in @@ -972,8 +977,7 @@ enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/th.yml.svn-base --- a/config/locales/.svn/text-base/th.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/th.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -726,7 +726,7 @@ label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers setting_commit_logs_encoding: Commit messages encoding @@ -933,3 +933,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/tr.yml.svn-base --- a/config/locales/.svn/text-base/tr.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/tr.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -741,7 +741,7 @@ label_generate_key: Generate a key setting_sequential_project_identifiers: Generate sequential project identifiers field_parent_title: Parent page - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_enumeration_category_reassign_to: 'Reassign them to this value:' label_issue_watchers: Watchers mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" @@ -955,3 +955,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/uk.yml.svn-base --- a/config/locales/.svn/text-base/uk.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/uk.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -725,7 +725,7 @@ label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers setting_commit_logs_encoding: Commit messages encoding @@ -932,3 +932,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/vi.yml.svn-base --- a/config/locales/.svn/text-base/vi.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/vi.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -760,7 +760,7 @@ text_user_wrote: "%{value} wrote:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." default_role_manager: Äiá»u hành default_role_developer: Phát triển @@ -987,3 +987,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/zh-TW.yml.svn-base --- a/config/locales/.svn/text-base/zh-TW.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/zh-TW.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -979,7 +979,7 @@ text_user_wrote: "%{value} å…ˆå‰æåˆ°:" text_enumeration_destroy_question: "ç›®å‰æœ‰ %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '釿–°è¨­å®šå…¶åˆ—舉值為:' - text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/email.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" + text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/configuration.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" text_repository_usernames_mapping: "鏿“‡æˆ–æ›´æ–° Redmine ä½¿ç”¨è€…èˆ‡ç‰ˆæœ¬åº«ä½¿ç”¨è€…ä¹‹å°æ‡‰é—œä¿‚。\n版本庫中之使用者帳號或電å­éƒµä»¶ä¿¡ç®±ï¼Œèˆ‡ Redmine 設定相åŒè€…ï¼Œå°‡è‡ªå‹•ç”¢ç”Ÿå°æ‡‰é—œä¿‚。" text_diff_truncated: '... 這份差異已被截短以符åˆé¡¯ç¤ºè¡Œæ•¸ä¹‹æœ€å¤§å€¼' text_custom_field_possible_values_info: '一列輸入一個值' @@ -1017,3 +1017,7 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/.svn/text-base/zh.yml.svn-base --- a/config/locales/.svn/text-base/zh.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/.svn/text-base/zh.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -869,7 +869,7 @@ text_user_wrote: "%{value} 写到:" text_enumeration_category_reassign_to: '将它们关è”到新的枚举值:' text_enumeration_destroy_question: "%{count} 个对象被关è”到了这个枚举值。" - text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/email.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" + text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/configuration.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" text_repository_usernames_mapping: "选择或更新与版本库中的用户å对应的Redmine用户。\n版本库中与Redmine中的åŒå用户将被自动对应。" text_diff_truncated: '... å·®åˆ«å†…å®¹è¶…è¿‡äº†å¯æ˜¾ç¤ºçš„æœ€å¤§è¡Œæ•°å¹¶å·²è¢«æˆªæ–­' text_custom_field_possible_values_info: 'æ¯é¡¹æ•°å€¼ä¸€è¡Œ' @@ -950,3 +950,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/bg.yml --- a/config/locales/bg.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/bg.yml Thu Mar 03 12:02:03 2011 +0000 @@ -1,11 +1,12 @@ bg: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: # Use the strftime parameters for formats. # When no format has been given, it uses default. # You can provide other formats here if you like! - default: "%Y-%m-%d" + default: "%d-%m-%Y" short: "%b %d" long: "%B %d, %Y" @@ -65,12 +66,13 @@ other: "почти %{count} години" number: + # Default format for numbers format: separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: precision: 1 delimiter: "" storage_units: @@ -83,7 +85,8 @@ mb: "MB" gb: "GB" tb: "TB" - + + # Used in array.to_sentence. support: array: @@ -94,8 +97,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "1 грешка попречи този %{model} да бъде запиÑан" + other: "%{count} грешки попречиха този %{model} да бъде запиÑан" messages: inclusion: "не ÑъщеÑтвува в ÑпиÑъка" exclusion: "е запазено" @@ -120,6 +123,7 @@ greater_than_start_date: "трÑбва да е Ñлед началната дата" not_same_project: "не е от ÑÑŠÑ‰Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚" circular_dependency: "Тази Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ Ñ‰Ðµ доведе до безкрайна завиÑимоÑÑ‚" + cant_link_an_issue_with_a_descendant: "Една задача не може да бъде Ñвързвана към ÑÐ²Ð¾Ñ Ð¿Ð¾Ð´Ð·Ð°Ð´Ð°Ñ‡Ð°" actionview_instancetag_blank_option: Изберете @@ -150,24 +154,61 @@ notice_file_not_found: ÐеÑъщеÑтвуваща или премеÑтена Ñтраница. notice_locking_conflict: Друг потребител Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñ‚ÐµÐ·Ð¸ данни в момента. notice_not_authorized: ÐÑмате право на доÑтъп до тази Ñтраница. + notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. notice_email_sent: "Изпратен e-mail на %{value}" notice_email_error: "Грешка при изпращане на e-mail (%{value})" notice_feeds_access_key_reseted: Ð’Ð°ÑˆÐ¸Ñ ÐºÐ»ÑŽÑ‡ за RSS доÑтъп беше променен. + notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. + notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %{count} задачи от %{total} избрани: %{ids}." + notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): %{errors}." + notice_no_issue_selected: "ÐÑма избрани задачи." + notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." + notice_default_data_loaded: Примерната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ðµ заредена уÑпешно. + notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ + notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. + notice_issue_done_ratios_updated: Обновен процент на завършените задачи. + notice_gantt_chart_truncated: МрежовиÑÑ‚ график е Ñъкратен, понеже броÑÑ‚ на обектите, които могат да бъдат показани е твърде голÑм (%{max}) + error_can_t_load_default_data: "Грешка при зареждане на примерната информациÑ: %{value}" error_scm_not_found: ÐеÑъщеÑтвуващ обект в хранилището. error_scm_command_failed: "Грешка при опит за ÐºÐ¾Ð¼ÑƒÐ½Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ: %{value}" + error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." + error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' + error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. + error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). + error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле + error_can_not_delete_tracker: Този тракер Ñъдържа задачи и не може да бъде изтрит. + error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. + error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново + error_can_not_archive_project: Този проект не може да бъде архивиран + error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. + error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ + error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). + error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача + error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) + warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." mail_subject_lost_password: "Вашата парола (%{value})" mail_body_lost_password: 'За да Ñмените паролата Ñи, използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' mail_subject_register: "ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ð½Ð° профил (%{value})" mail_body_register: 'За да активирате профила Ñи използвайте ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð»Ð¸Ð½Ðº:' + mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ %{value} профил за вход." + mail_body_account_information: ИнформациÑта за профила ви + mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в %{value}" + mail_body_account_activation_request: "Има новорегиÑтриран потребител (%{value}), очакващ вашето одобрение:" + mail_subject_reminder: "%{count} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите %{days} дни" + mail_body_reminder: "%{count} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите %{days} дни:" + mail_subject_wiki_content_added: "Wiki Ñтраницата '%{id}' беше добавена" + mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. + mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' не беше обновена" + mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. gui_validation_error: 1 грешка gui_validation_error_plural: "%{count} грешки" field_name: Име field_description: ОпиÑание - field_summary: Групиран изглед + field_summary: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ field_is_required: Задължително field_firstname: Име field_lastname: Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ @@ -200,6 +241,7 @@ field_priority: Приоритет field_fixed_version: Планувана верÑÐ¸Ñ field_user: Потребител + field_principal: Principal field_role: Ð Ð¾Ð»Ñ field_homepage: Ðачална Ñтраница field_is_public: Публичен @@ -225,6 +267,7 @@ field_attr_lastname: Ðтрибут Ð¤Ð°Ð¼Ð¸Ð»Ð¸Ñ (Lastname) field_attr_mail: Ðтрибут Email field_onthefly: Динамично Ñъздаване на потребител + field_start_date: Ðачална дата field_done_ratio: % ÐŸÑ€Ð¾Ð³Ñ€ÐµÑ field_auth_source: Ðачин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ field_hide_mail: Скрий e-mail адреÑа ми @@ -242,7 +285,25 @@ field_assignable: Възможно е възлагане на задачи за тази Ñ€Ð¾Ð»Ñ field_redirect_existing_links: ПренаÑочване на ÑъщеÑтвуващи линкове field_estimated_hours: ИзчиÑлено време + field_column_names: Колони + field_time_entries: Log time + field_time_zone: ЧаÑова зона + field_searchable: С възможноÑÑ‚ за търÑене field_default_value: СтойноÑÑ‚ по подразбиране + field_comments_sorting: Сортиране на коментарите + field_parent_title: РодителÑка Ñтраница + field_editable: Editable + field_watcher: Ðаблюдател + field_identity_url: OpenID URL + field_content: Съдържание + field_group_by: Групиране на резултатите по + field_sharing: Sharing + field_parent_issue: РодителÑка задача + field_member_of_group: Член на група + field_assigned_to_role: Assignee's role + field_text: ТекÑтово поле + field_visible: Видим + field_warn_on_leaving_unsaved: Предупреди ме, когато напуÑкам Ñтраница Ñ Ð½ÐµÐ·Ð°Ð¿Ð¸Ñано Ñъдържание setting_app_title: Заглавие setting_app_subtitle: ОпиÑание @@ -253,26 +314,132 @@ setting_attachment_max_size: МакÑимална големина на прикачен файл setting_issues_export_limit: МакÑимален брой задачи за екÑпорт setting_mail_from: E-mail Ð°Ð´Ñ€ÐµÑ Ð·Ð° емиÑии + setting_bcc_recipients: Получатели на Ñкрито копие (bcc) + setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) setting_host_name: ХоÑÑ‚ setting_text_formatting: Форматиране на текÑта setting_wiki_compression: Wiki компреÑиране на иÑториÑта setting_feeds_limit: МакÑимален брой за емиÑии + setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране setting_autofetch_changesets: Ðвтоматично обработване на ревизиите setting_sys_api_enabled: Разрешаване на WS за управление setting_commit_ref_keywords: ОтбелÑзващи ключови думи setting_commit_fix_keywords: Приключващи ключови думи setting_autologin: Ðвтоматичен вход setting_date_format: Формат на датата + setting_time_format: Формат на чаÑа setting_cross_project_issue_relations: Релации на задачи между проекти + setting_issue_list_default_columns: Показвани колони по подразбиране + setting_repositories_encodings: Кодови таблици + setting_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване + setting_emails_header: Emails header + setting_emails_footer: ПодтекÑÑ‚ за e-mail + setting_protocol: Протокол + setting_per_page_options: Опции за Ñтраниране + setting_user_format: ПотребителÑки формат + setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚ + setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране + setting_enabled_scm: Разрешена SCM + setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове + setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и + setting_mail_handler_api_key: API ключ + setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори + setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar + setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar + setting_diff_max_lines_displayed: МакÑимален брой показани diff редове + setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline + setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла + setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ + setting_password_min_length: Минимална дължина на парола + setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор + setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект + setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ + setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ' + setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите + setting_start_of_week: Първи ден на Ñедмицата + setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ + setting_cache_formatted_text: Cache formatted text + setting_default_notification_option: Подразбиращ Ñе начин за извеÑÑ‚Ñване + setting_commit_logtime_enabled: Разрешаване на отчитането на работното време + setting_commit_logtime_activity_id: ДейноÑÑ‚ при отчитане на работното време + setting_gantt_items_limit: МакÑимален брой обекти, които да Ñе показват в мрежов график + permission_add_project: Създаване на проект + permission_add_subprojects: Създаване на подпроекти + permission_edit_project: Редактиране на проект + permission_select_project_modules: Избор на проектни модули + permission_manage_members: Управление на членовете (на екип) + permission_manage_project_activities: Управление на дейноÑтите на проекта + permission_manage_versions: Управление на верÑиите + permission_manage_categories: Управление на категориите + permission_view_issues: Разглеждане на задачите + permission_add_issues: ДобавÑне на задачи + permission_edit_issues: Редактиране на задачи + permission_manage_issue_relations: Управление на връзките между задачите + permission_add_issue_notes: Добаване на бележки + permission_edit_issue_notes: Редактиране на бележки + permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки + permission_move_issues: ПремеÑтване на задачи + permission_delete_issues: Изтриване на задачи + permission_manage_public_queries: Управление на публичните заÑвки + permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) + permission_view_gantt: Разглеждане на мрежов график + permission_view_calendar: Разглеждане на календари + permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ + permission_add_issue_watchers: ДобавÑне на наблюдатели + permission_delete_issue_watchers: Изтриване на наблюдатели + permission_log_time: Log spent time + permission_view_time_entries: Разглеждане на изразходваното време + permission_edit_time_entries: Редактиране на time logs + permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs + permission_manage_news: Управление на новини + permission_comment_news: Коментиране на новини + permission_manage_documents: Управление на документи + permission_view_documents: Разглеждане на документи + permission_manage_files: Управление на файлове + permission_view_files: Разглеждане на файлове + permission_manage_wiki: Управление на wiki + permission_rename_wiki_pages: Преименуване на wiki Ñтраници + permission_delete_wiki_pages: Изтриване на wiki Ñтраници + permission_view_wiki_pages: Разглеждане на wiki + permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ + permission_edit_wiki_pages: Редактиране на wiki Ñтраници + permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове към wiki Ñтраници + permission_protect_wiki_pages: Заключване на wiki Ñтраници + permission_manage_repository: Управление на хранилища + permission_browse_repository: Разглеждане на хранилища + permission_view_changesets: Разглеждане на changesets + permission_commit_access: ПоверÑване + permission_manage_boards: Управление на boards + permission_view_messages: Разглеждане на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_add_messages: Публикуване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_edit_messages: Редактиране на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_edit_own_messages: Редактиране на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_delete_messages: Изтриване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_delete_own_messages: Изтриване на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ + permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници + permission_manage_subtasks: Управление на подзадачите + + project_module_issue_tracking: Тракинг + project_module_time_tracking: ОтделÑне на време + project_module_news: Ðовини + project_module_documents: Документи + project_module_files: Файлове + project_module_wiki: Wiki + project_module_repository: Хранилище + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Мрежов график + label_user: Потребител label_user_plural: Потребители label_user_new: Ðов потребител + label_user_anonymous: Ðнонимен label_project: Проект label_project_new: Ðов проект label_project_plural: Проекти label_x_projects: - zero: 0 проекти + zero: 0 проекта one: 1 проект other: "%{count} проекта" label_project_all: Ð’Ñички проекти @@ -281,9 +448,13 @@ label_issue_new: Ðова задача label_issue_plural: Задачи label_issue_view_all: Ð’Ñички задачи + label_issues_by: "Задачи по %{value}" + label_issue_added: Добавена задача + label_issue_updated: Обновена задача label_document: Документ label_document_new: Ðов документ label_document_plural: Документи + label_document_added: Добавен документ label_role: Ð Ð¾Ð»Ñ label_role_plural: Роли label_role_new: Ðова Ñ€Ð¾Ð»Ñ @@ -310,12 +481,14 @@ label_information_plural: Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ label_please_login: Вход label_register: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ + label_login_with_open_id_option: или вход чрез OpenID label_password_lost: Забравена парола label_home: Ðачало label_home_heading: Ðачало label_my_page: Лична Ñтраница label_my_account: Профил label_my_projects: Проекти, в които учаÑтвам + label_my_page_block: Блокове в личната Ñтраница label_administration: ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_login: Вход label_logout: Изход @@ -325,6 +498,8 @@ label_last_login: ПоÑледно Ñвързване label_registered_on: РегиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ label_activity: ДейноÑÑ‚ + label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ + label_user_activity: "ÐктивноÑÑ‚ на %{value}" label_new: Ðов label_logged_as: Здравейте, label_environment: Среда @@ -333,10 +508,13 @@ label_auth_source_new: Ðов начин на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ label_auth_source_plural: Ðачини на Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ label_subproject_plural: Подпроекти + label_subproject_new: Ðов подпроект + label_and_its_subprojects: "%{value} и неговите подпроекти" label_min_max_length: Минимална - макÑимална дължина label_list: СпиÑък label_date: Дата label_integer: ЦелочиÑлен + label_float: Дробно label_boolean: Ð§ÐµÐºÐ±Ð¾ÐºÑ label_string: ТекÑÑ‚ label_text: Дълъг текÑÑ‚ @@ -351,6 +529,7 @@ label_attachment_new: Ðов файл label_attachment_delete: Изтриване label_attachment_plural: Файлове + label_file_added: Добавен файл label_report: Справка label_report_plural: Справки label_news: Ðовини @@ -358,11 +537,13 @@ label_news_plural: Ðовини label_news_latest: ПоÑледни новини label_news_view_all: Виж вÑички + label_news_added: Добавена новина label_settings: ÐаÑтройки label_overview: Общ изглед label_version: ВерÑÐ¸Ñ label_version_new: Ðова верÑÐ¸Ñ label_version_plural: ВерÑии + label_close_versions: ЗатварÑне на завършените верÑии label_confirmation: Одобрение label_export_to: ЕкÑпорт към label_read: Read... @@ -389,6 +570,7 @@ label_new_statuses_allowed: Позволени ÑÑŠÑтоÑÐ½Ð¸Ñ label_all: вÑички label_none: никакви + label_nobody: никой label_next: Следващ label_previous: Предишен label_used_by: Използва Ñе от @@ -414,15 +596,26 @@ label_query: ПотребителÑка Ñправка label_query_plural: ПотребителÑки Ñправки label_query_new: Ðова заÑвка + label_my_queries: Моите заÑвки label_filter_add: Добави филтър label_filter_plural: Филтри label_equals: е label_not_equals: не е label_in_less_than: Ñлед по-малко от label_in_more_than: Ñлед повече от + label_greater_or_equal: ">=" + label_less_or_equal: <= label_in: в Ñледващите label_today: Ð´Ð½ÐµÑ + label_all_time: вÑички + label_yesterday: вчера label_this_week: тази Ñедмица + label_last_week: поÑледната Ñедмица + label_last_n_days: "поÑледните %{count} дни" + label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец + label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец + label_this_year: текущата година + label_date_range: Период label_less_than_ago: преди по-малко от label_more_than_ago: преди повече от label_ago: преди @@ -430,17 +623,25 @@ label_not_contains: не Ñъдържа label_day_plural: дни label_repository: Хранилище + label_repository_plural: Хранилища label_browse: Разглеждане label_modification: "%{count} промÑна" label_modification_plural: "%{count} промени" + label_branch: работен вариант + label_tag: ВерÑÐ¸Ñ label_revision: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ label_revision_plural: Ревизии + label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} + label_associated_revisions: ÐÑоциирани ревизии label_added: добавено label_modified: променено + label_copied: копирано + label_renamed: преименувано label_deleted: изтрито label_latest_revision: ПоÑледна Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ label_latest_revision_plural: ПоÑледни ревизии label_view_revisions: Виж ревизиите + label_view_all_revisions: Разглеждане на вÑички ревизии label_max_size: МакÑимална големина label_sort_highest: ПремеÑти най-горе label_sort_higher: ПремеÑти по-горе @@ -466,6 +667,7 @@ label_changes_details: Подробни промени label_issue_tracking: Тракинг label_spent_time: Отделено време + label_overall_spent_time: Общо употребено време label_f_hour: "%{value} чаÑ" label_f_hour_plural: "%{value} чаÑа" label_time_tracking: ОтделÑне на време @@ -487,6 +689,7 @@ label_relation_delete: Изтриване на Ñ€ÐµÐ»Ð°Ñ†Ð¸Ñ label_relates_to: Ñвързана ÑÑŠÑ label_duplicates: дублира + label_duplicated_by: дублирана от label_blocks: блокира label_blocked_by: блокирана от label_precedes: предшеÑтва @@ -502,10 +705,13 @@ label_board: Форум label_board_new: Ðов форум label_board_plural: Форуми + label_board_locked: Заключена + label_board_sticky: Sticky label_topic_plural: Теми label_message_plural: Ð¡ÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ label_message_last: ПоÑледно Ñъобщение label_message_new: Ðова тема + label_message_posted: Добавено Ñъобщение label_reply_plural: Отговори label_send_information: Изпращане на информациÑта до Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ label_year: Година @@ -516,12 +722,81 @@ label_language_based: Ð’ завиÑимоÑÑ‚ от езика label_sort_by: "Сортиране по %{value}" label_send_test_email: Изпращане на теÑтов e-mail + label_feeds_access_key: RSS access ключ + label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп label_feeds_access_key_created_on: "%{value} от Ñъздаването на RSS ключа" label_module_plural: Модули label_added_time_by: "Публикувана от %{author} преди %{age}" + label_updated_time_by: "Обновена от %{author} преди %{age}" label_updated_time: "Обновена преди %{value}" label_jump_to_a_project: Проект... - + label_file_plural: Файлове + label_changeset_plural: Ревизии + label_default_columns: По подразбиране + label_no_change_option: (Без промÑна) + label_bulk_edit_selected_issues: Редактиране на задачи + label_theme: Тема + label_default: По подразбиране + label_search_titles_only: Само в заглавиÑта + label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам" + label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..." + label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)" + label_user_mail_option_only_my_events: Само за неща, в които Ñъм включен/а + label_user_mail_option_only_assigned: Само за неща, назначени на мен + label_user_mail_option_only_owner: Само за неща, на които аз Ñъм ÑобÑтвеник + label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени" + label_registration_activation_by_email: активиране на профила по email + label_registration_manual_activation: ръчно активиране + label_registration_automatic_activation: автоматично активиране + label_display_per_page: "Ðа Ñтраница по: %{value}" + label_age: ВъзраÑÑ‚ + label_change_properties: ПромÑна на наÑтройки + label_general: ОÑновни + label_more: Още + label_scm: SCM (СиÑтема за контрол на верÑиите) + label_plugins: Плъгини + label_ldap_authentication: LDAP Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ + label_downloads_abbr: D/L + label_optional_description: Ðезадължително опиÑание + label_add_another_file: ДобавÑне на друг файл + label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ + label_chronological_order: Хронологичен ред + label_reverse_chronological_order: Обратен хронологичен ред + label_planning: Планиране + label_incoming_emails: ВходÑщи e-mail-и + label_generate_key: Генериране на ключ + label_issue_watchers: Ðаблюдатели + label_example: Пример + label_display: Display + label_sort: Сортиране + label_ascending: ÐараÑтващ + label_descending: ÐамалÑващ + label_date_from_to: От %{start} до %{end} + label_wiki_content_added: Wiki Ñтраница беше добавена + label_wiki_content_updated: Wiki Ñтраница беше обновена + label_group: Група + label_group_plural: Групи + label_group_new: Ðова група + label_time_entry_plural: Използвано време + label_version_sharing_none: Ðе Ñподелен + label_version_sharing_descendants: С подпроекти + label_version_sharing_hierarchy: С проектна Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ + label_version_sharing_tree: С дърво на проектите + label_version_sharing_system: С вÑички проекти + label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи + label_copy_source: Източник + label_copy_target: Цел + label_copy_same_as_target: Също като целта + label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер + label_api_access_key: API ключ за доÑтъп + label_missing_api_access_key: ЛипÑващ API ключ + label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди %{value} + label_profile: Профил + label_subtask_plural: Подзадачи + label_project_copy_notifications: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта + label_principal_search: "ТърÑене на потребител или група:" + label_user_search: "ТърÑене на потребител:" + button_login: Вход button_submit: Прикачване button_save: Ð—Ð°Ð¿Ð¸Ñ @@ -529,8 +804,10 @@ button_uncheck_all: ИзчиÑтване на вÑички button_delete: Изтриване button_create: Създаване + button_create_and_continue: Създаване и продължаване button_test: ТеÑÑ‚ button_edit: Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ + button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}" button_add: ДобавÑне button_change: ПромÑна button_apply: Приложи @@ -541,6 +818,7 @@ button_list: СпиÑък button_view: Преглед button_move: ПремеÑтване + button_move_and_follow: ПремеÑтване и продължаване button_back: Ðазад button_cancel: Отказ button_activate: ÐÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ @@ -554,26 +832,49 @@ button_unarchive: Разархивиране button_reset: Генериране наново button_rename: Преименуване + button_change_password: ПромÑна на парола + button_copy: Копиране + button_copy_and_follow: Копиране и продължаване + button_annotate: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ + button_update: ОбновÑване + button_configure: Конфигуриране + button_quote: Цитат + button_duplicate: Дублиране + button_show: Показване status_active: активен status_registered: региÑтриран status_locked: заключен + version_status_open: отворена + version_status_locked: заключена + version_status_closed: затворена + + field_active: Ðктивен + text_select_mail_notifications: Изберете ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð·Ð° изпращане на e-mail. text_regexp_info: пр. ^[A-Z0-9]+$ text_min_max_length_info: 0 - без Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ text_project_destroy_confirmation: Сигурни ли Ñте, че иÑкате да изтриете проекта и данните в него? + text_subprojects_destroy_warning: "Ðеговите подпроекти: %{value} Ñъщо ще бъдат изтрити." text_workflow_edit: Изберете Ñ€Ð¾Ð»Ñ Ð¸ тракер за да редактирате Ñ€Ð°Ð±Ð¾Ñ‚Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ text_are_you_sure: Сигурни ли Ñте? - text_tip_task_begin_day: задача започваща този ден - text_tip_task_end_day: задача завършваща този ден - text_tip_task_begin_end_day: задача започваща и завършваща този ден + text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? + text_journal_changed: "%{label} променен от %{old} на %{new}" + text_journal_set_to: "%{label} уÑтановен на %{value}" + text_journal_deleted: "%{label} изтрит (%{old})" + text_journal_added: "Добавено %{label} %{value}" + text_tip_issue_begin_day: задача, започваща този ден + text_tip_issue_end_day: задача, завършваща този ден + text_tip_issue_begin_end_day: задача, започваща и завършваща този ден text_project_identifier_info: 'Позволени Ñа малки букви (a-z), цифри и тирета.
    Ðевъзможна промÑна Ñлед запиÑ.' text_caracters_maximum: "До %{count} Ñимвола." + text_caracters_minimum: "Минимум %{count} Ñимвола." text_length_between: "От %{min} до %{max} Ñимвола." text_tracker_no_workflow: ÐÑма дефиниран работен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° този тракер text_unallowed_characters: Ðепозволени Ñимволи text_comma_separated: Позволено е изброÑване (Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¸Ñ‚ÐµÐ» запетаÑ). + text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). text_issues_ref_in_commit_messages: ОтбелÑзване и приключване на задачи от ревизии text_issue_added: "Публикувана е нова задача Ñ Ð½Ð¾Ð¼ÐµÑ€ %{id} (от %{author})." text_issue_updated: "Задача %{id} е обновена (от %{author})." @@ -581,7 +882,37 @@ text_issue_category_destroy_question: "Има задачи (%{count}) обвързани Ñ Ñ‚Ð°Ð·Ð¸ категориÑ. Какво ще изберете?" text_issue_category_destroy_assignments: Премахване на връзките Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñта text_issue_category_reassign_to: Преобвързване Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ - + text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." + text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." + text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ + text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}." + text_time_logged_by_changeset: Приложено в Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}. + text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' + text_select_project_modules: 'Изберете активните модули за този проект:' + text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил + text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ + text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ + text_rmagick_available: Ðаличен RMagick (по избор) + text_destroy_time_entries_question: "%{hours} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" + text_destroy_time_entries: Изтриване на отделеното време + text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект + text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' + text_user_wrote: "%{value} напиÑа:" + text_enumeration_destroy_question: "%{count} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." + text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' + text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/configuration.yml и реÑтартирайте Redmine, за да ги разрешите." + text_repository_usernames_mapping: "Изберете или променете потребителите в Redmine, ÑъответÑтващи на потребителите в дневника на хранилището (repository).\nПотребителите Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¸ имена в Redmine и хранилищата Ñе ÑъвмеÑÑ‚Ñват автоматично." + text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' + text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' + text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? + text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници + text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants + text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница + text_own_membership_delete_confirmation: "Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това да не можете да редактирате този проект.\nСигурен ли Ñте, че иÑкате да продължите?" + text_zoom_in: Увеличаване + text_zoom_out: ÐамалÑване + text_warn_on_leaving_unsaved: Страницата Ñъдържа незапиÑано Ñъдържание, което може да бъде загубено, ако Ñ Ð½Ð°Ð¿ÑƒÑнете. + default_role_manager: Мениджър default_role_developer: Разработчик default_role_reporter: Публикуващ @@ -603,333 +934,10 @@ default_priority_immediate: Веднага default_activity_design: Дизайн default_activity_development: Разработка - + enumeration_issue_priorities: Приоритети на задачи enumeration_doc_categories: Категории документи enumeration_activities: ДейноÑти (time tracking) - label_file_plural: Файлове - label_changeset_plural: Ревизии - field_column_names: Колони - label_default_columns: По подразбиране - setting_issue_list_default_columns: Показвани колони по подразбиране - setting_repositories_encodings: Кодови таблици - notice_no_issue_selected: "ÐÑма избрани задачи." - label_bulk_edit_selected_issues: Редактиране на задачи - label_no_change_option: (Без промÑна) - notice_failed_to_save_issues: "ÐеуÑпешен Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° %{count} задачи от %{total} избрани: %{ids}." - label_theme: Тема - label_default: По подразбиране - label_search_titles_only: Само в заглавиÑта - label_nobody: никой - button_change_password: ПромÑна на парола - text_user_mail_option: "За неизбраните проекти, ще получавате извеÑÑ‚Ð¸Ñ Ñамо за наблюдавани дейноÑти или в които учаÑтвате (Ñ‚.е. автор или назначени на мен)." - label_user_mail_option_selected: "За вÑички ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ñамо в избраните проекти..." - label_user_mail_option_all: "За вÑÑко Ñъбитие в проектите, в които учаÑтвам" - label_user_mail_option_none: "Само за наблюдавани или в които учаÑтвам (автор или назначени на мен)" - setting_emails_footer: ПодтекÑÑ‚ за e-mail - label_float: Дробно - button_copy: Копиране - mail_body_account_information_external: "Можете да използвате Ð²Ð°ÑˆÐ¸Ñ %{value} профил за вход." - mail_body_account_information: ИнформациÑта за профила ви - setting_protocol: Протокол - label_user_mail_no_self_notified: "Ðе иÑкам извеÑÑ‚Ð¸Ñ Ð·Ð° извършени от мен промени" - setting_time_format: Формат на чаÑа - label_registration_activation_by_email: активиране на профила по email - mail_subject_account_activation_request: "ЗаÑвка за активиране на профил в %{value}" - mail_body_account_activation_request: "Има новорегиÑтриран потребител (%{value}), очакващ вашето одобрение:" - label_registration_automatic_activation: автоматично активиране - label_registration_manual_activation: ръчно активиране - notice_account_pending: "Профилът Ви е Ñъздаден и очаква одобрение от админиÑтратор." - field_time_zone: ЧаÑова зона - text_caracters_minimum: "Минимум %{count} Ñимвола." - setting_bcc_recipients: Получатели на Ñкрито копие (bcc) - button_annotate: ÐÐ½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ - label_issues_by: "Задачи по %{value}" - field_searchable: С възможноÑÑ‚ за търÑене - label_display_per_page: "Ðа Ñтраница по: %{value}" - setting_per_page_options: Опции за Ñтраниране - label_age: ВъзраÑÑ‚ - notice_default_data_loaded: Примерната информациÑта е уÑпешно заредена. - text_load_default_configuration: Зареждане на примерна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ - text_no_configuration_data: "Ð’Ñе още не Ñа конфигурирани Роли, тракери, ÑÑŠÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи и работен процеÑ.\nСтрого Ñе препоръчва зареждането на примерната информациÑ. Веднъж заредена ще имате възможноÑÑ‚ да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ." - error_can_t_load_default_data: "Грешка при зареждане на примерната информациÑ: %{value}" - button_update: ОбновÑване - label_change_properties: ПромÑна на наÑтройки - label_general: ОÑновни - label_repository_plural: Хранилища - label_associated_revisions: ÐÑоциирани ревизии - setting_user_format: ПотребителÑки формат - text_status_changed_by_changeset: "Приложено Ñ Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}." - label_more: Още - text_issues_destroy_confirmation: 'Сигурни ли Ñте, че иÑкате да изтриете избраните задачи?' - label_scm: SCM (СиÑтема за контрол на кода) - text_select_project_modules: 'Изберете активните модули за този проект:' - label_issue_added: Добавена задача - label_issue_updated: Обновена задача - label_document_added: Добавен документ - label_message_posted: Добавено Ñъобщение - label_file_added: Добавен файл - label_news_added: Добавена новина - project_module_boards: Форуми - project_module_issue_tracking: Тракинг - project_module_wiki: Wiki - project_module_files: Файлове - project_module_documents: Документи - project_module_repository: Хранилище - project_module_news: Ðовини - project_module_time_tracking: ОтделÑне на време - text_file_repository_writable: ВъзможноÑÑ‚ за пиÑане в хранилището Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ - text_default_administrator_account_changed: Сменен Ñ„Ð°Ð±Ñ€Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑтраторÑки профил - text_rmagick_available: Ðаличен RMagick (по избор) - button_configure: Конфигуриране - label_plugins: Плъгини - label_ldap_authentication: LDAP Ð¾Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ - label_downloads_abbr: D/L - label_this_month: Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¼ÐµÑец - label_last_n_days: "поÑледните %{count} дни" - label_all_time: вÑички - label_this_year: текущата година - label_date_range: Период - label_last_week: поÑледната Ñедмица - label_yesterday: вчера - label_last_month: поÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¼ÐµÑец - label_add_another_file: ДобавÑне на друг файл - label_optional_description: Ðезадължително опиÑание - text_destroy_time_entries_question: "%{hours} чаÑа Ñа отделени на задачите, които иÑкате да изтриете. Какво избирате?" - error_issue_not_found_in_project: 'Задачата не е намерена или не принадлежи на този проект' - text_assign_time_entries_to_project: ПрехвърлÑне на отделеното време към проект - text_destroy_time_entries: Изтриване на отделеното време - text_reassign_time_entries: 'ПрехвърлÑне на отделеното време към задача:' - setting_activity_days_default: Брой дни показвани на таб ДейноÑÑ‚ - label_chronological_order: Хронологичен ред - field_comments_sorting: Сортиране на коментарите - label_reverse_chronological_order: Обратен хронологичен ред - label_preferences: ÐŸÑ€ÐµÐ´Ð¿Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ñ - setting_display_subprojects_issues: Показване на подпроектите в проектите по подразбиране - label_overall_activity: ЦÑлоÑтна дейноÑÑ‚ - setting_default_projects_public: Ðовите проекти Ñа публични по подразбиране - error_scm_annotate: "Обектът не ÑъщеÑтвува или не може да бъде анотиран." - label_planning: Планиране - text_subprojects_destroy_warning: "Ðеговите подпроекти: %{value} Ñъщо ще бъдат изтрити." - label_and_its_subprojects: "%{value} и неговите подпроекти" - mail_body_reminder: "%{count} задачи, назначени на Ð²Ð°Ñ Ñа Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок в Ñледващите %{days} дни:" - mail_subject_reminder: "%{count} задачи Ñ ÐºÑ€Ð°ÐµÐ½ Ñрок Ñ Ñледващите %{days} дни" - text_user_wrote: "%{value} напиÑа:" - label_duplicated_by: дублирана от - setting_enabled_scm: Разрешена SCM - text_enumeration_category_reassign_to: 'ПреÑвържете ги към тази ÑтойноÑÑ‚:' - text_enumeration_destroy_question: "%{count} обекта Ñа Ñвързани Ñ Ñ‚Ð°Ð·Ð¸ ÑтойноÑÑ‚." - label_incoming_emails: ВходÑщи e-mail-и - label_generate_key: Генериране на ключ - setting_mail_handler_api_enabled: Разрешаване на WS за входÑщи e-mail-и - setting_mail_handler_api_key: API ключ - text_email_delivery_not_configured: "Изпращането на e-mail-и не е конфигурирано и извеÑтиÑта не Ñа разрешени.\nКонфигурирайте Ð²Ð°ÑˆÐ¸Ñ SMTP Ñървър в config/email.yml и реÑтартирайте Redmine, за да ги разрешите." - field_parent_title: РодителÑка Ñтраница - label_issue_watchers: Ðаблюдатели - setting_commit_logs_encoding: Кодова таблица на ÑъобщениÑта при поверÑване - button_quote: Цитат - setting_sequential_project_identifiers: Генериране на поÑледователни проектни идентификатори - notice_unable_delete_version: ÐевъзможноÑÑ‚ за изтриване на верÑÐ¸Ñ - label_renamed: преименувано - label_copied: копирано - setting_plain_text_mail: Ñамо чиÑÑ‚ текÑÑ‚ (без HTML) - permission_view_files: Разглеждане на файлове - permission_edit_issues: Редактиране на задачи - permission_edit_own_time_entries: Редактиране на ÑобÑтвените time logs - permission_manage_public_queries: Управление на публичните заÑвки - permission_add_issues: ДобавÑне на задачи - permission_log_time: Log spent time - permission_view_changesets: Разглеждане на changesets - permission_view_time_entries: Разглеждане на изразходваното време - permission_manage_versions: Управление на верÑиите - permission_manage_wiki: Управление на wiki - permission_manage_categories: Управление на категориите задачи - permission_protect_wiki_pages: Заключване на wiki Ñтраници - permission_comment_news: Коментиране на новини - permission_delete_messages: Изтриване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_select_project_modules: Избор на проектни модули - permission_manage_documents: Управление на документи - permission_edit_wiki_pages: Редактиране на wiki Ñтраници - permission_add_issue_watchers: ДобавÑне на наблюдатели - permission_view_gantt: Разглеждане на мрежов график - permission_move_issues: ПремеÑтване на задачи - permission_manage_issue_relations: Управление на връзките между задачите - permission_delete_wiki_pages: Изтриване на wiki Ñтраници - permission_manage_boards: Управление на boards - permission_delete_wiki_pages_attachments: Изтриване на прикачени файлове - permission_view_wiki_edits: Разглеждане на wiki иÑÑ‚Ð¾Ñ€Ð¸Ñ - permission_add_messages: Публикуване на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_view_messages: Разглеждане на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_manage_files: Управление на файлове - permission_edit_issue_notes: Редактиране на бележки - permission_manage_news: Управление на новини - permission_view_calendar: Разглеждане на календари - permission_manage_members: Управление на членовете (на екип) - permission_edit_messages: Редактиране на ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_issues: Изтриване на задачи - permission_view_issue_watchers: Разглеждане на ÑпиÑък Ñ Ð½Ð°Ð±Ð»ÑŽÐ´Ð°Ñ‚ÐµÐ»Ð¸ - permission_manage_repository: Управление на хранилища - permission_commit_access: ПоверÑване - permission_browse_repository: Разглеждане на хранилища - permission_view_documents: Разглеждане на документи - permission_edit_project: Редактиране на проект - permission_add_issue_notes: Добаване на бележки - permission_save_queries: Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚Ð²Ð°Ð½Ð¸Ñ (queries) - permission_view_wiki_pages: Разглеждане на wiki - permission_rename_wiki_pages: Преименуване на wiki Ñтраници - permission_edit_time_entries: Редактиране на time logs - permission_edit_own_issue_notes: Редактиране на ÑобÑтвени бележки - setting_gravatar_enabled: Използване на портребителÑки икони от Gravatar - label_example: Пример - text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - permission_edit_own_messages: Редактиране на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - permission_delete_own_messages: Изтриване на ÑобÑтвени ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ - label_user_activity: "ÐктивноÑÑ‚ на %{value}" - label_updated_time_by: "Обновена от %{author} преди %{age}" - text_diff_truncated: '... Този diff не е пълен, понеже е Ð½Ð°Ð´Ñ…Ð²ÑŠÑ€Ð»Ñ Ð¼Ð°ÐºÑÐ¸Ð¼Ð°Ð»Ð½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€, който може да бъде показан.' - setting_diff_max_lines_displayed: МакÑимален брой показани diff редове - text_plugin_assets_writable: Папката на приÑтавките е разрешена за Ð·Ð°Ð¿Ð¸Ñ - warning_attachments_not_saved: "%{count} файла не бÑха запиÑани." - button_create_and_continue: Създаване и продължаване - text_custom_field_possible_values_info: 'Една ÑтойноÑÑ‚ на ред' - label_display: Display - field_editable: Editable - setting_repository_log_display_limit: МакÑимален брой на показванете ревизии в лог файла - setting_file_max_size_displayed: МакÑимален размер на текÑтовите файлове, показвани inline - field_watcher: Ðаблюдател - setting_openid: Рарешаване на OpenID вход и региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ - field_identity_url: OpenID URL - label_login_with_open_id_option: или вход чрез OpenID - field_content: Съдържание - label_descending: ÐамалÑващ - label_sort: Сортиране - label_ascending: ÐараÑтващ - label_date_from_to: От %{start} до %{end} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Тази Ñтраница има %{descendants} Ñтраници деца и descendant(s). Какво желаете да правите? - text_wiki_page_reassign_children: Преназначаване на Ñтраниците деца на тази родителÑка Ñтраница - text_wiki_page_nullify_children: Запазване на тези Ñтраници като коренни Ñтраници - text_wiki_page_destroy_children: Изтриване на Ñтраниците деца и вÑички техни descendants - setting_password_min_length: Минимална дължина на парола - field_group_by: Групиране на резултатите по - mail_subject_wiki_content_updated: "Wiki Ñтраницата '%{id}' не беше обновена" - label_wiki_content_added: Wiki Ñтраница беше добавена - mail_subject_wiki_content_added: "Wiki Ñтраницата '%{id}' беше добавена" - mail_body_wiki_content_added: Wiki Ñтраницата '%{id}' беше добавена от %{author}. - label_wiki_content_updated: Wiki Ñтраница беше обновена - mail_body_wiki_content_updated: Wiki Ñтраницата '%{id}' беше обновена от %{author}. - permission_add_project: Създаване на проект - setting_new_project_user_role_id: РолÑ, давана на потребител, Ñъздаващ проекти, който не е админиÑтратор - label_view_all_revisions: Разглеждане на вÑички ревизии - label_tag: ВерÑÐ¸Ñ - label_branch: работен вариант - error_no_tracker_in_project: ÐÑма аÑоциирани тракери Ñ Ñ‚Ð¾Ð·Ð¸ проект. Проверете наÑтройките на проекта. - error_no_default_issue_status: ÐÑма уÑтановено подразбиращо Ñе ÑÑŠÑтоÑние за задачите. ÐœÐ¾Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐµÑ‚Ðµ вашата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ (Вижте "ÐдминиÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ -> СъÑтоÑÐ½Ð¸Ñ Ð½Ð° задачи"). - text_journal_changed: "%{label} променен от %{old} на %{new}" - text_journal_set_to: "%{label} уÑтановен на %{value}" - text_journal_deleted: "%{label} изтрит (%{old})" - label_group_plural: Групи - label_group: Група - label_group_new: Ðова група - label_time_entry_plural: Използвано време - text_journal_added: "Добавено %{label} %{value}" - field_active: Ðктивен enumeration_system_activity: СиÑтемна активноÑÑ‚ - permission_delete_issue_watchers: Изтриване на наблюдатели - version_status_closed: затворена - version_status_locked: заключена - version_status_open: отворена - error_can_not_reopen_issue_on_closed_version: Задача, аÑоциирана ÑÑŠÑ Ð·Ð°Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð° верÑÐ¸Ñ Ð½Ðµ може да бъде отворена отново - label_user_anonymous: Ðнонимен - button_move_and_follow: ПремеÑтване и продължаване - setting_default_projects_modules: Ðктивирани модули по подразбиране за нов проект - setting_gravatar_default: Подразбиращо Ñе изображение от Gravatar - field_sharing: Sharing - label_version_sharing_hierarchy: С проектна Ð¹ÐµÑ€Ð°Ñ€Ñ…Ð¸Ñ - label_version_sharing_system: С вÑички проекти - label_version_sharing_descendants: С подпроекти - label_version_sharing_tree: С дърво на проектите - label_version_sharing_none: Ðе Ñподелен - error_can_not_archive_project: Този проект не може да бъде архивиран - button_duplicate: Дублиране - button_copy_and_follow: Копиране и продължаване - label_copy_source: Източник - setting_issue_done_ratio: ИзчиÑление на процента на готови задачи Ñ - setting_issue_done_ratio_issue_status: Използване на ÑÑŠÑтоÑнието на задачите - error_issue_done_ratios_not_updated: Процентът на завършените задачи не е обновен. - error_workflow_copy_target: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ тракер(и) и Ñ€Ð¾Ð»Ñ (роли). - setting_issue_done_ratio_issue_field: Използване на поле '% ПрогреÑ' - label_copy_same_as_target: Също като целта - label_copy_target: Цел - notice_issue_done_ratios_updated: Обновен процент на завършените задачи. - error_workflow_copy_source: ÐœÐ¾Ð»Ñ Ð¸Ð·Ð±ÐµÑ€ÐµÑ‚Ðµ source тракер или Ñ€Ð¾Ð»Ñ - label_update_issue_done_ratios: ОбновÑване на процента на завършените задачи - setting_start_of_week: Първи ден на Ñедмицата - permission_view_issues: Разглеждане на задачите - label_display_used_statuses_only: Показване Ñамо на ÑÑŠÑтоÑниÑта, използвани от този тракер - label_revision_id: Ð ÐµÐ²Ð¸Ð·Ð¸Ñ %{value} - label_api_access_key: API ключ за доÑтъп - label_api_access_key_created_on: API ключ за доÑтъп е Ñъздаден преди %{value} - label_feeds_access_key: RSS access ключ - notice_api_access_key_reseted: ВашиÑÑ‚ API ключ за доÑтъп беше изчиÑтен. - setting_rest_api_enabled: Разрешаване на REST web ÑÑŠÑ€Ð²Ð¸Ñ - label_missing_api_access_key: ЛипÑващ API ключ - label_missing_feeds_access_key: ЛипÑващ RSS ключ за доÑтъп - button_show: Показване - text_line_separated: Позволени Ñа много ÑтойноÑти (по едно на ред). - setting_mail_handler_body_delimiters: ОтрÑзване на e-mail-ите Ñлед един от тези редове - permission_add_subprojects: Създаване на подпроекти - label_subproject_new: Ðов подпроект - text_own_membership_delete_confirmation: |- - Вие Ñте на път да премахнете нÑкои или вÑички ваши Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¸ е възможно Ñлед това на да не можете да редатирате този проект. - Сигурен ли Ñте, че иÑкате да продължите? - label_close_versions: ЗатварÑне на завършените верÑии - label_board_sticky: Sticky - label_board_locked: Заключена - permission_export_wiki_pages: ЕкÑпорт на wiki Ñтраници - setting_cache_formatted_text: Cache formatted text - permission_manage_project_activities: Управление на дейноÑтите на проекта - error_unable_delete_issue_status: ÐевъзможноÑÑ‚ за изтриване на ÑÑŠÑтоÑние на задача - label_profile: Профил - permission_manage_subtasks: Управление на подзадачите - field_parent_issue: РодителÑка задача - label_subtask_plural: Подзадачи - label_project_copy_notifications: Изпращане на Send e-mail извеÑÑ‚Ð¸Ñ Ð¿Ð¾ време на копирането на проекта - error_can_not_delete_custom_field: ÐевъзможноÑÑ‚ за изтриване на потребителÑко поле - error_unable_to_connect: ÐевъзможноÑÑ‚ за Ñвързване Ñ (%{value}) - error_can_not_remove_role: Тази Ñ€Ð¾Ð»Ñ Ñе използва и не може да бъде изтрита. - error_can_not_delete_tracker: Този тракер Ñъдържа задачи и не може да бъде изтрит. - field_principal: Principal - label_my_page_block: Блокове в личната Ñтраница - notice_failed_to_save_members: "ÐевъзможноÑÑ‚ за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° член(ове): %{errors}." - text_zoom_out: ÐамалÑване - text_zoom_in: Увеличаване - notice_unable_delete_time_entry: ÐевъзможноÑÑ‚ за изтриване на Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° time log. - label_overall_spent_time: Общо употребено време - field_time_entries: Log time - notice_not_authorized_archived_project: Проектът, който Ñе опитвате да видите е архивиран. - text_tip_issue_end_day: задача, завършваща този ден - field_text: ТекÑтово поле - label_user_mail_option_only_owner: Само за неща, на които аз Ñъм ÑобÑтвеник - field_member_of_group: Член на група - project_module_gantt: Мрежов график - text_are_you_sure_with_children: Изтриване на задачата и нейните подзадачи? - text_tip_issue_begin_end_day: задача, започваща и завършваща този ден - setting_default_notification_option: Подразбиращ Ñе начин за извеÑÑ‚Ñване - project_module_calendar: Календар - label_user_mail_option_only_my_events: Само за неща, в които Ñъм включен/а - text_tip_issue_begin_day: задача, започваща този ден - label_user_mail_option_only_assigned: Само за неща, назначени на мен - button_edit_associated_wikipage: "Редактиране на аÑоциираната Wiki Ñтраница: %{page_title}" - field_assigned_to_role: Assignee's role - field_start_date: Ðачална дата - label_principal_search: "ТърÑене на потребител или група:" - label_user_search: "ТърÑене на потребител:" - field_visible: Видим - setting_emails_header: Emails header - setting_commit_logtime_activity_id: ДейноÑÑ‚ при отчитане на работното време - text_time_logged_by_changeset: Приложено в Ñ€ÐµÐ²Ð¸Ð·Ð¸Ñ %{value}. - setting_commit_logtime_enabled: Разрешаване на отчитането на работното време - notice_gantt_chart_truncated: МрежовиÑÑ‚ график е Ñъкратен, понеже броÑÑ‚ на обектите, които могат да бъдат показани е твърде голÑм (%{max}) - setting_gantt_items_limit: МакÑимален брой обекти, които да Ñе показват в мрежов график + + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/bs.yml --- a/config/locales/bs.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/bs.yml Thu Mar 03 12:02:03 2011 +0000 @@ -788,7 +788,7 @@ text_user_wrote: "%{value} je napisao/la:" text_enumeration_destroy_question: "Za %{count} objekata je dodjeljenja ova vrijednost." text_enumeration_category_reassign_to: 'Ponovo im dodjeli ovu vrijednost:' - text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/email.yml i restartuj aplikaciju nakon toga." + text_email_delivery_not_configured: "Email dostava nije konfiguraisana, notifikacija je onemogućena.\nKonfiguriÅ¡i SMTP server u config/configuration.yml i restartuj aplikaciju nakon toga." text_repository_usernames_mapping: "Odaberi ili ispravi redmine korisnika mapiranog za svako korisniÄko ima naÄ‘eno u logu repozitorija.\nKorisnici sa istim imenom u redmineu i u repozitoruju se automatski mapiraju." text_diff_truncated: '... Ovaj prikaz razlike je odsjeÄen poÅ¡to premaÅ¡uje maksimalnu veliÄinu za prikaz' text_custom_field_possible_values_info: 'Jedna linija za svaku vrijednost' @@ -951,3 +951,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/ca.yml --- a/config/locales/ca.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/ca.yml Thu Mar 03 12:02:03 2011 +0000 @@ -881,7 +881,7 @@ text_user_wrote: "%{value} va escriure:" text_enumeration_destroy_question: "%{count} objectes estan assignats a aquest valor." text_enumeration_category_reassign_to: "Torna a assignar-los a aquest valor:" - text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/email.yml i reinicieu l'aplicació per habilitar-lo." + text_email_delivery_not_configured: "El lliurament per correu electrònic no està configurat i les notificacions estan inhabilitades.\nConfigureu el servidor SMTP a config/configuration.yml i reinicieu l'aplicació per habilitar-lo." text_repository_usernames_mapping: "Seleccioneu l'assignació entre els usuaris del Redmine i cada nom d'usuari trobat al dipòsit.\nEls usuaris amb el mateix nom d'usuari o correu del Redmine i del dipòsit s'assignaran automàticament." text_diff_truncated: "... Aquestes diferències s'han trucat perquè excedeixen la mida màxima que es pot mostrar." text_custom_field_possible_values_info: "Una línia per a cada valor" @@ -940,3 +940,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/cs.yml --- a/config/locales/cs.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/cs.yml Thu Mar 03 12:02:03 2011 +0000 @@ -1,4 +1,9 @@ +# Update to 1.1 by Michal Gebauer +# Updated by Josef LiÅ¡ka +# CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz +# Based on original CZ translation by Jan KadleÄek cs: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) direction: ltr date: formats: @@ -26,7 +31,7 @@ long: "%B %d, %Y %H:%M" am: "dop." pm: "odp." - + datetime: distance_in_words: half_a_minute: "půl minuty" @@ -65,24 +70,26 @@ other: "téměř %{count} roky" number: + # Výchozí formát pro Äísla format: - separator: "." + separator: "." delimiter: "" precision: 3 - human: - format: + human: + format: + delimiter: "" precision: 1 - delimiter: "" - storage_units: + storage_units: format: "%n %u" - units: - kb: KB - tb: TB - gb: GB - byte: - one: Byte - other: Bytes - mb: MB + units: + byte: + one: "Bajt" + other: "Bajtů" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + # Used in array.to_sentence. support: @@ -94,8 +101,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "1 chyba zabránila uložení %{model}" + other: "%{count} chyb zabránilo uložení %{model}" messages: inclusion: "není zahrnuto v seznamu" exclusion: "je rezervováno" @@ -122,10 +129,6 @@ circular_dependency: "Tento vztah by vytvoÅ™il cyklickou závislost" cant_link_an_issue_with_a_descendant: "Úkol nemůže být spojen s jedním z jeho dílÄích úkolů" - # Updated by Josef LiÅ¡ka - # CZ translation by Maxim KruÅ¡ina | Massimo Filippi, s.r.o. | maxim@mxm.cz - # Based on original CZ translation by Jan KadleÄek - actionview_instancetag_blank_option: Prosím vyberte general_text_No: 'Ne' @@ -154,20 +157,40 @@ notice_successful_connection: Úspěšné pÅ™ipojení. notice_file_not_found: Stránka na kterou se snažíte zobrazit neexistuje nebo byla smazána. notice_locking_conflict: Údaje byly zmÄ›nÄ›ny jiným uživatelem. - notice_scm_error: Záznam a/nebo revize neexistuje v repozitáři. notice_not_authorized: Nemáte dostateÄná práva pro zobrazení této stránky. + notice_not_authorized_archived_project: Projekt ke kterému se snažíte pÅ™istupovat byl archivován. notice_email_sent: "Na adresu %{value} byl odeslán email" notice_email_error: "PÅ™i odesílání emailu nastala chyba (%{value})" notice_feeds_access_key_reseted: Váš klÃ­Ä pro přístup k RSS byl resetován. + notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. notice_failed_to_save_issues: "Chyba pÅ™i uložení %{count} úkolu(ů) z %{total} vybraných: %{ids}." + notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." notice_no_issue_selected: "Nebyl zvolen žádný úkol. Prosím, zvolte úkoly, které chcete editovat" notice_account_pending: "Váš úÄet byl vytvoÅ™en, nyní Äeká na schválení administrátorem." notice_default_data_loaded: Výchozí konfigurace úspěšnÄ› nahrána. + notice_unable_delete_version: Nemohu odstanit verzi + notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. + notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. + notice_gantt_chart_truncated: Graf byl oříznut, poÄet položek pÅ™esáhl limit pro zobrazení (%{max}) error_can_t_load_default_data: "Výchozí konfigurace nebyla nahrána: %{value}" error_scm_not_found: "Položka a/nebo revize neexistují v repozitáři." error_scm_command_failed: "PÅ™i pokusu o přístup k repozitáři doÅ¡lo k chybÄ›: %{value}" + error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." error_issue_not_found_in_project: 'Úkol nebyl nalezen nebo nepatří k tomuto projektu' + error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. + error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). + error_can_not_delete_custom_field: Nelze smazat volitelné pole + error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. + error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. + error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en + error_can_not_archive_project: Tento projekt nemůže být archivován + error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. + error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly + error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) + error_unable_delete_issue_status: Nelze smazat stavy úkolů + error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) + warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." mail_subject_lost_password: "VaÅ¡e heslo (%{value})" mail_body_lost_password: 'Pro zmÄ›nu vaÅ¡eho hesla kliknÄ›te na následující odkaz:' @@ -177,6 +200,12 @@ mail_body_account_information: Informace o vaÅ¡em úÄtu mail_subject_account_activation_request: "Aktivace %{value} úÄtu" mail_body_account_activation_request: "Byl zaregistrován nový uživatel %{value}. Aktivace jeho úÄtu závisí na vaÅ¡em potvrzení." + mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" + mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní (%{days}):" + mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" + mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." + mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" + mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." gui_validation_error: 1 chyba gui_validation_error_plural: "%{count} chyb(y)" @@ -216,6 +245,7 @@ field_priority: Priorita field_fixed_version: Cílová verze field_user: Uživatel + field_principal: Hlavní field_role: Role field_homepage: Domovská stránka field_is_public: VeÅ™ejný @@ -260,10 +290,23 @@ field_redirect_existing_links: PÅ™esmÄ›rovat stvávající odkazy field_estimated_hours: Odhadovaná doba field_column_names: Sloupce + field_time_entries: Zaznamenaný Äas field_time_zone: ÄŒasové pásmo field_searchable: Umožnit vyhledávání field_default_value: Výchozí hodnota field_comments_sorting: Zobrazit komentáře + field_parent_title: RodiÄovská stránka + field_editable: Editovatelný + field_watcher: Sleduje + field_identity_url: OpenID URL + field_content: Obsah + field_group_by: Seskupovat výsledky podle + field_sharing: Sdílení + field_parent_issue: RodiÄovský úkol + field_member_of_group: Skupina pÅ™iÅ™aditele + field_assigned_to_role: Role pÅ™iÅ™aditele + field_text: Textové pole + field_visible: Viditelný setting_app_title: Název aplikace setting_app_subtitle: Podtitulek aplikace @@ -275,6 +318,7 @@ setting_issues_export_limit: Limit pro export úkolů setting_mail_from: Odesílat emaily z adresy setting_bcc_recipients: Příjemci skryté kopie (bcc) + setting_plain_text_mail: pouze prostý text (ne HTML) setting_host_name: Jméno serveru setting_text_formatting: Formátování textu setting_wiki_compression: Komprese historie Wiki @@ -290,12 +334,94 @@ setting_cross_project_issue_relations: Povolit vazby úkolů napÅ™Ã­Ä projekty setting_issue_list_default_columns: Výchozí sloupce zobrazené v seznamu úkolů setting_repositories_encodings: Kódování + setting_commit_logs_encoding: Kódování zpráv pÅ™i commitu + setting_emails_header: HlaviÄka emailů setting_emails_footer: PatiÄka emailů setting_protocol: Protokol setting_per_page_options: Povolené poÄty řádků na stránce setting_user_format: Formát zobrazení uživatele setting_activity_days_default: Dny zobrazené v Äinnosti projektu setting_display_subprojects_issues: Automaticky zobrazit úkoly podprojektu v hlavním projektu + setting_enabled_scm: Povolené SCM + setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků + setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily + setting_mail_handler_api_key: API klÃ­Ä + setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů + setting_gravatar_enabled: Použít uživatelské ikony Gravatar + setting_gravatar_default: Výchozí Gravatar + setting_diff_max_lines_displayed: Maximální poÄet zobrazenách řádků rozdílů + setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce + setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru + setting_openid: Umožnit pÅ™ihlaÅ¡ování a registrace s OpenID + setting_password_min_length: Minimální délka hesla + setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il + setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt + setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s + setting_issue_done_ratio_issue_field: Použít pole úkolu + setting_issue_done_ratio_issue_status: Použít stav úkolu + setting_start_of_week: ZaÄínat kalendáře + setting_rest_api_enabled: Zapnout službu REST + setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti + setting_default_notification_option: Výchozí nastavení oznámení + setting_commit_logtime_enabled: Povolit zapisování Äasu + setting_commit_logtime_activity_id: Aktivita pro zapsaný Äas + setting_gantt_items_limit: Maximální poÄet položek zobrazený na ganttovÄ› grafu + + permission_add_project: VytvoÅ™it projekt + permission_add_subprojects: VytvoÅ™it podprojekty + permission_edit_project: Úprava projektů + permission_select_project_modules: VýbÄ›r modulů projektu + permission_manage_members: Spravování Älenství + permission_manage_project_activities: Spravovat aktivity projektu + permission_manage_versions: Spravování verzí + permission_manage_categories: Spravování kategorií úkolů + permission_view_issues: Zobrazit úkoly + permission_add_issues: PÅ™idávání úkolů + permission_edit_issues: Upravování úkolů + permission_manage_issue_relations: Spravování vztahů mezi úkoly + permission_add_issue_notes: PÅ™idávání poznámek + permission_edit_issue_notes: Upravování poznámek + permission_edit_own_issue_notes: Upravování vlastních poznámek + permission_move_issues: PÅ™esouvání úkolů + permission_delete_issues: Mazání úkolů + permission_manage_public_queries: Správa veÅ™ejných dotazů + permission_save_queries: Ukládání dotazů + permission_view_gantt: Zobrazené Ganttova diagramu + permission_view_calendar: Prohlížení kalendáře + permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů + permission_add_issue_watchers: PÅ™idání sledujících uživatelů + permission_delete_issue_watchers: Smazat pÅ™ihlížející + permission_log_time: Zaznamenávání stráveného Äasu + permission_view_time_entries: Zobrazení stráveného Äasu + permission_edit_time_entries: Upravování záznamů o stráveném Äasu + permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase + permission_manage_news: Spravování novinek + permission_comment_news: Komentování novinek + permission_manage_documents: Správa dokumentů + permission_view_documents: Prohlížení dokumentů + permission_manage_files: Spravování souborů + permission_view_files: Prohlížení souborů + permission_manage_wiki: Spravování Wiki + permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek + permission_delete_wiki_pages: Mazání stránek na Wiki + permission_view_wiki_pages: Prohlížení Wiki + permission_view_wiki_edits: Prohlížení historie Wiki + permission_edit_wiki_pages: Upravování stránek Wiki + permission_delete_wiki_pages_attachments: Mazání příloh + permission_protect_wiki_pages: ZabezpeÄení Wiki stránek + permission_manage_repository: Spravování repozitáře + permission_browse_repository: Procházení repozitáře + permission_view_changesets: Zobrazování sady zmÄ›n + permission_commit_access: Commit přístup + permission_manage_boards: Správa diskusních fór + permission_view_messages: Prohlížení zpráv + permission_add_messages: Posílání zpráv + permission_edit_messages: Upravování zpráv + permission_edit_own_messages: Upravit vlastní zprávy + permission_delete_messages: Mazání zpráv + permission_delete_own_messages: Smazat vlastní zprávy + permission_export_wiki_pages: Exportovat Wiki stránky + permission_manage_subtasks: Spravovat podúkoly project_module_issue_tracking: Sledování úkolů project_module_time_tracking: Sledování Äasu @@ -305,10 +431,13 @@ project_module_wiki: Wiki project_module_repository: Repozitář project_module_boards: Diskuse + project_module_calendar: Kalendář + project_module_gantt: Gantt label_user: Uživatel label_user_plural: Uživatelé label_user_new: Nový uživatel + label_user_anonymous: Anonymní label_project: Projekt label_project_new: Nový projekt label_project_plural: Projekty @@ -355,12 +484,14 @@ label_information_plural: Informace label_please_login: Prosím pÅ™ihlaÅ¡te se label_register: Registrovat + label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID label_password_lost: Zapomenuté heslo label_home: Úvodní label_home_heading: Úvodní label_my_page: Moje stránka label_my_account: Můj úÄet label_my_projects: Moje projekty + label_my_page_block: Bloky na mé stránce label_administration: Administrace label_login: PÅ™ihlášení label_logout: Odhlášení @@ -371,6 +502,7 @@ label_registered_on: Registrován label_activity: Aktivita label_overall_activity: Celková aktivita + label_user_activity: "Aktivita uživatele: %{value}" label_new: Nový label_logged_as: PÅ™ihlášen jako label_environment: ProstÅ™edí @@ -379,6 +511,8 @@ label_auth_source_new: Nový mód autentifikace label_auth_source_plural: Módy autentifikace label_subproject_plural: Podprojekty + label_subproject_new: Nový podprojekt + label_and_its_subprojects: "%{value} a jeho podprojekty" label_min_max_length: Min - Max délka label_list: Seznam label_date: Datum @@ -412,6 +546,7 @@ label_version: Verze label_version_new: Nová verze label_version_plural: Verze + label_close_versions: Zavřít dokonÄené verze label_confirmation: Potvrzení label_export_to: 'Také k dispozici:' label_read: NaÄítá se... @@ -470,6 +605,8 @@ label_not_equals: není label_in_less_than: je měší než label_in_more_than: je vÄ›tší než + label_greater_or_equal: '>=' + label_less_or_equal: '<=' label_in: v label_today: dnes label_all_time: vÅ¡e @@ -492,15 +629,21 @@ label_browse: Procházet label_modification: "%{count} zmÄ›na" label_modification_plural: "%{count} zmÄ›n" + label_branch: VÄ›tev + label_tag: Tag label_revision: Revize label_revision_plural: Revizí + label_revision_id: "Revize %{value}" label_associated_revisions: Související verze label_added: pÅ™idáno label_modified: zmÄ›nÄ›no + label_copied: zkopírováno + label_renamed: pÅ™ejmenováno label_deleted: odstranÄ›no label_latest_revision: Poslední revize label_latest_revision_plural: Poslední revize label_view_revisions: Zobrazit revize + label_view_all_revisions: Zobrazit vÅ¡echny revize label_max_size: Maximální velikost label_sort_highest: PÅ™esunout na zaÄátek label_sort_higher: PÅ™esunout nahoru @@ -526,6 +669,7 @@ label_changes_details: Detail vÅ¡ech zmÄ›n label_issue_tracking: Sledování úkolů label_spent_time: Strávený Äas + label_overall_spent_time: Celkem strávený Äas label_f_hour: "%{value} hodina" label_f_hour_plural: "%{value} hodin" label_time_tracking: Sledování Äasu @@ -546,8 +690,9 @@ label_relation_new: Nová souvislost label_relation_delete: Odstranit souvislost label_relates_to: související s - label_duplicates: duplicity - label_blocks: bloků + label_duplicates: duplikuje + label_duplicated_by: zduplikován + label_blocks: blokuje label_blocked_by: zablokován label_precedes: pÅ™edchází label_follows: následuje @@ -562,6 +707,8 @@ label_board: Fórum label_board_new: Nové fórum label_board_plural: Fóra + label_board_locked: UzamÄeno + label_board_sticky: Nálepka label_topic_plural: Témata label_message_plural: Zprávy label_message_last: Poslední zpráva @@ -577,9 +724,12 @@ label_language_based: Podle výchozího jazyku label_sort_by: "SeÅ™adit podle %{value}" label_send_test_email: Poslat testovací email + label_feeds_access_key: Přístupový klÃ­Ä pro RSS + label_missing_feeds_access_key: Postrádá přístupový klÃ­Ä pro RSS label_feeds_access_key_created_on: "Přístupový klÃ­Ä pro RSS byl vytvoÅ™en pÅ™ed %{value}" label_module_plural: Moduly label_added_time_by: "PÅ™idáno uživatelem %{author} pÅ™ed %{age}" + label_updated_time_by: "Aktualizováno uživatelem %{author} pÅ™ed %{age}" label_updated_time: "Aktualizováno pÅ™ed %{value}" label_jump_to_a_project: Vyberte projekt... label_file_plural: Soubory @@ -592,6 +742,10 @@ label_search_titles_only: Vyhledávat pouze v názvech label_user_mail_option_all: "Pro vÅ¡echny události vÅ¡ech mých projektů" label_user_mail_option_selected: "Pro vÅ¡echny události vybraných projektů..." + label_user_mail_option_none: "Žádné události" + label_user_mail_option_only_my_events: "Jen pro vÄ›ci co sleduji nebo jsem v nich zapojen" + label_user_mail_option_only_assigned: "Jen pro vÅ¡eci kterým sem pÅ™iÅ™azen" + label_user_mail_option_only_owner: "Jen pro vÄ›ci které vlastním" label_user_mail_no_self_notified: "Nezasílat informace o mnou vytvoÅ™ených zmÄ›nách" label_registration_activation_by_email: aktivace úÄtu emailem label_registration_manual_activation: manuální aktivace úÄtu @@ -610,6 +764,40 @@ label_preferences: Nastavení label_chronological_order: V chronologickém poÅ™adí label_reverse_chronological_order: V obrácaném chronologickém poÅ™adí + label_planning: Plánování + label_incoming_emails: Příchozí e-maily + label_generate_key: Generovat klÃ­Ä + label_issue_watchers: Sledování + label_example: Příklad + label_display: Zobrazit + label_sort: Řazení + label_ascending: VzestupnÄ› + label_descending: SestupnÄ› + label_date_from_to: Od %{start} do %{end} + label_wiki_content_added: Wiki stránka pÅ™idána + label_wiki_content_updated: Wiki stránka aktualizována + label_group: Skupina + label_group_plural: Skupiny + label_group_new: Nová skupina + label_time_entry_plural: Strávený Äas + label_version_sharing_none: Nesdíleno + label_version_sharing_descendants: S podprojekty + label_version_sharing_hierarchy: S hierarchií projektu + label_version_sharing_tree: Se stromem projektu + label_version_sharing_system: Se vÅ¡emi projekty + label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů + label_copy_source: Zdroj + label_copy_target: Cíl + label_copy_same_as_target: Stejný jako cíl + label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou + label_api_access_key: API přístupový klÃ­Ä + label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API + label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} + label_profile: Profil + label_subtask_plural: Podúkol + label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu + label_principal_search: "Hledat uživatele nebo skupinu:" + label_user_search: "Hledat uživatele:" button_login: PÅ™ihlásit button_submit: Potvrdit @@ -618,8 +806,10 @@ button_uncheck_all: OdÅ¡rtnout vÅ¡e button_delete: Odstranit button_create: VytvoÅ™it - button_test: Test + button_create_and_continue: VytvoÅ™it a pokraÄovat + button_test: Testovat button_edit: Upravit + button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" button_add: PÅ™idat button_change: ZmÄ›nit button_apply: Použít @@ -630,6 +820,7 @@ button_list: Vypsat button_view: Zobrazit button_move: PÅ™esunout + button_move_and_follow: PÅ™esunout a následovat button_back: ZpÄ›t button_cancel: Storno button_activate: Aktivovat @@ -641,24 +832,40 @@ button_reply: OdpovÄ›dÄ›t button_archive: Archivovat button_unarchive: Odarchivovat - button_reset: Reset + button_reset: Resetovat button_rename: PÅ™ejmenovat button_change_password: ZmÄ›nit heslo button_copy: Kopírovat + button_copy_and_follow: Kopírovat a následovat button_annotate: Komentovat button_update: Aktualizovat button_configure: Konfigurovat + button_quote: Citovat + button_duplicate: Duplikát + button_show: Zobrazit status_active: aktivní status_registered: registrovaný status_locked: uzamÄený + version_status_open: otevÅ™ený + version_status_locked: uzamÄený + version_status_closed: zavÅ™ený + + field_active: Aktivní + text_select_mail_notifications: Vyberte akci pÅ™i které bude zasláno upozornÄ›ní emailem. text_regexp_info: napÅ™. ^[A-Z0-9]+$ text_min_max_length_info: 0 znamená bez limitu text_project_destroy_confirmation: Jste si jisti, že chcete odstranit tento projekt a vÅ¡echna související data ? + text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." text_workflow_edit: Vyberte roli a frontu k editaci průbÄ›hu práce text_are_you_sure: Jste si jisti? + text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? + text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" + text_journal_set_to: "%{label} nastaven na %{value}" + text_journal_deleted: "%{label} smazán (%{old})" + text_journal_added: "%{label} %{value} pÅ™idán" text_tip_issue_begin_day: úkol zaÄíná v tento den text_tip_issue_end_day: úkol konÄí v tento den text_tip_issue_begin_end_day: úkol zaÄíná a konÄí v tento den @@ -669,6 +876,7 @@ text_tracker_no_workflow: Pro tuto frontu není definován žádný průbÄ›h práce text_unallowed_characters: Nepovolené znaky text_comma_separated: Povoleno více hodnot (oddÄ›lÄ›né Äárkou). + text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). text_issues_ref_in_commit_messages: Odkazování a opravování úkolů ve zprávách commitů text_issue_added: "Úkol %{id} byl vytvoÅ™en uživatelem %{author}." text_issue_updated: "Úkol %{id} byl aktualizován uživatelem %{author}." @@ -680,15 +888,31 @@ text_no_configuration_data: "Role, fronty, stavy úkolů ani průbÄ›h práce nebyly zatím nakonfigurovány.\nVelice doporuÄujeme nahrát výchozí konfiguraci. Po té si můžete vÅ¡e upravit" text_load_default_configuration: Nahrát výchozí konfiguraci text_status_changed_by_changeset: "Použito v changesetu %{value}." + text_time_logged_by_changeset: Aplikováno v changesetu %{value}. text_issues_destroy_confirmation: 'Opravdu si pÅ™ejete odstranit vÅ¡echny zvolené úkoly?' text_select_project_modules: 'Aktivní moduly v tomto projektu:' text_default_administrator_account_changed: Výchozí nastavení administrátorského úÄtu zmÄ›nÄ›no text_file_repository_writable: Povolen zápis do adresáře ukládání souborů + text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets text_rmagick_available: RMagick k dispozici (volitelné) text_destroy_time_entries_question: "U úkolů, které chcete odstranit je evidováno %{hours} práce. Co chete udÄ›lat?" text_destroy_time_entries: Odstranit evidované hodiny. text_assign_time_entries_to_project: PÅ™iÅ™adit evidované hodiny projektu text_reassign_time_entries: 'PÅ™eÅ™adit evidované hodiny k tomuto úkolu:' + text_user_wrote: "%{value} napsal:" + text_enumeration_destroy_question: "NÄ›kolik (%{count}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." + text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' + text_email_delivery_not_configured: "DoruÄování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci." + text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky." + text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' + text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' + text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? + text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky + text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky + text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi + text_own_membership_delete_confirmation: "Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt.\nOpravdu chcete pokraÄovat?" + text_zoom_in: PÅ™iblížit + text_zoom_out: Oddálit default_role_manager: Manažer default_role_developer: Vývojář @@ -715,225 +939,9 @@ enumeration_issue_priorities: Priority úkolů enumeration_doc_categories: Kategorie dokumentů enumeration_activities: Aktivity (sledování Äasu) - error_scm_annotate: "Položka neexistuje nebo nemůže být komentována." - label_planning: Plánování - text_subprojects_destroy_warning: "Jeho podprojek(y): %{value} budou také smazány." - label_and_its_subprojects: "%{value} a jeho podprojekty" - mail_body_reminder: "%{count} úkol(ů), které máte pÅ™iÅ™azeny má termín bÄ›hem nÄ›kolik dní (%{days}):" - mail_subject_reminder: "%{count} úkol(ů) má termín bÄ›hem nÄ›kolik dní (%{days})" - text_user_wrote: "%{value} napsal:" - label_duplicated_by: duplikováno od - setting_enabled_scm: Povolené SCM - text_enumeration_category_reassign_to: 'PÅ™eÅ™adit je do této:' - text_enumeration_destroy_question: "NÄ›kolik (%{count}) objektů je pÅ™iÅ™azeno k této hodnotÄ›." - label_incoming_emails: Příchozí e-maily - label_generate_key: Generovat klÃ­Ä - setting_mail_handler_api_enabled: Povolit WS pro příchozí e-maily - setting_mail_handler_api_key: API klÃ­Ä - text_email_delivery_not_configured: "DoruÄování e-mailů není nastaveno a odesílání notifikací je zakázáno.\nNastavte Váš SMTP server v souboru config/email.yml a restartujte aplikaci." - field_parent_title: RodiÄovská stránka - label_issue_watchers: Sledování - setting_commit_logs_encoding: Kódování zpráv pÅ™i commitu - button_quote: Citovat - setting_sequential_project_identifiers: Generovat sekvenÄní identifikátory projektů - notice_unable_delete_version: Nemohu odstanit verzi - label_renamed: pÅ™ejmenováno - label_copied: zkopírováno - setting_plain_text_mail: pouze prostý text (ne HTML) - permission_view_files: Prohlížení souborů - permission_edit_issues: Upravování úkolů - permission_edit_own_time_entries: Upravování vlastních zázamů o stráveném Äase - permission_manage_public_queries: Správa veÅ™ejných dotazů - permission_add_issues: PÅ™idávání úkolů - permission_log_time: Zaznamenávání stráveného Äasu - permission_view_changesets: Zobrazování sady zmÄ›n - permission_view_time_entries: Zobrazení stráveného Äasu - permission_manage_versions: Spravování verzí - permission_manage_wiki: Spravování Wiki - permission_manage_categories: Spravování kategorií úkolů - permission_protect_wiki_pages: ZabezpeÄení Wiki stránek - permission_comment_news: Komentování novinek - permission_delete_messages: Mazání zpráv - permission_select_project_modules: VýbÄ›r modulů projektu - permission_manage_documents: Správa dokumentů - permission_edit_wiki_pages: Upravování stránek Wiki - permission_add_issue_watchers: PÅ™idání sledujících uživatelů - permission_view_gantt: Zobrazené Ganttova diagramu - permission_move_issues: PÅ™esouvání úkolů - permission_manage_issue_relations: Spravování vztahů mezi úkoly - permission_delete_wiki_pages: Mazání stránek na Wiki - permission_manage_boards: Správa diskusních fór - permission_delete_wiki_pages_attachments: Mazání příloh - permission_view_wiki_edits: Prohlížení historie Wiki - permission_add_messages: Posílání zpráv - permission_view_messages: Prohlížení zpráv - permission_manage_files: Spravování souborů - permission_edit_issue_notes: Upravování poznámek - permission_manage_news: Spravování novinek - permission_view_calendar: Prohlížení kalendáře - permission_manage_members: Spravování Älenství - permission_edit_messages: Upravování zpráv - permission_delete_issues: Mazání úkolů - permission_view_issue_watchers: Zobrazení seznamu sledujícíh uživatelů - permission_manage_repository: Spravování repozitáře - permission_commit_access: Commit přístup - permission_browse_repository: Procházení repozitáře - permission_view_documents: Prohlížení dokumentů - permission_edit_project: Úprava projektů - permission_add_issue_notes: PÅ™idávání poznámek - permission_save_queries: Ukládání dotazů - permission_view_wiki_pages: Prohlížení Wiki - permission_rename_wiki_pages: PÅ™ejmenovávání Wiki stránek - permission_edit_time_entries: Upravování záznamů o stráveném Äasu - permission_edit_own_issue_notes: Upravování vlastních poznámek - setting_gravatar_enabled: Použít uživatelské ikony Gravatar - label_example: Příklad - text_repository_usernames_mapping: "Vybrat nebo upravit mapování mezi Redmine uživateli a uživatelskými jmény nalezenými v logu repozitáře.\nUživatelé se shodným Redmine uživatelským jménem a uživatelským jménem v repozitáři jsou mapovaní automaticky." - permission_edit_own_messages: Upravit vlastní zprávy - permission_delete_own_messages: Smazat vlastní zprávy - label_user_activity: "Aktivita uživatele: %{value}" - label_updated_time_by: "Akutualizováno: %{author} pÅ™ed: %{age}" - text_diff_truncated: '... Rozdílový soubor je zkrácen, protože jeho délka pÅ™esahuje max. limit.' - setting_diff_max_lines_displayed: Maximální poÄet zobrazenách řádků rozdílů - text_plugin_assets_writable: Možnost zápisu do adresáře plugin assets - warning_attachments_not_saved: "%{count} soubor(ů) nebylo možné uložit." - button_create_and_continue: VytvoÅ™it a pokraÄovat - text_custom_field_possible_values_info: 'Každá hodnota na novém řádku' - label_display: Zobrazit - field_editable: Editovatelný - setting_repository_log_display_limit: Maximální poÄet revizí zobrazených v logu souboru - setting_file_max_size_displayed: Maximální velikost textových souborů zobrazených přímo na stránce - field_watcher: Sleduje - setting_openid: Umožnit pÅ™ihlaÅ¡ování a registrace s OpenID - field_identity_url: OpenID URL - label_login_with_open_id_option: nebo se pÅ™ihlaÅ¡te s OpenID - field_content: Obsah - label_descending: SestupnÄ› - label_sort: Řazení - label_ascending: VzestupnÄ› - label_date_from_to: Od %{start} do %{end} - label_greater_or_equal: ">=" - label_less_or_equal: <= - text_wiki_page_destroy_question: Tato stránka má %{descendants} podstránek a potomků. Co chcete udÄ›lat? - text_wiki_page_reassign_children: PÅ™iÅ™adit podstránky k tomuto rodiÄi - text_wiki_page_nullify_children: Ponechat podstránky jako koÅ™enové stránky - text_wiki_page_destroy_children: Smazat podstránky a vÅ¡echny jejich potomky - setting_password_min_length: Minimální délka hesla - field_group_by: Seskupovat výsledky podle - mail_subject_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována" - label_wiki_content_added: Wiki stránka pÅ™idána - mail_subject_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána" - mail_body_wiki_content_added: "'%{id}' Wiki stránka byla pÅ™idána od %{author}." - label_wiki_content_updated: Wiki stránka aktualizována - mail_body_wiki_content_updated: "'%{id}' Wiki stránka byla aktualizována od %{author}." - permission_add_project: VytvoÅ™it projekt - setting_new_project_user_role_id: Role pÅ™iÅ™azená uživateli bez práv administrátora, který projekt vytvoÅ™il - label_view_all_revisions: Zobrazit vÅ¡echny revize - label_tag: Tag - label_branch: Branch - error_no_tracker_in_project: Žádná fronta nebyla pÅ™iÅ™azena tomuto projektu. Prosím zkontroluje nastavení projektu. - error_no_default_issue_status: Není nastaven výchozí stav úkolu. Prosím zkontrolujte nastavení ("Administrace -> Stavy úkolů"). - text_journal_changed: "%{label} zmÄ›nÄ›n z %{old} na %{new}" - text_journal_set_to: "%{label} nastaven na %{value}" - text_journal_deleted: "%{label} smazán (%{old})" - label_group_plural: Skupiny - label_group: Skupina - label_group_new: Nová skupina - label_time_entry_plural: Strávený Äas - text_journal_added: "%{label} %{value} pÅ™idán" - field_active: Aktivní enumeration_system_activity: Systémová aktivita - permission_delete_issue_watchers: Smazat pÅ™ihlížející - version_status_closed: zavÅ™ený - version_status_locked: uzamÄený - version_status_open: otevÅ™ený - error_can_not_reopen_issue_on_closed_version: Úkol pÅ™iÅ™azený k uzavÅ™ené verzi nemůže být znovu otevÅ™en - label_user_anonymous: Anonymní - button_move_and_follow: PÅ™esunout a následovat - setting_default_projects_modules: Výchozí zapnutné moduly pro nový projekt - setting_gravatar_default: Výchozí Gravatar - field_sharing: Sdílení - label_version_sharing_hierarchy: S hierarchií projektu - label_version_sharing_system: Se vÅ¡emi projekty - label_version_sharing_descendants: S podprojekty - label_version_sharing_tree: Se stromem projektu - label_version_sharing_none: Nesdíleno - error_can_not_archive_project: Tento projekt nemůže být archivován - button_duplicate: Duplikát - button_copy_and_follow: Kopírovat a následovat - label_copy_source: Zdroj - setting_issue_done_ratio: SpoÄítat koeficient dokonÄení úkolu s - setting_issue_done_ratio_issue_status: Použít stav úkolu - error_issue_done_ratios_not_updated: Koeficient dokonÄení úkolu nebyl aktualizován. - error_workflow_copy_target: Prosím vyberte cílovou frontu(y) a roly(e) - setting_issue_done_ratio_issue_field: Použít pole úkolu - label_copy_same_as_target: Stejný jako cíl - label_copy_target: Cíl - notice_issue_done_ratios_updated: Koeficienty dokonÄení úkolu byly aktualizovány. - error_workflow_copy_source: Prosím vyberte zdrojovou frontu nebo roly - label_update_issue_done_ratios: Aktualizovat koeficienty dokonÄení úkolů - setting_start_of_week: ZaÄínat kalendáře - permission_view_issues: Zobrazit úkoly - label_display_used_statuses_only: Zobrazit pouze stavy které jsou použité touto frontou - label_revision_id: Revize %{value} - label_api_access_key: API přístupový klÃ­Ä - label_api_access_key_created_on: API přístupový klÃ­Ä vytvoÅ™en %{value} - label_feeds_access_key: RSS přístupový klÃ­Ä - notice_api_access_key_reseted: Váš API přístupový klÃ­Ä byl resetován. - setting_rest_api_enabled: Zapnout službu REST - label_missing_api_access_key: ChybÄ›jící přístupový klÃ­Ä API - label_missing_feeds_access_key: ChybÄ›jící přístupový klÃ­Ä RSS - button_show: Zobrazit - text_line_separated: Více hodnot povoleno (jeden řádek pro každou hodnotu). - setting_mail_handler_body_delimiters: Zkrátit e-maily po jednom z tÄ›chto řádků - permission_add_subprojects: VytvoÅ™it podprojekty - label_subproject_new: Nový podprojekt - text_own_membership_delete_confirmation: |- - Chystáte se odebrat si nÄ›která nebo vÅ¡echny svá oprávnÄ›ní a potom již nemusíte být schopni upravit tento projekt. - Opravdu chcete pokraÄovat? - label_close_versions: Zavřít dokonÄené verze - label_board_sticky: Nálepka - label_board_locked: UzamÄeno - permission_export_wiki_pages: Exportovat Wiki stránky - setting_cache_formatted_text: Ukládat formátovaný text do vyrovnávací pamÄ›ti - permission_manage_project_activities: Spravovat aktivity projektu - error_unable_delete_issue_status: Nelze smazat stavy úkolů - label_profile: Profil - permission_manage_subtasks: Spravovat podúkoly - field_parent_issue: RodiÄovský úkol - label_subtask_plural: Podúkol - label_project_copy_notifications: Odeslat email oznámení v průbÄ›hu kopie projektu - error_can_not_delete_custom_field: Nelze smazat volitelné pole - error_unable_to_connect: Nelze se pÅ™ipojit (%{value}) - error_can_not_remove_role: Tato role je právÄ› používaná a nelze ji smazat. - error_can_not_delete_tracker: Tato fronta obsahuje úkoly a nemůže být smazán. - field_principal: Hlavní - label_my_page_block: Bloky na mé stránce - notice_failed_to_save_members: "NepodaÅ™ilo se uložit Älena(y): %{errors}." - text_zoom_out: Oddálit - text_zoom_in: PÅ™iblížit - notice_unable_delete_time_entry: Nelze smazat Äas ze záznamu. - label_overall_spent_time: CelkovÄ› strávený Äas - field_time_entries: Zaznamenaný Äas - project_module_gantt: Gantt - project_module_calendar: Kalendář - button_edit_associated_wikipage: "Upravit pÅ™iÅ™azenou Wiki stránku: %{page_title}" - text_are_you_sure_with_children: Smazat úkol vÄetnÄ› vÅ¡ech podúkolů? - field_text: Textové pole - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/da.yml --- a/config/locales/da.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/da.yml Thu Mar 03 12:02:03 2011 +0000 @@ -754,7 +754,7 @@ setting_sequential_project_identifiers: Generér sekventielle projekt-identifikatorer setting_plain_text_mail: Emails som almindelig tekst (ingen HTML) field_parent_title: Siden over - text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slÃ¥et fra.\nKonfigurér din SMTP server i config/email.yml og genstart applikationen for at aktivere email-afsendelse." + text_email_delivery_not_configured: "Email-afsendelse er ikke indstillet og notifikationer er defor slÃ¥et fra.\nKonfigurér din SMTP server i config/configuration.yml og genstart applikationen for at aktivere email-afsendelse." permission_protect_wiki_pages: Beskyt wiki sider permission_manage_documents: Administrér dokumenter permission_add_issue_watchers: Tilføj overvÃ¥gere @@ -953,3 +953,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/de.yml --- a/config/locales/de.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/de.yml Thu Mar 03 12:02:03 2011 +0000 @@ -899,7 +899,7 @@ text_user_wrote: "%{value} schrieb:" text_enumeration_destroy_question: "%{count} Objekt(e) sind diesem Wert zugeordnet." text_enumeration_category_reassign_to: 'Die Objekte stattdessen diesem Wert zuordnen:' - text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/email.yml vor und starten Sie die Applikation neu." + text_email_delivery_not_configured: "Der SMTP-Server ist nicht konfiguriert und Mailbenachrichtigungen sind ausgeschaltet.\nNehmen Sie die Einstellungen für Ihren SMTP-Server in config/configuration.yml vor und starten Sie die Applikation neu." text_repository_usernames_mapping: "Bitte legen Sie die Zuordnung der Redmine-Benutzer zu den Benutzernamen der Commit-Log-Meldungen des Projektarchivs fest.\nBenutzer mit identischen Redmine- und Projektarchiv-Benutzernamen oder -E-Mail-Adressen werden automatisch zugeordnet." text_diff_truncated: '... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.' text_custom_field_possible_values_info: 'Eine Zeile pro Wert' @@ -954,3 +954,7 @@ setting_commit_logtime_enabled: Aktiviere Zeitlogging notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) setting_gantt_items_limit: Maximale Anzahl von Aufgaben die im Gantt-Chart angezeigt werden. + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/el.yml --- a/config/locales/el.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/el.yml Thu Mar 03 12:02:03 2011 +0000 @@ -799,7 +799,7 @@ text_user_wrote: "%{value} έγÏαψε:" text_enumeration_destroy_question: "%{count} αντικείμενα έχουν τεθεί σε αυτή την τιμή." text_enumeration_category_reassign_to: 'ΕπανεκχώÏηση τους στην παÏοÏσα αξία:' - text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/email.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." + text_email_delivery_not_configured: "Δεν έχουν γίνει Ïυθμίσεις παÏάδοσης email, και οι ειδοποιήσεις είναι απενεÏγοποιημένες.\nΔηλώστε τον εξυπηÏετητή SMTP στο config/configuration.yml και κάντε επανακκίνηση την εφαÏμογή για να τις Ïυθμίσεις." text_repository_usernames_mapping: "Επιλέξτε ή ενημεÏώστε τον χÏήστη Redmine που αντιστοιχεί σε κάθε όνομα χÏήστη στο ιστοÏικό του αποθετηÏίου.\nΧÏήστες με το ίδιο όνομα χÏήστη ή email στο Redmine και στο αποθετηÏίο αντιστοιχίζονται αυτόματα." text_diff_truncated: '... Αυτό το diff εχεί κοπεί επειδή υπεÏβαίνει το μέγιστο μέγεθος που μποÏεί να Ï€Ïοβληθεί.' text_custom_field_possible_values_info: 'Μία γÏαμμή για κάθε τιμή' @@ -937,3 +937,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/en-GB.yml --- a/config/locales/en-GB.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/en-GB.yml Thu Mar 03 12:02:03 2011 +0000 @@ -1,962 +1,946 @@ -en-GB: - direction: ltr - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d/%m/%Y" - short: "%d %b" - long: "%d %B, %Y" - - day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] - abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] - abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] - # Used in date_select and datime_select. - order: [ :year, :month, :day ] - - time: - formats: - default: "%d/%m/%Y %I:%M %p" - time: "%I:%M %p" - short: "%d %b %H:%M" - long: "%d %B, %Y %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "half a minute" - less_than_x_seconds: - one: "less than 1 second" - other: "less than %{count} seconds" - x_seconds: - one: "1 second" - other: "%{count} seconds" - less_than_x_minutes: - one: "less than a minute" - other: "less than %{count} minutes" - x_minutes: - one: "1 minute" - other: "%{count} minutes" - about_x_hours: - one: "about 1 hour" - other: "about %{count} hours" - x_days: - one: "1 day" - other: "%{count} days" - about_x_months: - one: "about 1 month" - other: "about %{count} months" - x_months: - one: "1 month" - other: "%{count} months" - about_x_years: - one: "about 1 year" - other: "about %{count} years" - over_x_years: - one: "over 1 year" - other: "over %{count} years" - almost_x_years: - one: "almost 1 year" - other: "almost %{count} years" - - number: - format: - separator: "." - delimiter: " " - precision: 3 - - currency: - format: - format: "%u%n" - unit: "£" - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "kB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "and" - skip_last_comma: false - - activerecord: - errors: - template: - header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" - messages: - inclusion: "is not included in the list" - exclusion: "is reserved" - invalid: "is invalid" - confirmation: "doesn't match confirmation" - accepted: "must be accepted" - empty: "can't be empty" - blank: "can't be blank" - too_long: "is too long (maximum is %{count} characters)" - too_short: "is too short (minimum is %{count} characters)" - wrong_length: "is the wrong length (should be %{count} characters)" - taken: "has already been taken" - not_a_number: "is not a number" - not_a_date: "is not a valid date" - greater_than: "must be greater than %{count}" - greater_than_or_equal_to: "must be greater than or equal to %{count}" - equal_to: "must be equal to %{count}" - less_than: "must be less than %{count}" - less_than_or_equal_to: "must be less than or equal to %{count}" - odd: "must be odd" - even: "must be even" - greater_than_start_date: "must be greater than start date" - not_same_project: "doesn't belong to the same project" - circular_dependency: "This relation would create a circular dependency" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" - - actionview_instancetag_blank_option: Please select - - general_text_No: 'No' - general_text_Yes: 'Yes' - general_text_no: 'no' - general_text_yes: 'yes' - general_lang_name: 'English (British)' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: ISO-8859-1 - general_pdf_encoding: ISO-8859-1 - general_first_day_of_week: '1' - - notice_account_updated: Account was successfully updated. - notice_account_invalid_creditentials: Invalid user or password - notice_account_password_updated: Password was successfully updated. - notice_account_wrong_password: Wrong password - notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. - notice_account_unknown_email: Unknown user. - notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. - notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. - notice_account_activated: Your account has been activated. You can now log in. - notice_successful_create: Successful creation. - notice_successful_update: Successful update. - notice_successful_delete: Successful deletion. - notice_successful_connection: Successful connection. - notice_file_not_found: The page you were trying to access doesn't exist or has been removed. - notice_locking_conflict: Data has been updated by another user. - notice_not_authorized: You are not authorised to access this page. - notice_email_sent: "An email was sent to %{value}" - notice_email_error: "An error occurred while sending mail (%{value})" - notice_feeds_access_key_reseted: Your RSS access key was reset. - notice_api_access_key_reseted: Your API access key was reset. - notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." - notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." - notice_account_pending: "Your account was created and is now pending administrator approval." - notice_default_data_loaded: Default configuration successfully loaded. - notice_unable_delete_version: Unable to delete version. - notice_issue_done_ratios_updated: Issue done ratios updated. - - error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" - error_scm_not_found: "The entry or revision was not found in the repository." - error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" - error_scm_annotate: "The entry does not exist or can not be annotated." - error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' - error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' - error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' - error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' - error_can_not_archive_project: This project can not be archived - error_issue_done_ratios_not_updated: "Issue done ratios not updated." - error_workflow_copy_source: 'Please select a source tracker or role' - error_workflow_copy_target: 'Please select target tracker(s) and role(s)' - - warning_attachments_not_saved: "%{count} file(s) could not be saved." - - mail_subject_lost_password: "Your %{value} password" - mail_body_lost_password: 'To change your password, click on the following link:' - mail_subject_register: "Your %{value} account activation" - mail_body_register: 'To activate your account, click on the following link:' - mail_body_account_information_external: "You can use your %{value} account to log in." - mail_body_account_information: Your account information - mail_subject_account_activation_request: "%{value} account activation request" - mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" - mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" - mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" - mail_subject_wiki_content_added: "'%{id}' wiki page has been added" - mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." - mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" - mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." - - gui_validation_error: 1 error - gui_validation_error_plural: "%{count} errors" - - field_ssamr_user_detail: - description: User Description - field_name: Name - field_description: Description - field_summary: Summary - field_is_required: Required - field_firstname: First name - field_lastname: Last name - field_mail: Email - field_filename: File - field_filesize: Size - field_downloads: Downloads - field_author: Author - field_created_on: Created - field_updated_on: Updated - field_field_format: Format - field_is_for_all: For all projects - field_possible_values: Possible values - field_regexp: Regular expression - field_min_length: Minimum length - field_max_length: Maximum length - field_value: Value - field_category: Category - field_title: Title - field_project: Project - field_issue: Issue - field_status: Status - field_notes: Notes - field_is_closed: Issue closed - field_is_default: Default value - field_tracker: Tracker - field_subject: Subject - field_due_date: Due date - field_assigned_to: Assignee - field_priority: Priority - field_fixed_version: Target version - field_user: User - field_role: Role - field_homepage: Homepage - field_is_public: Public - field_is_private: Private - field_parent: Subproject of - field_is_in_roadmap: Issues displayed in roadmap - field_login: Login - field_mail_notification: Email notifications - field_admin: Administrator - field_last_login_on: Last connection - field_language: Language - field_effective_date: Date - field_password: Password - field_new_password: New password - field_password_confirmation: Confirmation - field_version: Version - field_type: Type - field_host: Host - field_port: Port - field_account: Account - field_base_dn: Base DN - field_attr_login: Login attribute - field_attr_firstname: Firstname attribute - field_attr_lastname: Lastname attribute - field_attr_mail: Email attribute - field_onthefly: On-the-fly user creation - field_start_date: Start date - field_done_ratio: % Done - field_auth_source: Authentication mode - field_hide_mail: Hide my email address - field_comments: Comment - field_url: URL - field_start_page: Start page - field_subproject: Subproject - field_hours: Hours - field_activity: Activity - field_spent_on: Date - field_identifier: Identifier - field_is_filter: Used as a filter - field_issue_to: Related issue - field_delay: Delay - field_assignable: Issues can be assigned to this role - field_redirect_existing_links: Redirect existing links - field_estimated_hours: Estimated time - field_column_names: Columns - field_time_zone: Time zone - field_searchable: Searchable - field_default_value: Default value - field_comments_sorting: Display comments - field_parent_title: Parent page - field_editable: Editable - field_watcher: Watcher - field_identity_url: OpenID URL - field_content: Content - field_group_by: Group results by - field_sharing: Sharing - - setting_app_title: Application title - setting_app_subtitle: Application subtitle - setting_welcome_text: Welcome text - setting_tipoftheday_text: Tip of the Day - setting_notifications_text: Notifications - setting_default_language: Default language - setting_login_required: Authentication required - setting_self_registration: Self-registration - setting_attachment_max_size: Attachment max. size - setting_issues_export_limit: Issues export limit - setting_mail_from: Emission email address - setting_bcc_recipients: Blind carbon copy recipients (bcc) - setting_plain_text_mail: Plain text mail (no HTML) - setting_host_name: Host name and path - setting_text_formatting: Text formatting - setting_wiki_compression: Wiki history compression - setting_feeds_limit: Feed content limit - setting_default_projects_public: New projects are public by default - setting_autofetch_changesets: Autofetch commits - setting_sys_api_enabled: Enable WS for repository management - setting_commit_ref_keywords: Referencing keywords - setting_commit_fix_keywords: Fixing keywords - setting_autologin: Autologin - setting_date_format: Date format - setting_time_format: Time format - setting_cross_project_issue_relations: Allow cross-project issue relations - setting_issue_list_default_columns: Default columns displayed on the issue list - setting_repositories_encodings: Repositories encodings - setting_commit_logs_encoding: Commit messages encoding - setting_emails_footer: Emails footer - setting_protocol: Protocol - setting_per_page_options: Objects per page options - setting_user_format: Users display format - setting_activity_days_default: Days displayed on project activity - setting_display_subprojects_issues: Display subprojects issues on main projects by default - setting_enabled_scm: Enabled SCM - setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" - setting_mail_handler_api_enabled: Enable WS for incoming emails - setting_mail_handler_api_key: API key - setting_sequential_project_identifiers: Generate sequential project identifiers - setting_gravatar_enabled: Use Gravatar user icons - setting_gravatar_default: Default Gravatar image - setting_diff_max_lines_displayed: Max number of diff lines displayed - setting_file_max_size_displayed: Max size of text files displayed inline - setting_repository_log_display_limit: Maximum number of revisions displayed on file log - setting_openid: Allow OpenID login and registration - setting_password_min_length: Minimum password length - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - setting_default_projects_modules: Default enabled modules for new projects - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_field: Use the issue field - setting_issue_done_ratio_issue_status: Use the issue status - setting_start_of_week: Start calendars on - setting_rest_api_enabled: Enable REST web service - setting_cache_formatted_text: Cache formatted text - - permission_add_project: Create project - permission_add_subprojects: Create subprojects - permission_edit_project: Edit project - permission_select_project_modules: Select project modules - permission_manage_members: Manage members - permission_manage_project_activities: Manage project activities - permission_manage_versions: Manage versions - permission_manage_categories: Manage issue categories - permission_view_issues: View Issues - permission_add_issues: Add issues - permission_edit_issues: Edit issues - permission_manage_issue_relations: Manage issue relations - permission_add_issue_notes: Add notes - permission_edit_issue_notes: Edit notes - permission_edit_own_issue_notes: Edit own notes - permission_move_issues: Move issues - permission_delete_issues: Delete issues - permission_manage_public_queries: Manage public queries - permission_save_queries: Save queries - permission_view_gantt: View gantt chart - permission_view_calendar: View calendar - permission_view_issue_watchers: View watchers list - permission_add_issue_watchers: Add watchers - permission_delete_issue_watchers: Delete watchers - permission_log_time: Log spent time - permission_view_time_entries: View spent time - permission_edit_time_entries: Edit time logs - permission_edit_own_time_entries: Edit own time logs - permission_manage_news: Manage news - permission_comment_news: Comment news - permission_manage_documents: Manage documents - permission_view_documents: View documents - permission_manage_files: Manage files - permission_view_files: View files - permission_manage_wiki: Manage wiki - permission_rename_wiki_pages: Rename wiki pages - permission_delete_wiki_pages: Delete wiki pages - permission_view_wiki_pages: View wiki - permission_view_wiki_edits: View wiki history - permission_edit_wiki_pages: Edit wiki pages - permission_delete_wiki_pages_attachments: Delete attachments - permission_protect_wiki_pages: Protect wiki pages - permission_manage_repository: Manage repository - permission_browse_repository: Browse repository - permission_view_changesets: View changesets - permission_commit_access: Commit access - permission_manage_boards: Manage boards - permission_view_messages: View messages - permission_add_messages: Post messages - permission_edit_messages: Edit messages - permission_edit_own_messages: Edit own messages - permission_delete_messages: Delete messages - permission_delete_own_messages: Delete own messages - permission_export_wiki_pages: Export wiki pages - - project_module_issue_tracking: Issue tracking - project_module_time_tracking: Time tracking - project_module_news: News - project_module_documents: Documents - project_module_files: Files - project_module_wiki: Wiki - project_module_repository: Repository - project_module_boards: Boards - - label_tipoftheday: Tip of the day - label_notifications: Important Message - label_ssamr_description: Research description - label_ssamr_details: Other Details - - label_user: User - label_user_plural: Users - label_user_new: New user - label_user_anonymous: Anonymous - label_project: Project - label_project_new: New project - label_project_plural: Projects - label_my_project_plural: My Projects - label_other_project_plural: "Everyone Else's Projects" - label_x_projects: - zero: no projects - one: 1 project - other: "%{count} projects" - label_project_all: All Projects - label_project_latest: Latest projects - label_managers: Managed by - label_issue: Issue - label_issue_new: New issue - label_issue_plural: Issues - label_issue_view_all: View all issues - label_issues_by: "Issues by %{value}" - label_issue_added: Issue added - label_issue_updated: Issue updated - label_document: Document - label_document_new: New document - label_document_plural: Documents - label_document_added: Document added - label_role: Role - label_role_plural: Roles - label_role_new: New role - label_role_and_permissions: Roles and permissions - label_member: Member - label_member_new: New member - label_member_plural: Members - label_tracker: Tracker - label_tracker_plural: Trackers - label_tracker_new: New tracker - label_workflow: Workflow - label_issue_status: Issue status - label_issue_status_plural: Issue statuses - label_issue_status_new: New status - label_issue_category: Issue category - label_issue_category_plural: Issue categories - label_issue_category_new: New category - label_custom_field: Custom field - label_custom_field_plural: Custom fields - label_custom_field_new: New custom field - label_enumerations: Enumerations - label_enumeration_new: New value - label_information: Information - label_information_plural: Information - label_please_login: Please log in - label_register: Register - label_login_with_open_id_option: or login with OpenID - label_password_lost: Lost password - label_home: Home - label_home_heading: Welcome! - label_my_page: My page - label_my_account: My account - label_my_projects: My projects - label_administration: Administration - label_login: Sign in - label_logout: Sign out - label_help: Help - label_reported_issues: Reported issues - label_assigned_to_me_issues: Issues assigned to me - label_last_login: Last connection - label_registered_on: Registered on - label_activity: Activity - label_overall_activity: Overall activity - label_user_activity: "%{value}'s activity" - label_new: New - label_logged_as: Logged in as - label_environment: Environment - label_authentication: Authentication - label_auth_source: Authentication mode - label_auth_source_new: New authentication mode - label_auth_source_plural: Authentication modes - label_subproject_plural: Subprojects - label_subproject_new: New subproject - label_and_its_subprojects: "%{value} and its subprojects" - label_min_max_length: Min - Max length - label_list: List - label_date: Date - label_integer: Integer - label_float: Float - label_boolean: Boolean - label_string: Text - label_text: Long text - label_attribute: Attribute - label_attribute_plural: Attributes - label_download: "%{count} Download" - label_download_plural: "%{count} Downloads" - label_no_data: No data to display - label_change_status: Change status - label_history: History - label_attachment: File - label_attachment_new: New file - label_attachment_delete: Delete file - label_attachment_plural: Files - label_file_added: File added - label_report: Report - label_report_plural: Reports - label_news: News - label_news_new: Add news - label_news_plural: News - label_news_latest: Latest news - label_news_view_all: View all news - label_news_added: News added - label_settings: Settings - label_overview: Overview - label_version: Version - label_version_new: New version - label_version_plural: Versions - label_close_versions: Close completed versions - label_confirmation: Confirmation - label_export_to: 'Also available in:' - label_read: Read... - label_public_projects: Public projects - label_open_issues: open - label_open_issues_plural: open - label_closed_issues: closed - label_closed_issues_plural: closed - label_x_open_issues_abbr_on_total: - zero: 0 open / %{total} - one: 1 open / %{total} - other: "%{count} open / %{total}" - label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "%{count} open" - label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "%{count} closed" - label_total: Total - label_permissions: Permissions - label_current_status: Current status - label_new_statuses_allowed: New statuses allowed - label_all: all - label_none: none - label_nobody: nobody - label_next: Next - label_previous: Previous - label_used_by: Used by - label_details: Details - label_add_note: Add a note - label_per_page: Per page - label_calendar: Calendar - label_months_from: months from - label_gantt: Gantt - label_internal: Internal - label_last_changes: "last %{count} changes" - label_change_view_all: View all changes - label_personalize_page: Personalise this page - label_comment: Comment - label_comment_plural: Comments - label_x_comments: - zero: no comments - one: 1 comment - other: "%{count} comments" - label_comment_add: Add a comment - label_comment_added: Comment added - label_comment_delete: Delete comments - label_query: Custom query - label_query_plural: Custom queries - label_query_new: New query - label_filter_add: Add filter - label_filter_plural: Filters - label_equals: is - label_not_equals: is not - label_in_less_than: in less than - label_in_more_than: in more than - label_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: in - label_today: today - label_all_time: all time - label_yesterday: yesterday - label_this_week: this week - label_last_week: last week - label_last_n_days: "last %{count} days" - label_this_month: this month - label_last_month: last month - label_this_year: this year - label_date_range: Date range - label_less_than_ago: less than days ago - label_more_than_ago: more than days ago - label_ago: days ago - label_contains: contains - label_not_contains: doesn't contain - label_day_plural: days - label_repository: Repository - label_repository_plural: Repositories - label_browse: Browse - label_modification: "%{count} change" - label_modification_plural: "%{count} changes" - label_branch: Branch - label_tag: Tag - label_revision: Revision - label_revision_plural: Revisions - label_revision_id: "Revision %{value}" - label_associated_revisions: Associated revisions - label_added: added - label_modified: modified - label_copied: copied - label_renamed: renamed - label_deleted: deleted - label_latest_revision: Latest revision - label_latest_revision_plural: Latest revisions - label_view_revisions: View revisions - label_view_all_revisions: View all revisions - label_max_size: Maximum size - label_sort_highest: Move to top - label_sort_higher: Move up - label_sort_lower: Move down - label_sort_lowest: Move to bottom - label_roadmap: Roadmap - label_roadmap_due_in: "Due in %{value}" - label_roadmap_overdue: "%{value} late" - label_roadmap_no_issues: No issues for this version - label_search: Search - label_result_plural: Results - label_all_words: All words - label_wiki: Wiki - label_wiki_edit: Wiki edit - label_wiki_edit_plural: Wiki edits - label_wiki_page: Wiki page - label_wiki_page_plural: Wiki pages - label_index_by_title: Index by title - label_index_by_date: Index by date - label_current_version: Current version - label_preview: Preview - label_feed_plural: Feeds - label_changes_details: Details of all changes - label_issue_tracking: Issue tracking - label_spent_time: Spent time - label_f_hour: "%{value} hour" - label_f_hour_plural: "%{value} hours" - label_time_tracking: Time tracking - label_change_plural: Changes - label_statistics: Statistics - label_commits_per_month: Commits per month - label_commits_per_author: Commits per author - label_view_diff: View differences - label_diff_inline: inline - label_diff_side_by_side: side by side - label_options: Options - label_copy_workflow_from: Copy workflow from - label_permissions_report: Permissions report - label_watched_issues: Watched issues - label_related_issues: Related issues - label_applied_status: Applied status - label_loading: Loading... - label_relation_new: New relation - label_relation_delete: Delete relation - label_relates_to: related to - label_duplicates: duplicates - label_duplicated_by: duplicated by - label_blocks: blocks - label_blocked_by: blocked by - label_precedes: precedes - label_follows: follows - label_end_to_start: end to start - label_end_to_end: end to end - label_start_to_start: start to start - label_start_to_end: start to end - label_stay_logged_in: Stay logged in - label_disabled: disabled - label_show_completed_versions: Show completed versions - label_me: me - label_board: Forum - label_board_new: New forum - label_board_plural: Forums - label_board_locked: Locked - label_board_sticky: Sticky - label_topic_plural: Topics - label_message_plural: Messages - label_message_last: Last message - label_message_new: New message - label_message_posted: Message added - label_reply_plural: Replies - label_send_information: Send account information to the user - label_year: Year - label_month: Month - label_week: Week - label_date_from: From - label_date_to: To - label_language_based: "Based on user's language" - label_sort_by: "Sort by %{value}" - label_send_test_email: Send a test email - label_feeds_access_key: RSS access key - label_missing_feeds_access_key: Missing a RSS access key - label_feeds_access_key_created_on: "RSS access key created %{value} ago" - label_module_plural: Modules - label_added_time_by: "Added by %{author} %{age} ago" - label_updated_time_by: "Updated by %{author} %{age} ago" - label_updated_time: "Updated %{value} ago" - label_jump_to_a_project: Jump to a project... - label_file_plural: Files - label_changeset_plural: Changesets - label_default_columns: Default columns - label_no_change_option: (No change) - label_bulk_edit_selected_issues: Bulk edit selected issues - label_theme: Theme - label_default: Default - label_search_titles_only: Search titles only - label_user_mail_option_all: "For any event on all my projects" - label_user_mail_option_selected: "For any event on the selected projects only..." - label_user_mail_option_none: "No events" - label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" - label_registration_activation_by_email: account activation by email - label_registration_manual_activation: manual account activation - label_registration_automatic_activation: automatic account activation - label_display_per_page: "Per page: %{value}" - label_age: Age - label_change_properties: Change properties - label_general: General - label_more: More - label_scm: SCM - label_plugins: Plugins - label_ldap_authentication: LDAP authentication - label_downloads_abbr: D/L - label_optional_description: Optional description - label_add_another_file: Add another file - label_preferences: Preferences - label_chronological_order: In chronological order - label_reverse_chronological_order: In reverse chronological order - label_planning: Planning - label_incoming_emails: Incoming emails - label_generate_key: Generate a key - label_issue_watchers: Watchers - label_example: Example - label_display: Display - label_sort: Sort - label_ascending: Ascending - label_descending: Descending - label_date_from_to: From %{start} to %{end} - label_wiki_content_added: Wiki page added - label_wiki_content_updated: Wiki page updated - label_group: Group - label_group_plural: Groups - label_group_new: New group - label_time_entry_plural: Spent time - label_version_sharing_none: Not shared - label_version_sharing_descendants: With subprojects - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_tree: With project tree - label_version_sharing_system: With all projects - label_update_issue_done_ratios: Update issue done ratios - label_copy_source: Source - label_copy_target: Target - label_copy_same_as_target: Same as target - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_api_access_key: API access key - label_missing_api_access_key: Missing an API access key - label_api_access_key_created_on: "API access key created %{value} ago" - - button_login: Login - button_submit: Submit - button_save: Save - button_check_all: Check all - button_uncheck_all: Uncheck all - button_delete: Delete - button_create: Create - button_create_and_continue: Create and continue - button_test: Test - button_edit: Edit - button_add: Add - button_change: Change - button_apply: Apply - button_clear: Clear - button_lock: Lock - button_unlock: Unlock - button_download: Download - button_list: List - button_view: View - button_move: Move - button_move_and_follow: Move and follow - button_back: Back - button_cancel: Cancel - button_activate: Activate - button_sort: Sort - button_log_time: Log time - button_rollback: Rollback to this version - button_watch: Watch - button_unwatch: Unwatch - button_reply: Reply - button_archive: Archive - button_unarchive: Unarchive - button_reset: Reset - button_rename: Rename - button_change_password: Change password - button_copy: Copy - button_copy_and_follow: Copy and follow - button_annotate: Annotate - button_update: Update - button_configure: Configure - button_quote: Quote - button_duplicate: Duplicate - button_show: Show - - status_active: active - status_registered: registered - status_locked: locked - - version_status_open: open - version_status_locked: locked - version_status_closed: closed - - field_active: Active - - text_select_mail_notifications: Select actions for which email notifications should be sent. - text_regexp_info: eg. ^[A-Z0-9]+$ - text_min_max_length_info: 0 means no restriction - text_project_destroy_confirmation: Are you sure you want to delete this project and related data? - text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." - text_workflow_edit: Select a role and a tracker to edit the workflow - text_are_you_sure: Are you sure? - text_journal_changed: "%{label} changed from %{old} to %{new}" - text_journal_set_to: "%{label} set to %{value}" - text_journal_deleted: "%{label} deleted (%{old})" - text_journal_added: "%{label} %{value} added" - text_tip_issue_begin_day: task beginning this day - text_tip_issue_end_day: task ending this day - text_tip_issue_begin_end_day: task beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    This will be used in all project-related URLs, and as the repository name. Once saved, the identifier can not be changed.' - text_caracters_maximum: "%{count} characters maximum." - text_caracters_minimum: "Must be at least %{count} characters long." - text_length_between: "Length between %{min} and %{max} characters." - text_project_homepage_info: 'Link to an external project page.' - text_project_name_info: "This will be the name of your project throughout this site.
    You can change your project's name at any time, in the project's settings." - text_project_visibility_info: "If your project is not public, it will only be visible to users that you have added as project members." - text_user_ssamr_description_info: 'Please describe your current research or development interests, within the fields of audio and music.
    This information is publicly visible in your profile and you can edit it at any time.
    It may also be used to establish eligibility for your initial registration.' - text_issue_parent_issue_info: 'If this is a subtask, please insert its parent task number or write the main task name.' - text_tracker_no_workflow: No workflow defined for this tracker - text_unallowed_characters: Unallowed characters - text_comma_separated: Multiple values allowed (comma separated). - text_line_separated: Multiple values allowed (one line for each value). - text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages - text_issue_added: "Issue %{id} has been reported by %{author}." - text_issue_updated: "Issue %{id} has been updated by %{author}." - text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? - text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" - text_issue_category_destroy_assignments: Remove category assignments - text_issue_category_reassign_to: Reassign issues to this category - text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." - text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." - text_load_default_configuration: Load the default configuration - text_status_changed_by_changeset: "Applied in changeset %{value}." - text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' - text_select_project_modules: 'Select modules to enable for this project:' - text_default_administrator_account_changed: Default administrator account changed - text_file_repository_writable: Attachments directory writable - text_plugin_assets_writable: Plugin assets directory writable - text_rmagick_available: RMagick available (optional) - text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" - text_destroy_time_entries: Delete reported hours - text_assign_time_entries_to_project: Assign reported hours to the project - text_reassign_time_entries: 'Reassign reported hours to this issue:' - text_user_wrote: "%{value} wrote:" - text_enumeration_destroy_question: "%{count} objects are assigned to this value." - text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." - text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." - text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' - text_custom_field_possible_values_info: 'One line for each value' - text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" - text_wiki_page_nullify_children: "Keep child pages as root pages" - text_wiki_page_destroy_children: "Delete child pages and all their descendants" - text_wiki_page_reassign_children: "Reassign child pages to this parent page" - text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" - text_settings_repo_creation: The repository for a project should be set up automatically within a few minutes of the project being created.
    You should not have to adjust any settings here; please check again in ten minutes. - - default_role_manager: Manager - default_role_developer: Developer - default_role_reporter: Reporter - default_tracker_bug: Bug - default_tracker_feature: Feature - default_tracker_support: Support - default_issue_status_new: New - default_issue_status_in_progress: In Progress - default_issue_status_resolved: Resolved - default_issue_status_feedback: Feedback - default_issue_status_closed: Closed - default_issue_status_rejected: Rejected - default_doc_category_user: User documentation - default_doc_category_tech: Technical documentation - default_priority_low: Low - default_priority_normal: Normal - default_priority_high: High - default_priority_urgent: Urgent - default_priority_immediate: Immediate - default_activity_design: Design - default_activity_development: Development - - enumeration_issue_priorities: Issue priorities - enumeration_doc_categories: Document categories - enumeration_activities: Activities (time tracking) - enumeration_system_activity: System Activity - - notice_unable_delete_time_entry: Unable to delete time log entry. - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect (%{value}) - label_overall_spent_time: Overall spent time - error_can_not_remove_role: This role is in use and can not be deleted. - field_principal: Principal - field_parent_issue: Parent task - label_my_page_block: My page block - text_zoom_out: Zoom out - text_zoom_in: Zoom in - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - label_project_copy_notifications: Send email notifications during the project copy - field_time_entries: Log time - project_module_gantt: Gantt - project_module_calendar: Calendar - field_member_of_group: Member of Group - field_assigned_to_role: Member of Role - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search by name:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart +en-GB: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d/%m/%Y" + short: "%d %b" + long: "%d %B, %Y" + + day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] + abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December] + abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec] + # Used in date_select and datime_select. + order: [ :year, :month, :day ] + + time: + formats: + default: "%d/%m/%Y %I:%M %p" + time: "%I:%M %p" + short: "%d %b %H:%M" + long: "%d %B, %Y %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "half a minute" + less_than_x_seconds: + one: "less than 1 second" + other: "less than %{count} seconds" + x_seconds: + one: "1 second" + other: "%{count} seconds" + less_than_x_minutes: + one: "less than a minute" + other: "less than %{count} minutes" + x_minutes: + one: "1 minute" + other: "%{count} minutes" + about_x_hours: + one: "about 1 hour" + other: "about %{count} hours" + x_days: + one: "1 day" + other: "%{count} days" + about_x_months: + one: "about 1 month" + other: "about %{count} months" + x_months: + one: "1 month" + other: "%{count} months" + about_x_years: + one: "about 1 year" + other: "about %{count} years" + over_x_years: + one: "over 1 year" + other: "over %{count} years" + almost_x_years: + one: "almost 1 year" + other: "almost %{count} years" + + number: + format: + separator: "." + delimiter: " " + precision: 3 + + currency: + format: + format: "%u%n" + unit: "£" + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "kB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "and" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 error prohibited this %{model} from being saved" + other: "%{count} errors prohibited this %{model} from being saved" + messages: + inclusion: "is not included in the list" + exclusion: "is reserved" + invalid: "is invalid" + confirmation: "doesn't match confirmation" + accepted: "must be accepted" + empty: "can't be empty" + blank: "can't be blank" + too_long: "is too long (maximum is %{count} characters)" + too_short: "is too short (minimum is %{count} characters)" + wrong_length: "is the wrong length (should be %{count} characters)" + taken: "has already been taken" + not_a_number: "is not a number" + not_a_date: "is not a valid date" + greater_than: "must be greater than %{count}" + greater_than_or_equal_to: "must be greater than or equal to %{count}" + equal_to: "must be equal to %{count}" + less_than: "must be less than %{count}" + less_than_or_equal_to: "must be less than or equal to %{count}" + odd: "must be odd" + even: "must be even" + greater_than_start_date: "must be greater than start date" + not_same_project: "doesn't belong to the same project" + circular_dependency: "This relation would create a circular dependency" + cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + + actionview_instancetag_blank_option: Please select + + general_text_No: 'No' + general_text_Yes: 'Yes' + general_text_no: 'no' + general_text_yes: 'yes' + general_lang_name: 'English (British)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: ISO-8859-1 + general_pdf_encoding: ISO-8859-1 + general_first_day_of_week: '1' + + notice_account_updated: Account was successfully updated. + notice_account_invalid_creditentials: Invalid user or password + notice_account_password_updated: Password was successfully updated. + notice_account_wrong_password: Wrong password + notice_account_register_done: Account was successfully created. To activate your account, click on the link that was emailed to you. + notice_account_unknown_email: Unknown user. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Successful creation. + notice_successful_update: Successful update. + notice_successful_delete: Successful deletion. + notice_successful_connection: Successful connection. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorised to access this page. + notice_email_sent: "An email was sent to %{value}" + notice_email_error: "An error occurred while sending mail (%{value})" + notice_feeds_access_key_reseted: Your RSS access key was reset. + notice_api_access_key_reseted: Your API access key was reset. + notice_failed_to_save_issues: "Failed to save %{count} issue(s) on %{total} selected: %{ids}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_issue_done_ratios_updated: Issue done ratios updated. + + error_can_t_load_default_data: "Default configuration could not be loaded: %{value}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: %{value}" + error_scm_annotate: "The entry does not exist or can not be annotated." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' + error_can_not_archive_project: This project can not be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + + warning_attachments_not_saved: "%{count} file(s) could not be saved." + + mail_subject_lost_password: "Your %{value} password" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your %{value} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your %{value} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "%{value} account activation request" + mail_body_account_activation_request: "A new user (%{value}) has registered. The account is pending your approval:" + mail_subject_reminder: "%{count} issue(s) due in the next %{days} days" + mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" + mail_subject_wiki_content_added: "'%{id}' wiki page has been added" + mail_body_wiki_content_added: "The '%{id}' wiki page has been added by %{author}." + mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated" + mail_body_wiki_content_updated: "The '%{id}' wiki page has been updated by %{author}." + + gui_validation_error: 1 error + gui_validation_error_plural: "%{count} errors" + + field_name: Name + field_description: Description + field_summary: Summary + field_is_required: Required + field_firstname: Firstname + field_lastname: Lastname + field_mail: Email + field_filename: File + field_filesize: Size + field_downloads: Downloads + field_author: Author + field_created_on: Created + field_updated_on: Updated + field_field_format: Format + field_is_for_all: For all projects + field_possible_values: Possible values + field_regexp: Regular expression + field_min_length: Minimum length + field_max_length: Maximum length + field_value: Value + field_category: Category + field_title: Title + field_project: Project + field_issue: Issue + field_status: Status + field_notes: Notes + field_is_closed: Issue closed + field_is_default: Default value + field_tracker: Tracker + field_subject: Subject + field_due_date: Due date + field_assigned_to: Assignee + field_priority: Priority + field_fixed_version: Target version + field_user: User + field_role: Role + field_homepage: Homepage + field_is_public: Public + field_parent: Subproject of + field_is_in_roadmap: Issues displayed in roadmap + field_login: Login + field_mail_notification: Email notifications + field_admin: Administrator + field_last_login_on: Last connection + field_language: Language + field_effective_date: Date + field_password: Password + field_new_password: New password + field_password_confirmation: Confirmation + field_version: Version + field_type: Type + field_host: Host + field_port: Port + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: On-the-fly user creation + field_start_date: Start date + field_done_ratio: % Done + field_auth_source: Authentication mode + field_hide_mail: Hide my email address + field_comments: Comment + field_url: URL + field_start_page: Start page + field_subproject: Subproject + field_hours: Hours + field_activity: Activity + field_spent_on: Date + field_identifier: Identifier + field_is_filter: Used as a filter + field_issue_to: Related issue + field_delay: Delay + field_assignable: Issues can be assigned to this role + field_redirect_existing_links: Redirect existing links + field_estimated_hours: Estimated time + field_column_names: Columns + field_time_zone: Time zone + field_searchable: Searchable + field_default_value: Default value + field_comments_sorting: Display comments + field_parent_title: Parent page + field_editable: Editable + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Content + field_group_by: Group results by + field_sharing: Sharing + + setting_app_title: Application title + setting_app_subtitle: Application subtitle + setting_welcome_text: Welcome text + setting_default_language: Default language + setting_login_required: Authentication required + setting_self_registration: Self-registration + setting_attachment_max_size: Attachment max. size + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Plain text mail (no HTML) + setting_host_name: Host name and path + setting_text_formatting: Text formatting + setting_wiki_compression: Wiki history compression + setting_feeds_limit: Feed content limit + setting_default_projects_public: New projects are public by default + setting_autofetch_changesets: Autofetch commits + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Autologin + setting_date_format: Date format + setting_time_format: Time format + setting_cross_project_issue_relations: Allow cross-project issue relations + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Repositories encodings + setting_commit_logs_encoding: Commit messages encoding + setting_emails_footer: Emails footer + setting_protocol: Protocol + setting_per_page_options: Objects per page options + setting_user_format: Users display format + setting_activity_days_default: Days displayed on project activity + setting_display_subprojects_issues: Display subprojects issues on main projects by default + setting_enabled_scm: Enabled SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API key + setting_sequential_project_identifiers: Generate sequential project identifiers + setting_gravatar_enabled: Use Gravatar user icons + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Allow OpenID login and registration + setting_password_min_length: Minimum password length + setting_new_project_user_role_id: Role given to a non-admin user who creates a project + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + + permission_add_project: Create project + permission_add_subprojects: Create subprojects + permission_edit_project: Edit project + permission_select_project_modules: Select project modules + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: View Issues + permission_add_issues: Add issues + permission_edit_issues: Edit issues + permission_manage_issue_relations: Manage issue relations + permission_add_issue_notes: Add notes + permission_edit_issue_notes: Edit notes + permission_edit_own_issue_notes: Edit own notes + permission_move_issues: Move issues + permission_delete_issues: Delete issues + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Log spent time + permission_view_time_entries: View spent time + permission_edit_time_entries: Edit time logs + permission_edit_own_time_entries: Edit own time logs + permission_manage_news: Manage news + permission_comment_news: Comment news + permission_manage_documents: Manage documents + permission_view_documents: View documents + permission_manage_files: Manage files + permission_view_files: View files + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Rename wiki pages + permission_delete_wiki_pages: Delete wiki pages + permission_view_wiki_pages: View wiki + permission_view_wiki_edits: View wiki history + permission_edit_wiki_pages: Edit wiki pages + permission_delete_wiki_pages_attachments: Delete attachments + permission_protect_wiki_pages: Protect wiki pages + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage boards + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Edit messages + permission_edit_own_messages: Edit own messages + permission_delete_messages: Delete messages + permission_delete_own_messages: Delete own messages + permission_export_wiki_pages: Export wiki pages + + project_module_issue_tracking: Issue tracking + project_module_time_tracking: Time tracking + project_module_news: News + project_module_documents: Documents + project_module_files: Files + project_module_wiki: Wiki + project_module_repository: Repository + project_module_boards: Boards + + label_user: User + label_user_plural: Users + label_user_new: New user + label_user_anonymous: Anonymous + label_project: Project + label_project_new: New project + label_project_plural: Projects + label_x_projects: + zero: no projects + one: 1 project + other: "%{count} projects" + label_project_all: All Projects + label_project_latest: Latest projects + label_issue: Issue + label_issue_new: New issue + label_issue_plural: Issues + label_issue_view_all: View all issues + label_issues_by: "Issues by %{value}" + label_issue_added: Issue added + label_issue_updated: Issue updated + label_document: Document + label_document_new: New document + label_document_plural: Documents + label_document_added: Document added + label_role: Role + label_role_plural: Roles + label_role_new: New role + label_role_and_permissions: Roles and permissions + label_member: Member + label_member_new: New member + label_member_plural: Members + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Issue status + label_issue_status_plural: Issue statuses + label_issue_status_new: New status + label_issue_category: Issue category + label_issue_category_plural: Issue categories + label_issue_category_new: New category + label_custom_field: Custom field + label_custom_field_plural: Custom fields + label_custom_field_new: New custom field + label_enumerations: Enumerations + label_enumeration_new: New value + label_information: Information + label_information_plural: Information + label_please_login: Please log in + label_register: Register + label_login_with_open_id_option: or login with OpenID + label_password_lost: Lost password + label_home: Home + label_my_page: My page + label_my_account: My account + label_my_projects: My projects + label_administration: Administration + label_login: Sign in + label_logout: Sign out + label_help: Help + label_reported_issues: Reported issues + label_assigned_to_me_issues: Issues assigned to me + label_last_login: Last connection + label_registered_on: Registered on + label_activity: Activity + label_overall_activity: Overall activity + label_user_activity: "%{value}'s activity" + label_new: New + label_logged_as: Logged in as + label_environment: Environment + label_authentication: Authentication + label_auth_source: Authentication mode + label_auth_source_new: New authentication mode + label_auth_source_plural: Authentication modes + label_subproject_plural: Subprojects + label_subproject_new: New subproject + label_and_its_subprojects: "%{value} and its subprojects" + label_min_max_length: Min - Max length + label_list: List + label_date: Date + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Text + label_text: Long text + label_attribute: Attribute + label_attribute_plural: Attributes + label_download: "%{count} Download" + label_download_plural: "%{count} Downloads" + label_no_data: No data to display + label_change_status: Change status + label_history: History + label_attachment: File + label_attachment_new: New file + label_attachment_delete: Delete file + label_attachment_plural: Files + label_file_added: File added + label_report: Report + label_report_plural: Reports + label_news: News + label_news_new: Add news + label_news_plural: News + label_news_latest: Latest news + label_news_view_all: View all news + label_news_added: News added + label_settings: Settings + label_overview: Overview + label_version: Version + label_version_new: New version + label_version_plural: Versions + label_close_versions: Close completed versions + label_confirmation: Confirmation + label_export_to: 'Also available in:' + label_read: Read... + label_public_projects: Public projects + label_open_issues: open + label_open_issues_plural: open + label_closed_issues: closed + label_closed_issues_plural: closed + label_x_open_issues_abbr_on_total: + zero: 0 open / %{total} + one: 1 open / %{total} + other: "%{count} open / %{total}" + label_x_open_issues_abbr: + zero: 0 open + one: 1 open + other: "%{count} open" + label_x_closed_issues_abbr: + zero: 0 closed + one: 1 closed + other: "%{count} closed" + label_total: Total + label_permissions: Permissions + label_current_status: Current status + label_new_statuses_allowed: New statuses allowed + label_all: all + label_none: none + label_nobody: nobody + label_next: Next + label_previous: Previous + label_used_by: Used by + label_details: Details + label_add_note: Add a note + label_per_page: Per page + label_calendar: Calendar + label_months_from: months from + label_gantt: Gantt + label_internal: Internal + label_last_changes: "last %{count} changes" + label_change_view_all: View all changes + label_personalize_page: Personalise this page + label_comment: Comment + label_comment_plural: Comments + label_x_comments: + zero: no comments + one: 1 comment + other: "%{count} comments" + label_comment_add: Add a comment + label_comment_added: Comment added + label_comment_delete: Delete comments + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_filter_add: Add filter + label_filter_plural: Filters + label_equals: is + label_not_equals: is not + label_in_less_than: in less than + label_in_more_than: in more than + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: in + label_today: today + label_all_time: all time + label_yesterday: yesterday + label_this_week: this week + label_last_week: last week + label_last_n_days: "last %{count} days" + label_this_month: this month + label_last_month: last month + label_this_year: this year + label_date_range: Date range + label_less_than_ago: less than days ago + label_more_than_ago: more than days ago + label_ago: days ago + label_contains: contains + label_not_contains: doesn't contain + label_day_plural: days + label_repository: Repository + label_repository_plural: Repositories + label_browse: Browse + label_modification: "%{count} change" + label_modification_plural: "%{count} changes" + label_branch: Branch + label_tag: Tag + label_revision: Revision + label_revision_plural: Revisions + label_revision_id: "Revision %{value}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Latest revision + label_latest_revision_plural: Latest revisions + label_view_revisions: View revisions + label_view_all_revisions: View all revisions + label_max_size: Maximum size + label_sort_highest: Move to top + label_sort_higher: Move up + label_sort_lower: Move down + label_sort_lowest: Move to bottom + label_roadmap: Roadmap + label_roadmap_due_in: "Due in %{value}" + label_roadmap_overdue: "%{value} late" + label_roadmap_no_issues: No issues for this version + label_search: Search + label_result_plural: Results + label_all_words: All words + label_wiki: Wiki + label_wiki_edit: Wiki edit + label_wiki_edit_plural: Wiki edits + label_wiki_page: Wiki page + label_wiki_page_plural: Wiki pages + label_index_by_title: Index by title + label_index_by_date: Index by date + label_current_version: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Details of all changes + label_issue_tracking: Issue tracking + label_spent_time: Spent time + label_f_hour: "%{value} hour" + label_f_hour_plural: "%{value} hours" + label_time_tracking: Time tracking + label_change_plural: Changes + label_statistics: Statistics + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Options + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Related issues + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: New relation + label_relation_delete: Delete relation + label_relates_to: related to + label_duplicates: duplicates + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: blocked by + label_precedes: precedes + label_follows: follows + label_end_to_start: end to start + label_end_to_end: end to end + label_start_to_start: start to start + label_start_to_end: start to end + label_stay_logged_in: Stay logged in + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: me + label_board: Forum + label_board_new: New forum + label_board_plural: Forums + label_board_locked: Locked + label_board_sticky: Sticky + label_topic_plural: Topics + label_message_plural: Messages + label_message_last: Last message + label_message_new: New message + label_message_posted: Message added + label_reply_plural: Replies + label_send_information: Send account information to the user + label_year: Year + label_month: Month + label_week: Week + label_date_from: From + label_date_to: To + label_language_based: Based on user's language + label_sort_by: "Sort by %{value}" + label_send_test_email: Send a test email + label_feeds_access_key: RSS access key + label_missing_feeds_access_key: Missing a RSS access key + label_feeds_access_key_created_on: "RSS access key created %{value} ago" + label_module_plural: Modules + label_added_time_by: "Added by %{author} %{age} ago" + label_updated_time_by: "Updated by %{author} %{age} ago" + label_updated_time: "Updated %{value} ago" + label_jump_to_a_project: Jump to a project... + label_file_plural: Files + label_changeset_plural: Changesets + label_default_columns: Default columns + label_no_change_option: (No change) + label_bulk_edit_selected_issues: Bulk edit selected issues + label_theme: Theme + label_default: Default + label_search_titles_only: Search titles only + label_user_mail_option_all: "For any event on all my projects" + label_user_mail_option_selected: "For any event on the selected projects only..." + label_user_mail_option_none: "No events" + label_user_mail_no_self_notified: "I don't want to be notified of changes that I make myself" + label_registration_activation_by_email: account activation by email + label_registration_manual_activation: manual account activation + label_registration_automatic_activation: automatic account activation + label_display_per_page: "Per page: %{value}" + label_age: Age + label_change_properties: Change properties + label_general: General + label_more: More + label_scm: SCM + label_plugins: Plugins + label_ldap_authentication: LDAP authentication + label_downloads_abbr: D/L + label_optional_description: Optional description + label_add_another_file: Add another file + label_preferences: Preferences + label_chronological_order: In chronological order + label_reverse_chronological_order: In reverse chronological order + label_planning: Planning + label_incoming_emails: Incoming emails + label_generate_key: Generate a key + label_issue_watchers: Watchers + label_example: Example + label_display: Display + label_sort: Sort + label_ascending: Ascending + label_descending: Descending + label_date_from_to: From %{start} to %{end} + label_wiki_content_added: Wiki page added + label_wiki_content_updated: Wiki page updated + label_group: Group + label_group_plural: Groups + label_group_new: New group + label_time_entry_plural: Spent time + label_version_sharing_none: Not shared + label_version_sharing_descendants: With subprojects + label_version_sharing_hierarchy: With project hierarchy + label_version_sharing_tree: With project tree + label_version_sharing_system: With all projects + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Source + label_copy_target: Target + label_copy_same_as_target: Same as target + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API access key + label_missing_api_access_key: Missing an API access key + label_api_access_key_created_on: "API access key created %{value} ago" + + button_login: Login + button_submit: Submit + button_save: Save + button_check_all: Check all + button_uncheck_all: Uncheck all + button_delete: Delete + button_create: Create + button_create_and_continue: Create and continue + button_test: Test + button_edit: Edit + button_add: Add + button_change: Change + button_apply: Apply + button_clear: Clear + button_lock: Lock + button_unlock: Unlock + button_download: Download + button_list: List + button_view: View + button_move: Move + button_move_and_follow: Move and follow + button_back: Back + button_cancel: Cancel + button_activate: Activate + button_sort: Sort + button_log_time: Log time + button_rollback: Rollback to this version + button_watch: Watch + button_unwatch: Unwatch + button_reply: Reply + button_archive: Archive + button_unarchive: Unarchive + button_reset: Reset + button_rename: Rename + button_change_password: Change password + button_copy: Copy + button_copy_and_follow: Copy and follow + button_annotate: Annotate + button_update: Update + button_configure: Configure + button_quote: Quote + button_duplicate: Duplicate + button_show: Show + + status_active: active + status_registered: registered + status_locked: locked + + version_status_open: open + version_status_locked: locked + version_status_closed: closed + + field_active: Active + + text_select_mail_notifications: Select actions for which email notifications should be sent. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 means no restriction + text_project_destroy_confirmation: Are you sure you want to delete this project and related data? + text_subprojects_destroy_warning: "Its subproject(s): %{value} will be also deleted." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Are you sure? + text_journal_changed: "%{label} changed from %{old} to %{new}" + text_journal_set_to: "%{label} set to %{value}" + text_journal_deleted: "%{label} deleted (%{old})" + text_journal_added: "%{label} %{value} added" + text_tip_issue_begin_day: task beginning this day + text_tip_issue_end_day: task ending this day + text_tip_issue_begin_end_day: task beginning and ending this day + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier can not be changed.' + text_caracters_maximum: "%{count} characters maximum." + text_caracters_minimum: "Must be at least %{count} characters long." + text_length_between: "Length between %{min} and %{max} characters." + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Unallowed characters + text_comma_separated: Multiple values allowed (comma separated). + text_line_separated: Multiple values allowed (one line for each value). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Issue %{id} has been reported by %{author}." + text_issue_updated: "Issue %{id} has been updated by %{author}." + text_wiki_destroy_confirmation: Are you sure you want to delete this wiki and all its content? + text_issue_category_destroy_question: "Some issues (%{count}) are assigned to this category. What do you want to do?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Reassign issues to this category + text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." + text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset %{value}." + text_issues_destroy_confirmation: 'Are you sure you want to delete the selected issue(s)?' + text_select_project_modules: 'Select modules to enable for this project:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Attachments directory writable + text_plugin_assets_writable: Plugin assets directory writable + text_rmagick_available: RMagick available (optional) + text_destroy_time_entries_question: "%{hours} hours were reported on the issues you are about to delete. What do you want to do?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Assign reported hours to the project + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "%{value} wrote:" + text_enumeration_destroy_question: "%{count} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." + text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has %{descendants} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + + default_role_manager: Manager + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Bug + default_tracker_feature: Feature + default_tracker_support: Support + default_issue_status_new: New + default_issue_status_in_progress: In Progress + default_issue_status_resolved: Resolved + default_issue_status_feedback: Feedback + default_issue_status_closed: Closed + default_issue_status_rejected: Rejected + default_doc_category_user: User documentation + default_doc_category_tech: Technical documentation + default_priority_low: Low + default_priority_normal: Normal + default_priority_high: High + default_priority_urgent: Urgent + default_priority_immediate: Immediate + default_activity_design: Design + default_activity_development: Development + + enumeration_issue_priorities: Issue priorities + enumeration_doc_categories: Document categories + enumeration_activities: Activities (time tracking) + enumeration_system_activity: System Activity + + notice_unable_delete_time_entry: Unable to delete time log entry. + error_can_not_delete_custom_field: Unable to delete custom field + permission_manage_subtasks: Manage subtasks + label_profile: Profile + error_unable_to_connect: Unable to connect (%{value}) + label_overall_spent_time: Overall spent time + error_can_not_remove_role: This role is in use and can not be deleted. + field_principal: Principal + field_parent_issue: Parent task + label_my_page_block: My page block + text_zoom_out: Zoom out + text_zoom_in: Zoom in + error_unable_delete_issue_status: Unable to delete issue status + label_subtask_plural: Subtasks + error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + notice_failed_to_save_members: "Failed to save member(s): %{errors}." + label_project_copy_notifications: Send email notifications during the project copy + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar + field_member_of_group: Member of Group + field_assigned_to_role: Member of Role + button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" + text_are_you_sure_with_children: Delete issue and all child issues? + field_text: Text field + label_user_mail_option_only_owner: Only for things I am the owner of + setting_default_notification_option: Default notification option + label_user_mail_option_only_my_events: Only for things I watch or I'm involved in + label_user_mail_option_only_assigned: Only for things I am assigned to + notice_not_authorized_archived_project: The project you're trying to access has been archived. + label_principal_search: "Search for user or group:" + label_user_search: "Search for user:" + field_visible: Visible + setting_emails_header: Emails header + setting_commit_logtime_activity_id: Activity for logged time + text_time_logged_by_changeset: Applied in changeset %{value}. + setting_commit_logtime_enabled: Enable time logging + notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) + setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/en.yml --- a/config/locales/en.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/en.yml Thu Mar 03 12:02:03 2011 +0000 @@ -205,15 +205,13 @@ gui_validation_error: 1 error gui_validation_error_plural: "%{count} errors" - - field_ssamr_user_detail: - description: User Description + field_name: Name field_description: Description field_summary: Summary field_is_required: Required - field_firstname: First name - field_lastname: Last name + field_firstname: Firstname + field_lastname: Lastname field_mail: Email field_filename: File field_filesize: Size @@ -247,7 +245,6 @@ field_role: Role field_homepage: Homepage field_is_public: Public - field_is_private: Private field_parent: Subproject of field_is_in_roadmap: Issues displayed in roadmap field_login: Login @@ -306,10 +303,8 @@ field_assigned_to_role: "Assignee's role" field_text: Text field field_visible: Visible + field_warn_on_leaving_unsaved: "Warn me when leaving a page with unsaved text" - setting_tipoftheday_text: Tip of the Day - setting_notifications_text: Notifications - label_ssamr_description: Research description setting_app_title: Application title setting_app_subtitle: Application subtitle setting_welcome_text: Welcome text @@ -436,8 +431,6 @@ project_module_calendar: Calendar project_module_gantt: Gantt - label_tipoftheday: Tip of the day - label_ssamr_details: Other Details label_user: User label_user_plural: Users label_user_new: New user @@ -445,15 +438,12 @@ label_project: Project label_project_new: New project label_project_plural: Projects - label_my_project_plural: My Projects - label_other_project_plural: "Everyone Else's Projects" label_x_projects: zero: no projects one: 1 project other: "%{count} projects" label_project_all: All Projects label_project_latest: Latest projects - label_managers: Managed by label_issue: Issue label_issue_new: New issue label_issue_plural: Issues @@ -494,7 +484,6 @@ label_login_with_open_id_option: or login with OpenID label_password_lost: Lost password label_home: Home - label_home_heading: Welcome! label_my_page: My page label_my_account: My account label_my_projects: My projects @@ -606,6 +595,7 @@ label_query: Custom query label_query_plural: Custom queries label_query_new: New query + label_my_queries: My custom queries label_filter_add: Add filter label_filter_plural: Filters label_equals: is @@ -803,7 +793,7 @@ label_profile: Profile label_subtask_plural: Subtasks label_project_copy_notifications: Send email notifications during the project copy - label_principal_search: "Search by name:" + label_principal_search: "Search for user or group:" label_user_search: "Search for user:" button_login: Login @@ -870,21 +860,17 @@ text_are_you_sure: Are you sure ? text_are_you_sure_with_children: "Delete issue and all child issues?" text_journal_changed: "%{label} changed from %{old} to %{new}" + text_journal_changed_no_detail: "%{label} updated" text_journal_set_to: "%{label} set to %{value}" text_journal_deleted: "%{label} deleted (%{old})" text_journal_added: "%{label} %{value} added" text_tip_issue_begin_day: issue beginning this day text_tip_issue_end_day: issue ending this day text_tip_issue_begin_end_day: issue beginning and ending this day - text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    This will be used in all project-related URLs, and as the repository name. Once saved, the identifier can not be changed.' - text_project_name_info: "This will be the name of your project throughout this site.
    You can change your project's name at any time, in the project's settings." - text_project_visibility_info: "If your project is not public, it will only be visible to users that you have added as project members." - text_project_homepage_info: 'Link to an external project page.' + text_project_identifier_info: 'Only lower case letters (a-z), numbers and dashes are allowed.
    Once saved, the identifier can not be changed.' text_caracters_maximum: "%{count} characters maximum." text_caracters_minimum: "Must be at least %{count} characters long." text_length_between: "Length between %{min} and %{max} characters." - text_user_ssamr_description_info: 'Please describe your current research or development interests, within the fields of audio and music.
    This information is publicly visible in your profile and you can edit it at any time.
    It may also be used to establish eligibility for your initial registration.' - text_issue_parent_issue_info: 'If this is a subtask, please insert its parent task number or write the main task name.' text_tracker_no_workflow: No workflow defined for this tracker text_unallowed_characters: Unallowed characters text_comma_separated: Multiple values allowed (comma separated). @@ -914,7 +900,7 @@ text_user_wrote: "%{value} wrote:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' @@ -925,7 +911,7 @@ text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" text_zoom_in: Zoom in text_zoom_out: Zoom out - text_settings_repo_creation: The repository for a project should be set up automatically within a few minutes of the project being created.
    You should not have to adjust any settings here.
    Please check again in ten minutes, and contact us if there is any problem. + text_warn_on_leaving_unsaved: "The current page contains unsaved text that will be lost if you leave this page." default_role_manager: Manager default_role_developer: Developer diff -r fca2657f4aa5 -r eeebe205a056 config/locales/es.yml --- a/config/locales/es.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/es.yml Thu Mar 03 12:02:03 2011 +0000 @@ -796,7 +796,7 @@ text_destroy_time_entries: Borrar las horas text_destroy_time_entries_question: Existen %{hours} horas asignadas a la petición que quiere borrar. ¿Qué quiere hacer? text_diff_truncated: '... Diferencia truncada por exceder el máximo tamaño visualizable.' - text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/email.yml y reinicie la aplicación para activar los cambios." + text_email_delivery_not_configured: "Las notificaciones están desactivadas porque el servidor de correo no está configurado.\nConfigure el servidor de SMTP en config/configuration.yml y reinicie la aplicación para activar los cambios." text_enumeration_category_reassign_to: 'Reasignar al siguiente valor:' text_enumeration_destroy_question: "%{count} objetos con este valor asignado." text_file_repository_writable: Se puede escribir en el repositorio @@ -974,3 +974,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/eu.yml --- a/config/locales/eu.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/eu.yml Thu Mar 03 12:02:03 2011 +0000 @@ -99,8 +99,8 @@ errors: template: header: - one: "1 error prohibited this %{model} from being saved" - other: "%{count} errors prohibited this %{model} from being saved" + one: "Errore batek %{model} hau godetzea galarazi du." + other: "%{count} errorek %{model} hau gordetzea galarazi dute." messages: inclusion: "ez dago zerrendan" exclusion: "erreserbatuta dago" @@ -125,7 +125,7 @@ greater_than_start_date: "hasiera data baino handiagoa izan behar du" not_same_project: "ez dago proiektu berdinean" circular_dependency: "Erlazio honek mendekotasun zirkular bat sortuko luke" - cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks" + cant_link_an_issue_with_a_descendant: "Zeregin bat ezin da bere azpiataza batekin estekatu." actionview_instancetag_blank_option: Hautatu mesedez @@ -277,7 +277,7 @@ field_issue_to: Erlazionatutako zereginak field_delay: Atzerapena field_assignable: Arazoak rol honetara esleitu daitezke - field_redirect_existing_links: Existitzen diren estelak berbideratu + field_redirect_existing_links: Existitzen diren estekak berbideratu field_estimated_hours: Estimatutako denbora field_column_names: Zutabeak field_time_zone: Ordu zonaldea @@ -318,7 +318,7 @@ setting_cross_project_issue_relations: Zereginak proiektuen artean erlazionatzea baimendu setting_issue_list_default_columns: Zereginen zerrendan defektuz ikusten diren zutabeak setting_repositories_encodings: Biltegien kodeketak - setting_commit_logs_encoding: Commit-en mezuen kodetzea + setting_commit_logs_encoding: Commit-en egunkarien kodetzea setting_emails_footer: Eposten oina setting_protocol: Protokoloa setting_per_page_options: Orriko objektuen aukerak @@ -363,7 +363,7 @@ permission_delete_issues: Zereginak ezabatu permission_manage_public_queries: Galdera publikoak kudeatu permission_save_queries: Galderak gorde - permission_view_gantt: Gantt diagrama ikusi + permission_view_gantt: Gantt grafikoa ikusi permission_view_calendar: Egutegia ikusi permission_view_issue_watchers: Behatzaileen zerrenda ikusi permission_add_issue_watchers: Behatzaileak gehitu @@ -441,7 +441,7 @@ label_tracker: Aztarnaria label_tracker_plural: Aztarnariak label_tracker_new: Aztarnari berria - label_workflow: Workflow + label_workflow: Lan-fluxua label_issue_status: Zeregin egoera label_issue_status_plural: Zeregin egoerak label_issue_status_new: Egoera berria @@ -507,7 +507,7 @@ label_file_added: Fitxategia gehituta label_report: Berri ematea label_report_plural: Berri emateak - label_news: Beria + label_news: Berria label_news_new: Berria gehitu label_news_plural: Berriak label_news_latest: Azken berriak @@ -554,7 +554,7 @@ label_add_note: Oharra gehitu label_per_page: Orriko label_calendar: Egutegia - label_months_from: months from + label_months_from: hilabete noiztik label_gantt: Gantt label_internal: Barnekoa label_last_changes: "azken %{count} aldaketak" @@ -785,7 +785,7 @@ button_cancel: Ezeztatu button_activate: Gahitu button_sort: Ordenatu - button_log_time: Denbora apuntatu + button_log_time: Denbora erregistratu button_rollback: Itzuli bertsio honetara button_watch: Behatu button_unwatch: Behatzen utzi @@ -825,9 +825,9 @@ text_journal_set_to: "%{label}-k %{value} balioa hartu du" text_journal_deleted: "%{label} ezabatuta (%{old})" text_journal_added: "%{label} %{value} gehituta" - text_tip_issue_begin_day: gaur hasten diren atazak - text_tip_issue_end_day: gaur bukatzen diren atazak - text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren atazak + text_tip_issue_begin_day: gaur hasten diren zereginak + text_tip_issue_end_day: gaur bukatzen diren zereginak + text_tip_issue_begin_end_day: gaur hasi eta bukatzen diren zereginak text_project_identifier_info: 'Letra xeheak (a-z), zenbakiak eta marrak erabil daitezke bakarrik.
    Gorde eta gero identifikadorea ezin da aldatu.' text_caracters_maximum: "%{count} karaktere gehienez." text_caracters_minimum: "Gutxienez %{count} karaktereetako luzerakoa izan behar du." @@ -860,7 +860,7 @@ text_user_wrote: "%{value}-(e)k idatzi zuen:" text_enumeration_destroy_question: "%{count} objetu balio honetara esleituta daude." text_enumeration_category_reassign_to: 'Beste balio honetara esleitu:' - text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/email.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." + text_email_delivery_not_configured: "Eposta bidalketa ez dago konfiguratuta eta jakinarazpenak ezgaituta daude.\nKonfiguratu zure SMTP zerbitzaria config/configuration.yml-n eta aplikazioa berrabiarazi hauek gaitzeko." text_repository_usernames_mapping: "Hautatu edo eguneratu Redmineko erabiltzailea biltegiko egunkarietan topatzen diren erabiltzaile izenekin erlazionatzeko.\nRedmine-n eta biltegian erabiltzaile izen edo eposta berdina duten erabiltzaileak automatikoki erlazionatzen dira." text_diff_truncated: '... Diff hau moztua izan da erakus daitekeen tamaina maximoa gainditu duelako.' text_custom_field_possible_values_info: 'Lerro bat balio bakoitzeko' @@ -896,7 +896,7 @@ enumeration_doc_categories: Dokumentu kategoriak enumeration_activities: Jarduerak (denbora kontrola)) enumeration_system_activity: Sistemako Jarduera - label_board_sticky: Itxaskorra + label_board_sticky: Itsaskorra label_board_locked: Blokeatuta permission_export_wiki_pages: Wiki orriak esportatu setting_cache_formatted_text: Formatudun testua katxeatu @@ -904,40 +904,44 @@ error_unable_delete_issue_status: Ezine da zereginaren egoera ezabatu label_profile: Profila permission_manage_subtasks: Azpiatazak kudeatu - field_parent_issue: Guraso ataza + field_parent_issue: Zeregin gurasoa label_subtask_plural: Azpiatazak label_project_copy_notifications: Proiektua kopiatzen den bitartean eposta jakinarazpenak bidali - error_can_not_delete_custom_field: Ezin da eremu pertsonallizatua ezabatu + error_can_not_delete_custom_field: Ezin da eremu pertsonalizatua ezabatu error_unable_to_connect: Ezin da konektatu (%{value}) error_can_not_remove_role: Rol hau erabiltzen hari da eta ezin da ezabatu. error_can_not_delete_tracker: Aztarnari honek zereginak ditu eta ezin da ezabatu. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): %{errors}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time - field_time_entries: Log time + field_principal: Ekintzaile + label_my_page_block: "Nire orriko blokea" + notice_failed_to_save_members: "Kidea(k) gordetzean errorea: %{errors}." + text_zoom_out: Zooma txikiagotu + text_zoom_in: Zooma handiagotu + notice_unable_delete_time_entry: "Ezin da hautatutako denbora erregistroa ezabatu." + label_overall_spent_time: Igarotako denbora guztira + field_time_entries: "Denbora erregistratu" project_module_gantt: Gantt - project_module_calendar: Calendar - button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}" - text_are_you_sure_with_children: Delete issue and all child issues? - field_text: Text field - label_user_mail_option_only_owner: Only for things I am the owner of - setting_default_notification_option: Default notification option - label_user_mail_option_only_my_events: Only for things I watch or I'm involved in - label_user_mail_option_only_assigned: Only for things I am assigned to - label_user_mail_option_none: No events - field_member_of_group: Assignee's group - field_assigned_to_role: Assignee's role - notice_not_authorized_archived_project: The project you're trying to access has been archived. - label_principal_search: "Search for user or group:" - label_user_search: "Search for user:" - field_visible: Visible - setting_emails_header: Emails header - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + project_module_calendar: Egutegia + button_edit_associated_wikipage: "Esleitutako wiki orria editatu: %{page_title}" + text_are_you_sure_with_children: "Zeregina eta azpi zeregin guztiak ezabatu?" + field_text: Testu eremua + label_user_mail_option_only_owner: "Jabea naizen gauzetarako barrarik" + setting_default_notification_option: "Lehenetsitako ohartarazpen aukera" + label_user_mail_option_only_my_events: "Behatzen ditudan edo partaide naizen gauzetarako bakarrik" + label_user_mail_option_only_assigned: "Niri esleitutako gauzentzat bakarrik" + label_user_mail_option_none: "Gertakaririk ez" + field_member_of_group: "Esleituta duenaren taldea" + field_assigned_to_role: "Esleituta duenaren rola" + notice_not_authorized_archived_project: "Atzitu nahi duzun proiektua artxibatua izan da." + label_principal_search: "Bilatu erabiltzaile edo taldea:" + label_user_search: "Erabiltzailea bilatu:" + field_visible: Ikusgai + setting_emails_header: "Eposten goiburua" + setting_commit_logtime_activity_id: "Erregistratutako denboraren jarduera" + text_time_logged_by_changeset: "%{value} aldaketan egindakoa." + setting_commit_logtime_enabled: "Erregistrutako denbora gaitu" + notice_gantt_chart_truncated: Grafikoa moztu da bistara daitekeen elementuen kopuru maximoa gainditu delako (%{max}) + setting_gantt_items_limit: "Gantt grafikoan bistara daitekeen elementu kopuru maximoa" + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/fa.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/locales/fa.yml Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,945 @@ +fa: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: rtl + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%Y/%m/%d" + short: "%b %d" + long: "%B %d, %Y" + + day_names: [یک‌شنبه, دوشنبه, سه‌شنبه, چهارشنبه, پنج‌شنبه, آدینه, شنبه] + abbr_day_names: [یک, دو, سه, چهار, پنج, آدینه, شنبه] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, ژانویه, Ùوریه, مارس, آوریل, مه, ژوئن, ژوئیه, اوت, سپتامبر, اکتبر, نوامبر, دسامبر] + abbr_month_names: [~, ژان, Ùور, مار, آور, مه, ژوئن, ژوئیه, اوت, سپت, اکت, نوا, دسا] + # Used in date_select and datime_select. + order: [ :year, :month, :day ] + + time: + formats: + default: "%Y/%m/%d %p %I:%M" + time: "%p %I:%M" + short: "%d %b %H:%M" + long: "%B %d, %Y %H:%M" + am: "Ù‚.ظ" + pm: "ب.ظ" + + datetime: + distance_in_words: + half_a_minute: "نیم دقیقه" + less_than_x_seconds: + one: "کمتر از 1 ثانیه" + other: "کمتر از %{count} ثانیه" + x_seconds: + one: "1 ثانیه" + other: "%{count} ثانیه" + less_than_x_minutes: + one: "کمتر از 1 دقیقه" + other: "کمتر از %{count} دقیقه" + x_minutes: + one: "1 دقیقه" + other: "%{count} دقیقه" + about_x_hours: + one: "نزدیک 1 ساعت" + other: "نزدیک %{count} ساعت" + x_days: + one: "1 روز" + other: "%{count} روز" + about_x_months: + one: "نزدیک 1 ماه" + other: "نزدیک %{count} ماه" + x_months: + one: "1 ماه" + other: "%{count} ماه" + about_x_years: + one: "نزدیک 1 سال" + other: "نزدیک %{count} سال" + over_x_years: + one: "بیش از 1 سال" + other: "بیش از %{count} سال" + almost_x_years: + one: "نزدیک 1 سال" + other: "نزدیک %{count} سال" + + number: + # Default format for numbers + format: + separator: "Ù«" + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "بایت" + other: "بایت" + kb: "کیلوبایت" + mb: "مگابایت" + gb: "گیگابایت" + tb: "ترابایت" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "Ùˆ" + skip_last_comma: false + + activerecord: + errors: + template: + header: + one: "1 ایراد از ذخیره سازی این %{model} جلوگیری کرد" + other: "%{count} ایراد از ذخیره سازی این %{model} جلوگیری کرد" + messages: + inclusion: "در Ùهرست نیامده است" + exclusion: "رزرو شده است" + invalid: "نادرست است" + confirmation: "با بررسی سازگاری ندارد" + accepted: "باید Ù¾Ø°ÛŒØ±ÙØªÙ‡ شود" + empty: "نمی‌تواند تهی باشد" + blank: "نمی‌تواند تهی باشد" + too_long: "خیلی بلند است (بیشترین اندازه %{count} نویسه است)" + too_short: "خیلی کوتاه است (کمترین اندازه %{count} نویسه است)" + wrong_length: "اندازه نادرست است (باید %{count} نویسه باشد)" + taken: "پیش از این Ú¯Ø±ÙØªÙ‡ شده است" + not_a_number: "شماره درستی نیست" + not_a_date: "تاریخ درستی نیست" + greater_than: "باید بزرگتر از %{count} باشد" + greater_than_or_equal_to: "باید بزرگتر از یا برابر با %{count} باشد" + equal_to: "باید برابر با %{count} باشد" + less_than: "باید کمتر از %{count} باشد" + less_than_or_equal_to: "باید کمتر از یا برابر با %{count} باشد" + odd: "باید ÙØ±Ø¯ باشد" + even: "باید زوج باشد" + greater_than_start_date: "باید از تاریخ آغاز بزرگتر باشد" + not_same_project: "به همان پروژه وابسته نیست" + circular_dependency: "این وابستگی یک وابستگی دایره وار خواهد ساخت" + cant_link_an_issue_with_a_descendant: "یک پیامد نمی‌تواند به یکی از زیر کارهایش پیوند بخورد" + + actionview_instancetag_blank_option: گزینش کنید + + general_text_No: 'خیر' + general_text_Yes: 'آری' + general_text_no: 'خیر' + general_text_yes: 'آری' + general_lang_name: 'Persian (پارسی)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '6' + + notice_account_updated: حساب شما بروز شد. + notice_account_invalid_creditentials: نام کاربری یا گذرواژه نادرست است + notice_account_password_updated: گذرواژه بروز شد + notice_account_wrong_password: گذرواژه نادرست است + notice_account_register_done: حساب ساخته شد. برای ÙØ¹Ø§Ù„ نمودن آن، روی پیوندی Ú©Ù‡ به شما ایمیل شده کلیک کنید. + notice_account_unknown_email: کاربر شناخته نشد. + notice_can_t_change_password: این حساب یک روش شناسایی بیرونی را به کار Ú¯Ø±ÙØªÙ‡ است. گذرواژه را نمی‌توان جایگزین کرد. + notice_account_lost_email_sent: یک ایمیل با راهنمایی درباره گزینش گذرواژه تازه برای شما ÙØ±Ø³ØªØ§Ø¯Ù‡ شد. + notice_account_activated: حساب شما ÙØ¹Ø§Ù„ شده است. اکنون می‌توانید وارد شوید. + notice_successful_create: با موÙقیت ساخته شد. + notice_successful_update: با موÙقیت بروز شد. + notice_successful_delete: با موÙقیت برداشته شد. + notice_successful_connection: با موÙقیت متصل شد. + notice_file_not_found: برگه درخواستی شما در دسترس نیست یا پاک شده است. + notice_locking_conflict: داده‌ها را کاربر دیگری بروز کرده است. + notice_not_authorized: شما به این برگه دسترسی ندارید. + notice_not_authorized_archived_project: پروژه درخواستی شما بایگانی شده است. + notice_email_sent: "یک ایمیل به %{value} ÙØ±Ø³ØªØ§Ø¯Ù‡ شد." + notice_email_error: "یک ایراد در ÙØ±Ø³ØªØ§Ø¯Ù† ایمیل پیش آمد (%{value})." + notice_feeds_access_key_reseted: کلید دسترسی RSS شما بازنشانی شد. + notice_api_access_key_reseted: کلید دسترسی API شما بازنشانی شد. + notice_failed_to_save_issues: "ذخیره سازی %{count} پیامد از %{total} پیامد گزینش شده شکست خورد: %{ids}." + notice_failed_to_save_members: "ذخیره سازی اعضا شکست خورد: %{errors}." + notice_no_issue_selected: "هیچ پیامدی برگزیده نشده است! پیامدهایی Ú©Ù‡ می‌خواهید ویرایش کنید را برگزینید." + notice_account_pending: "حساب شما ساخته شد Ùˆ اکنون چشم به راه روادید سرپرست است." + notice_default_data_loaded: پیکربندی پیش‌گزیده با موÙقیت بار شد. + notice_unable_delete_version: نگارش را نمی‌توان پاک کرد. + notice_unable_delete_time_entry: زمان گزارش شده را نمی‌توان پاک کرد. + notice_issue_done_ratios_updated: اندازه انجام شده پیامد بروز شد. + notice_gantt_chart_truncated: "نمودار بریده شد چون از بیشترین شماری Ú©Ù‡ می‌توان نشان داد بزگتر است (%{max})." + + error_can_t_load_default_data: "پیکربندی پیش‌گزیده نمی‌تواند بار شود: %{value}" + error_scm_not_found: "بخش یا نگارش در انباره پیدا نشد." + error_scm_command_failed: "ایرادی در دسترسی به انباره پیش آمد: %{value}" + error_scm_annotate: "بخش پیدا نشد یا نمی‌توان برای آن یادداشت نوشت." + error_issue_not_found_in_project: 'پیامد پیدا نشد یا به این پروژه وابسته نیست.' + error_no_tracker_in_project: 'هیچ پیگردی به این پروژه پیوسته نشده است. پیکربندی پروژه را بررسی کنید.' + error_no_default_issue_status: 'هیچ وضعیت پیامد پیش‌گزیده‌ای مشخص نشده است. پیکربندی را بررسی کنید (به «پیکربندی -> وضعیت‌های پیامد» بروید).' + error_can_not_delete_custom_field: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ را نمی‌توان پاک کرد. + error_can_not_delete_tracker: "این پیگرد دارای پیامد است Ùˆ نمی‌توان آن را پاک کرد." + error_can_not_remove_role: "این نقش به کار Ú¯Ø±ÙØªÙ‡ شده است Ùˆ نمی‌توان آن را پاک کرد." + error_can_not_reopen_issue_on_closed_version: 'یک پیامد Ú©Ù‡ به یک نگارش بسته شده وابسته است را نمی‌توان باز کرد.' + error_can_not_archive_project: این پروژه را نمی‌توان بایگانی کرد. + error_issue_done_ratios_not_updated: "اندازه انجام شده پیامد بروز نشد." + error_workflow_copy_source: 'یک پیگرد یا نقش منبع را برگزینید.' + error_workflow_copy_target: 'پیگردها یا نقش‌های مقصد را برگزینید.' + error_unable_delete_issue_status: 'وضعیت پیامد را نمی‌توان پاک کرد.' + error_unable_to_connect: "نمی‌توان متصل شد (%{value})" + warning_attachments_not_saved: "%{count} پرونده ذخیره نشد." + + mail_subject_lost_password: "گذرواژه حساب %{value} شما" + mail_body_lost_password: 'برای جایگزینی گذرواژه خود، بر روی پیوند زیر کلیک کنید:' + mail_subject_register: "ÙØ¹Ø§Ù„سازی حساب %{value} شما" + mail_body_register: 'برای ÙØ¹Ø§Ù„سازی حساب خود، بر روی پیوند زیر کلیک کنید:' + mail_body_account_information_external: "شما می‌توانید حساب %{value} خود را برای ورود به کار برید." + mail_body_account_information: داده‌های حساب شما + mail_subject_account_activation_request: "درخواست ÙØ¹Ø§Ù„سازی حساب %{value}" + mail_body_account_activation_request: "یک کاربر تازه (%{value}) نامنویسی کرده است. این حساب چشم به راه روادید شماست:" + mail_subject_reminder: "زمان رسیدگی به %{count} پیامد در %{days} روز آینده سر می‌رسد" + mail_body_reminder: "زمان رسیدگی به %{count} پیامد Ú©Ù‡ به شما واگذار شده است، در %{days} روز آینده سر می‌رسد:" + mail_subject_wiki_content_added: "برگه ویکی «%{id}» Ø§ÙØ²ÙˆØ¯Ù‡ شد" + mail_body_wiki_content_added: "برگه ویکی «%{id}» به دست %{author} Ø§ÙØ²ÙˆØ¯Ù‡ شد." + mail_subject_wiki_content_updated: "برگه ویکی «%{id}» بروز شد" + mail_body_wiki_content_updated: "برگه ویکی «%{id}» به دست %{author} بروز شد." + + gui_validation_error: 1 ایراد + gui_validation_error_plural: "%{count} ایراد" + + field_name: نام + field_description: توضیح + field_summary: خلاصه + field_is_required: الزامی + field_firstname: نام Ú©ÙˆÚ†Ú© + field_lastname: نام خانوادگی + field_mail: ایمیل + field_filename: پرونده + field_filesize: اندازه + field_downloads: Ø¯Ø±ÛŒØ§ÙØªâ€ŒÙ‡Ø§ + field_author: نویسنده + field_created_on: ساخته شده در + field_updated_on: بروز شده در + field_field_format: قالب + field_is_for_all: برای همه پروژه‌ها + field_possible_values: مقادیر ممکن + field_regexp: عبارت منظم + field_min_length: کمترین اندازه + field_max_length: بیشترین اندازه + field_value: مقدار + field_category: دسته + field_title: عنوان + field_project: پروژه + field_issue: پیامد + field_status: وضعیت + field_notes: یادداشت‌ها + field_is_closed: پیامد بسته شده + field_is_default: مقدار پیش‌گزیده + field_tracker: پیگرد + field_subject: موضوع + field_due_date: زمان سررسید + field_assigned_to: واگذار شده به + field_priority: برتری + field_fixed_version: نگارش هد٠+ field_user: کاربر + field_principal: دستور دهنده + field_role: نقش + field_homepage: برگه خانه + field_is_public: همگانی + field_parent: پروژه پدر + field_is_in_roadmap: این پیامدها در نقشه راه نشان داده شوند + field_login: ورود + field_mail_notification: آگاه سازی‌های ایمیلی + field_admin: سرپرست + field_last_login_on: آخرین ورود + field_language: زبان + field_effective_date: تاریخ + field_password: گذرواژه + field_new_password: گذرواژه تازه + field_password_confirmation: بررسی گذرواژه + field_version: نگارش + field_type: گونه + field_host: میزبان + field_port: درگاه + field_account: حساب + field_base_dn: DN پایه + field_attr_login: نشانه ورود + field_attr_firstname: نشانه نام Ú©ÙˆÚ†Ú© + field_attr_lastname: نشانه نام خانوادگی + field_attr_mail: نشانه ایمیل + field_onthefly: ساخت کاربر بیدرنگ + field_start_date: تاریخ آغاز + field_done_ratio: Ùª انجام شده + field_auth_source: روش شناسایی + field_hide_mail: ایمیل من پنهان شود + field_comments: دیدگاه + field_url: نشانی + field_start_page: برگه آغاز + field_subproject: زیر پروژه + field_hours: ساعت‌ + field_activity: ÙØ¹Ø§Ù„یت + field_spent_on: در تاریخ + field_identifier: شناسه + field_is_filter: پالایش پذیر + field_issue_to: پیامد وابسته + field_delay: دیرکرد + field_assignable: پیامدها می‌توانند به این نقش واگذار شوند + field_redirect_existing_links: پیوندهای پیشین به پیوند تازه راهنمایی شوند + field_estimated_hours: زمان برآورد شده + field_column_names: ستون‌ها + field_time_entries: زمان نوشتن + field_time_zone: پهنه زمانی + field_searchable: جستجو پذیر + field_default_value: مقدار پیش‌گزیده + field_comments_sorting: نمایش دیدگاه‌ها + field_parent_title: برگه پدر + field_editable: ویرایش پذیر + field_watcher: دیده‌بان + field_identity_url: نشانی OpenID + field_content: محتوا + field_group_by: دسته بندی با + field_sharing: اشتراک گذاری + field_parent_issue: کار پدر + field_member_of_group: "دسته واگذار شونده" + field_assigned_to_role: "نقش واگذار شونده" + field_text: Ùیلد متنی + field_visible: آشکار + + setting_app_title: نام برنامه + setting_app_subtitle: زیرنام برنامه + setting_welcome_text: نوشتار خوش‌آمد گویی + setting_default_language: زبان پیش‌گزیده + setting_login_required: الزامی بودن ورود + setting_self_registration: خود نام نویسی + setting_attachment_max_size: بیشترین اندازه پیوست + setting_issues_export_limit: کرانه صدور پییامدها + setting_mail_from: نشانی ÙØ±Ø³ØªÙ†Ø¯Ù‡ ایمیل + setting_bcc_recipients: گیرندگان ایمیل دیده نشوند (bcc) + setting_plain_text_mail: ایمیل نوشته ساده (بدون HTML) + setting_host_name: نام میزبان Ùˆ نشانی + setting_text_formatting: قالب بندی نوشته + setting_wiki_compression: ÙØ´Ø±Ø¯Ù‡â€ŒØ³Ø§Ø²ÛŒ پیشینه ویکی + setting_feeds_limit: کرانه محتوای خوراک + setting_default_projects_public: حالت پیش‌گزیده پروژه‌های تازه، همگانی است + setting_autofetch_changesets: Ø¯Ø±ÛŒØ§ÙØª خودکار تغییرات + setting_sys_api_enabled: ÙØ¹Ø§Ù„ سازی وب سرویس برای سرپرستی انباره + setting_commit_ref_keywords: کلیدواژه‌های نشانه + setting_commit_fix_keywords: کلیدواژه‌های انجام + setting_autologin: ورود خودکار + setting_date_format: قالب تاریخ + setting_time_format: قالب زمان + setting_cross_project_issue_relations: توانایی وابستگی میان پروژه‌ای پیامدها + setting_issue_list_default_columns: ستون‌های پیش‌گزیده نمایش داده شده در Ùهرست پیامدها + setting_repositories_encodings: کدگذاری انباره‌ها + setting_commit_logs_encoding: کدگذاری پیام‌های انباره + setting_emails_header: سرنویس ایمیل‌ها + setting_emails_footer: پانویس ایمیل‌ها + setting_protocol: پیوندنامه + setting_per_page_options: گزینه‌های اندازه داده‌های هر برگ + setting_user_format: قالب نمایشی کاربران + setting_activity_days_default: روزهای نمایش داده شده در ÙØ¹Ø§Ù„یت پروژه + setting_display_subprojects_issues: پیش‌گزیده نمایش پیامدهای زیرپروژه در پروژه پدر + setting_enabled_scm: ÙØ¹Ø§Ù„سازی SCM + setting_mail_handler_body_delimiters: "بریدن ایمیل‌ها پس از یکی از این ردیÙ‌ها" + setting_mail_handler_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس برای ایمیل‌های آمده + setting_mail_handler_api_key: کلید API + setting_sequential_project_identifiers: ساخت پشت سر هم شناسه پروژه + setting_gravatar_enabled: کاربرد Gravatar برای عکس کاربر + setting_gravatar_default: عکس Gravatar پیش‌گزیده + setting_diff_max_lines_displayed: بیشترین اندازه ردیÙ‌های ØªÙØ§ÙˆØª نشان داده شده + setting_file_max_size_displayed: بیشترین اندازه پرونده‌های نمایش داده شده درون خطی + setting_repository_log_display_limit: بیشترین شمار نگارش‌های نمایش داده شده در گزارش پرونده + setting_openid: پذیرش ورود Ùˆ نام نویسی با OpenID + setting_password_min_length: کمترین اندازه گذرواژه + setting_new_project_user_role_id: نقش داده شده به کاربری Ú©Ù‡ سرپرست نیست Ùˆ پروژه می‌سازد + setting_default_projects_modules: پیمانه‌های پیش‌گزیده ÙØ¹Ø§Ù„ برای پروژه‌های تازه + setting_issue_done_ratio: برآورد اندازه انجام شده پیامد با + setting_issue_done_ratio_issue_field: کاربرد Ùیلد پیامد + setting_issue_done_ratio_issue_status: کاربرد وضعیت پیامد + setting_start_of_week: آغاز گاهشمار از + setting_rest_api_enabled: ÙØ¹Ø§Ù„سازی وب سرویس‌های REST + setting_cache_formatted_text: نهان سازی نوشته‌های قالب بندی شده + setting_default_notification_option: آگاه سازی پیش‌گزیده + setting_commit_logtime_enabled: ÙØ¹Ø§Ù„سازی زمان گذاشته شده + setting_commit_logtime_activity_id: ÙØ¹Ø§Ù„یت زمان گذاشته شده + setting_gantt_items_limit: بیشترین شمار بخش‌های نمایش داده شده در نمودار گانت + + permission_add_project: ساخت پروژه + permission_add_subprojects: ساخت زیرپروژه + permission_edit_project: ویرایش پروژه + permission_select_project_modules: گزینش پیمانه‌های پروژه + permission_manage_members: سرپرستی اعضا + permission_manage_project_activities: سرپرستی ÙØ¹Ø§Ù„یت‌های پروژه + permission_manage_versions: سرپرستی نگارش‌ها + permission_manage_categories: سرپرستی دسته‌های پیامد + permission_view_issues: دیدن پیامدها + permission_add_issues: Ø§ÙØ²ÙˆØ¯Ù† پیامدها + permission_edit_issues: ویرایش پیامدها + permission_manage_issue_relations: سرپرستی وابستگی پیامدها + permission_add_issue_notes: Ø§ÙØ²ÙˆØ¯Ù† یادداشت‌ها + permission_edit_issue_notes: ویرایش یادداشت‌ها + permission_edit_own_issue_notes: ویرایش یادداشت خود + permission_move_issues: جابجایی پیامدها + permission_delete_issues: پاک کردن پیامدها + permission_manage_public_queries: سرپرستی پرس‌وجوهای همگانی + permission_save_queries: ذخیره سازی پرس‌وجوها + permission_view_gantt: دیدن نمودار گانت + permission_view_calendar: دیدن گاهشمار + permission_view_issue_watchers: دیدن Ùهرست دیده‌بان‌ها + permission_add_issue_watchers: Ø§ÙØ²ÙˆØ¯Ù† دیده‌بان‌ها + permission_delete_issue_watchers: پاک کردن دیده‌بان‌ها + permission_log_time: نوشتن زمان گذاشته شده + permission_view_time_entries: دیدن زمان گذاشته شده + permission_edit_time_entries: ویرایش زمان گذاشته شده + permission_edit_own_time_entries: ویرایش زمان گذاشته شده خود + permission_manage_news: سرپرستی رویدادها + permission_comment_news: گذاشتن دیدگاه روی رویدادها + permission_manage_documents: سرپرستی نوشتارها + permission_view_documents: دیدن نوشتارها + permission_manage_files: سرپرستی پرونده‌ها + permission_view_files: دیدن پرونده‌ها + permission_manage_wiki: سرپرستی ویکی + permission_rename_wiki_pages: نامگذاری برگه ویکی + permission_delete_wiki_pages: پاک کردن برگه ویکی + permission_view_wiki_pages: دیدن ویکی + permission_view_wiki_edits: دیدن پیشینه ویکی + permission_edit_wiki_pages: ویرایش برگه‌های ویکی + permission_delete_wiki_pages_attachments: پاک کردن پیوست‌های برگه ویکی + permission_protect_wiki_pages: نگه‌داری برگه‌های ویکی + permission_manage_repository: سرپرستی انباره + permission_browse_repository: چریدن در انباره + permission_view_changesets: دیدن تغییرات + permission_commit_access: دسترسی تغییر انباره + permission_manage_boards: سرپرستی انجمن‌ها + permission_view_messages: دیدن پیام‌ها + permission_add_messages: ÙØ±Ø³ØªØ§Ø¯Ù† پیام‌ها + permission_edit_messages: ویرایش پیام‌ها + permission_edit_own_messages: ویرایش پیام خود + permission_delete_messages: پاک کردن پیام‌ها + permission_delete_own_messages: پاک کردن پیام خود + permission_export_wiki_pages: صدور برگه‌های ویکی + permission_manage_subtasks: سرپرستی زیرکارها + + project_module_issue_tracking: پیگیری پیامدها + project_module_time_tracking: پیگیری زمان + project_module_news: رویدادها + project_module_documents: نوشتارها + project_module_files: پرونده‌ها + project_module_wiki: ویکی + project_module_repository: انباره + project_module_boards: انجمن‌ها + project_module_calendar: گاهشمار + project_module_gantt: گانت + + label_user: کاربر + label_user_plural: کاربر + label_user_new: کاربر تازه + label_user_anonymous: ناشناس + label_project: پروژه + label_project_new: پروژه تازه + label_project_plural: پروژه + label_x_projects: + zero: بدون پروژه + one: "1 پروژه" + other: "%{count} پروژه" + label_project_all: همه پروژه‌ها + label_project_latest: آخرین پروژه‌ها + label_issue: پیامد + label_issue_new: پیامد تازه + label_issue_plural: پیامد + label_issue_view_all: دیدن همه پیامدها + label_issues_by: "پیامدهای دست%{value}" + label_issue_added: پیامد Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_issue_updated: پیامد بروز شد + label_document: نوشتار + label_document_new: نوشتار تازه + label_document_plural: نوشتار + label_document_added: نوشتار Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_role: نقش + label_role_plural: نقش + label_role_new: نقش تازه + label_role_and_permissions: نقش‌ها Ùˆ پروانه‌ها + label_member: عضو + label_member_new: عضو تازه + label_member_plural: عضو + label_tracker: پیگرد + label_tracker_plural: پیگرد + label_tracker_new: پیگرد تازه + label_workflow: گردش کار + label_issue_status: وضعیت پیامد + label_issue_status_plural: وضعیت پیامد + label_issue_status_new: وضعیت تازه + label_issue_category: دسته پیامد + label_issue_category_plural: دسته پیامد + label_issue_category_new: دسته تازه + label_custom_field: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ + label_custom_field_plural: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ + label_custom_field_new: Ùیلد Ø³ÙØ§Ø±Ø´ÛŒ تازه + label_enumerations: برشمردنی‌ها + label_enumeration_new: مقدار تازه + label_information: داده + label_information_plural: داده + label_please_login: وارد شوید + label_register: نام نویسی کنید + label_login_with_open_id_option: یا با OpenID وارد شوید + label_password_lost: Ø¨Ø§Ø²ÛŒØ§ÙØª گذرواژه + label_home: سرآغاز + label_my_page: برگه من + label_my_account: حساب من + label_my_projects: پروژه‌های من + label_my_page_block: بخش برگه من + label_administration: سرپرستی + label_login: ورود + label_logout: خروج + label_help: راهنما + label_reported_issues: پیامدهای گزارش شده + label_assigned_to_me_issues: پیامدهای واگذار شده به من + label_last_login: آخرین ورود + label_registered_on: نام نویسی شده در + label_activity: ÙØ¹Ø§Ù„یت + label_overall_activity: ÙØ¹Ø§Ù„یت روی هم Ø±ÙØªÙ‡ + label_user_activity: "ÙØ¹Ø§Ù„یت %{value}" + label_new: تازه + label_logged_as: "نام کاربری:" + label_environment: محیط + label_authentication: شناسایی + label_auth_source: روش شناسایی + label_auth_source_new: روش شناسایی تازه + label_auth_source_plural: روش شناسایی + label_subproject_plural: زیرپروژه + label_subproject_new: زیرپروژه تازه + label_and_its_subprojects: "%{value} Ùˆ زیرپروژه‌هایش" + label_min_max_length: کمترین Ùˆ بیشترین اندازه + label_list: Ùهرست + label_date: تاریخ + label_integer: شماره درست + label_float: شماره شناور + label_boolean: درست/نادرست + label_string: نوشته + label_text: نوشته بلند + label_attribute: نشانه + label_attribute_plural: نشانه + label_download: "%{count} بار Ø¯Ø±ÛŒØ§ÙØª شده" + label_download_plural: "%{count} بار Ø¯Ø±ÛŒØ§ÙØª شده" + label_no_data: هیچ داده‌ای برای نمایش نیست + label_change_status: جایگزینی وضعیت + label_history: پیشینه + label_attachment: پرونده + label_attachment_new: پرونده تازه + label_attachment_delete: پاک کردن پرونده + label_attachment_plural: پرونده + label_file_added: پرونده Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_report: گزارش + label_report_plural: گزارش + label_news: رویداد + label_news_new: Ø§ÙØ²ÙˆØ¯Ù† رویداد + label_news_plural: رویداد + label_news_latest: آخرین رویدادها + label_news_view_all: دیدن همه رویدادها + label_news_added: رویداد Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_settings: پیکربندی + label_overview: دورنما + label_version: نگارش + label_version_new: نگارش تازه + label_version_plural: نگارش + label_close_versions: بستن نگارش‌های انجام شده + label_confirmation: بررسی + label_export_to: 'قالب‌های دیگر:' + label_read: خواندن... + label_public_projects: پروژه‌های همگانی + label_open_issues: باز + label_open_issues_plural: باز + label_closed_issues: بسته + label_closed_issues_plural: بسته + label_x_open_issues_abbr_on_total: + zero: 0 باز از %{total} + one: 1 باز از %{total} + other: "%{count} باز از %{total}" + label_x_open_issues_abbr: + zero: 0 باز + one: 1 باز + other: "%{count} باز" + label_x_closed_issues_abbr: + zero: 0 بسته + one: 1 بسته + other: "%{count} بسته" + label_total: جمله + label_permissions: پروانه‌ها + label_current_status: وضعیت کنونی + label_new_statuses_allowed: وضعیت‌های Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ تازه + label_all: همه + label_none: هیچ + label_nobody: هیچکس + label_next: پسین + label_previous: پیشین + label_used_by: به کار Ø±ÙØªÙ‡ در + label_details: ریزه‌کاری + label_add_note: Ø§ÙØ²ÙˆØ¯Ù† یادداشت + label_per_page: ردیÙ‌ها در هر برگه + label_calendar: گاهشمار + label_months_from: از ماه + label_gantt: گانت + label_internal: درونی + label_last_changes: "%{count} تغییر آخر" + label_change_view_all: دیدن همه تغییرات + label_personalize_page: Ø³ÙØ§Ø±Ø´ÛŒ نمودن این برگه + label_comment: دیدگاه + label_comment_plural: دیدگاه + label_x_comments: + zero: بدون دیدگاه + one: 1 دیدگاه + other: "%{count} دیدگاه" + label_comment_add: Ø§ÙØ²ÙˆØ¯Ù† دیدگاه + label_comment_added: دیدگاه Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_comment_delete: پاک کردن دیدگاه‌ها + label_query: پرس‌وجوی Ø³ÙØ§Ø±Ø´ÛŒ + label_query_plural: پرس‌وجوی Ø³ÙØ§Ø±Ø´ÛŒ + label_query_new: پرس‌وجوی تازه + label_filter_add: Ø§ÙØ²ÙˆØ¯Ù† پالایه + label_filter_plural: پالایه + label_equals: برابر است با + label_not_equals: برابر نیست با + label_in_less_than: کمتر است از + label_in_more_than: بیشتر است از + label_greater_or_equal: بیشتر یا برابر است با + label_less_or_equal: کمتر یا برابر است با + label_in: در + label_today: امروز + label_all_time: همیشه + label_yesterday: دیروز + label_this_week: این Ù‡ÙØªÙ‡ + label_last_week: Ù‡ÙØªÙ‡ پیشین + label_last_n_days: "%{count} روز گذشته" + label_this_month: این ماه + label_last_month: ماه پیشین + label_this_year: امسال + label_date_range: بازه تاریخ + label_less_than_ago: کمتر از چند روز پیشین + label_more_than_ago: بیشتر از چند روز پیشین + label_ago: روز پیشین + label_contains: دارد + label_not_contains: ندارد + label_day_plural: روز + label_repository: انباره + label_repository_plural: انباره + label_browse: چریدن + label_modification: "%{count} جایگذاری" + label_modification_plural: "%{count} جایگذاری" + label_branch: شاخه + label_tag: برچسب + label_revision: بازبینی + label_revision_plural: بازبینی + label_revision_id: "بازبینی %{value}" + label_associated_revisions: بازبینی‌های وابسته + label_added: Ø§ÙØ²ÙˆØ¯Ù‡ شده + label_modified: پیراسته شده + label_copied: رونویسی شده + label_renamed: نامگذاری شده + label_deleted: پاکسازی شده + label_latest_revision: آخرین بازبینی + label_latest_revision_plural: آخرین بازبینی + label_view_revisions: دیدن بازبینی‌ها + label_view_all_revisions: دیدن همه بازبینی‌ها + label_max_size: بیشترین اندازه + label_sort_highest: بردن به آغاز + label_sort_higher: بردن به بالا + label_sort_lower: بردن به پایین + label_sort_lowest: بردن به پایان + label_roadmap: نقشه راه + label_roadmap_due_in: "سررسید در %{value}" + label_roadmap_overdue: "%{value} دیرکرد" + label_roadmap_no_issues: هیچ پیامدی برای این نگارش نیست + label_search: جستجو + label_result_plural: دست‌آورد + label_all_words: همه واژه‌ها + label_wiki: ویکی + label_wiki_edit: ویرایش ویکی + label_wiki_edit_plural: ویرایش ویکی + label_wiki_page: برگه ویکی + label_wiki_page_plural: برگه ویکی + label_index_by_title: شاخص بر اساس نام + label_index_by_date: شاخص بر اساس تاریخ + label_current_version: نگارش کنونی + label_preview: پیش‌نمایش + label_feed_plural: خوراک + label_changes_details: ریز همه جایگذاری‌ها + label_issue_tracking: پیگیری پیامد + label_spent_time: زمان گذاشته شده + label_overall_spent_time: زمان گذاشته شده روی هم + label_f_hour: "%{value} ساعت" + label_f_hour_plural: "%{value} ساعت" + label_time_tracking: پیگیری زمان + label_change_plural: جایگذاری + label_statistics: سرشماری + label_commits_per_month: تغییر در هر ماه + label_commits_per_author: تغییر هر نویسنده + label_view_diff: دیدن ØªÙØ§ÙˆØªâ€ŒÙ‡Ø§ + label_diff_inline: همراستا + label_diff_side_by_side: کنار به کنار + label_options: گزینه‌ها + label_copy_workflow_from: رونویسی گردش کار از روی + label_permissions_report: گزارش پروانه‌ها + label_watched_issues: پیامدهای دیده‌بانی شده + label_related_issues: پیامدهای وابسته + label_applied_status: وضعیت به کار Ø±ÙØªÙ‡ + label_loading: بار گذاری... + label_relation_new: وابستگی تازه + label_relation_delete: پاک کردن وابستگی + label_relates_to: وابسته به + label_duplicates: نگارش دیگری از + label_duplicated_by: نگارشی دیگر در + label_blocks: بازداشت‌ها + label_blocked_by: بازداشت به دست + label_precedes: جلوتر است از + label_follows: پستر است از + label_end_to_start: پایان به آغاز + label_end_to_end: پایان به پایان + label_start_to_start: آغاز به آغاز + label_start_to_end: آغاز به پایان + label_stay_logged_in: وارد شده بمانید + label_disabled: ØºÛŒØ±ÙØ¹Ø§Ù„ + label_show_completed_versions: نمایش نگارش‌های انجام شده + label_me: من + label_board: انجمن + label_board_new: انجمن تازه + label_board_plural: انجمن + label_board_locked: Ù‚ÙÙ„ شده + label_board_sticky: چسبناک + label_topic_plural: Ø³Ø±ÙØµÙ„ + label_message_plural: پیام + label_message_last: آخرین پیام + label_message_new: پیام تازه + label_message_posted: پیام Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_reply_plural: پاسخ + label_send_information: ÙØ±Ø³ØªØ§Ø¯Ù† داده‌های حساب به کاربر + label_year: سال + label_month: ماه + label_week: Ù‡ÙØªÙ‡ + label_date_from: از + label_date_to: تا + label_language_based: بر اساس زبان کاربر + label_sort_by: "جور کرد با %{value}" + label_send_test_email: ÙØ±Ø³ØªØ§Ø¯Ù† ایمیل آزمایشی + label_feeds_access_key: کلید دسترسی RSS + label_missing_feeds_access_key: کلید دسترسی RSS در دسترس نیست + label_feeds_access_key_created_on: "کلید دسترسی RSS %{value} پیش ساخته شده است" + label_module_plural: پیمانه + label_added_time_by: "Ø§ÙØ²ÙˆØ¯Ù‡ شده به دست %{author} در %{age} پیش" + label_updated_time_by: "بروز شده به دست %{author} در %{age} پیش" + label_updated_time: "بروز شده در %{value} پیش" + label_jump_to_a_project: پرش به یک پروژه... + label_file_plural: پرونده + label_changeset_plural: تغییر + label_default_columns: ستون‌های پیش‌گزیده + label_no_change_option: (بدون تغییر) + label_bulk_edit_selected_issues: ویرایش دسته‌ای پیامدهای گزینش شده + label_theme: پوسته + label_default: پیش‌گزیده + label_search_titles_only: تنها نام‌ها جستجو شود + label_user_mail_option_all: "برای هر رویداد در همه پروژه‌ها" + label_user_mail_option_selected: "برای هر رویداد تنها در پروژه‌های گزینش شده..." + label_user_mail_option_none: "هیچ رویدادی" + label_user_mail_option_only_my_events: "تنها برای چیزهایی Ú©Ù‡ دیده‌بان هستم یا در آن‌ها درگیر هستم" + label_user_mail_option_only_assigned: "تنها برای چیزهایی Ú©Ù‡ به من واگذار شده" + label_user_mail_option_only_owner: "تنها برای چیزهایی Ú©Ù‡ من دارنده آن‌ها هستم" + label_user_mail_no_self_notified: "نمی‌خواهم از تغییراتی Ú©Ù‡ خودم می‌دهم آگاه شوم" + label_registration_activation_by_email: ÙØ¹Ø§Ù„سازی حساب با ایمیل + label_registration_manual_activation: ÙØ¹Ø§Ù„سازی حساب دستی + label_registration_automatic_activation: ÙØ¹Ø§Ù„سازی حساب خودکار + label_display_per_page: "ردیÙ‌ها در هر برگه: %{value}" + label_age: سن + label_change_properties: ویرایش ویژگی‌ها + label_general: همگانی + label_more: بیشتر + label_scm: SCM + label_plugins: Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ + label_ldap_authentication: شناساییLDAP + label_downloads_abbr: Ø¯Ø±ÛŒØ§ÙØª + label_optional_description: توضیح اختیاری + label_add_another_file: Ø§ÙØ²ÙˆØ¯Ù† پرونده دیگر + label_preferences: پسندها + label_chronological_order: به ترتیب تاریخ + label_reverse_chronological_order: برعکس ترتیب تاریخ + label_planning: برنامه ریزی + label_incoming_emails: ایمیل‌های آمده + label_generate_key: ساخت کلید + label_issue_watchers: دیده‌بان‌ها + label_example: نمونه + label_display: نمایش + label_sort: جور کرد + label_ascending: Ø§ÙØ²Ø§ÛŒØ´ÛŒ + label_descending: کاهشی + label_date_from_to: از %{start} تا %{end} + label_wiki_content_added: برگه ویکی Ø§ÙØ²ÙˆØ¯Ù‡ شد + label_wiki_content_updated: برگه ویکی بروز شد + label_group: دسته + label_group_plural: دسته + label_group_new: دسته تازه + label_time_entry_plural: زمان گذاشته شده + label_version_sharing_none: بدون اشتراک + label_version_sharing_descendants: با زیر پروژه‌ها + label_version_sharing_hierarchy: با رشته پروژه‌ها + label_version_sharing_tree: با درخت پروژه + label_version_sharing_system: با همه پروژه‌ها + label_update_issue_done_ratios: بروز رسانی اندازه انجام شده پیامد + label_copy_source: منبع + label_copy_target: مقصد + label_copy_same_as_target: مانند مقصد + label_display_used_statuses_only: تنها وضعیت‌هایی نشان داده شوند Ú©Ù‡ در این پیگرد به کار Ø±ÙØªÙ‡â€ŒØ§Ù†Ø¯ + label_api_access_key: کلید دسترسی API + label_missing_api_access_key: کلید دسترسی API در دسترس نیست + label_api_access_key_created_on: "کلید دسترسی API %{value} پیش ساخته شده است" + label_profile: نمایه + label_subtask_plural: زیرکار + label_project_copy_notifications: در هنگام رونویسی پروژه ایمیل‌های آگاه‌سازی را Ø¨ÙØ±Ø³Øª + label_principal_search: "جستجو برای کاربر یا دسته:" + label_user_search: "جستجو برای کاربر:" + + button_login: ورود + button_submit: واگذاری + button_save: نگهداری + button_check_all: گزینش همه + button_uncheck_all: گزینش هیچ + button_delete: پاک + button_create: ساخت + button_create_and_continue: ساخت Ùˆ ادامه + button_test: آزمایش + button_edit: ویرایش + button_edit_associated_wikipage: "ویرایش برگه ویکی وابسته: %{page_title}" + button_add: Ø§ÙØ²ÙˆØ¯Ù† + button_change: ویرایش + button_apply: انجام + button_clear: پاک + button_lock: گذاشتن Ù‚ÙÙ„ + button_unlock: برداشتن Ù‚ÙÙ„ + button_download: Ø¯Ø±ÛŒØ§ÙØª + button_list: Ùهرست + button_view: دیدن + button_move: جابجایی + button_move_and_follow: جابجایی Ùˆ ادامه + button_back: برگشت + button_cancel: بازگشت + button_activate: ÙØ¹Ø§Ù„سازی + button_sort: جور کرد + button_log_time: زمان‌نویسی + button_rollback: برگرد به این نگارش + button_watch: دیده‌بانی + button_unwatch: نا‌دیده‌بانی + button_reply: پاسخ + button_archive: بایگانی + button_unarchive: برگشت از بایگانی + button_reset: بازنشانی + button_rename: نامگذاری + button_change_password: جایگزینی گذرواژه + button_copy: رونوشت + button_copy_and_follow: رونوشت Ùˆ ادامه + button_annotate: یادداشت + button_update: بروز رسانی + button_configure: پیکربندی + button_quote: نقل قول + button_duplicate: نگارش دیگر + button_show: نمایش + + status_active: ÙØ¹Ø§Ù„ + status_registered: نام‌نویسی شده + status_locked: Ù‚ÙÙ„ + + version_status_open: باز + version_status_locked: Ù‚ÙÙ„ + version_status_closed: بسته + + field_active: ÙØ¹Ø§Ù„ + + text_select_mail_notifications: ÙØ±Ù…ان‌هایی Ú©Ù‡ برای آن‌ها باید ایمیل ÙØ±Ø³ØªØ§Ø¯Ù‡ شود را برگزینید. + text_regexp_info: برای نمونه ^[A-Z0-9]+$ + text_min_max_length_info: 0 یعنی بدون کران + text_project_destroy_confirmation: آیا براستی می‌خواهید این پروژه Ùˆ همه داده‌های آن را پاک کنید؟ + text_subprojects_destroy_warning: "زیرپروژه‌های آن: %{value} هم پاک خواهند شد." + text_workflow_edit: یک نقش Ùˆ یک پیگرد را برای ویرایش گردش کار برگزینید + text_are_you_sure: آیا این کار انجام شود؟ + text_are_you_sure_with_children: "آیا پیامد Ùˆ همه زیرپیامدهای آن پاک شوند؟" + text_journal_changed: "«%{label}» از «%{old}» به «%{new}» جایگزین شد" + text_journal_set_to: "«%{label}» به «%{value}» نشانده شد" + text_journal_deleted: "«%{label}» پاک شد (%{old})" + text_journal_added: "«%{label}»، «%{value}» را Ø§ÙØ²ÙˆØ¯" + text_tip_task_begin_day: روز آغاز پیامد + text_tip_task_end_day: روز پایان پیامد + text_tip_task_begin_end_day: روز آغاز Ùˆ پایان پیامد + text_project_identifier_info: 'تنها نویسه‌های Ú©ÙˆÚ†Ú© (a-z)ØŒ شماره‌ها Ùˆ خط تیره Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است.
    پس از ذخیره سازی، شناسه نمی‌تواند جایگزین شود.' + text_caracters_maximum: "بیشترین اندازه %{count} است." + text_caracters_minimum: "کمترین اندازه %{count} است." + text_length_between: "باید میان %{min} Ùˆ %{max} نویسه باشد." + text_tracker_no_workflow: هیچ گردش کاری برای این پیگرد مشخص نشده است + text_unallowed_characters: نویسه‌های ناپسند + text_comma_separated: چند مقدار Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است (با «,» از هم جدا شوند). + text_line_separated: چند مقدار Ù¾Ø°ÛŒØ±ÙØªÙ†ÛŒ است (هر مقدار در یک خط). + text_issues_ref_in_commit_messages: نشانه روی Ùˆ بستن پیامدها در پیام‌های انباره + text_issue_added: "پیامد %{id} به دست %{author} گزارش شد." + text_issue_updated: "پیامد %{id} به دست %{author} بروز شد." + text_wiki_destroy_confirmation: آیا براستی می‌خواهید این ویکی Ùˆ همه محتوای آن را پاک کنید؟ + text_issue_category_destroy_question: "برخی پیامدها (%{count}) به این دسته واگذار شده‌اند. می‌خواهید Ú†Ù‡ کنید؟" + text_issue_category_destroy_assignments: پاک کردن واگذاری به دسته + text_issue_category_reassign_to: واگذاری دوباره پیامدها به این دسته + text_user_mail_option: "برای پروژه‌های گزینش نشده، تنها ایمیل‌هایی درباره چیزهایی Ú©Ù‡ دیده‌بان یا درگیر آن‌ها هستید Ø¯Ø±ÛŒØ§ÙØª خواهید کرد (مانند پیامدهایی Ú©Ù‡ نویسنده آن‌ها هستید یا به شما واگذار شده‌اند)." + text_no_configuration_data: "نقش‌ها، پیگردها، وضعیت‌های پیامد Ùˆ گردش کار هنوز پیکربندی نشده‌اند. \nبه سختی پیشنهاد می‌شود Ú©Ù‡ پیکربندی پیش‌گزیده را بار کنید. سپس می‌توانید آن را ویرایش کنید." + text_load_default_configuration: بارگذاری پیکربندی پیش‌گزیده + text_status_changed_by_changeset: "در تغییر %{value} بروز شده است." + text_time_logged_by_changeset: "در تغییر %{value} نوشته شده است." + text_issues_destroy_confirmation: 'آیا براستی می‌خواهید پیامدهای گزینش شده را پاک کنید؟' + text_select_project_modules: 'پیمانه‌هایی Ú©Ù‡ باید برای این پروژه ÙØ¹Ø§Ù„ شوند را برگزینید:' + text_default_administrator_account_changed: حساب سرپرستی پیش‌گزیده جایگزین شد + text_file_repository_writable: پوشه پیوست‌ها نوشتنی است + text_plugin_assets_writable: پوشه دارایی‌های Ø§ÙØ²ÙˆÙ†Ù‡â€ŒÙ‡Ø§ نوشتنی است + text_rmagick_available: RMagick در دسترس است (اختیاری) + text_destroy_time_entries_question: "%{hours} ساعت روی پیامدهایی Ú©Ù‡ می‌خواهید پاک کنید کار گزارش شده است. می‌خواهید Ú†Ù‡ کنید؟" + text_destroy_time_entries: ساعت‌های گزارش شده پاک شوند + text_assign_time_entries_to_project: ساعت‌های گزارش شده به پروژه واگذار شوند + text_reassign_time_entries: 'ساعت‌های گزارش شده به این پیامد واگذار شوند:' + text_user_wrote: "%{value} نوشت:" + text_enumeration_destroy_question: "%{count} داده به این برشمردنی وابسته شده‌اند." + text_enumeration_category_reassign_to: 'به این برشمردنی وابسته شوند:' + text_email_delivery_not_configured: "Ø¯Ø±ÛŒØ§ÙØª ایمیل پیکربندی نشده است Ùˆ آگاه‌سازی‌ها غیر ÙØ¹Ø§Ù„ هستند.\nکارگزار SMTP خود را در config/email.yml پیکربندی کنید Ùˆ برنامه را بازنشانی کنید تا ÙØ¹Ø§Ù„ شوند." + text_repository_usernames_mapping: "کاربر Redmine Ú©Ù‡ به هر نام کاربری پیام‌های انباره نگاشت می‌شود را برگزینید.\nکاربرانی Ú©Ù‡ نام کاربری یا ایمیل همسان دارند، خود به خود نگاشت می‌شوند." + text_diff_truncated: '... این ØªÙØ§ÙˆØª بریده شده چون بیشتر از بیشترین اندازه نمایش دادنی است.' + text_custom_field_possible_values_info: 'یک خط برای هر مقدار' + text_wiki_page_destroy_question: "این برگه %{descendants} زیربرگه دارد.می‌خواهید Ú†Ù‡ کنید؟" + text_wiki_page_nullify_children: "زیربرگه‌ها برگه ریشه شوند" + text_wiki_page_destroy_children: "زیربرگه‌ها Ùˆ زیربرگه‌های آن‌ها پاک شوند" + text_wiki_page_reassign_children: "زیربرگه‌ها به زیر این برگه پدر بروند" + text_own_membership_delete_confirmation: "شما دارید برخی یا همه پروانه‌های خود را برمی‌دارید Ùˆ شاید پس از این دیگر نتوانید این پروژه را ویرایش کنید.\nآیا می‌خواهید این کار را بکنید؟" + text_zoom_in: درشتنمایی + text_zoom_out: ریزنمایی + + default_role_manager: سرپرست + default_role_developer: برنامه‌نویس + default_role_reporter: گزارش‌دهنده + default_tracker_bug: ایراد + default_tracker_feature: ویژگی + default_tracker_support: پشتیبانی + default_issue_status_new: تازه + default_issue_status_in_progress: در گردش + default_issue_status_resolved: درست شده + default_issue_status_feedback: بازخورد + default_issue_status_closed: بسته + default_issue_status_rejected: برگشت خورده + default_doc_category_user: نوشتار کاربر + default_doc_category_tech: نوشتار ÙÙ†ÛŒ + default_priority_low: پایین + default_priority_normal: میانه + default_priority_high: بالا + default_priority_urgent: زود + default_priority_immediate: بیدرنگ + default_activity_design: طراحی + default_activity_development: ساخت + + enumeration_issue_priorities: برتری‌های پیامد + enumeration_doc_categories: دسته‌های نوشتار + enumeration_activities: ÙØ¹Ø§Ù„یت‌ها (پیگیری زمان) + enumeration_system_activity: ÙØ¹Ø§Ù„یت سامانه + + text_tip_issue_begin_day: issue beginning this day + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_tip_issue_begin_end_day: issue beginning and ending this day + text_tip_issue_end_day: issue ending this day + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/fi.yml --- a/config/locales/fi.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/fi.yml Thu Mar 03 12:02:03 2011 +0000 @@ -751,7 +751,7 @@ label_generate_key: Luo avain setting_mail_handler_api_enabled: Ota käyttöön WS saapuville sähköposteille setting_mail_handler_api_key: API avain - text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/email.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." + text_email_delivery_not_configured: "Sähköpostin jakelu ei ole määritelty ja sähköpostimuistutukset eivät ole käytössä.\nKonfiguroi sähköpostipalvelinasetukset (SMTP) config/configuration.yml tiedostosta ja uudelleenkäynnistä sovellus jotta asetukset astuvat voimaan." field_parent_title: Aloitussivu label_issue_watchers: Tapahtuman seuraajat button_quote: Vastaa @@ -958,3 +958,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/fr.yml --- a/config/locales/fr.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/fr.yml Thu Mar 03 12:02:03 2011 +0000 @@ -166,10 +166,10 @@ notice_successful_create: Création effectuée avec succès. notice_successful_update: Mise à jour effectuée avec succès. notice_successful_delete: Suppression effectuée avec succès. - notice_successful_connection: Connection réussie. + notice_successful_connection: Connexion réussie. notice_file_not_found: "La page à laquelle vous souhaitez accéder n'existe pas ou a été supprimée." notice_locking_conflict: Les données ont été mises à jour par un autre utilisateur. Mise à jour impossible. - notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page." + notice_not_authorized: "Vous n'êtes pas autorisé à accéder à cette page." notice_not_authorized_archived_project: Le projet auquel vous tentez d'accéder a été archivé. notice_email_sent: "Un email a été envoyé à %{value}" notice_email_error: "Erreur lors de l'envoi de l'email (%{value})" @@ -307,6 +307,7 @@ field_active: Actif field_parent_issue: Tâche parente field_visible: Visible + field_warn_on_leaving_unsaved: "M'avertir lorsque je quitte une page contenant du texte non sauvegardé" setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application @@ -323,11 +324,11 @@ setting_text_formatting: Formatage du texte setting_wiki_compression: Compression historique wiki setting_feeds_limit: Limite du contenu des flux RSS - setting_default_projects_public: Définir les nouveaux projects comme publics par défaut + setting_default_projects_public: Définir les nouveaux projets comme publics par défaut setting_autofetch_changesets: Récupération auto. des commits setting_sys_api_enabled: Activer les WS pour la gestion des dépôts - setting_commit_ref_keywords: Mot-clés de référencement - setting_commit_fix_keywords: Mot-clés de résolution + setting_commit_ref_keywords: Mots-clés de référencement + setting_commit_fix_keywords: Mots-clés de résolution setting_autologin: Autologin setting_date_format: Format de date setting_time_format: Format d'heure @@ -349,7 +350,7 @@ setting_gravatar_enabled: Afficher les Gravatar des utilisateurs setting_diff_max_lines_displayed: Nombre maximum de lignes de diff affichées setting_file_max_size_displayed: Taille maximum des fichiers texte affichés en ligne - setting_repository_log_display_limit: "Nombre maximum de revisions affichées sur l'historique d'un fichier" + setting_repository_log_display_limit: "Nombre maximum de révisions affichées sur l'historique d'un fichier" setting_openid: "Autoriser l'authentification et l'enregistrement OpenID" setting_password_min_length: Longueur minimum des mots de passe setting_new_project_user_role_id: Rôle donné à un utilisateur non-administrateur qui crée un projet @@ -369,7 +370,7 @@ permission_add_subprojects: Créer des sous-projets permission_edit_project: Modifier le projet permission_select_project_modules: Choisir les modules - permission_manage_members: Gérer les members + permission_manage_members: Gérer les membres permission_manage_versions: Gérer les versions permission_manage_categories: Gérer les catégories de demandes permission_view_issues: Voir les demandes @@ -597,6 +598,7 @@ label_query: Rapport personnalisé label_query_plural: Rapports personnalisés label_query_new: Nouveau rapport + label_my_queries: Mes rapports personnalisés label_filter_add: "Ajouter le filtre " label_filter_plural: Filtres label_equals: égal @@ -860,7 +862,7 @@ text_issue_added: "La demande %{id} a été soumise par %{author}." text_issue_updated: "La demande %{id} a été mise à jour par %{author}." text_wiki_destroy_confirmation: Etes-vous sûr de vouloir supprimer ce wiki et tout son contenu ? - text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégories. Que voulez-vous faire ?" + text_issue_category_destroy_question: "%{count} demandes sont affectées à cette catégorie. Que voulez-vous faire ?" text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)." @@ -881,7 +883,7 @@ text_user_wrote: "%{value} a écrit :" text_enumeration_destroy_question: "Cette valeur est affectée à %{count} objets." text_enumeration_category_reassign_to: 'Réaffecter les objets à cette valeur:' - text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/email.yml et redémarrez l'application pour les activer." + text_email_delivery_not_configured: "L'envoi de mail n'est pas configuré, les notifications sont désactivées.\nConfigurez votre serveur SMTP dans config/configuration.yml et redémarrez l'application pour les activer." text_repository_usernames_mapping: "Vous pouvez sélectionner ou modifier l'utilisateur Redmine associé à chaque nom d'utilisateur figurant dans l'historique du dépôt.\nLes utilisateurs avec le même identifiant ou la même adresse mail seront automatiquement associés." text_diff_truncated: '... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.' text_custom_field_possible_values_info: 'Une ligne par valeur' @@ -890,6 +892,7 @@ text_wiki_page_destroy_children: "Supprimer les sous-pages et toutes leurs descedantes" text_wiki_page_reassign_children: "Réaffecter les sous-pages à cette page" text_own_membership_delete_confirmation: "Vous allez supprimer tout ou partie de vos permissions sur ce projet et ne serez peut-être plus autorisé à modifier ce projet.\nEtes-vous sûr de vouloir continuer ?" + text_warn_on_leaving_unsaved: "Cette page contient du texte non sauvegardé qui sera perdu si vous quittez la page." default_role_manager: "Manager " default_role_developer: "Développeur " @@ -924,6 +927,7 @@ error_no_tracker_in_project: "Aucun tracker n'est associé à ce projet. Vérifier la configuration du projet." error_no_default_issue_status: "Aucun statut de demande n'est défini par défaut. Vérifier votre configuration (Administration -> Statuts de demandes)." text_journal_changed: "%{label} changé de %{old} à %{new}" + text_journal_changed_no_detail: "%{label} mis à jour" text_journal_set_to: "%{label} mis à %{value}" text_journal_deleted: "%{label} %{old} supprimé" text_journal_added: "%{label} %{value} ajouté" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/gl.yml --- a/config/locales/gl.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/gl.yml Thu Mar 03 12:02:03 2011 +0000 @@ -773,7 +773,7 @@ text_destroy_time_entries: Borrar as horas text_destroy_time_entries_question: Existen %{hours} horas asignadas á petición que quere borrar. ¿Que quere facer ? text_diff_truncated: '... Diferencia truncada por exceder o máximo tamaño visualizable.' - text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/email.yml e reinicie a aplicación para activar os cambios." + text_email_delivery_not_configured: "O envío de correos non está configurado, e as notificacións desactiváronse. \n Configure o servidor de SMTP en config/configuration.yml e reinicie a aplicación para activar os cambios." text_enumeration_category_reassign_to: 'Reasignar ó seguinte valor:' text_enumeration_destroy_question: "%{count} obxectos con este valor asignado." text_file_repository_writable: Pódese escribir no repositorio @@ -949,3 +949,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/he.yml --- a/config/locales/he.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/he.yml Thu Mar 03 12:02:03 2011 +0000 @@ -890,7 +890,7 @@ text_user_wrote: "%{value} כתב:" text_enumeration_destroy_question: "%{count} ××•×‘×™×§×˜×™× ×ž×•×¦×‘×™× ×œ×¢×¨×š ×–×”." text_enumeration_category_reassign_to: 'הצב מחדש לערך ×”×–×”:' - text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/email.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' + text_email_delivery_not_configured: '×œ× × ×§×‘×¢×” תצורה לשליחת דו×ר, וההתר×ות כבויות.\nקבע ×ת תצורת שרת ×”Ö¾SMTP בקובץ /etc/redmine/<instance>/configuration.yml והתחל ×ת ×”×פליקציה מחדש ×¢"מ ל×פשר ×ות×.' text_repository_usernames_mapping: "בחר ×ו עדכן ×ת משתמש Redmine הממופה לכל ×©× ×ž×©×ª×ž×© ביומן המ×גר.\n×ž×©×ª×ž×©×™× ×‘×¢×œ×™ ×©× ×ו כתובת דו×ר ×–×”×” ב־Redmine ובמ×גר ×ž×ž×•×¤×™× ×‘×ופן ×וטומטי." text_diff_truncated: '... ×”×©×™× ×•×™×™× ×¢×•×‘×¨×™× ×ת מספר השורות המירבי לתצוגה, ולכן ×”× ×§×•×¦×¦×•.' text_custom_field_possible_values_info: שורה ×חת לכל ערך @@ -942,3 +942,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/hr.yml --- a/config/locales/hr.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/hr.yml Thu Mar 03 12:02:03 2011 +0000 @@ -855,7 +855,7 @@ text_user_wrote: "%{value} je napisao/la:" text_enumeration_destroy_question: "%{count} objekata je pridruženo toj vrijednosti." text_enumeration_category_reassign_to: 'Premjesti ih ovoj vrijednosti:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... Ovaj diff je odrezan zato Å¡to prelazi maksimalnu veliÄinu koja može biti prikazana.' text_custom_field_possible_values_info: 'One line for each value' @@ -944,3 +944,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/hu.yml --- a/config/locales/hu.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/hu.yml Thu Mar 03 12:02:03 2011 +0000 @@ -749,7 +749,7 @@ label_generate_key: Kulcs generálása setting_mail_handler_api_enabled: Web Service engedélyezése a beérkezett levelekhez setting_mail_handler_api_key: API kulcs - text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÃllítsd be az SMTP szervert a config/email.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." + text_email_delivery_not_configured: "Az E-mail küldés nincs konfigurálva, és az értesítések ki vannak kapcsolva.\nÃllítsd be az SMTP szervert a config/configuration.yml fájlban és indítsd újra az alkalmazást, hogy érvénybe lépjen." field_parent_title: SzülÅ‘ oldal label_issue_watchers: MegfigyelÅ‘k setting_commit_logs_encoding: Commit üzenetek kódlapja @@ -956,3 +956,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/id.yml --- a/config/locales/id.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/id.yml Thu Mar 03 12:02:03 2011 +0000 @@ -834,7 +834,7 @@ text_user_wrote: "%{value} menulis:" text_enumeration_destroy_question: "%{count} obyek ditugaskan untuk nilai ini." text_enumeration_category_reassign_to: 'Tugaskan kembali untuk nilai ini:' - text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/email.yml dan restart kembali aplikasi untuk mengaktifkan." + text_email_delivery_not_configured: "Pengiriman email belum dikonfigurasi, notifikasi tidak diaktifkan.\nAnda harus mengkonfigur SMTP server anda pada config/configuration.yml dan restart kembali aplikasi untuk mengaktifkan." text_repository_usernames_mapping: "Pilih atau perbarui pengguna Redmine yang terpetakan ke setiap nama pengguna yang ditemukan di log repositori.\nPengguna dengan nama pengguna dan repositori atau email yang sama secara otomasit akan dipetakan." text_diff_truncated: '... Perbedaan terpotong karena melebihi batas maksimum yang bisa ditampilkan.' text_custom_field_possible_values_info: 'Satu baris untuk setiap nilai' @@ -945,3 +945,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/it.yml --- a/config/locales/it.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/it.yml Thu Mar 03 12:02:03 2011 +0000 @@ -731,7 +731,7 @@ label_generate_key: Genera una chiave setting_mail_handler_api_enabled: Abilita WS per le email in arrivo setting_mail_handler_api_key: Chiave API - text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle." + text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/configuration.yml e riavvia l'applicazione per abilitarle." field_parent_title: Pagina principale label_issue_watchers: Osservatori setting_commit_logs_encoding: Codifica dei messaggi di commit @@ -938,3 +938,7 @@ setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/ja.yml --- a/config/locales/ja.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/ja.yml Thu Mar 03 12:02:03 2011 +0000 @@ -920,7 +920,7 @@ text_user_wrote: "%{value} ã¯æ›¸ãã¾ã—ãŸ:" text_enumeration_destroy_question: "%{count}個ã®ã‚ªãƒ–ジェクトãŒã“ã®å€¤ã«å‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„ã¾ã™ã€‚" text_enumeration_category_reassign_to: '次ã®å€¤ã«å‰²ã‚Šå½“ã¦ç›´ã™:' - text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/email.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" + text_email_delivery_not_configured: "メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«å¿…è¦ãªè¨­å®šãŒè¡Œã‚れã¦ã„ãªã„ãŸã‚ã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。\nconfig/configuration.ymlã§SMTPサーãƒã®è¨­å®šã‚’行ã„ã€ã‚¢ãƒ—リケーションをå†èµ·å‹•ã—ã¦ãã ã•ã„。" text_repository_usernames_mapping: "リãƒã‚¸ãƒˆãƒªã®ãƒ­ã‚°ã‹ã‚‰æ¤œå‡ºã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã‚’ã©ã®Redmineユーザーã«é–¢é€£ã¥ã‘ã‚‹ã®ã‹é¸æŠžã—ã¦ãã ã•ã„。\nログ上ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¾ãŸã¯ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒRedmineã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ä¸€è‡´ã™ã‚‹å ´åˆã¯è‡ªå‹•çš„ã«é–¢é€£ã¥ã‘られã¾ã™ã€‚" text_diff_truncated: '... 差分ã®è¡Œæ•°ãŒè¡¨ç¤ºå¯èƒ½ãªä¸Šé™ã‚’è¶…ãˆã¾ã—ãŸã€‚è¶…éŽåˆ†ã¯è¡¨ç¤ºã—ã¾ã›ã‚“。' text_custom_field_possible_values_info: 'é¸æŠžè‚¢ã®å€¤ã¯1行ã«1個ãšã¤è¨˜è¿°ã—ã¦ãã ã•ã„。' @@ -958,3 +958,7 @@ enumeration_doc_categories: 文書カテゴリ enumeration_activities: 作業分類 (時間トラッキング) enumeration_system_activity: システム作業分類 + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/ko.yml --- a/config/locales/ko.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/ko.yml Thu Mar 03 12:02:03 2011 +0000 @@ -844,7 +844,7 @@ text_user_wrote: "%{value}ì˜ ë§ê¸€:" text_enumeration_category_reassign_to: '새로운 ê°’ì„ ì„¤ì •:' text_enumeration_destroy_question: "%{count} ê°œì˜ ì¼ê°ì´ ì´ ê°’ì„ ì‚¬ìš©í•˜ê³  있습니다." - text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/email.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." + text_email_delivery_not_configured: "ì´ë©”ì¼ ì „ë‹¬ì´ ì„¤ì •ë˜ì§€ 않았습니다. 그래서 ì•Œë¦¼ì´ ë¹„í™œì„±í™”ë˜ì—ˆìŠµë‹ˆë‹¤.\n SMTP서버를 config/configuration.ymlì—서 설정하고 어플리케ì´ì…˜ì„ 다시 시작하십시오. 그러면 ë™ìž‘합니다." text_repository_usernames_mapping: "저장소 로그ì—서 ë°œê²¬ëœ ê° ì‚¬ìš©ìžì— ë ˆë“œë§ˆì¸ ì‚¬ìš©ìžë¥¼ ì—…ë°ì´íŠ¸í• ë•Œ ì„ íƒí•©ë‹ˆë‹¤.\n레드마ì¸ê³¼ ì €ìž¥ì†Œì˜ ì´ë¦„ì´ë‚˜ ì´ë©”ì¼ì´ ê°™ì€ ì‚¬ìš©ìžê°€ ìžë™ìœ¼ë¡œ ì—°ê²°ë©ë‹ˆë‹¤." text_diff_truncated: '... ì´ ì°¨ì´ì ì€ 표시할 수 있는 최대 줄수를 초과해서 ì´ ì°¨ì´ì ì€ 잘렸습니다.' text_custom_field_possible_values_info: 'ê° ê°’ 당 한 줄' @@ -989,3 +989,7 @@ setting_commit_logtime_enabled: 커밋 시ì ì— 작업 시간 ê¸°ë¡ í™œì„±í™” notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/lt.yml --- a/config/locales/lt.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/lt.yml Thu Mar 03 12:02:03 2011 +0000 @@ -886,7 +886,7 @@ text_user_wrote: "%{value} parašė:" text_enumeration_destroy_question: "%{count} objektai priskirti Å¡iai reikÅ¡mei." text_enumeration_category_reassign_to: 'Priskirti juos Å¡iai reikÅ¡mei:' - text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/email.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." + text_email_delivery_not_configured: "El.paÅ¡to siuntimas nesukonfigÅ«ruotas, ir perspÄ—jimai neaktyvus.\nSukonfigÅ«ruokite savo SMTP serverį byloje config/configuration.yml ir perleiskite programÄ… norÄ—dami pritaikyti pakeitimus." text_repository_usernames_mapping: "Parinkite ar atnaujinkite Redmine vartotojo vardÄ… kiekvienam saugyklos vardui, kuris paminÄ—tas saugyklos log'e.\nVartotojai, turintys tÄ… patį Redmine ir saugyklos vardÄ… ar el.paÅ¡tÄ… automatiÅ¡kai suriÅ¡ti." text_diff_truncated: "... Å is diff'as nukarpytas, nes jis virÅ¡ijo maksimalų rodomÄ… eiluÄių skaiÄių." text_custom_field_possible_values_info: 'Po vienÄ… eilutÄ™ kiekvienai reikÅ¡mei' @@ -997,3 +997,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/lv.yml --- a/config/locales/lv.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/lv.yml Thu Mar 03 12:02:03 2011 +0000 @@ -855,7 +855,7 @@ text_user_wrote: "%{value} rakstÄ«ja:" text_enumeration_destroy_question: "%{count} objekti ir piešķirti Å¡ai vÄ“rtÄ«bai." text_enumeration_category_reassign_to: 'Piešķirt tos Å¡ai vÄ“rtÄ«bai:' - text_email_delivery_not_configured: "E-pastu nosÅ«tīšana nav konfigurÄ“ta, un ziņojumi ir izslÄ“gti.\nKonfigurÄ“jiet savu SMTP serveri datnÄ“ config/email.yml un pÄrstartÄ“jiet lietotni." + text_email_delivery_not_configured: "E-pastu nosÅ«tīšana nav konfigurÄ“ta, un ziņojumi ir izslÄ“gti.\nKonfigurÄ“jiet savu SMTP serveri datnÄ“ config/configuration.yml un pÄrstartÄ“jiet lietotni." text_repository_usernames_mapping: "IzvÄ“lieties vai atjaunojiet Redmine lietotÄju, saistÄ«tu ar katru lietotÄjvÄrdu, kas atrodams repozitorija žurnÄlÄ.\nLietotÄji ar to paÅ¡u Redmine un repozitorija lietotÄjvÄrdu bÅ«s saistÄ«ti automÄtiski." text_diff_truncated: '... Å is diff tika nošķelts, jo tas pÄrsniedz maksimÄlo izmÄ“ru, ko var parÄdÄ«t.' text_custom_field_possible_values_info: 'Katra vÄ“rtÄ«bas savÄ rindÄ' @@ -932,3 +932,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/mk.yml --- a/config/locales/mk.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/mk.yml Thu Mar 03 12:02:03 2011 +0000 @@ -878,7 +878,7 @@ text_user_wrote: "%{value} напиша:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "ДоÑтавата по е-пошта не е конфигурирана, и извеÑтувањата Ñе оневозможени.\nКонфигурирајте го Вашиот SMTP Ñервер во config/email.yml и реÑтартирајте ја апликацијата." + text_email_delivery_not_configured: "ДоÑтавата по е-пошта не е конфигурирана, и извеÑтувањата Ñе оневозможени.\nКонфигурирајте го Вашиот SMTP Ñервер во config/configuration.yml и реÑтартирајте ја апликацијата." text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_custom_field_possible_values_info: 'One line for each value' @@ -937,3 +937,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/mn.yml --- a/config/locales/mn.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/mn.yml Thu Mar 03 12:02:03 2011 +0000 @@ -860,7 +860,7 @@ text_user_wrote: "%{value} бичихдÑÑ:" text_enumeration_destroy_question: "Ð­Ð½Ñ ÑƒÑ‚Ð³Ð°Ð´ %{count} обьект оноогдÑон байна." text_enumeration_category_reassign_to: 'ТÑдгÑÑрийг ÑÐ½Ñ ÑƒÑ‚Ð³Ð°Ð´ дахин оноо:' - text_email_delivery_not_configured: "ИмÑйлийн тохиргоог хараахан тохируулаагүй байна, тиймÑÑÑ Ð¸Ð¼Ñйл мÑдÑгдÑл Ñвуулах боломжгүй байна.\nSMTP ÑервÑÑ€ÑÑ config/email.yml файл дотор тохируулаад төÑлийн менежерÑÑ Ð´Ð°Ñ…Ð¸Ð°Ð´ ÑхлүүлÑÑÑ€Ñй." + text_email_delivery_not_configured: "ИмÑйлийн тохиргоог хараахан тохируулаагүй байна, тиймÑÑÑ Ð¸Ð¼Ñйл мÑдÑгдÑл Ñвуулах боломжгүй байна.\nSMTP ÑервÑÑ€ÑÑ config/configuration.yml файл дотор тохируулаад төÑлийн менежерÑÑ Ð´Ð°Ñ…Ð¸Ð°Ð´ ÑхлүүлÑÑÑ€Ñй." text_repository_usernames_mapping: "Репозиторийн логд байгаа бүх Ñ…ÑÑ€ÑглÑгчийн нÑрүүдÑд харгалзÑан ТөÑлийн Менежер ÑиÑтемд бүртгÑлтÑй Ñ…ÑÑ€ÑглÑгчдийг Сонгох юмуу шинÑÑ‡Ð¸Ð»Ð½Ñ Ò¯Ò¯.\nТөÑлийн менежер болон репозиторид байгаа ижилхÑн нÑÑ€ юмуу имÑйлтÑй Ñ…ÑÑ€ÑглÑгчид харилцан харгалзна." text_diff_truncated: '... Файлын Ñлгаврын Ñ…ÑмжÑÑ Ò¯Ð·Ò¯Ò¯Ð»ÑÑ…Ñд дÑндүү урт байгаа ÑƒÑ‡Ñ€Ð°Ð°Ñ Ñ‚Ó©Ð³ÑÐ³Ó©Ð»Ó©Ó©Ñ Ð½ÑŒ хаÑч үзүүлÑв.' text_custom_field_possible_values_info: 'One line for each value' @@ -938,3 +938,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/nl.yml --- a/config/locales/nl.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/nl.yml Thu Mar 03 12:02:03 2011 +0000 @@ -743,7 +743,7 @@ text_destroy_time_entries: Verwijder gerapporteerde uren text_destroy_time_entries_question: "%{hours} uren werden gerapporteerd op de issue(s) die u wilde verwijderen. Wat wil u doen?" text_diff_truncated: '... Deze diff werd afgekort omdat het de maximale weer te geven karakters overschreed.' - text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/email.yml en herstart de applicatie om dit te activeren." + text_email_delivery_not_configured: "E-mailbezorging is niet geconfigureerd. Notificaties zijn uitgeschakeld.\nConfigureer uw SMTP server in config/configuration.yml en herstart de applicatie om dit te activeren." text_enumeration_category_reassign_to: 'Wijs de volgende waarde toe:' text_enumeration_destroy_question: "%{count} objecten zijn toegewezen aan deze waarde." text_file_repository_writable: Bestandsrepository beschrijfbaar @@ -919,3 +919,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/no.yml --- a/config/locales/no.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/no.yml Thu Mar 03 12:02:03 2011 +0000 @@ -717,7 +717,7 @@ label_generate_key: Generer en nøkkel setting_mail_handler_api_enabled: Skru pÃ¥ WS for innkommende e-post setting_mail_handler_api_key: API-nøkkel - text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/email.yml og start programmet pÃ¥ nytt for Ã¥ skru det pÃ¥." + text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet pÃ¥ nytt for Ã¥ skru det pÃ¥." field_parent_title: Foreldreside label_issue_watchers: OvervÃ¥kere setting_commit_logs_encoding: Tegnkoding for innsendingsmeldinger @@ -924,3 +924,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/pl.yml --- a/config/locales/pl.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/pl.yml Thu Mar 03 12:02:03 2011 +0000 @@ -772,7 +772,7 @@ text_default_administrator_account_changed: Zmieniono domyÅ›lne hasÅ‚o administratora text_destroy_time_entries: UsuÅ„ wpisy dziennika text_destroy_time_entries_question: Przepracowano %{hours} godzin przy zagadnieniu, które chcesz usunąć. Co chcesz zrobić? - text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostaÅ‚o skonfigurowane, wiÄ™c powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/email.yml a nastÄ™pnie zrestartuj aplikacjÄ™ i uaktywnij to." + text_email_delivery_not_configured: "Dostarczanie poczty elektronicznej nie zostaÅ‚o skonfigurowane, wiÄ™c powiadamianie jest nieaktywne.\nSkonfiguruj serwer SMTP w config/configuration.yml a nastÄ™pnie zrestartuj aplikacjÄ™ i uaktywnij to." text_enumeration_category_reassign_to: 'ZmieÅ„ przypisanie na tÄ… wartość:' text_enumeration_destroy_question: "%{count} obiektów jest przypisana do tej wartoÅ›ci." text_file_repository_writable: Zapisywalne repozytorium plików @@ -954,3 +954,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/pt-BR.yml --- a/config/locales/pt-BR.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/pt-BR.yml Thu Mar 03 12:02:03 2011 +0000 @@ -729,7 +729,7 @@ text_user_wrote: "%{value} escreveu:" text_enumeration_destroy_question: "%{count} objetos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Reatribuí-los ao valor:' - text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/email.yml e reinicie a aplicação para ativá-las." + text_email_delivery_not_configured: "O envio de e-mail não está configurado, e as notificações estão inativas.\nConfigure seu servidor SMTP no arquivo config/configuration.yml e reinicie a aplicação para ativá-las." default_role_manager: Gerente default_role_developer: Desenvolvedor @@ -957,3 +957,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/pt.yml --- a/config/locales/pt.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/pt.yml Thu Mar 03 12:02:03 2011 +0000 @@ -716,7 +716,7 @@ text_user_wrote: "%{value} escreveu:" text_enumeration_destroy_question: "%{count} objectos estão atribuídos a este valor." text_enumeration_category_reassign_to: 'Re-atribuí-los para este valor:' - text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/email.yml e reinicie a aplicação para activar estas funcionalidades." + text_email_delivery_not_configured: "Entrega por e-mail não está configurada, e as notificação estão desactivadas.\nConfigure o seu servidor de SMTP em config/configuration.yml e reinicie a aplicação para activar estas funcionalidades." default_role_manager: Gestor default_role_developer: Programador @@ -941,3 +941,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/ro.yml --- a/config/locales/ro.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/ro.yml Thu Mar 03 12:02:03 2011 +0000 @@ -775,7 +775,7 @@ text_user_wrote: "%{value} a scris:" text_enumeration_destroy_question: "Această valoare are %{count} obiecte." text_enumeration_category_reassign_to: 'Atribuie la această valoare:' - text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/email.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." + text_email_delivery_not_configured: "Trimiterea de emailuri nu este configurată È™i ca urmare, notificările sunt dezactivate.\nConfiguraÈ›i serverul SMTP în config/configuration.yml È™i reporniÈ›i aplicaÈ›ia pentru a le activa." text_repository_usernames_mapping: "SelectaÈ›i sau modificaÈ›i contul Redmine echivalent contului din istoricul depozitului.\nUtilizatorii cu un cont (sau e-mail) identic în Redmine È™i depozit sunt echivalate automat." text_diff_truncated: '... ComparaÈ›ia a fost trunchiată pentru ca depășeÈ™te lungimea maximă de text care poate fi afiÈ™at.' text_custom_field_possible_values_info: 'O linie pentru fiecare valoare' @@ -930,3 +930,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/ru.yml --- a/config/locales/ru.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/ru.yml Thu Mar 03 12:02:03 2011 +0000 @@ -914,7 +914,7 @@ text_destroy_time_entries_question: Ð’Ñ‹ ÑобираетеÑÑŒ удалить %{hours} чаÑа(ов), прикрепленных за Ñтой задачей. text_destroy_time_entries: Удалить зарегиÑтрированное Ð²Ñ€ÐµÐ¼Ñ text_diff_truncated: '... Этот diff ограничен, так как превышает макÑимальный отображаемый размер.' - text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/email.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." + text_email_delivery_not_configured: "Параметры работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером не наÑтроены и Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ email не активна.\nÐаÑтроить параметры Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ SMTP-Ñервера Ð’Ñ‹ можете в файле config/configuration.yml. Ð”Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ перезапуÑтите приложение." text_enumeration_category_reassign_to: 'Ðазначить им Ñледующее значение:' text_enumeration_destroy_question: "%{count} объект(а,ов) ÑвÑзаны Ñ Ñтим значением." text_file_repository_writable: Хранилище Ñ Ð´Ð¾Ñтупом на запиÑÑŒ @@ -1050,3 +1050,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/sk.yml --- a/config/locales/sk.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/sk.yml Thu Mar 03 12:02:03 2011 +0000 @@ -724,7 +724,7 @@ label_generate_key: VygenerovaÅ¥ kÄ¾ÃºÄ setting_mail_handler_api_enabled: Zapnúť Webovú Službu (WS) pre príchodzie emaily setting_mail_handler_api_key: API kÄ¾ÃºÄ - text_email_delivery_not_configured: "DoruÄenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/email.yml a reÅ¡tartnite aplikáciu pre aktiváciu funkcie." + text_email_delivery_not_configured: "DoruÄenie emailov nieje nastavené, notifikácie sú vypnuté.\nNastavte váš SMTP server v config/configuration.yml a reÅ¡tartnite aplikáciu pre aktiváciu funkcie." field_parent_title: Nadradená stránka label_issue_watchers: Pozorovatelia setting_commit_logs_encoding: Kódovanie prenášaných správ @@ -932,3 +932,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/sl.yml --- a/config/locales/sl.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/sl.yml Thu Mar 03 12:02:03 2011 +0000 @@ -762,7 +762,7 @@ text_user_wrote: "%{value} je napisal(a):" text_enumeration_destroy_question: "%{count} objektov je doloÄenih tej vrednosti." text_enumeration_category_reassign_to: 'Ponastavi jih na to vrednost:' - text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/email.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" + text_email_delivery_not_configured: "E-poÅ¡tna dostava ni nastavljena in oznanila so onemogoÄena.\nNastavite vaÅ¡ SMTP strežnik v config/configuration.yml in ponovno zaženite aplikacijo da ga omogoÄite.\n" text_repository_usernames_mapping: "Izberite ali posodobite Redmine uporabnika dodeljenega vsakemu uporabniÅ¡kemu imenu najdenemu v zapisniku shrambe.\n Uporabniki z enakim Redmine ali shrambinem uporabniÅ¡kem imenu ali e-poÅ¡tnem naslovu so samodejno dodeljeni." text_diff_truncated: '... Ta sprememba je bila odsekana ker presega najveÄjo velikost ki je lahko prikazana.' @@ -933,3 +933,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/sr-YU.yml --- a/config/locales/sr-YU.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/sr-YU.yml Thu Mar 03 12:02:03 2011 +0000 @@ -875,7 +875,7 @@ text_user_wrote: "%{value} je napisao:" text_enumeration_destroy_question: "%{count} objekat(a) je dodeljeno ovoj vrednosti." text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' - text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveÅ¡tenja su onemogućena.\nPodesite vaÅ¡ SMTP server u config/email.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." + text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveÅ¡tenja su onemogućena.\nPodesite vaÅ¡ SMTP server u config/configuration.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisniÄkog imena pronaÄ‘enog u evidenciji spremiÅ¡ta.\nKorisnici sa istim Redmine imenom i imenom spremiÅ¡ta ili e-adresom su automatski mapirani." text_diff_truncated: '... Ova razlika je iseÄena jer je dostignuta maksimalna veliÄina prikaza.' text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' @@ -937,3 +937,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/sr.yml --- a/config/locales/sr.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/sr.yml Thu Mar 03 12:02:03 2011 +0000 @@ -875,7 +875,7 @@ text_user_wrote: "%{value} је напиÑао:" text_enumeration_destroy_question: "%{count} објекат(а) је додељено овој вредноÑти." text_enumeration_category_reassign_to: 'Додели их поново овој вредноÑти:' - text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/email.yml и покрените поново апликацију за њихово омогућавање." + text_email_delivery_not_configured: "ИÑпорука е-порука није конфигуриÑана и обавештења Ñу онемогућена.\nПодеÑите ваш SMTP Ñервер у config/configuration.yml и покрените поново апликацију за њихово омогућавање." text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориÑнике мапирањем Ñваког кориÑничког имена пронађеног у евиденцији Ñпремишта.\nКориÑници Ñа иÑтим Redmine именом и именом Ñпремишта или е-адреÑом Ñу аутоматÑки мапирани." text_diff_truncated: '... Ова разлика је иÑечена јер је доÑтигнута макÑимална величина приказа.' text_custom_field_possible_values_info: 'Један ред за Ñваку вредноÑÑ‚' @@ -938,3 +938,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/sv.yml --- a/config/locales/sv.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/sv.yml Thu Mar 03 12:02:03 2011 +0000 @@ -208,6 +208,7 @@ notice_unable_delete_version: Denna version var inte möjlig att ta bort. notice_unable_delete_time_entry: Tidloggning kunde inte tas bort. notice_issue_done_ratios_updated: % klart uppdaterade. + notice_gantt_chart_truncated: "Schemat förminskades eftersom det överskrider det maximala antalet aktiviteter som fÃ¥r visas (%{max})" error_can_t_load_default_data: "Standardkonfiguration gick inte att läsa in: %{value}" error_scm_not_found: "Inlägg och/eller revision finns inte i detta versionsarkiv." @@ -217,7 +218,7 @@ error_no_tracker_in_project: 'Ingen ärendetyp är associerad med projektet. Vänligen kontrollera projektinställningarna.' error_no_default_issue_status: 'Ingen status är definierad som standard för nya ärenden. Vänligen kontrollera din konfiguration (GÃ¥ till "Administration -> Ärendestatus").' error_can_not_delete_custom_field: Kan inte ta bort användardefinerat fält - error_can_not_delete_tracker: Det finns ärenden av denna typ och den är därför inte möjlig att ta bort. + error_can_not_delete_tracker: "Det finns ärenden av denna typ och den är därför inte möjlig att ta bort." error_can_not_remove_role: "Denna roll används och den är därför inte möjlig att ta bort." error_can_not_reopen_issue_on_closed_version: 'Ett ärende tilldelat en stängd version kan inte öppnas pÃ¥ nytt' error_can_not_archive_project: Detta projekt kan inte arkiveras @@ -225,7 +226,7 @@ error_workflow_copy_source: 'Vänligen välj källans ärendetyp eller roll' error_workflow_copy_target: 'Vänligen välj ärendetyp(er) och roll(er) för mÃ¥l' error_unable_delete_issue_status: 'Ärendestatus kunde inte tas bort' - error_unable_to_connect: Kan inte ansluta (%{value}) + error_unable_to_connect: "Kan inte ansluta (%{value})" warning_attachments_not_saved: "%{count} fil(er) kunde inte sparas." @@ -240,9 +241,9 @@ mail_subject_reminder: "%{count} ärende(n) har deadline under de kommande %{days} dagarna" mail_body_reminder: "%{count} ärende(n) som är tilldelat dig har deadline under de %{days} dagarna:" mail_subject_wiki_content_added: "'%{id}' wikisida has lagts till" - mail_body_wiki_content_added: The '%{id}' wikisida has lagts till av %{author}. + mail_body_wiki_content_added: "The '%{id}' wikisida has lagts till av %{author}." mail_subject_wiki_content_updated: "'%{id}' wikisida har uppdaterats" - mail_body_wiki_content_updated: The '%{id}' wikisida har uppdaterats av %{author}. + mail_body_wiki_content_updated: "The '%{id}' wikisida har uppdaterats av %{author}." gui_validation_error: 1 fel gui_validation_error_plural: "%{count} fel" @@ -340,8 +341,8 @@ field_group_by: Gruppera resultat efter field_sharing: Delning field_parent_issue: Förälderaktivitet - field_member_of_group: Tilldelad användares grupp - field_assigned_to_role: Tilldelad användares roll + field_member_of_group: "Tilldelad användares grupp" + field_assigned_to_role: "Tilldelad användares roll" field_text: Textfält field_visible: Synlig @@ -380,7 +381,7 @@ setting_activity_days_default: Dagar som visas pÃ¥ projektaktivitet setting_display_subprojects_issues: Visa ärenden frÃ¥n underprojekt i huvudprojekt setting_enabled_scm: Aktivera SCM - setting_mail_handler_body_delimiters: Trunkera mail efter en av följande rader + setting_mail_handler_body_delimiters: "Trunkera mail efter en av följande rader" setting_mail_handler_api_enabled: Aktivera WS för inkommande mail setting_mail_handler_api_key: API-nyckel setting_sequential_project_identifiers: Generera projektidentifierare sekventiellt @@ -400,6 +401,9 @@ setting_rest_api_enabled: Aktivera REST webbtjänst setting_cache_formatted_text: Cacha formaterad text setting_default_notification_option: Standard notifieringsalternativ + setting_commit_logtime_enabled: Aktivera tidloggning + setting_commit_logtime_activity_id: Aktivitet för loggad tid + setting_gantt_items_limit: Maximalt antal aktiviteter som visas i gantt-schemat permission_add_project: Skapa projekt permission_add_subprojects: Skapa underprojekt @@ -582,7 +586,7 @@ label_version_plural: Versioner label_close_versions: Stäng klara versioner label_confirmation: Bekräftelse - label_export_to: Exportera till + label_export_to: 'Finns även som:' label_read: Läs... label_public_projects: Publika projekt label_open_issues: öppen @@ -667,7 +671,7 @@ label_tag: Tag label_revision: Revision label_revision_plural: Revisioner - label_revision_id: Revision %{value} + label_revision_id: "Revision %{value}" label_associated_revisions: Associerade revisioner label_added: tillagd label_modified: modifierad @@ -776,10 +780,10 @@ label_search_titles_only: Sök endast i titlar label_user_mail_option_all: "För alla händelser i mina projekt" label_user_mail_option_selected: "För alla händelser i markerade projekt..." - label_user_mail_option_none: Inga händelser - label_user_mail_option_only_my_events: Endast för saker jag bevakar eller är inblandad i - label_user_mail_option_only_assigned: Endast för saker jag är tilldelad - label_user_mail_option_only_owner: Endast för saker jag äger + label_user_mail_option_none: "Inga händelser" + label_user_mail_option_only_my_events: "Endast för saker jag bevakar eller är inblandad i" + label_user_mail_option_only_assigned: "Endast för saker jag är tilldelad" + label_user_mail_option_only_owner: "Endast för saker jag äger" label_user_mail_no_self_notified: "Jag vill inte bli underrättad om ändringar som jag har gjort" label_registration_activation_by_email: kontoaktivering med mail label_registration_manual_activation: manuell kontoaktivering @@ -826,7 +830,7 @@ label_display_used_statuses_only: Visa endast status som används av denna ärendetyp label_api_access_key: API-nyckel label_missing_api_access_key: Saknar en API-nyckel - label_api_access_key_created_on: API-nyckel skapad för %{value} sedan + label_api_access_key_created_on: "API-nyckel skapad för %{value} sedan" label_profile: Profil label_subtask_plural: Underaktiviteter label_project_copy_notifications: Skicka mailnotifieringar när projektet kopieras @@ -922,6 +926,7 @@ text_no_configuration_data: "Roller, ärendetyper, ärendestatus och arbetsflöden har inte konfigurerats ännu.\nDet rekommenderas att läsa in standardkonfigurationen. Du kommer att kunna göra ändringar efter att den blivit inläst." text_load_default_configuration: Läs in standardkonfiguration text_status_changed_by_changeset: "Tilldelad i changeset %{value}." + text_time_logged_by_changeset: "Tilldelad i changeset %{value}." text_issues_destroy_confirmation: 'Är du säker pÃ¥ att du vill radera markerade ärende(n) ?' text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:' text_default_administrator_account_changed: Standardadministratörens konto ändrat @@ -935,14 +940,14 @@ text_user_wrote: "%{value} skrev:" text_enumeration_destroy_question: "%{count} objekt är tilldelade till detta värde." text_enumeration_category_reassign_to: 'Ã…tertilldela till detta värde:' - text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/email.yml och starta om applikationen för att aktivera dem." + text_email_delivery_not_configured: "Mailfunktionen har inte konfigurerats, och notifieringar via mail kan därför inte skickas.\nKonfigurera din SMTP-server i config/configuration.yml och starta om applikationen för att aktivera dem." text_repository_usernames_mapping: "Välj eller uppdatera den Redmine-användare som är mappad till varje användarnamn i versionarkivloggen.\nAnvändare med samma användarnamn eller mailadress i bÃ¥de Redmine och versionsarkivet mappas automatiskt." text_diff_truncated: '... Denna diff har förminskats eftersom den överskrider den maximala storlek som kan visas.' text_custom_field_possible_values_info: 'Ett värde per rad' - text_wiki_page_destroy_question: Denna sida har %{descendants} underliggande sidor. Vad vill du göra? - text_wiki_page_nullify_children: BehÃ¥ll undersidor som rotsidor - text_wiki_page_destroy_children: Ta bort alla underliggande sidor - text_wiki_page_reassign_children: Flytta undersidor till denna föräldersida + text_wiki_page_destroy_question: "Denna sida har %{descendants} underliggande sidor. Vad vill du göra?" + text_wiki_page_nullify_children: "BehÃ¥ll undersidor som rotsidor" + text_wiki_page_destroy_children: "Ta bort alla underliggande sidor" + text_wiki_page_reassign_children: "Flytta undersidor till denna föräldersida" text_own_membership_delete_confirmation: "NÃ¥gra av, eller alla, dina behörigheter kommer att tas bort och du kanske inte längre kommer kunna göra ändringar i det här projektet.\nVill du verkligen fortsätta?" text_zoom_out: Zooma ut text_zoom_in: Zooma in @@ -973,8 +978,7 @@ enumeration_doc_categories: Dokumentkategorier enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_system_activity: Systemaktivitet - setting_commit_logtime_activity_id: Activity for logged time - text_time_logged_by_changeset: Applied in changeset %{value}. - setting_commit_logtime_enabled: Enable time logging - notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) - setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/th.yml --- a/config/locales/th.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/th.yml Thu Mar 03 12:02:03 2011 +0000 @@ -727,7 +727,7 @@ label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers setting_commit_logs_encoding: Commit messages encoding @@ -934,3 +934,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/tr.yml --- a/config/locales/tr.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/tr.yml Thu Mar 03 12:02:03 2011 +0000 @@ -742,7 +742,7 @@ label_generate_key: Generate a key setting_sequential_project_identifiers: Generate sequential project identifiers field_parent_title: Parent page - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." text_enumeration_category_reassign_to: 'Reassign them to this value:' label_issue_watchers: Watchers mail_body_reminder: "%{count} issue(s) that are assigned to you are due in the next %{days} days:" @@ -956,3 +956,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/uk.yml --- a/config/locales/uk.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/uk.yml Thu Mar 03 12:02:03 2011 +0000 @@ -726,7 +726,7 @@ label_generate_key: Generate a key setting_mail_handler_api_enabled: Enable WS for incoming emails setting_mail_handler_api_key: API key - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." field_parent_title: Parent page label_issue_watchers: Watchers setting_commit_logs_encoding: Commit messages encoding @@ -933,3 +933,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/vi.yml --- a/config/locales/vi.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/vi.yml Thu Mar 03 12:02:03 2011 +0000 @@ -761,7 +761,7 @@ text_user_wrote: "%{value} wrote:" text_enumeration_destroy_question: "%{count} objects are assigned to this value." text_enumeration_category_reassign_to: 'Reassign them to this value:' - text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/email.yml and restart the application to enable them." + text_email_delivery_not_configured: "Email delivery is not configured, and notifications are disabled.\nConfigure your SMTP server in config/configuration.yml and restart the application to enable them." default_role_manager: Äiá»u hành default_role_developer: Phát triển @@ -988,3 +988,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/zh-TW.yml --- a/config/locales/zh-TW.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/zh-TW.yml Thu Mar 03 12:02:03 2011 +0000 @@ -980,7 +980,7 @@ text_user_wrote: "%{value} å…ˆå‰æåˆ°:" text_enumeration_destroy_question: "ç›®å‰æœ‰ %{count} 個物件使用此列舉值。" text_enumeration_category_reassign_to: '釿–°è¨­å®šå…¶åˆ—舉值為:' - text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/email.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" + text_email_delivery_not_configured: "您尚未設定電å­éƒµä»¶å‚³é€æ–¹å¼ï¼Œå› æ­¤æé†’é¸é …已被åœç”¨ã€‚\n請在 config/configuration.yml 中設定 SMTP ä¹‹å¾Œï¼Œé‡æ–°å•Ÿå‹• Redmine,以啟用電å­éƒµä»¶æé†’é¸é …。" text_repository_usernames_mapping: "鏿“‡æˆ–æ›´æ–° Redmine ä½¿ç”¨è€…èˆ‡ç‰ˆæœ¬åº«ä½¿ç”¨è€…ä¹‹å°æ‡‰é—œä¿‚。\n版本庫中之使用者帳號或電å­éƒµä»¶ä¿¡ç®±ï¼Œèˆ‡ Redmine 設定相åŒè€…ï¼Œå°‡è‡ªå‹•ç”¢ç”Ÿå°æ‡‰é—œä¿‚。" text_diff_truncated: '... 這份差異已被截短以符åˆé¡¯ç¤ºè¡Œæ•¸ä¹‹æœ€å¤§å€¼' text_custom_field_possible_values_info: '一列輸入一個值' @@ -1018,3 +1018,7 @@ enumeration_doc_categories: 文件分類 enumeration_activities: 活動 (時間追蹤) enumeration_system_activity: 系統活動 + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 config/locales/zh.yml --- a/config/locales/zh.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/config/locales/zh.yml Thu Mar 03 12:02:03 2011 +0000 @@ -870,7 +870,7 @@ text_user_wrote: "%{value} 写到:" text_enumeration_category_reassign_to: '将它们关è”到新的枚举值:' text_enumeration_destroy_question: "%{count} 个对象被关è”到了这个枚举值。" - text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/email.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" + text_email_delivery_not_configured: "邮件傿•°å°šæœªé…置,因此邮件通知功能已被ç¦ç”¨ã€‚\n请在config/configuration.yml中é…置您的SMTPæœåŠ¡å™¨ä¿¡æ¯å¹¶é‡æ–°å¯åŠ¨ä»¥ä½¿å…¶ç”Ÿæ•ˆã€‚" text_repository_usernames_mapping: "选择或更新与版本库中的用户å对应的Redmine用户。\n版本库中与Redmine中的åŒå用户将被自动对应。" text_diff_truncated: '... å·®åˆ«å†…å®¹è¶…è¿‡äº†å¯æ˜¾ç¤ºçš„æœ€å¤§è¡Œæ•°å¹¶å·²è¢«æˆªæ–­' text_custom_field_possible_values_info: 'æ¯é¡¹æ•°å€¼ä¸€è¡Œ' @@ -951,3 +951,7 @@ setting_commit_logtime_enabled: Enable time logging notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max}) setting_gantt_items_limit: Maximum number of items displayed on the gantt chart + field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text + text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page. + label_my_queries: My custom queries + text_journal_changed_no_detail: "%{label} updated" diff -r fca2657f4aa5 -r eeebe205a056 db/.svn/all-wcprops --- a/db/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/db/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 27 -/svn/!svn/ver/4610/trunk/db +/svn/!svn/ver/4981/trunk/db END diff -r fca2657f4aa5 -r eeebe205a056 db/.svn/dir-prop-base --- a/db/.svn/dir-prop-base Thu Jan 20 09:59:02 2011 +0000 +++ b/db/.svn/dir-prop-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,7 @@ K 10 svn:ignore -V 26 +V 20 schema.rb -demo.db -test.db +*.sqlite3 END diff -r fca2657f4aa5 -r eeebe205a056 db/.svn/entries --- a/db/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/db/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/db http://redmine.rubyforge.org/svn -2011-01-01T23:08:49.766359Z -4610 -jbbarth +2011-03-01T10:14:47.182368Z +4981 +tmaruyama has-props diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/all-wcprops --- a/db/migrate/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/db/migrate/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 35 -/svn/!svn/ver/4610/trunk/db/migrate +/svn/!svn/ver/4981/trunk/db/migrate END 20101107130441_add_custom_fields_visible.rb K 25 @@ -105,18 +105,18 @@ V 64 /svn/!svn/ver/67/trunk/db/migrate/008_create_user_preferences.rb END +025_add_search_permission.rb +K 25 +svn:wc:ra_dav:version-url +V 63 +/svn/!svn/ver/674/trunk/db/migrate/025_add_search_permission.rb +END 023_add_tracker_is_in_roadmap.rb K 25 svn:wc:ra_dav:version-url V 67 /svn/!svn/ver/228/trunk/db/migrate/023_add_tracker_is_in_roadmap.rb END -025_add_search_permission.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/674/trunk/db/migrate/025_add_search_permission.rb -END 20091220183727_add_index_to_settings_name.rb K 25 svn:wc:ra_dav:version-url @@ -153,11 +153,11 @@ V 71 /svn/!svn/ver/1814/trunk/db/migrate/096_add_commit_access_permission.rb END -024_add_roadmap_permission.rb +20090401221305_update_enumerations_to_sti.rb K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/674/trunk/db/migrate/024_add_roadmap_permission.rb +V 80 +/svn/!svn/ver/2777/trunk/db/migrate/20090401221305_update_enumerations_to_sti.rb END 091_change_changesets_revision_to_string.rb K 25 @@ -165,11 +165,11 @@ V 79 /svn/!svn/ver/1236/trunk/db/migrate/091_change_changesets_revision_to_string.rb END -20090401221305_update_enumerations_to_sti.rb +024_add_roadmap_permission.rb K 25 svn:wc:ra_dav:version-url -V 80 -/svn/!svn/ver/2777/trunk/db/migrate/20090401221305_update_enumerations_to_sti.rb +V 64 +/svn/!svn/ver/674/trunk/db/migrate/024_add_roadmap_permission.rb END 20091017214720_add_missing_indexes_to_wiki_redirects.rb K 25 @@ -177,17 +177,23 @@ V 91 /svn/!svn/ver/2928/trunk/db/migrate/20091017214720_add_missing_indexes_to_wiki_redirects.rb END +072_add_enumerations_position.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/1623/trunk/db/migrate/072_add_enumerations_position.rb +END 034_create_changesets.rb K 25 svn:wc:ra_dav:version-url V 59 /svn/!svn/ver/479/trunk/db/migrate/034_create_changesets.rb END -072_add_enumerations_position.rb +20090614091200_fix_messages_sticky_null.rb K 25 svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/1623/trunk/db/migrate/072_add_enumerations_position.rb +V 78 +/svn/!svn/ver/2787/trunk/db/migrate/20090614091200_fix_messages_sticky_null.rb END 108_add_identity_url_to_users.rb K 25 @@ -195,12 +201,6 @@ V 68 /svn/!svn/ver/2440/trunk/db/migrate/108_add_identity_url_to_users.rb END -20090614091200_fix_messages_sticky_null.rb -K 25 -svn:wc:ra_dav:version-url -V 78 -/svn/!svn/ver/2787/trunk/db/migrate/20090614091200_fix_messages_sticky_null.rb -END 20091220184736_add_indexes_to_issue_status.rb K 25 svn:wc:ra_dav:version-url @@ -249,6 +249,12 @@ V 66 /svn/!svn/ver/674/trunk/db/migrate/012_add_comments_permissions.rb END +20110223180953_salt_user_passwords.rb +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/4936/trunk/db/migrate/20110223180953_salt_user_passwords.rb +END 038_add_custom_field_is_filter.rb K 25 svn:wc:ra_dav:version-url @@ -273,6 +279,12 @@ V 77 /svn/!svn/ver/3240/trunk/db/migrate/20091225164732_remove_enumerations_opt.rb END +20110220160626_add_workflows_assignee_and_author.rb +K 25 +svn:wc:ra_dav:version-url +V 87 +/svn/!svn/ver/4895/trunk/db/migrate/20110220160626_add_workflows_assignee_and_author.rb +END 030_add_projects_feeds_permissions.rb K 25 svn:wc:ra_dav:version-url @@ -285,6 +297,12 @@ V 55 /svn/!svn/ver/864/trunk/db/migrate/045_create_boards.rb END +20110228000000_add_repositories_log_encoding.rb +K 25 +svn:wc:ra_dav:version-url +V 83 +/svn/!svn/ver/4980/trunk/db/migrate/20110228000000_add_repositories_log_encoding.rb +END 076_allow_null_position.rb K 25 svn:wc:ra_dav:version-url @@ -363,18 +381,18 @@ V 64 /svn/!svn/ver/674/trunk/db/migrate/047_add_boards_permissions.rb END +037_add_project_identifier.rb +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/397/trunk/db/migrate/037_add_project_identifier.rb +END 073_add_enumerations_is_default.rb K 25 svn:wc:ra_dav:version-url V 69 /svn/!svn/ver/803/trunk/db/migrate/073_add_enumerations_is_default.rb END -037_add_project_identifier.rb -K 25 -svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/397/trunk/db/migrate/037_add_project_identifier.rb -END 20100313171051_add_index_on_issues_nested_set.rb K 25 svn:wc:ra_dav:version-url @@ -405,18 +423,18 @@ V 77 /svn/!svn/ver/2905/trunk/db/migrate/20091010093521_fix_users_custom_values.rb END +001_setup.rb +K 25 +svn:wc:ra_dav:version-url +V 48 +/svn/!svn/ver/1764/trunk/db/migrate/001_setup.rb +END 016_add_repositories_permissions.rb K 25 svn:wc:ra_dav:version-url V 70 /svn/!svn/ver/674/trunk/db/migrate/016_add_repositories_permissions.rb END -001_setup.rb -K 25 -svn:wc:ra_dav:version-url -V 48 -/svn/!svn/ver/1764/trunk/db/migrate/001_setup.rb -END 20100129193813_update_mail_notification_values.rb K 25 svn:wc:ra_dav:version-url @@ -429,17 +447,29 @@ V 85 /svn/!svn/ver/2928/trunk/db/migrate/20091017214611_add_missing_indexes_to_journals.rb END +041_rename_comment_to_comments.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/482/trunk/db/migrate/041_rename_comment_to_comments.rb +END 20091017214107_add_missing_indexes_to_custom_fields.rb K 25 svn:wc:ra_dav:version-url V 90 /svn/!svn/ver/2928/trunk/db/migrate/20091017214107_add_missing_indexes_to_custom_fields.rb END -041_rename_comment_to_comments.rb +089_add_attachments_description.rb K 25 svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/482/trunk/db/migrate/041_rename_comment_to_comments.rb +V 70 +/svn/!svn/ver/1180/trunk/db/migrate/089_add_attachments_description.rb +END +067_create_wiki_redirects.rb +K 25 +svn:wc:ra_dav:version-url +V 63 +/svn/!svn/ver/720/trunk/db/migrate/067_create_wiki_redirects.rb END 20091017214750_add_missing_indexes_to_custom_fields_trackers.rb K 25 @@ -447,41 +477,41 @@ V 99 /svn/!svn/ver/2928/trunk/db/migrate/20091017214750_add_missing_indexes_to_custom_fields_trackers.rb END -067_create_wiki_redirects.rb -K 25 -svn:wc:ra_dav:version-url -V 63 -/svn/!svn/ver/720/trunk/db/migrate/067_create_wiki_redirects.rb -END -089_add_attachments_description.rb -K 25 -svn:wc:ra_dav:version-url -V 70 -/svn/!svn/ver/1180/trunk/db/migrate/089_add_attachments_description.rb -END 103_set_custom_fields_editable.rb K 25 svn:wc:ra_dav:version-url V 69 /svn/!svn/ver/2279/trunk/db/migrate/103_set_custom_fields_editable.rb END +20110226120132_change_auth_sources_account_password_limit.rb +K 25 +svn:wc:ra_dav:version-url +V 96 +/svn/!svn/ver/4950/trunk/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb +END 094_change_projects_homepage_limit.rb K 25 svn:wc:ra_dav:version-url V 73 /svn/!svn/ver/1457/trunk/db/migrate/094_change_projects_homepage_limit.rb END +093_add_wiki_pages_protected.rb +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/1415/trunk/db/migrate/093_add_wiki_pages_protected.rb +END 039_create_watchers.rb K 25 svn:wc:ra_dav:version-url V 57 /svn/!svn/ver/454/trunk/db/migrate/039_create_watchers.rb END -093_add_wiki_pages_protected.rb +083_add_messages_sticky.rb K 25 svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/1415/trunk/db/migrate/093_add_wiki_pages_protected.rb +V 61 +/svn/!svn/ver/926/trunk/db/migrate/083_add_messages_sticky.rb END 060_change_changesets_committer_limit.rb K 25 @@ -489,12 +519,6 @@ V 76 /svn/!svn/ver/1222/trunk/db/migrate/060_change_changesets_committer_limit.rb END -083_add_messages_sticky.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/926/trunk/db/migrate/083_add_messages_sticky.rb -END 069_add_issues_estimated_hours.rb K 25 svn:wc:ra_dav:version-url @@ -561,18 +585,18 @@ V 87 /svn/!svn/ver/1938/trunk/db/migrate/099_add_delete_wiki_pages_attachments_permission.rb END +098_set_topic_authors_as_watchers.rb +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2415/trunk/db/migrate/098_set_topic_authors_as_watchers.rb +END 059_add_roles_assignable.rb K 25 svn:wc:ra_dav:version-url V 62 /svn/!svn/ver/649/trunk/db/migrate/059_add_roles_assignable.rb END -098_set_topic_authors_as_watchers.rb -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2415/trunk/db/migrate/098_set_topic_authors_as_watchers.rb -END 013_create_queries.rb K 25 svn:wc:ra_dav:version-url @@ -585,18 +609,18 @@ V 74 /svn/!svn/ver/674/trunk/db/migrate/049_add_wiki_destroy_page_permission.rb END +040_create_changesets_issues.rb +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/473/trunk/db/migrate/040_create_changesets_issues.rb +END 048_allow_null_version_effective_date.rb K 25 svn:wc:ra_dav:version-url V 76 /svn/!svn/ver/1140/trunk/db/migrate/048_allow_null_version_effective_date.rb END -040_create_changesets_issues.rb -K 25 -svn:wc:ra_dav:version-url -V 66 -/svn/!svn/ver/473/trunk/db/migrate/040_create_changesets_issues.rb -END 085_add_role_tracker_old_status_index_to_workflows.rb K 25 svn:wc:ra_dav:version-url @@ -621,29 +645,35 @@ V 81 /svn/!svn/ver/1236/trunk/db/migrate/092_change_changes_from_revision_to_string.rb END +20110223180944_add_users_salt.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4936/trunk/db/migrate/20110223180944_add_users_salt.rb +END 20090214190337_add_watchers_user_id_type_index.rb K 25 svn:wc:ra_dav:version-url V 85 /svn/!svn/ver/2466/trunk/db/migrate/20090214190337_add_watchers_user_id_type_index.rb END +20091017212457_add_missing_indexes_to_custom_fields_projects.rb +K 25 +svn:wc:ra_dav:version-url +V 99 +/svn/!svn/ver/2928/trunk/db/migrate/20091017212457_add_missing_indexes_to_custom_fields_projects.rb +END 054_add_changesets_scmid.rb K 25 svn:wc:ra_dav:version-url V 62 /svn/!svn/ver/559/trunk/db/migrate/054_add_changesets_scmid.rb END -20091017212457_add_missing_indexes_to_custom_fields_projects.rb +097_add_view_wiki_edits_permission.rb K 25 svn:wc:ra_dav:version-url -V 99 -/svn/!svn/ver/2928/trunk/db/migrate/20091017212457_add_missing_indexes_to_custom_fields_projects.rb -END -20091017213716_add_missing_indexes_to_member_roles.rb -K 25 -svn:wc:ra_dav:version-url -V 89 -/svn/!svn/ver/2928/trunk/db/migrate/20091017213716_add_missing_indexes_to_member_roles.rb +V 73 +/svn/!svn/ver/1896/trunk/db/migrate/097_add_view_wiki_edits_permission.rb END 065_add_settings_updated_on.rb K 25 @@ -651,11 +681,11 @@ V 65 /svn/!svn/ver/685/trunk/db/migrate/065_add_settings_updated_on.rb END -097_add_view_wiki_edits_permission.rb +20091017213716_add_missing_indexes_to_member_roles.rb K 25 svn:wc:ra_dav:version-url -V 73 -/svn/!svn/ver/1896/trunk/db/migrate/097_add_view_wiki_edits_permission.rb +V 89 +/svn/!svn/ver/2928/trunk/db/migrate/20091017213716_add_missing_indexes_to_member_roles.rb END 20091108092559_add_versions_status.rb K 25 @@ -669,6 +699,12 @@ V 85 /svn/!svn/ver/2928/trunk/db/migrate/20091017213228_add_missing_indexes_to_watchers.rb END +20110228000100_copy_repositories_log_encoding.rb +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/4981/trunk/db/migrate/20110228000100_copy_repositories_log_encoding.rb +END 063_add_roles_permissions.rb K 25 svn:wc:ra_dav:version-url @@ -681,17 +717,23 @@ V 73 /svn/!svn/ver/2869/trunk/db/migrate/20090704172350_populate_users_type.rb END +20090503121505_populate_member_roles.rb +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/2729/trunk/db/migrate/20090503121505_populate_member_roles.rb +END 052_add_changes_revision.rb K 25 svn:wc:ra_dav:version-url V 62 /svn/!svn/ver/559/trunk/db/migrate/052_add_changes_revision.rb END -20090503121505_populate_member_roles.rb +050_add_wiki_attachments_permissions.rb K 25 svn:wc:ra_dav:version-url -V 75 -/svn/!svn/ver/2729/trunk/db/migrate/20090503121505_populate_member_roles.rb +V 74 +/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb END 062_insert_builtin_roles.rb K 25 @@ -699,11 +741,11 @@ V 62 /svn/!svn/ver/674/trunk/db/migrate/062_insert_builtin_roles.rb END -050_add_wiki_attachments_permissions.rb +104_add_projects_lft_and_rgt.rb K 25 svn:wc:ra_dav:version-url -V 74 -/svn/!svn/ver/674/trunk/db/migrate/050_add_wiki_attachments_permissions.rb +V 67 +/svn/!svn/ver/2304/trunk/db/migrate/104_add_projects_lft_and_rgt.rb END 074_add_auth_sources_tls.rb K 25 @@ -711,12 +753,6 @@ V 62 /svn/!svn/ver/845/trunk/db/migrate/074_add_auth_sources_tls.rb END -104_add_projects_lft_and_rgt.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/2304/trunk/db/migrate/104_add_projects_lft_and_rgt.rb -END 20091114105931_add_view_issues_permission.rb K 25 svn:wc:ra_dav:version-url @@ -729,18 +765,18 @@ V 82 /svn/!svn/ver/2928/trunk/db/migrate/20091017214336_add_missing_indexes_to_users.rb END +082_add_messages_locked.rb +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/926/trunk/db/migrate/082_add_messages_locked.rb +END 20091017213113_add_missing_indexes_to_enumerations.rb K 25 svn:wc:ra_dav:version-url V 89 /svn/!svn/ver/2928/trunk/db/migrate/20091017213113_add_missing_indexes_to_enumerations.rb END -082_add_messages_locked.rb -K 25 -svn:wc:ra_dav:version-url -V 61 -/svn/!svn/ver/926/trunk/db/migrate/082_add_messages_locked.rb -END 20091017213444_add_missing_indexes_to_tokens.rb K 25 svn:wc:ra_dav:version-url @@ -879,12 +915,24 @@ V 77 /svn/!svn/ver/674/trunk/db/migrate/056_add_repositories_changes_permission.rb END +20110224000000_add_repositories_path_encoding.rb +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/4940/trunk/db/migrate/20110224000000_add_repositories_path_encoding.rb +END 032_create_time_entries.rb K 25 svn:wc:ra_dav:version-url V 61 /svn/!svn/ver/479/trunk/db/migrate/032_create_time_entries.rb END +20110226120112_change_repositories_password_limit.rb +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/4950/trunk/db/migrate/20110226120112_change_repositories_password_limit.rb +END 068_create_enabled_modules.rb K 25 svn:wc:ra_dav:version-url @@ -1059,6 +1107,12 @@ V 57 /svn/!svn/ver/167/trunk/db/migrate/017_create_settings.rb END +20110227125750_change_journal_details_values_to_text.rb +K 25 +svn:wc:ra_dav:version-url +V 91 +/svn/!svn/ver/4954/trunk/db/migrate/20110227125750_change_journal_details_values_to_text.rb +END 095_add_wiki_pages_parent_id.rb K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/entries --- a/db/migrate/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/db/migrate/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/db/migrate http://redmine.rubyforge.org/svn -2011-01-01T23:08:49.766359Z -4610 -jbbarth +2011-03-01T10:14:47.182368Z +4981 +tmaruyama @@ -32,7 +32,7 @@ -2010-11-19T13:04:50.884918Z +2011-03-03T11:05:12.000000Z 21dc29619a0cfd0f3aa12d77cc5cb132 2010-11-07T14:17:35.749175Z 4383 @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z e1234fbaef167ddc0013ffe1d3bc67b9 2007-11-04T11:40:17.595469Z 881 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 0b2c38434ec4b25c41f50963a46a3bc6 2007-06-12T20:12:05.590809Z 559 @@ -134,7 +134,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z dba48c03009eb5bcbd2f686a37c42147 2009-10-17T22:23:29.892475Z 2928 @@ -168,7 +168,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z b17611805f3b447ec0f0b703ea8b6d10 2008-11-10T18:59:06.897210Z 2006 @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 23ebbc94eb59590d0f0b200b4b38289b 2007-08-29T16:52:35.680643Z 674 @@ -236,7 +236,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z ffabca1301a0ade41918ec9d6618fda0 2008-07-04T17:58:14.743502Z 1623 @@ -270,7 +270,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z e6ff0ff9c004d9688e79b550991ec109 2007-08-29T16:52:35.680643Z 674 @@ -304,7 +304,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 39c994e2469a6dfb97fa50cf595439e8 2007-04-25T15:06:20.062636Z 479 @@ -338,7 +338,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 828df977f9e16943bc74595c65774c62 2007-03-10T15:09:49.115269Z 323 @@ -372,7 +372,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z eea8e3f0a1fe28e8c686af190259a3d6 2009-09-12T08:36:46.650954Z 2869 @@ -406,7 +406,7 @@ -2010-11-19T13:04:50.884918Z +2011-03-03T11:05:12.000000Z be338f41292d95bb7ba3caa125999de0 2010-11-14T12:33:14.198318Z 4402 @@ -440,7 +440,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 06c8b504bcdd08c2f5dcf14a0b927420 2007-11-20T15:40:16.305800Z 919 @@ -474,7 +474,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 283fb200008f4dae98e0b3d46f0b97aa 2009-10-17T22:23:29.892475Z 2928 @@ -508,7 +508,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z da329a16de705c673418c18119f788d8 2007-08-29T16:52:35.680643Z 674 @@ -542,7 +542,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:12.000000Z 627e34913535f16f767133cbdc5b57f0 2010-11-20T09:55:06.580420Z 4413 @@ -576,7 +576,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 5bb1427a275abe1f2ec4b6b03a087cd8 2006-12-03T19:55:45.161980Z 62 @@ -604,13 +604,47 @@ 281 +025_add_search_permission.rb +file + + + + +2011-03-03T11:05:12.000000Z +42937036f9c414f7d9b028f629b1ce20 +2007-08-29T16:52:35.680643Z +674 +jplang + + + + + + + + + + + + + + + + + + + + + +412 + 023_add_tracker_is_in_roadmap.rb file -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z f4c10807bb47b69af35e9402966089f1 2007-02-04T09:18:40.598564Z 228 @@ -638,47 +672,13 @@ 230 -025_add_search_permission.rb -file - - - - -2010-09-23T14:37:44.883725Z -42937036f9c414f7d9b028f629b1ce20 -2007-08-29T16:52:35.680643Z -674 -jplang - - - - - - - - - - - - - - - - - - - - - -412 - 20091220183727_add_index_to_settings_name.rb file -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z c5d86ec3cda95998a3fb590c6f492b6b 2009-12-20T19:13:22.787652Z 3206 @@ -712,7 +712,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z b2f88560d10a9676bdb65e18f9a13d65 2009-10-17T22:23:29.892475Z 2928 @@ -746,7 +746,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z a269e98b11a4d0d865c82328d7af5663 2007-03-25T12:12:15.060977Z 377 @@ -780,7 +780,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 69a42a62536b1f435ce1080ceccb4c75 2009-01-17T11:18:04.652409Z 2276 @@ -814,7 +814,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 84bec26b6eaebc64c437c5a3b4784a94 2009-10-17T22:23:29.892475Z 2928 @@ -848,7 +848,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 53ee6af48c18534db0ffdd4fa5c5df7f 2008-09-13T16:31:11.005265Z 1814 @@ -882,7 +882,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z d343c3ba8f04d1cc71f20c9860d5907b 2009-05-30T23:30:36.923541Z 2777 @@ -916,7 +916,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 611baff063a1d909ba581aa98018cae7 2008-03-12T20:28:49.748698Z 1236 @@ -950,7 +950,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z f1b96e04888c0a48bf29dd0556ba8027 2007-08-29T16:52:35.680643Z 674 @@ -984,7 +984,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 72e8d36a80b63657037f175b368f2e2c 2009-10-17T22:23:29.892475Z 2928 @@ -1018,7 +1018,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 891f793e4f2ab50f57b8488c764ceff1 2008-07-04T17:58:14.743502Z 1623 @@ -1052,7 +1052,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 82595f307b6fe5053151a681b737f063 2007-04-25T15:06:20.062636Z 479 @@ -1080,47 +1080,13 @@ 515 -108_add_identity_url_to_users.rb -file - - - - -2010-09-23T14:37:44.915753Z -b175e6c85c5faf4b5d2f092f65338b10 -2009-02-11T19:06:55.627694Z -2440 -edavis10 - - - - - - - - - - - - - - - - - - - - - -187 - 20090614091200_fix_messages_sticky_null.rb file -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z c460bb38faa03667fc34a3b131ec40df 2009-06-14T09:19:20.900273Z 2787 @@ -1148,13 +1114,47 @@ 176 +108_add_identity_url_to_users.rb +file + + + + +2011-03-03T11:05:12.000000Z +b175e6c85c5faf4b5d2f092f65338b10 +2009-02-11T19:06:55.627694Z +2440 +edavis10 + + + + + + + + + + + + + + + + + + + + + +187 + 20091220184736_add_indexes_to_issue_status.rb file -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 7aa35de55587b897fea800e8044039a8 2009-12-20T19:13:22.787652Z 3206 @@ -1188,7 +1188,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z e4eff12465b879f063cac04a709438b9 2010-08-22T18:42:00.112555Z 4013 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 0492f13cf6f16f90603fdd82c388bace 2007-05-08T09:26:57.307537Z 518 @@ -1256,7 +1256,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 9a69054334fcbc6b72eb8b5ae9957129 2009-12-27T11:57:13.519273Z 3254 @@ -1290,7 +1290,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z b17259dfa6f46844e0f86b110577fbc6 2008-03-09T15:36:47.697904Z 1220 @@ -1324,7 +1324,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z e00a737604d0be6b94c92236e4f378eb 2009-05-10T10:54:31.775505Z 2726 @@ -1358,7 +1358,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 2fb7c5a95c8ed07756c3fbb917c98230 2007-10-22T21:07:13.432482Z 864 @@ -1392,7 +1392,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 1702102b56ee973066c86d659252a366 2007-08-29T16:52:35.680643Z 674 @@ -1420,13 +1420,47 @@ 751 +20110223180953_salt_user_passwords.rb +file + + + + +2011-03-03T11:40:18.000000Z +f72892b525076a1ffaf1f2548822d560 +2011-02-23T17:27:31.762248Z +4936 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +384 + 038_add_custom_field_is_filter.rb file -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 0c630c7ad4fbe9ccbb897363a422efa6 2007-04-17T10:53:20.697217Z 447 @@ -1460,7 +1494,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 6e9fdd6731ba51e864563938c05ed9da 2010-02-21T14:40:00.085842Z 3471 @@ -1494,7 +1528,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 8e58d8ec43e40266d62fd64b4b6a9a09 2007-05-13T17:09:56.765659Z 529 @@ -1528,7 +1562,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 6350cf7f18c7d61d54bf2bfa55e108d3 2009-12-25T17:13:58.090736Z 3240 @@ -1556,13 +1590,47 @@ 442 +20110220160626_add_workflows_assignee_and_author.rb +file + + + + +2011-03-03T11:40:18.000000Z +8e7a8d0f81e207e3d673703de33fdb69 +2011-02-20T15:38:07.840581Z +4895 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +495 + 030_add_projects_feeds_permissions.rb file -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 3216f04b6b84aaa6d29bc0f3e5d8c462 2007-08-29T16:52:35.680643Z 674 @@ -1596,7 +1664,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z fb852fdf1ab4266ab05a36ff105b7ceb 2007-10-22T21:07:13.432482Z 864 @@ -1624,13 +1692,47 @@ 607 +20110228000000_add_repositories_log_encoding.rb +file + + + + +2011-03-03T11:40:18.000000Z +dbe736040dcb44e3db78219ecfdb3d62 +2011-03-01T09:47:06.578325Z +4980 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +237 + 076_allow_null_position.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 9f0c1dd813015fc37cd47062fe15ef91 2008-02-12T21:11:16.312726Z 1140 @@ -1664,7 +1766,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z e08dfbd6aca488a1513bfe7c59e2da90 2009-10-17T22:23:29.892475Z 2928 @@ -1698,7 +1800,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 767d76b65ff41dd9860747d14bb24ee1 2009-12-20T19:13:22.787652Z 3206 @@ -1732,7 +1834,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 93159e216a0265b8f239566bfb91fd8e 2009-10-17T22:23:29.892475Z 2928 @@ -1766,7 +1868,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 5fa98acba6010a7450722133bfb66962 2010-07-24T00:19:32.307471Z 3860 @@ -1800,7 +1902,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z eeff80bd1cee52d49f1eb78fab035adf 2009-10-17T22:23:29.892475Z 2928 @@ -1834,7 +1936,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 09b6720db5ea81c8e22aff9dd89fc0bd 2009-10-17T22:23:29.892475Z 2928 @@ -1868,7 +1970,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z b392b3c84d6d7b8bba99011778f5b54e 2007-11-20T20:29:03.757553Z 920 @@ -1902,7 +2004,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 2ae2d679057fe2db7b7a8bdabc2cbf6d 2009-10-17T22:23:29.892475Z 2928 @@ -1936,7 +2038,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 01a97aa31f8b9917a84790f23e0e90d1 2009-10-21T22:34:34.183882Z 2947 @@ -1970,7 +2072,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z af4786659f25d96a43468cdc4bcfae44 2009-02-11T19:06:50.454280Z 2439 @@ -2004,7 +2106,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 82e35d32f60c71db17de62592693c737 2007-10-20T12:47:05.860183Z 855 @@ -2038,7 +2140,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 3ac5fb29973ffa0ca94ac90387c73b78 2007-08-29T16:52:35.680643Z 674 @@ -2066,13 +2168,47 @@ 895 +037_add_project_identifier.rb +file + + + + +2011-03-03T11:05:12.000000Z +e61809aaf1ac8a2a290c4574ed598ff0 +2007-04-02T06:29:09.277122Z +397 +jplang + + + + + + + + + + + + + + + + + + + + + +202 + 073_add_enumerations_is_default.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z db7f5c6597e13933c96cb58cbbd1f0bd 2007-10-05T17:44:15.414646Z 803 @@ -2100,47 +2236,13 @@ 236 -037_add_project_identifier.rb -file - - - - -2010-09-23T14:37:44.887754Z -e61809aaf1ac8a2a290c4574ed598ff0 -2007-04-02T06:29:09.277122Z -397 -jplang - - - - - - - - - - - - - - - - - - - - - -202 - 20100313171051_add_index_on_issues_nested_set.rb file -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z 243f136f05a508fff7ca52423f65c959 2010-03-13T17:17:10.453825Z 3578 @@ -2174,7 +2276,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z e5f0fe89be9a00fe1f8b246bde88fca1 2007-10-01T08:44:17.920088Z 782 @@ -2208,7 +2310,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z bb79c723b9d9fdabe49ed18ebb8a6caf 2009-12-11T18:48:34.197724Z 3151 @@ -2242,7 +2344,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z b8b7c422c3d666340afaec3a52c5d6a4 2007-10-22T21:07:13.432482Z 864 @@ -2270,81 +2372,13 @@ 275 -20100129193813_update_mail_notification_values.rb -file - - - - -2011-01-13T14:09:38.000000Z -d2251c92048ec4169e2c220f1510d803 -2010-11-20T09:55:06.580420Z -4413 -jplang - - - - - - - - - - - - - - - - - - - - - -241 - -001_setup.rb -file - - - - -2010-09-23T14:37:44.875728Z -b740a77ff87e6390f7ad86eaf0710040 -2008-08-25T16:35:20.899166Z -1764 -jplang - - - - - - - - - - - - - - - - - - - - - -18072 - 20091010093521_fix_users_custom_values.rb file -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 55350d451c622488f9358f7bbe12d4de 2009-10-10T10:16:00.250819Z 2905 @@ -2372,13 +2406,47 @@ 276 +001_setup.rb +file + + + + +2011-03-03T11:05:12.000000Z +b740a77ff87e6390f7ad86eaf0710040 +2008-08-25T16:35:20.899166Z +1764 +jplang + + + + + + + + + + + + + + + + + + + + + +18072 + 016_add_repositories_permissions.rb file -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z e770aa6387bb4737804d5024e743cd25 2007-08-29T16:52:35.680643Z 674 @@ -2406,13 +2474,47 @@ 1658 +20100129193813_update_mail_notification_values.rb +file + + + + +2011-03-03T11:05:12.000000Z +d2251c92048ec4169e2c220f1510d803 +2010-11-20T09:55:06.580420Z +4413 +jplang + + + + + + + + + + + + + + + + + + + + + +241 + 20091017214611_add_missing_indexes_to_journals.rb file -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 4cedb1faff3054d9be6250b589882b50 2009-10-17T22:23:29.892475Z 2928 @@ -2446,7 +2548,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 4901b560613f6a0ae3e5df5bcf2dd11c 2007-04-25T16:48:01.299251Z 482 @@ -2480,7 +2582,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 0e1e45e51997617f8672e6d0d5ed8e51 2009-10-17T22:23:29.892475Z 2928 @@ -2514,7 +2616,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z f60a0c1f633a6ff65fb2734173b57fe4 2008-02-29T19:46:58.834023Z 1180 @@ -2548,7 +2650,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 31acec69fd7efa0c26dec61f860b0c85 2007-09-09T17:05:38.846724Z 720 @@ -2582,7 +2684,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 871a600c06a6965f52c63177a82fbe15 2009-10-17T22:23:29.892475Z 2928 @@ -2616,7 +2718,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 320b459ced6ed78d09a3743ad60b3200 2009-01-18T10:54:08.545108Z 2279 @@ -2644,13 +2746,47 @@ 270 +20110226120132_change_auth_sources_account_password_limit.rb +file + + + + +2011-03-03T11:40:18.000000Z +fccbbb0aadf883abb7a337961c2199e4 +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +298 + 094_change_projects_homepage_limit.rb file -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z cf04e90903f0d068e4503cb465026ef7 2008-05-25T13:37:29.456358Z 1457 @@ -2684,7 +2820,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 5be8fe0eee7c90901f9ba49030412f40 2008-05-04T15:05:38.117137Z 1415 @@ -2718,7 +2854,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 07bf6636d0acf3ec84b38648bbe2c07a 2007-04-21T12:09:07.794422Z 454 @@ -2752,7 +2888,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z be494b64b18017ebe3ccdff9a34abdbd 2007-11-24T12:25:07.449637Z 926 @@ -2786,7 +2922,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 0abbef63f1f391688df012906a94877b 2008-03-09T18:25:37.323226Z 1222 @@ -2820,7 +2956,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z a574e8a4f8f80a464ca2b8bcbd43287f 2007-09-15T14:54:15.583528Z 731 @@ -2854,7 +2990,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z cd7530e8030bf9e675ca5922c2494d83 2007-03-10T15:09:49.115269Z 323 @@ -2888,7 +3024,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:12.000000Z 7a04693ea608e342b463c73c461b2da0 2011-01-01T23:08:49.766359Z 4610 @@ -2922,7 +3058,7 @@ -2010-09-23T14:37:44.931783Z +2011-03-03T11:05:12.000000Z d1a11dec6b93af060f84f9b2a1e36421 2010-03-13T14:56:49.379682Z 3573 @@ -2956,7 +3092,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z f1661157bd19c5fd4f7a4244745571bf 2007-08-29T16:52:35.680643Z 674 @@ -2990,7 +3126,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 8381c8e67d31387ec86e821025f5ae8b 2007-03-09T18:03:31.183366Z 319 @@ -3024,7 +3160,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z f8359b001e33e9508d158589c81f7bee 2007-02-03T12:57:33.179243Z 223 @@ -3058,7 +3194,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 63b0f6e295adf5f1d1eee803e4cc6287 2009-01-24T11:48:38.049684Z 2305 @@ -3092,7 +3228,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 668305a363cf6997eb9f2259d00cc26d 2009-03-19T00:01:24.358528Z 2599 @@ -3126,7 +3262,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z c8a6c8715446f22f6a3f4e2040dd873d 2007-11-19T22:28:43.818228Z 917 @@ -3160,7 +3296,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 7f2d97409681d462705d00de37e78476 2008-10-18T10:07:49.851665Z 1938 @@ -3194,7 +3330,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z d885a13afc268875b79c4cbf9524f3e8 2009-02-08T17:24:39.400993Z 2415 @@ -3228,7 +3364,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z aa67262417630fc088eb57df8d2dd9d3 2007-08-16T17:47:41.639068Z 649 @@ -3262,7 +3398,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 528b6095ca0376cecdd966ddd0b345c4 2006-12-16T13:37:32.633739Z 95 @@ -3296,7 +3432,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 2d559ef99ec458f472f5c22c0a8bf5f4 2007-08-29T16:52:35.680643Z 674 @@ -3330,7 +3466,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z dc28d8674409819b866f6d878b33d288 2007-04-24T13:57:27.960164Z 473 @@ -3364,7 +3500,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z a7d8c7f023a76a8dbb0d0950797c08f8 2008-02-12T21:11:16.312726Z 1140 @@ -3398,7 +3534,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z ba997a6179b5ab0f421b149c54725357 2008-01-15T20:40:59.035860Z 1069 @@ -3432,7 +3568,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z e256cf4a148fd48c409ea6983d569e7d 2009-10-17T22:23:29.892475Z 2928 @@ -3466,7 +3602,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 02bfb0be1b161bd757a75f69bfe79bc7 2008-03-09T18:25:37.323226Z 1222 @@ -3500,7 +3636,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z f77d77e81db6f6ac5bb3844255f8ab33 2008-03-12T20:28:49.748698Z 1236 @@ -3528,13 +3664,47 @@ 218 +20110223180944_add_users_salt.rb +file + + + + +2011-03-03T11:40:18.000000Z +6dd75e3da92087226c787a4edc76032e +2011-02-23T17:27:31.762248Z +4936 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +176 + 20090214190337_add_watchers_user_id_type_index.rb file -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 5d4b3c5646cc6c136e706ac5d7e0b377 2009-02-14T19:06:44.812480Z 2466 @@ -3568,7 +3738,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 90bb42121a57db140491ecb2a0763d00 2009-10-17T22:23:29.892475Z 2928 @@ -3602,7 +3772,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z b61285ac64245c1571e536a8c7e05a94 2007-06-12T20:12:05.590809Z 559 @@ -3636,7 +3806,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z e00f8e7739afbb2d07a21decd1422a0a 2008-09-21T20:38:36.877257Z 1896 @@ -3670,7 +3840,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 708c039fe82ad86e9930122cac4757b1 2007-08-31T17:45:32.784580Z 685 @@ -3704,7 +3874,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 4bfd0623186217eee4346313f148ea7a 2009-10-17T22:23:29.892475Z 2928 @@ -3738,7 +3908,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 71d997c1a32c4ba3dd4b31a34885fc7a 2009-12-29T14:53:29.047095Z 3259 @@ -3772,7 +3942,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z e8d897645c7176e7fd23f1578b882b5f 2009-10-17T22:23:29.892475Z 2928 @@ -3800,13 +3970,47 @@ 308 +20110228000100_copy_repositories_log_encoding.rb +file + + + + +2011-03-03T11:40:18.000000Z +22941cc81d233c2602be827d70670c10 +2011-03-01T10:14:47.182368Z +4981 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +497 + 063_add_roles_permissions.rb file -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 9ddb69b602d6d3ee5da01f8a9e9f78db 2007-08-29T16:52:35.680643Z 674 @@ -3840,7 +4044,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 055f00efdb87ff8934c36d5eb99b741f 2009-09-12T08:36:46.650954Z 2869 @@ -3874,7 +4078,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 27279bf98b3155975ce59a359d0a29aa 2009-05-10T11:18:09.335765Z 2729 @@ -3908,7 +4112,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 3af07746c4eab3a1716744971ac26ffc 2007-06-12T20:12:05.590809Z 559 @@ -3942,7 +4146,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 67d6e1898c150c8df560cb2ce8a2f2d7 2007-08-29T16:52:35.680643Z 674 @@ -3976,7 +4180,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 596f1acbdbc340c39d19f19f7b4cb6c6 2007-08-29T16:52:35.680643Z 674 @@ -4010,7 +4214,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 46effb13ff7d1a62b7b8c93afc7da9c8 2009-01-24T11:31:15.122844Z 2304 @@ -4044,7 +4248,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z e7e163729c56cd9807450574d2beeda8 2007-10-16T19:19:10.481742Z 845 @@ -4072,13 +4276,47 @@ 215 +20091114105931_add_view_issues_permission.rb +file + + + + +2011-03-03T11:05:12.000000Z +886411cb32a18ec492acc798194210af +2009-11-14T12:08:47.175978Z +3039 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +262 + 082_add_messages_locked.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 4ed0fffe6158eeda69a021c362f61157 2007-11-24T12:25:07.449637Z 926 @@ -4112,7 +4350,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 22e6afc0519b7befbae2c4a4433c20f5 2009-10-17T22:23:29.892475Z 2928 @@ -4146,7 +4384,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 8251942eb30b7c709ac6e3dc1ab5eedb 2009-10-17T22:23:29.892475Z 2928 @@ -4174,39 +4412,39 @@ 267 -20091114105931_add_view_issues_permission.rb -file - - - - -2010-09-23T14:37:44.927757Z -886411cb32a18ec492acc798194210af -2009-11-14T12:08:47.175978Z -3039 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -262 +20091017213444_add_missing_indexes_to_tokens.rb +file + + + + +2011-03-03T11:05:12.000000Z +4c220f0316e1b04fa8350f0309698f24 +2009-10-17T22:23:29.892475Z +2928 +edavis10 + + + + + + + + + + + + + + + + + + + + + +172 20090503121501_create_member_roles.rb file @@ -4214,7 +4452,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 16792ab92fda3a70516d55a011c01fce 2009-05-10T10:54:31.775505Z 2726 @@ -4242,39 +4480,39 @@ 274 -20091017213444_add_missing_indexes_to_tokens.rb -file - - - - -2010-09-23T14:37:44.923753Z -4c220f0316e1b04fa8350f0309698f24 -2009-10-17T22:23:29.892475Z -2928 -edavis10 - - - - - - - - - - - - - - - - - - - - - -172 +057_add_versions_wiki_page_title.rb +file + + + + +2011-03-03T11:05:12.000000Z +6a4944f1162c00f2405200fb38773886 +2007-06-14T18:26:27.748707Z +564 +jplang + + + + + + + + + + + + + + + + + + + + + +202 20090323224724_add_type_to_enumerations.rb file @@ -4282,7 +4520,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 0c0cee6df5f26eb3378c9b22a1162a5a 2009-05-30T23:30:36.923541Z 2777 @@ -4310,47 +4548,13 @@ 185 -057_add_versions_wiki_page_title.rb -file - - - - -2010-09-23T14:37:44.891758Z -6a4944f1162c00f2405200fb38773886 -2007-06-14T18:26:27.748707Z -564 -jplang - - - - - - - - - - - - - - - - - - - - - -202 - 004_export_pdf.rb file -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 6e59569f25a79a0a75797fa4ebb60936 2007-08-29T16:52:35.680643Z 674 @@ -4384,7 +4588,7 @@ -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z 00a100c0ca092df63e8542fc6d0bc78c 2007-03-18T15:48:05.787958Z 344 @@ -4418,7 +4622,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z ee71a22f869c9dbee6f322ad25f45934 2009-12-06T10:28:20.099964Z 3123 @@ -4452,7 +4656,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 21d40b6390e67409bad1d4525c26accb 2009-10-17T22:23:29.892475Z 2928 @@ -4486,7 +4690,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 1b013e3bbb624874d78eaf3332ccb3d5 2007-03-26T16:41:54.592250Z 383 @@ -4520,7 +4724,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z e658f4ed3c99264bf4c036b87b8cf39f 2007-05-27T17:42:04.537618Z 549 @@ -4554,7 +4758,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 4d0267b0a9d4cb2ec782d10247a4c33f 2009-01-24T11:31:15.122844Z 2304 @@ -4588,7 +4792,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z eef7b68156646d86ea515aed9aa525ed 2009-10-17T22:23:29.892475Z 2928 @@ -4622,7 +4826,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 1567606924d88ae66474e848de86577a 2009-10-21T22:34:28.905707Z 2946 @@ -4656,7 +4860,7 @@ -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z ccfd197b34214a0d74d952aa65dcd5a6 2008-03-09T18:25:37.323226Z 1222 @@ -4690,7 +4894,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z f5ae107f30300b547d535ddc5b1b999c 2009-09-12T08:36:46.650954Z 2869 @@ -4724,7 +4928,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 9cef93921160d49f5d3aa4968ecc4eb1 2007-10-22T21:07:13.432482Z 864 @@ -4758,7 +4962,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 6c70abafef3dc834c722ed7135d6a7df 2009-10-17T22:23:29.892475Z 2928 @@ -4792,7 +4996,7 @@ -2010-11-19T13:04:50.888959Z +2011-03-03T11:05:12.000000Z 0000368c453072e56da62defbc80441e 2010-11-14T12:33:14.198318Z 4402 @@ -4826,7 +5030,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z cf095d9afbc6429b8d759eb737a0781f 2009-10-21T22:34:34.183882Z 2947 @@ -4860,7 +5064,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 9aa91971db6c6f14ddd1ae768085b0a8 2009-10-17T22:23:29.892475Z 2928 @@ -4894,7 +5098,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 3e5f2220de578b306ce323997c495db6 2006-11-12T18:50:30.642587Z 44 @@ -4928,7 +5132,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 0fb07bc55cf61720437b40e4ae244e05 2006-12-03T20:51:17.306207Z 63 @@ -4962,7 +5166,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 417051f45603460a17909e4a5029c779 2007-08-29T16:52:35.680643Z 674 @@ -4990,13 +5194,47 @@ 443 +20110224000000_add_repositories_path_encoding.rb +file + + + + +2011-03-03T11:40:18.000000Z +7cd80bdf7897357500a46e87ed82b84b +2011-02-24T05:58:37.876075Z +4940 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +240 + 032_create_time_entries.rb file -2010-09-23T14:37:44.883725Z +2011-03-03T11:05:12.000000Z a62243f0bc2f1b1b11a47da172d011a5 2007-04-25T15:06:20.062636Z 479 @@ -5024,13 +5262,47 @@ 966 +20110226120112_change_repositories_password_limit.rb +file + + + + +2011-03-03T11:40:18.000000Z +e809364786bdcce227961318e7428700 +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +276 + 068_create_enabled_modules.rb file -2010-09-23T14:37:44.895727Z +2011-03-03T11:05:12.000000Z 96962340557b9a1f70a215d88b07c2c1 2007-09-14T11:34:08.234701Z 725 @@ -5064,7 +5336,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 8ad3f0193d5e3b8d52293bbf2828c2d2 2009-10-17T22:23:29.892475Z 2928 @@ -5098,7 +5370,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z fd6ccbccc44ceccab8de7c3c48696ecc 2009-10-17T22:23:29.892475Z 2928 @@ -5132,7 +5404,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 1798d606a43c6a29029535c28b49beff 2007-09-04T22:07:44.613701Z 702 @@ -5166,7 +5438,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z d714e81a7a9c29b60e405233765cbd33 2007-08-29T16:52:35.680643Z 674 @@ -5200,7 +5472,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z a27ef00d6ec6b3f4dc63ad004181c10e 2008-01-20T23:38:55.025648Z 1091 @@ -5234,7 +5506,7 @@ -2010-09-23T14:37:44.875728Z +2011-03-03T11:05:12.000000Z 497529b269185b1833b959c98db3c1d1 2007-08-29T16:52:35.680643Z 674 @@ -5268,7 +5540,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z d39d0037e4f06dfb7db18d9082608832 2009-10-17T22:23:29.892475Z 2928 @@ -5302,7 +5574,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 79d11b147c1061901a888d89c3e5029b 2009-10-17T22:23:29.892475Z 2928 @@ -5336,7 +5608,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 1cbe32e981634898d5b0f80b2c63798b 2007-12-14T18:54:55.323993Z 994 @@ -5370,7 +5642,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 717687210dcbeeebff8337561a427e70 2007-05-05T13:22:27.245135Z 506 @@ -5404,7 +5676,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 05c7ea8c5dc45498164a324f7db2887a 2006-12-10T18:35:48.564790Z 81 @@ -5438,7 +5710,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z ce38342dea044adf8b277f6483f1a742 2009-03-12T18:06:54.054174Z 2572 @@ -5472,7 +5744,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z dbeea4ad5a501200711cb4195856597e 2009-10-17T22:23:29.892475Z 2928 @@ -5506,7 +5778,7 @@ -2010-09-23T14:37:44.911755Z +2011-03-03T11:05:12.000000Z 4c1203f40e8e7b568ddce15af4f3ad9b 2008-11-10T18:59:06.897210Z 2006 @@ -5540,7 +5812,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z c62ac2ca3e59bb91e5bb4e206abdaed1 2007-04-25T15:06:20.062636Z 479 @@ -5574,7 +5846,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 3bb4b5f081354ea7d943f0b7c6f07284 2007-08-29T16:52:35.680643Z 674 @@ -5608,7 +5880,7 @@ -2010-09-23T14:37:44.915753Z +2011-03-03T11:05:12.000000Z 3460b737f353524921cfd9ac4199fc44 2009-03-12T19:49:39.983871Z 2580 @@ -5642,7 +5914,7 @@ -2010-09-23T14:37:44.887754Z +2011-03-03T11:05:12.000000Z 560e67e7b88186a0e21a2f614b6d83c7 2007-08-29T16:52:35.680643Z 674 @@ -5676,7 +5948,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z c22348c101d1a03b2d808cb89b3175a5 2007-06-12T20:12:05.590809Z 559 @@ -5710,7 +5982,7 @@ -2010-09-23T14:37:44.927757Z +2011-03-03T11:05:12.000000Z 87d90f2ce2101811b7aaf0031a74e0c1 2009-10-25T16:56:46.187627Z 2981 @@ -5744,7 +6016,7 @@ -2010-09-23T14:37:44.891758Z +2011-03-03T11:05:12.000000Z 84fe06ac7cefc2eebba29ac872241d88 2007-06-29T17:21:37.739022Z 577 @@ -5778,7 +6050,7 @@ -2010-09-23T14:37:44.875728Z +2011-03-03T11:05:12.000000Z d7a9aad3796f37d70ac2ab4af9c80656 2007-08-29T16:52:35.680643Z 674 @@ -5812,7 +6084,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z defb118deb2deb23648d50da5cf71047 2006-12-24T13:38:45.881735Z 106 @@ -5846,7 +6118,7 @@ -2010-09-23T14:37:44.919754Z +2011-03-03T11:05:12.000000Z 89cbe3b06f14ba6d9a5cda47f4239f60 2009-04-26T13:09:14.221938Z 2696 @@ -5880,7 +6152,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z f2e06da76555942fd3017134d618bbac 2007-08-29T16:52:35.680643Z 674 @@ -5914,7 +6186,7 @@ -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z 5ff56d564f2da50c289c1dfd90053a4b 2008-03-05T09:16:19.220849Z 1189 @@ -5948,7 +6220,7 @@ -2010-09-23T14:37:44.923753Z +2011-03-03T11:05:12.000000Z 0ae6a6924263cf5317b539c81b952f03 2009-10-17T22:23:29.892475Z 2928 @@ -5982,7 +6254,7 @@ -2010-09-23T14:37:44.879727Z +2011-03-03T11:05:12.000000Z 121548a48360a22daa537af42ee8902b 2007-01-21T11:50:22.864544Z 167 @@ -6010,13 +6282,47 @@ 284 +20110227125750_change_journal_details_values_to_text.rb +file + + + + +2011-03-03T11:40:18.000000Z +768603dc014def8d2fc0a0bb8d81ef79 +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +324 + 095_add_wiki_pages_parent_id.rb file -2010-09-23T14:37:44.899726Z +2011-03-03T11:05:12.000000Z e50cfa8ef5216f0f7d266dac1e38c9da 2008-07-26T11:46:24.917066Z 1698 diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/prop-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/prop-base/20110223180944_add_users_salt.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110223180944_add_users_salt.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/prop-base/20110223180953_salt_user_passwords.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110223180953_salt_user_passwords.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/prop-base/20110226120112_change_repositories_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110226120112_change_repositories_password_limit.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/prop-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/prop-base/20110227125750_change_journal_details_values_to_text.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/prop-base/20110227125750_change_journal_details_values_to_text.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110220160626_add_workflows_assignee_and_author.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration + def self.up + add_column :workflows, :assignee, :boolean, :null => false, :default => false + add_column :workflows, :author, :boolean, :null => false, :default => false + Workflow.update_all("assignee = #{Workflow.connection.quoted_false}") + Workflow.update_all("author = #{Workflow.connection.quoted_false}") + end + + def self.down + remove_column :workflows, :assignee + remove_column :workflows, :author + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110223180944_add_users_salt.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110223180944_add_users_salt.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class AddUsersSalt < ActiveRecord::Migration + def self.up + add_column :users, :salt, :string, :limit => 64 + end + + def self.down + remove_column :users, :salt + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110223180953_salt_user_passwords.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110223180953_salt_user_passwords.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +class SaltUserPasswords < ActiveRecord::Migration + + def self.up + say_with_time "Salting user passwords, this may take some time..." do + User.salt_unsalted_passwords! + end + end + + def self.down + # Unsalted passwords can not be restored + raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed." + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110224000000_add_repositories_path_encoding.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110224000000_add_repositories_path_encoding.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesPathEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :path_encoding + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110226120112_change_repositories_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110226120112_change_repositories_password_limit.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration + def self.up + change_column :repositories, :password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :repositories, :password, :string, :limit => 60, :default => '' + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110226120132_change_auth_sources_account_password_limit.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration + def self.up + change_column :auth_sources, :account_password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :auth_sources, :account_password, :string, :limit => 60, :default => '' + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110227125750_change_journal_details_values_to_text.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110227125750_change_journal_details_values_to_text.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +class ChangeJournalDetailsValuesToText < ActiveRecord::Migration + def self.up + change_column :journal_details, :old_value, :text + change_column :journal_details, :value, :text + end + + def self.down + change_column :journal_details, :old_value, :string + change_column :journal_details, :value, :string + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110228000000_add_repositories_log_encoding.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110228000000_add_repositories_log_encoding.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :log_encoding + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/.svn/text-base/20110228000100_copy_repositories_log_encoding.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/.svn/text-base/20110228000100_copy_repositories_log_encoding.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,18 @@ +class CopyRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + encoding = Setting.commit_logs_encoding.to_s.strip + encoding = encoding.blank? ? 'UTF-8' : encoding + Repository.find(:all).each do |repo| + scm = repo.scm_name + case scm + when 'Subversion', 'Mercurial', 'Git', 'Filesystem' + repo.update_attribute(:log_encoding, nil) + else + repo.update_attribute(:log_encoding, encoding) + end + end + end + + def self.down + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110220160626_add_workflows_assignee_and_author.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110220160626_add_workflows_assignee_and_author.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +class AddWorkflowsAssigneeAndAuthor < ActiveRecord::Migration + def self.up + add_column :workflows, :assignee, :boolean, :null => false, :default => false + add_column :workflows, :author, :boolean, :null => false, :default => false + Workflow.update_all("assignee = #{Workflow.connection.quoted_false}") + Workflow.update_all("author = #{Workflow.connection.quoted_false}") + end + + def self.down + remove_column :workflows, :assignee + remove_column :workflows, :author + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110223180944_add_users_salt.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110223180944_add_users_salt.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class AddUsersSalt < ActiveRecord::Migration + def self.up + add_column :users, :salt, :string, :limit => 64 + end + + def self.down + remove_column :users, :salt + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110223180953_salt_user_passwords.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110223180953_salt_user_passwords.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +class SaltUserPasswords < ActiveRecord::Migration + + def self.up + say_with_time "Salting user passwords, this may take some time..." do + User.salt_unsalted_passwords! + end + end + + def self.down + # Unsalted passwords can not be restored + raise ActiveRecord::IrreversibleMigration, "Can't decypher salted passwords. This migration can not be rollback'ed." + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110224000000_add_repositories_path_encoding.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110224000000_add_repositories_path_encoding.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesPathEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :path_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :path_encoding + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110226120112_change_repositories_password_limit.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110226120112_change_repositories_password_limit.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeRepositoriesPasswordLimit < ActiveRecord::Migration + def self.up + change_column :repositories, :password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :repositories, :password, :string, :limit => 60, :default => '' + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110226120132_change_auth_sources_account_password_limit.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110226120132_change_auth_sources_account_password_limit.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class ChangeAuthSourcesAccountPasswordLimit < ActiveRecord::Migration + def self.up + change_column :auth_sources, :account_password, :string, :limit => nil, :default => '' + end + + def self.down + change_column :auth_sources, :account_password, :string, :limit => 60, :default => '' + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110227125750_change_journal_details_values_to_text.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110227125750_change_journal_details_values_to_text.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +class ChangeJournalDetailsValuesToText < ActiveRecord::Migration + def self.up + change_column :journal_details, :old_value, :text + change_column :journal_details, :value, :text + end + + def self.down + change_column :journal_details, :old_value, :string + change_column :journal_details, :value, :string + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110228000000_add_repositories_log_encoding.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110228000000_add_repositories_log_encoding.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +class AddRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + add_column :repositories, :log_encoding, :string, :limit => 64, :default => nil + end + + def self.down + remove_column :repositories, :log_encoding + end +end diff -r fca2657f4aa5 -r eeebe205a056 db/migrate/20110228000100_copy_repositories_log_encoding.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/migrate/20110228000100_copy_repositories_log_encoding.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,18 @@ +class CopyRepositoriesLogEncoding < ActiveRecord::Migration + def self.up + encoding = Setting.commit_logs_encoding.to_s.strip + encoding = encoding.blank? ? 'UTF-8' : encoding + Repository.find(:all).each do |repo| + scm = repo.scm_name + case scm + when 'Subversion', 'Mercurial', 'Git', 'Filesystem' + repo.update_attribute(:log_encoding, nil) + else + repo.update_attribute(:log_encoding, encoding) + end + end + end + + def self.down + end +end diff -r fca2657f4aa5 -r eeebe205a056 doc/.svn/all-wcprops --- a/doc/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,13 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 28 -/svn/!svn/ver/4670/trunk/doc +/svn/!svn/ver/4784/trunk/doc END UPGRADING K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/3848/trunk/doc/UPGRADING +/svn/!svn/ver/4752/trunk/doc/UPGRADING END RUNNING_TESTS K 25 @@ -25,13 +25,13 @@ K 25 svn:wc:ra_dav:version-url V 36 -/svn/!svn/ver/4567/trunk/doc/INSTALL +/svn/!svn/ver/4752/trunk/doc/INSTALL END CHANGELOG K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/4670/trunk/doc/CHANGELOG +/svn/!svn/ver/4784/trunk/doc/CHANGELOG END COPYING K 25 diff -r fca2657f4aa5 -r eeebe205a056 doc/.svn/entries --- a/doc/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/doc http://redmine.rubyforge.org/svn -2011-01-09T15:57:44.051951Z -4670 +2011-01-30T14:37:23.564601Z +4784 jplang @@ -32,11 +32,11 @@ -2010-09-23T14:37:44.939791Z -b728be27d68a5bc46292d5e9d2ae5260 -2010-07-18T15:19:04.080578Z -3848 -edavis10 +2011-03-03T11:05:14.000000Z +c87e4b9ee82c334658b1c76106dfd469 +2011-01-23T10:22:00.456857Z +4752 +jplang has-props @@ -58,7 +58,7 @@ -1794 +1949 RUNNING_TESTS file @@ -66,7 +66,7 @@ -2010-09-23T14:37:44.939791Z +2011-03-03T11:05:14.000000Z cc987c3ab1bf29e6ebe5313bef953b5b 2010-02-16T16:40:50.914879Z 3438 @@ -100,7 +100,7 @@ -2010-09-23T14:37:44.939791Z +2011-03-03T11:05:14.000000Z ba2ffee528eae310e20bf761619bc85f 2008-08-11T20:49:52.309238Z 1732 @@ -134,10 +134,10 @@ -2011-01-13T14:09:38.000000Z -1e44cb9fd6df3d50661a812598996dcb -2010-12-23T10:03:32.666117Z -4567 +2011-03-03T11:05:14.000000Z +daf24adc36bb93a3d0e1c5a7e4b14fc5 +2011-01-23T10:22:00.456857Z +4752 jplang has-props @@ -160,7 +160,7 @@ -2987 +3003 CHANGELOG file @@ -168,10 +168,10 @@ -2011-01-13T14:09:38.000000Z -dd376ebfe28816365c8c71db0212c730 -2011-01-09T15:57:44.051951Z -4670 +2011-03-03T11:05:14.000000Z +a6dd03cb1256e4bf125b81d353206416 +2011-01-30T14:37:23.564601Z +4784 jplang has-props @@ -194,7 +194,7 @@ -84248 +85714 COPYING file @@ -202,7 +202,7 @@ -2010-09-23T14:37:44.935786Z +2011-03-03T11:05:14.000000Z 751419260aa954499f7abaabaa882bbe 2007-11-04T13:19:42.552822Z 883 @@ -236,7 +236,7 @@ -2010-11-19T14:03:48.248927Z +2011-03-03T11:05:14.000000Z cc77650493d11d18eabb058fbdf7ac24 2010-10-22T17:18:11.628381Z 4273 diff -r fca2657f4aa5 -r eeebe205a056 doc/.svn/text-base/CHANGELOG.svn-base --- a/doc/.svn/text-base/CHANGELOG.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/.svn/text-base/CHANGELOG.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -4,6 +4,29 @@ Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ +== 2011-01-30 v1.1.1 + +* Defect #4899: Redmine fails to list files for darcs repository +* Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql +* Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades +* Defect #7258: Automatic spent time logging does not work properly with SQLite3 +* Defect #7259: Released 1.1.0 uses "devel" label inside admin information +* Defect #7265: "Loading..." icon does not disappear after add project member +* Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale +* Defect #7274: CSV value separator in dutch locale +* Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list +* Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0 +* Defect #7307: HTTP 500 error on query for empty revision +* Defect #7313: Label not translated in french in Settings/Email Notification tab +* Defect #7329: with long strings may hang server +* Defect #7337: My page french translation +* Defect #7348: French Translation of "Connection" +* Defect #7385: Error when viewing an issue which was related to a deleted subtask +* Defect #7386: NoMethodError on pdf export +* Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4 +* Defect #7421: no email sent with 'Notifiy for any event on the selected projects only' +* Feature #5344: Update to latest CodeRay 0.9.x + == 2011-01-09 v1.1.0 * Defect #2038: Italics in wiki headers show-up wrong in the toc diff -r fca2657f4aa5 -r eeebe205a056 doc/.svn/text-base/INSTALL.svn-base --- a/doc/.svn/text-base/INSTALL.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/.svn/text-base/INSTALL.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -80,8 +80,8 @@ == SMTP server Configuration -Copy config/email.yml.example to config/email.yml and edit this file -to adjust your SMTP settings. +Copy config/configuration.yml.example to config/configuration.yml and +edit this file to adjust your SMTP settings. Do not forget to restart the application after any change to this file. Please do not enter your SMTP settings in environment.rb. diff -r fca2657f4aa5 -r eeebe205a056 doc/.svn/text-base/UPGRADING.svn-base --- a/doc/.svn/text-base/UPGRADING.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/.svn/text-base/UPGRADING.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -10,8 +10,10 @@ 1. Uncompress the program archive in a new directory 2. Copy your database settings (RAILS_ROOT/config/database.yml) - and SMTP settings (RAILS_ROOT/config/email.yml) into the new - config directory + and your configuration file (RAILS_ROOT/config/configuration.yml) + into the new config directory + Note: before Redmine 1.2, SMTP configuration was stored in + config/email.yml. It should now be stored in config/configuration.yml. 3. Copy the RAILS_ROOT/files directory content into your new installation This directory contains all the attached files. diff -r fca2657f4aa5 -r eeebe205a056 doc/CHANGELOG --- a/doc/CHANGELOG Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/CHANGELOG Thu Mar 03 12:02:03 2011 +0000 @@ -4,6 +4,29 @@ Copyright (C) 2006-2011 Jean-Philippe Lang http://www.redmine.org/ +== 2011-01-30 v1.1.1 + +* Defect #4899: Redmine fails to list files for darcs repository +* Defect #7245: Wiki fails to find pages with cyrillic characters using postgresql +* Defect #7256: redmine/public/.htaccess must be moved for non-fastcgi installs/upgrades +* Defect #7258: Automatic spent time logging does not work properly with SQLite3 +* Defect #7259: Released 1.1.0 uses "devel" label inside admin information +* Defect #7265: "Loading..." icon does not disappear after add project member +* Defect #7266: Test test_due_date_distance_in_words fail due to undefined locale +* Defect #7274: CSV value separator in dutch locale +* Defect #7277: Enabling gravatas causes usernames to overlap first name field in user list +* Defect #7294: "Notifiy for only project I select" is not available anymore in 1.1.0 +* Defect #7307: HTTP 500 error on query for empty revision +* Defect #7313: Label not translated in french in Settings/Email Notification tab +* Defect #7329: with long strings may hang server +* Defect #7337: My page french translation +* Defect #7348: French Translation of "Connection" +* Defect #7385: Error when viewing an issue which was related to a deleted subtask +* Defect #7386: NoMethodError on pdf export +* Defect #7415: Darcs adapter recognizes new files as modified files above Darcs 2.4 +* Defect #7421: no email sent with 'Notifiy for any event on the selected projects only' +* Feature #5344: Update to latest CodeRay 0.9.x + == 2011-01-09 v1.1.0 * Defect #2038: Italics in wiki headers show-up wrong in the toc diff -r fca2657f4aa5 -r eeebe205a056 doc/INSTALL --- a/doc/INSTALL Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/INSTALL Thu Mar 03 12:02:03 2011 +0000 @@ -80,8 +80,8 @@ == SMTP server Configuration -Copy config/email.yml.example to config/email.yml and edit this file -to adjust your SMTP settings. +Copy config/configuration.yml.example to config/configuration.yml and +edit this file to adjust your SMTP settings. Do not forget to restart the application after any change to this file. Please do not enter your SMTP settings in environment.rb. diff -r fca2657f4aa5 -r eeebe205a056 doc/UPGRADING --- a/doc/UPGRADING Thu Jan 20 09:59:02 2011 +0000 +++ b/doc/UPGRADING Thu Mar 03 12:02:03 2011 +0000 @@ -10,8 +10,10 @@ 1. Uncompress the program archive in a new directory 2. Copy your database settings (RAILS_ROOT/config/database.yml) - and SMTP settings (RAILS_ROOT/config/email.yml) into the new - config directory + and your configuration file (RAILS_ROOT/config/configuration.yml) + into the new config directory + Note: before Redmine 1.2, SMTP configuration was stored in + config/email.yml. It should now be stored in config/configuration.yml. 3. Copy the RAILS_ROOT/files directory content into your new installation This directory contains all the attached files. diff -r fca2657f4aa5 -r eeebe205a056 extra/.svn/all-wcprops --- a/extra/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 30 -/svn/!svn/ver/4725/trunk/extra +/svn/!svn/ver/4936/trunk/extra END diff -r fca2657f4aa5 -r eeebe205a056 extra/.svn/entries --- a/extra/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra +4993 +http://redmine.rubyforge.org/svn/trunk/extra http://redmine.rubyforge.org/svn -2011-01-15T14:48:33.715032Z -4725 +2011-02-23T17:27:31.762248Z +4936 jplang diff -r fca2657f4aa5 -r eeebe205a056 extra/mail_handler/.svn/entries --- a/extra/mail_handler/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/mail_handler/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/extra/mail_handler http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-19T15:03:32.000000Z +2011-03-03T11:05:11.000000Z f3a0f406bd2e6d3caacb7e7c22079df0 2011-01-15T14:48:33.715032Z 4725 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/.svn/entries --- a/extra/sample_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin http://redmine.rubyforge.org/svn @@ -44,7 +44,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:12.000000Z cb8636f8b6659a091f3e1f018a64a2f5 2009-07-02T18:40:06.298867Z 2798 @@ -78,7 +78,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:12.000000Z 4d87ae4412bda3ec3b4c9a8bc17fafb6 2009-02-26T16:37:48.671184Z 2530 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/.svn/entries --- a/extra/sample_plugin/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/controllers/.svn/entries --- a/extra/sample_plugin/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/controllers +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 9e3b32d475f8b06df8d45b28a2732d76 2009-02-21T11:04:50.579477Z 2493 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/models/.svn/entries --- a/extra/sample_plugin/app/models/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/models/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/models +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 5161ccc668c61730638ef23bec50232f 2008-07-27T19:18:35.954247Z 1704 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/views/.svn/entries --- a/extra/sample_plugin/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/views +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/views/example/.svn/entries --- a/extra/sample_plugin/app/views/example/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/views/example/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/views/example +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/example http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 674cc3fb92754e41d7e7d5fb7ed0eda7 2007-09-23T18:50:53.732551Z 753 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z cf9e02439886339b70ee199313902c96 2007-09-23T18:50:53.732551Z 753 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/views/my/.svn/entries --- a/extra/sample_plugin/app/views/my/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/views/my/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/views/my +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/views/my/blocks/.svn/entries --- a/extra/sample_plugin/app/views/my/blocks/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/views/my/blocks/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/views/my/blocks +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/my/blocks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z e2d729cf488b7b7411cffb259c10559a 2009-02-26T16:36:56.835799Z 2529 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/app/views/settings/.svn/entries --- a/extra/sample_plugin/app/views/settings/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/app/views/settings/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/app/views/settings +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/app/views/settings http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 065925dde040b66230ae06437114c77f 2009-07-02T18:40:06.298867Z 2798 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/assets/.svn/entries --- a/extra/sample_plugin/assets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/assets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/assets +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/assets/images/.svn/entries --- a/extra/sample_plugin/assets/images/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/assets/images/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/assets/images +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/images http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 81bcc262c08473fa7cb05cc78176652f 2007-09-23T18:50:53.732551Z 753 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/assets/stylesheets/.svn/entries --- a/extra/sample_plugin/assets/stylesheets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/assets/stylesheets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/assets/stylesheets +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/assets/stylesheets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z ced97da84497db69b30e6e17a55c3fb9 2007-09-23T18:50:53.732551Z 753 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/config/.svn/entries --- a/extra/sample_plugin/config/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/config/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/config +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/config/locales/.svn/entries --- a/extra/sample_plugin/config/locales/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/config/locales/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/config/locales +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/config/locales http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z c1dc7060239e61ce13e8840b305000c5 2009-02-08T16:13:02.919112Z 2413 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 989492284a42bf9777e2bd0d39b40254 2009-02-08T16:13:02.919112Z 2413 diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/db/.svn/entries --- a/extra/sample_plugin/db/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/db/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/db +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 extra/sample_plugin/db/migrate/.svn/entries --- a/extra/sample_plugin/db/migrate/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/sample_plugin/db/migrate/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/sample_plugin/db/migrate +4993 +http://redmine.rubyforge.org/svn/trunk/extra/sample_plugin/db/migrate http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z 2316ab57f3d60b7f04b4bdfdebf6fd8e 2008-07-27T19:10:56.352148Z 1703 diff -r fca2657f4aa5 -r eeebe205a056 extra/svn/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extra/svn/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 34 +/svn/!svn/ver/4936/trunk/extra/svn +END +reposman.rb +K 25 +svn:wc:ra_dav:version-url +V 46 +/svn/!svn/ver/4288/trunk/extra/svn/reposman.rb +END +svnserve.wrapper +K 25 +svn:wc:ra_dav:version-url +V 50 +/svn/!svn/ver/402/trunk/extra/svn/svnserve.wrapper +END +Redmine.pm +K 25 +svn:wc:ra_dav:version-url +V 45 +/svn/!svn/ver/4936/trunk/extra/svn/Redmine.pm +END +create_views.sql +K 25 +svn:wc:ra_dav:version-url +V 50 +/svn/!svn/ver/396/trunk/extra/svn/create_views.sql +END diff -r fca2657f4aa5 -r eeebe205a056 extra/svn/.svn/entries --- a/extra/svn/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/svn/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/extra/svn +4993 +http://redmine.rubyforge.org/svn/trunk/extra/svn http://redmine.rubyforge.org/svn -2010-10-29T22:55:50.222644Z -4309 -jbbarth +2011-02-23T17:27:31.762248Z +4936 +jplang @@ -32,7 +32,7 @@ -2011-01-13T12:46:09.000000Z +2011-03-03T11:05:12.000000Z a0d169b0fc20459335e531e4f3921ede 2010-10-24T21:00:05.611798Z 4288 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:12.000000Z f41d78e45e03554626edf5e4e6663d80 2007-04-02T19:01:31.084001Z 402 @@ -100,11 +100,11 @@ -2010-11-30T13:11:53.000000Z -5ed4546a59c9729cbd9b407ad0996b9b -2010-10-29T22:55:50.222644Z -4309 -jbbarth +2011-03-03T11:40:18.000000Z +c3d331d6024a3d0f0c250fda387ce052 +2011-02-23T17:27:31.762248Z +4936 +jplang has-props @@ -126,7 +126,7 @@ -10752 +10843 create_views.sql file @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:12.000000Z 96fdfe0a7a4913dbbfc1b871d7abab02 2007-04-01T19:43:59.029417Z 396 diff -r fca2657f4aa5 -r eeebe205a056 extra/svn/.svn/text-base/Redmine.pm.svn-base --- a/extra/svn/.svn/text-base/Redmine.pm.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/svn/.svn/text-base/Redmine.pm.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -148,7 +148,7 @@ my ($self, $parms, $arg) = @_; $self->{RedmineDSN} = $arg; my $query = "SELECT - hashed_password, auth_source_id, permissions + hashed_password, salt, auth_source_id, permissions FROM members, projects, users, roles, member_roles WHERE projects.id=members.project_id @@ -316,11 +316,12 @@ $sth->execute($redmine_user, $project_id); my $ret; - while (my ($hashed_password, $auth_source_id, $permissions) = $sth->fetchrow_array) { + while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) { unless ($auth_source_id) { - my $method = $r->method; - if ($hashed_password eq $pass_digest && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) { + my $method = $r->method; + my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest); + if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) { $ret = 1; last; } diff -r fca2657f4aa5 -r eeebe205a056 extra/svn/Redmine.pm --- a/extra/svn/Redmine.pm Thu Jan 20 09:59:02 2011 +0000 +++ b/extra/svn/Redmine.pm Thu Mar 03 12:02:03 2011 +0000 @@ -148,7 +148,7 @@ my ($self, $parms, $arg) = @_; $self->{RedmineDSN} = $arg; my $query = "SELECT - hashed_password, auth_source_id, permissions + hashed_password, salt, auth_source_id, permissions FROM members, projects, users, roles, member_roles WHERE projects.id=members.project_id @@ -316,11 +316,12 @@ $sth->execute($redmine_user, $project_id); my $ret; - while (my ($hashed_password, $auth_source_id, $permissions) = $sth->fetchrow_array) { + while (my ($hashed_password, $salt, $auth_source_id, $permissions) = $sth->fetchrow_array) { unless ($auth_source_id) { - my $method = $r->method; - if ($hashed_password eq $pass_digest && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) { + my $method = $r->method; + my $salted_password = Digest::SHA1::sha1_hex($salt.$pass_digest); + if ($hashed_password eq $salted_password && ((defined $read_only_methods{$method} && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/) ) { $ret = 1; last; } diff -r fca2657f4aa5 -r eeebe205a056 files/.svn/entries --- a/files/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/files/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/files +4993 +http://redmine.rubyforge.org/svn/trunk/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:13.000000Z ae0415159f2c4dba3fc1a559d4c0f9f5 2006-06-28T18:11:03.549769Z 4 diff -r fca2657f4aa5 -r eeebe205a056 lib/.svn/all-wcprops --- a/lib/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 28 -/svn/!svn/ver/4688/trunk/lib +/svn/!svn/ver/4993/trunk/lib END faster_csv.rb K 25 @@ -13,7 +13,7 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4466/trunk/lib/redmine.rb +/svn/!svn/ver/4954/trunk/lib/redmine.rb END tabular_form_builder.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 lib/.svn/entries --- a/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib http://redmine.rubyforge.org/svn -2011-01-11T08:41:35.993532Z -4688 +2011-03-03T05:51:46.224821Z +4993 tmaruyama @@ -38,7 +38,7 @@ -2010-09-23T14:37:44.983792Z +2011-03-03T11:05:14.000000Z 1657561b457dadfa5d004a393bdd1a2e 2009-11-04T13:22:26.440808Z 3007 @@ -78,10 +78,10 @@ -2011-01-13T14:11:09.000000Z -a25bf842b86584d0d77844d95b6ab907 -2010-12-04T17:43:39.823144Z -4466 +2011-03-03T11:40:18.000000Z +931d36182ff7c72cf9e133581a6e1822 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -104,7 +104,7 @@ -12841 +12850 tabular_form_builder.rb file @@ -112,7 +112,7 @@ -2010-09-23T14:37:45.055767Z +2011-03-03T11:05:14.000000Z 9d8fb5ede85fd780f018b74b36a83034 2010-06-20T19:03:09.888571Z 3804 @@ -149,7 +149,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z d76edcf3565b73d5e63e37d3e1c72512 2010-12-05T10:09:18.457497Z 4468 @@ -183,7 +183,7 @@ -2010-09-23T14:37:44.983792Z +2011-03-03T11:05:14.000000Z 55e7cfa4fcb3619e9939d29336ecdf02 2008-03-11T19:33:38.611682Z 1227 @@ -217,7 +217,7 @@ -2010-09-23T14:37:44.983792Z +2011-03-03T11:05:14.000000Z 1ecc6c4c4ae6aa3e75600673b4b78add 2009-08-15T22:41:40.505056Z 2840 diff -r fca2657f4aa5 -r eeebe205a056 lib/.svn/text-base/redmine.rb.svn-base --- a/lib/.svn/text-base/redmine.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/.svn/text-base/redmine.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -62,7 +62,7 @@ :auto_complete => [:issues], :context_menus => [:issues], :versions => [:index, :show, :status_by], - :journals => :index, + :journals => [:index, :diff], :queries => :index, :reports => [:issue_report, :issue_report_details]} map.permission :add_issues, {:issues => [:new, :create, :update_form]} diff -r fca2657f4aa5 -r eeebe205a056 lib/SVG/.svn/entries --- a/lib/SVG/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/SVG/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/SVG +4993 +http://redmine.rubyforge.org/svn/trunk/lib/SVG http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 393a5ca445f6965873eca0259a17f833 2007-03-25T17:11:46.804742Z 380 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 072cf60873854a186c6eba9b74dbe389 2007-03-25T17:11:46.804742Z 380 diff -r fca2657f4aa5 -r eeebe205a056 lib/SVG/Graph/.svn/entries --- a/lib/SVG/Graph/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/SVG/Graph/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/SVG/Graph +4993 +http://redmine.rubyforge.org/svn/trunk/lib/SVG/Graph http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 0a49ed37717b08c6bccdc843a03a333d 2009-03-30T19:58:17.407192Z 2642 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 55ff835de5a0fb0fd2d6a236b1c5c436 2009-03-30T19:58:17.407192Z 2642 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z a39e9963eaae7bb913b6d8d2dfe0506f 2009-03-30T19:58:17.407192Z 2642 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 184772c0f1732eadf12b0e8bc9e172f7 2009-03-30T19:58:17.407192Z 2642 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z fad5865539cbd7ba3433fd6d47b9d3f2 2009-11-07T10:40:54.677820Z 3017 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z cc9051d7617dfe6dd6cc47fe83fd6ec4 2009-03-30T19:58:17.407192Z 2642 @@ -236,7 +236,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z f092a4b0f16876381bc9283058eeb48c 2007-03-25T17:11:46.804742Z 380 @@ -270,7 +270,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 73dbcb4a1cba46b4e46a81881d24ff1a 2009-03-30T19:58:17.407192Z 2642 @@ -304,7 +304,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z d8e95d0e507a02a74a5ac3435560d3bd 2007-03-25T17:11:46.804742Z 380 diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/.svn/entries --- a/lib/generators/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/redmine_plugin/.svn/entries --- a/lib/generators/redmine_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/redmine_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators/redmine_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 334056a407de9091bb8774ba986c53f9 2009-06-10T03:39:02.884087Z 2785 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z be5d60ef31ac822cd5650ab976dcc543 2009-06-10T03:39:02.884087Z 2785 diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/redmine_plugin/templates/.svn/entries --- a/lib/generators/redmine_plugin/templates/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/redmine_plugin/templates/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators/redmine_plugin/templates +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 2d39c559d341be440cb60911ef125dd9 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z d97a21936cfb77543031f7d9a5d5131a 2008-10-25T04:37:31.779636Z 1949 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z d14592489e5b7d34b33d2487f4770b7d 2008-10-25T04:37:31.779636Z 1949 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ab791ada26df5c9c1a13b771e988a36f 2009-06-10T03:39:02.884087Z 2785 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 39cb16a49db6c72cdd7a63447d5b188f 2010-06-17T19:02:13.409991Z 3771 diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/redmine_plugin_controller/.svn/entries --- a/lib/generators/redmine_plugin_controller/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/redmine_plugin_controller/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators/redmine_plugin_controller +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 60c1792566a450d246dd66ff274ae06c 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 23b15404071adb39cb140a6113057f15 2010-02-28T12:15:47.320153Z 3514 diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/redmine_plugin_controller/templates/.svn/entries --- a/lib/generators/redmine_plugin_controller/templates/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/redmine_plugin_controller/templates/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators/redmine_plugin_controller/templates +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_controller/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 0ae9d2e8e624fef815f60164d47b6464 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z e8491aac2379dbba3d3ddadc30f6db07 2008-10-25T09:35:51.426668Z 1951 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 2fdd792e6b6825b4f1802ba4767e0435 2008-10-25T09:35:51.426668Z 1951 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 22e765f47aacc324789509219797d087 2010-06-17T19:02:07.893033Z 3770 diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/redmine_plugin_model/.svn/entries --- a/lib/generators/redmine_plugin_model/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/redmine_plugin_model/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators/redmine_plugin_model +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ca5ffbd9dfb099b2f38ca21c030ffea0 2008-09-05T10:31:06.632668Z 1786 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ba0c0092c69cca4c21b1b26027f7472b 2010-02-28T12:15:47.320153Z 3514 diff -r fca2657f4aa5 -r eeebe205a056 lib/generators/redmine_plugin_model/templates/.svn/entries --- a/lib/generators/redmine_plugin_model/templates/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/generators/redmine_plugin_model/templates/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/generators/redmine_plugin_model/templates +4993 +http://redmine.rubyforge.org/svn/trunk/lib/generators/redmine_plugin_model/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ce0817700ec27f10f7d07f998bff6991 2008-10-25T09:35:51.426668Z 1951 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z a4081d31f6d22e7655b4f6e9fb894a03 2009-10-17T21:08:33.644420Z 2926 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 115e77dae670747c95b5ff22c01d4174 2008-09-05T10:31:06.632668Z 1786 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 3a783571ccc96a2f639329700dda677b 2010-06-17T19:02:07.893033Z 3770 diff -r fca2657f4aa5 -r eeebe205a056 lib/plugins/.svn/entries --- a/lib/plugins/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/plugins/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/plugins +4993 +http://redmine.rubyforge.org/svn/trunk/lib/plugins http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine.rb --- a/lib/redmine.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine.rb Thu Mar 03 12:02:03 2011 +0000 @@ -62,7 +62,7 @@ :auto_complete => [:issues], :context_menus => [:issues], :versions => [:index, :show, :status_by], - :journals => :index, + :journals => [:index, :diff], :queries => :index, :reports => [:issue_report, :issue_report_details]} map.permission :add_issues, {:issues => [:new, :create, :update_form]} diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/all-wcprops --- a/lib/redmine/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,19 +1,19 @@ K 25 svn:wc:ra_dav:version-url V 36 -/svn/!svn/ver/4688/trunk/lib/redmine +/svn/!svn/ver/4993/trunk/lib/redmine END i18n.rb K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4516/trunk/lib/redmine/i18n.rb +/svn/!svn/ver/4894/trunk/lib/redmine/i18n.rb END pop3.rb K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/3330/trunk/lib/redmine/pop3.rb +/svn/!svn/ver/4737/trunk/lib/redmine/pop3.rb END safe_attributes.rb K 25 @@ -43,7 +43,7 @@ K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4619/trunk/lib/redmine/version.rb +/svn/!svn/ver/4784/trunk/lib/redmine/version.rb END imap.rb K 25 @@ -63,36 +63,36 @@ V 44 /svn/!svn/ver/2776/trunk/lib/redmine/info.rb END +access_keys.rb +K 25 +svn:wc:ra_dav:version-url +V 51 +/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb +END activity.rb K 25 svn:wc:ra_dav:version-url V 48 /svn/!svn/ver/1702/trunk/lib/redmine/activity.rb END -access_keys.rb -K 25 -svn:wc:ra_dav:version-url -V 51 -/svn/!svn/ver/1081/trunk/lib/redmine/access_keys.rb -END wiki_formatting.rb K 25 svn:wc:ra_dav:version-url V 55 /svn/!svn/ver/3446/trunk/lib/redmine/wiki_formatting.rb END +menu_manager.rb +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/4406/trunk/lib/redmine/menu_manager.rb +END plugin.rb K 25 svn:wc:ra_dav:version-url V 46 /svn/!svn/ver/4293/trunk/lib/redmine/plugin.rb END -menu_manager.rb -K 25 -svn:wc:ra_dav:version-url -V 52 -/svn/!svn/ver/4406/trunk/lib/redmine/menu_manager.rb -END utils.rb K 25 svn:wc:ra_dav:version-url @@ -117,12 +117,24 @@ V 46 /svn/!svn/ver/3444/trunk/lib/redmine/search.rb END +configuration.rb +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/4949/trunk/lib/redmine/configuration.rb +END core_ext.rb K 25 svn:wc:ra_dav:version-url V 48 /svn/!svn/ver/1361/trunk/lib/redmine/core_ext.rb END +ciphering.rb +K 25 +svn:wc:ra_dav:version-url +V 49 +/svn/!svn/ver/4950/trunk/lib/redmine/ciphering.rb +END about.rb K 25 svn:wc:ra_dav:version-url @@ -139,7 +151,7 @@ K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/3028/trunk/lib/redmine/unified_diff.rb +/svn/!svn/ver/4929/trunk/lib/redmine/unified_diff.rb END notifiable.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/entries --- a/lib/redmine/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine http://redmine.rubyforge.org/svn -2011-01-11T08:41:35.993532Z -4688 +2011-03-03T05:51:46.224821Z +4993 tmaruyama @@ -35,10 +35,10 @@ -2010-09-23T14:37:45.031809Z -7905a0773e7d2f6b468fc5b9e107db4d -2010-01-17T13:53:13.544777Z -3330 +2011-03-03T11:05:14.000000Z +85ff863202dfbf2a6e9447a3bcf7cc06 +2011-01-22T12:09:07.652831Z +4737 jplang has-props @@ -61,7 +61,7 @@ -2173 +2461 themes.rb file @@ -69,7 +69,7 @@ -2011-01-13T14:09:39.000000Z +2011-03-03T11:05:14.000000Z 23fd3a13b8bcd6b3e2547e913d5fae18 2010-12-22T21:41:08.746858Z 4559 @@ -103,7 +103,7 @@ -2010-09-23T14:37:45.031809Z +2011-03-03T11:05:14.000000Z caeedebd5c05aede1d232510d03ad136 2008-12-31T14:56:30.439880Z 2220 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.031809Z +2011-03-03T11:05:14.000000Z ddadcd03b97455adae2451a2140afbf6 2009-05-30T23:00:22.602473Z 2776 @@ -174,7 +174,7 @@ -2010-09-23T14:37:45.015759Z +2011-03-03T11:05:14.000000Z 41c2852d003d94cb23c231f06be62d12 2008-01-20T13:07:19.003764Z 1081 @@ -202,13 +202,16 @@ 1160 +helpers +dir + utils.rb file -2010-09-23T14:37:45.047759Z +2011-03-03T11:05:14.000000Z d04b071ce8f05b44ca6993c56fea9b1f 2009-01-04T17:09:25.896068Z 2234 @@ -236,16 +239,13 @@ 1466 -helpers -dir - access_control.rb file -2010-09-23T14:37:45.015759Z +2011-03-03T11:05:14.000000Z e7e4c44515553e36bffa6e8f8960080b 2008-09-25T18:51:03.022592Z 1907 @@ -279,7 +279,7 @@ -2010-09-23T14:37:45.043748Z +2011-03-03T11:05:14.000000Z 6f968bcc4f81562e9cbddb02ebc62601 2010-02-17T20:05:51.124365Z 3444 @@ -310,13 +310,47 @@ core_ext dir +configuration.rb +file + + + + +2011-03-03T11:40:18.000000Z +2f47dda69333c012a55496a3792c369e +2011-02-25T14:30:05.998365Z +4949 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3639 + about.rb file -2010-09-23T14:37:45.015759Z +2011-03-03T11:05:14.000000Z 91ed592a8419f1bec48ba880c7a86e29 2009-05-25T19:10:26.065563Z 2766 @@ -350,7 +384,7 @@ -2010-09-23T14:37:45.043748Z +2011-03-03T11:05:14.000000Z 4a40844a6cd11aa7409bc8f4e9a2c74e 2010-03-28T11:30:48.135356Z 3619 @@ -384,7 +418,7 @@ -2010-11-19T13:04:51.416932Z +2011-03-03T11:05:14.000000Z cfdd5556d40422dd9610d2124a2fefac 2010-09-28T21:09:06.467392Z 4222 @@ -418,10 +452,10 @@ -2011-01-13T14:09:39.000000Z -009b7a9ada5c3e83d6a7a26256c34951 -2010-12-17T08:34:29.830642Z -4516 +2011-03-03T11:40:18.000000Z +cc684405103aabd5f4aea0c21fd7c732 +2011-02-20T14:56:37.399906Z +4894 jplang has-props @@ -444,18 +478,52 @@ -2315 +2255 scm dir +safe_attributes.rb +file + + + + +2011-03-03T11:05:14.000000Z +7f659c02de1ea89806beda1772dc4d36 +2010-12-12T13:11:53.259618Z +4491 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2579 + platform.rb file -2010-09-23T14:37:45.031809Z +2011-03-03T11:05:14.000000Z 68165c83be56d3204c582958d933ff0a 2008-08-25T11:01:37.715099Z 1753 @@ -483,50 +551,16 @@ 1009 -safe_attributes.rb -file - - - - -2011-01-13T14:09:39.000000Z -7f659c02de1ea89806beda1772dc4d36 -2010-12-12T13:11:53.259618Z -4491 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2579 - version.rb file -2011-01-13T14:09:39.000000Z -599c6a070c34c23117d1176bf811988d -2011-01-02T12:16:40.859443Z -4619 +2011-03-03T11:05:14.000000Z +c6c19bce5ff3b4298316ffb112478868 +2011-01-30T14:37:23.564601Z +4784 jplang has-props @@ -557,7 +591,7 @@ -2010-09-23T14:37:45.023772Z +2011-03-03T11:05:14.000000Z 7fd1fcfb204480b0e9903fd03c53a563 2010-04-16T15:34:05.970144Z 3675 @@ -591,7 +625,7 @@ -2010-09-23T14:37:45.031809Z +2011-03-03T11:05:14.000000Z dbfad515b1d5c277d2f8e9d67233185e 2009-12-29T13:28:30.604471Z 3258 @@ -631,7 +665,7 @@ -2010-09-23T14:37:45.015759Z +2011-03-03T11:05:14.000000Z 88435997a6d77548eab82526df38caf1 2008-07-27T18:38:31.746909Z 1702 @@ -665,7 +699,7 @@ -2010-09-23T14:37:45.047759Z +2011-03-03T11:05:14.000000Z 648c40cc515e97d063d2c2f218cbbc23 2010-02-17T20:47:50.603139Z 3446 @@ -693,13 +727,47 @@ 4431 +plugin.rb +file + + + + +2011-03-03T11:05:14.000000Z +81bc46012d5a0067e18e08bada197d8c +2010-10-25T23:32:01.793182Z +4293 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +11219 + menu_manager.rb file -2010-11-19T13:04:51.412966Z +2011-03-03T11:05:14.000000Z 7f3739a749929e1f65efb292620d361b 2010-11-14T16:24:21.989522Z 4406 @@ -727,47 +795,13 @@ 15303 -plugin.rb -file - - - - -2010-11-19T13:04:51.412966Z -81bc46012d5a0067e18e08bada197d8c -2010-10-25T23:32:01.793182Z -4293 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -11219 - hook.rb file -2010-11-19T13:04:51.416932Z +2011-03-03T11:05:14.000000Z dfacee092edce74d74e8ea7d7a54aeba 2010-11-14T16:24:21.989522Z 4406 @@ -801,7 +835,7 @@ -2010-09-23T14:37:45.019747Z +2011-03-03T11:05:14.000000Z 7632bcee464a923f5aa7c9eba29f8081 2008-04-26T11:59:51.889210Z 1361 @@ -829,6 +863,40 @@ 77 +ciphering.rb +file + + + + +2011-03-03T11:40:18.000000Z +763ba2f765c62f378371f2472679c464 +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2933 + default_data dir @@ -838,11 +906,11 @@ -2010-09-23T14:37:45.047759Z -69c22a4064f90e2ce460a0c9013c7cd0 -2009-11-11T13:25:53.648186Z -3028 -jplang +2011-03-03T11:40:18.000000Z +561d23da6665fb790120f9d59962fb78 +2011-02-23T07:03:45.049119Z +4929 +tmaruyama has-props @@ -864,5 +932,5 @@ -5259 +5678 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/prop-base/ciphering.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/.svn/prop-base/ciphering.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/prop-base/configuration.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/.svn/prop-base/configuration.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/text-base/ciphering.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/.svn/text-base/ciphering.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,95 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module Redmine + module Ciphering + def self.included(base) + base.extend ClassMethods + end + + class << self + def encrypt_text(text) + if cipher_key.blank? + text + else + c = OpenSSL::Cipher::Cipher.new("aes-256-cbc") + iv = c.random_iv + c.encrypt + c.key = cipher_key + c.iv = iv + e = c.update(text.to_s) + e << c.final + "aes-256-cbc:" + [e, iv].map {|v| Base64.encode64(v).strip}.join('--') + end + end + + def decrypt_text(text) + if text && match = text.match(/\Aaes-256-cbc:(.+)\Z/) + text = match[1] + c = OpenSSL::Cipher::Cipher.new("aes-256-cbc") + e, iv = text.split("--").map {|s| Base64.decode64(s)} + c.decrypt + c.key = cipher_key + c.iv = iv + d = c.update(e) + d << c.final + else + text + end + end + + def cipher_key + key = Redmine::Configuration['database_cipher_key'].to_s + key.blank? ? nil : Digest::SHA256.hexdigest(key) + end + end + + module ClassMethods + def encrypt_all(attribute) + transaction do + all.each do |object| + clear = object.send(attribute) + object.send "#{attribute}=", clear + raise(ActiveRecord::Rollback) unless object.save(false) + end + end ? true : false + end + + def decrypt_all(attribute) + transaction do + all.each do |object| + clear = object.send(attribute) + object.write_attribute attribute, clear + raise(ActiveRecord::Rollback) unless object.save(false) + end + end + end ? true : false + end + + private + + # Returns the value of the given ciphered attribute + def read_ciphered_attribute(attribute) + Redmine::Ciphering.decrypt_text(read_attribute(attribute)) + end + + # Sets the value of the given ciphered attribute + def write_ciphered_attribute(attribute, value) + write_attribute(attribute, Redmine::Ciphering.encrypt_text(value)) + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/text-base/configuration.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/.svn/text-base/configuration.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,107 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module Redmine + module Configuration + + # Configuration default values + @defaults = { + 'email_delivery' => nil + } + + @config = nil + + class << self + # Loads the Redmine configuration file + # Valid options: + # * :file: the configuration file to load (default: config/configuration.yml) + # * :env: the environment to load the configuration for (default: Rails.env) + def load(options={}) + filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml') + env = options[:env] || Rails.env + + @config = @defaults.dup + + load_deprecated_email_configuration(env) + if File.file?(filename) + @config.merge!(load_from_yaml(filename, env)) + end + + # Compatibility mode for those who copy email.yml over configuration.yml + %w(delivery_method smtp_settings sendmail_settings).each do |key| + if value = @config.delete(key) + @config['email_delivery'] ||= {} + @config['email_delivery'][key] = value + end + end + + if @config['email_delivery'] + ActionMailer::Base.perform_deliveries = true + @config['email_delivery'].each do |k, v| + v.symbolize_keys! if v.respond_to?(:symbolize_keys!) + ActionMailer::Base.send("#{k}=", v) + end + end + + @config + end + + # Returns a configuration setting + def [](name) + load unless @config + @config[name] + end + + # Yields a block with the specified hash configuration settings + def with(settings) + settings.stringify_keys! + load unless @config + was = settings.keys.inject({}) {|h,v| h[v] = @config[v]; h} + @config.merge! settings + yield if block_given? + @config.merge! was + end + + private + + def load_from_yaml(filename, env) + yaml = YAML::load_file(filename) + conf = {} + if yaml.is_a?(Hash) + if yaml['default'] + conf.merge!(yaml['default']) + end + if yaml[env] + conf.merge!(yaml[env]) + end + else + $stderr.puts "#{filename} is not a valid Redmine configuration file" + exit 1 + end + conf + end + + def load_deprecated_email_configuration(env) + deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml') + if File.file?(deprecated_email_conf) + warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting." + @config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)}) + end + end + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/text-base/i18n.rb.svn-base --- a/lib/redmine/.svn/text-base/i18n.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/.svn/text-base/i18n.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -45,8 +45,8 @@ time = time.to_time if time.is_a?(String) zone = User.current.time_zone local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) - Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) : - ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}") + (include_date ? "#{format_date(local)} " : "") + + (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format)) end def day_name(day) diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/text-base/pop3.rb.svn-base --- a/lib/redmine/.svn/text-base/pop3.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/.svn/text-base/pop3.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -27,30 +27,36 @@ delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1') pop = Net::POP3.APOP(apop).new(host,port) - puts "Connecting to #{host}..." + logger.debug "Connecting to #{host}..." if logger && logger.debug? pop.start(pop_options[:username], pop_options[:password]) do |pop_session| if pop_session.mails.empty? - puts "No email to process" + logger.debug "No email to process" if logger && logger.debug? else - puts "#{pop_session.mails.size} email(s) to process..." + logger.debug "#{pop_session.mails.size} email(s) to process..." if logger && logger.debug? pop_session.each_mail do |msg| message = msg.pop message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip if MailHandler.receive(message, options) msg.delete - puts "--> Message #{message_id} processed and deleted from the server" + logger.debug "--> Message #{message_id} processed and deleted from the server" if logger && logger.debug? else if delete_unprocessed msg.delete - puts "--> Message #{message_id} NOT processed and deleted from the server" + logger.debug "--> Message #{message_id} NOT processed and deleted from the server" if logger && logger.debug? else - puts "--> Message #{message_id} NOT processed and left on the server" + logger.debug "--> Message #{message_id} NOT processed and left on the server" if logger && logger.debug? end end end end end end + + private + + def logger + RAILS_DEFAULT_LOGGER + end end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/text-base/unified_diff.rb.svn-base --- a/lib/redmine/.svn/text-base/unified_diff.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/.svn/text-base/unified_diff.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -22,13 +22,21 @@ options.assert_valid_keys(:type, :max_lines) diff = diff.split("\n") if diff.is_a?(String) diff_type = options[:type] || 'inline' - lines = 0 @truncated = false diff_table = DiffTable.new(diff_type) diff.each do |line| + line_encoding = nil + if line.respond_to?(:force_encoding) + line_encoding = line.encoding + # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII + # In Japan, diffrence between file path encoding + # and file contents encoding is popular. + line.force_encoding('ASCII-8BIT') + end unless diff_table.add_line line - self << diff_table if diff_table.length > 1 + line.force_encoding(line_encoding) if line_encoding + self << diff_table if diff_table.length > 0 diff_table = DiffTable.new(diff_type) end lines += 1 @@ -40,7 +48,7 @@ self << diff_table unless diff_table.empty? self end - + def truncated?; @truncated; end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/.svn/text-base/version.rb.svn-base --- a/lib/redmine/.svn/text-base/version.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/.svn/text-base/version.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,7 @@ module VERSION #:nodoc: MAJOR = 1 MINOR = 1 - TINY = 0 + TINY = 1 # Branch values: # * official release: nil diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/activity/.svn/entries --- a/lib/redmine/activity/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/activity/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/activity +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/activity http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 20597949bb74e98a3ffc97bc8a3ead7d 2010-07-06T02:22:03.226147Z 3829 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/ciphering.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/ciphering.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,95 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module Redmine + module Ciphering + def self.included(base) + base.extend ClassMethods + end + + class << self + def encrypt_text(text) + if cipher_key.blank? + text + else + c = OpenSSL::Cipher::Cipher.new("aes-256-cbc") + iv = c.random_iv + c.encrypt + c.key = cipher_key + c.iv = iv + e = c.update(text.to_s) + e << c.final + "aes-256-cbc:" + [e, iv].map {|v| Base64.encode64(v).strip}.join('--') + end + end + + def decrypt_text(text) + if text && match = text.match(/\Aaes-256-cbc:(.+)\Z/) + text = match[1] + c = OpenSSL::Cipher::Cipher.new("aes-256-cbc") + e, iv = text.split("--").map {|s| Base64.decode64(s)} + c.decrypt + c.key = cipher_key + c.iv = iv + d = c.update(e) + d << c.final + else + text + end + end + + def cipher_key + key = Redmine::Configuration['database_cipher_key'].to_s + key.blank? ? nil : Digest::SHA256.hexdigest(key) + end + end + + module ClassMethods + def encrypt_all(attribute) + transaction do + all.each do |object| + clear = object.send(attribute) + object.send "#{attribute}=", clear + raise(ActiveRecord::Rollback) unless object.save(false) + end + end ? true : false + end + + def decrypt_all(attribute) + transaction do + all.each do |object| + clear = object.send(attribute) + object.write_attribute attribute, clear + raise(ActiveRecord::Rollback) unless object.save(false) + end + end + end ? true : false + end + + private + + # Returns the value of the given ciphered attribute + def read_ciphered_attribute(attribute) + Redmine::Ciphering.decrypt_text(read_attribute(attribute)) + end + + # Sets the value of the given ciphered attribute + def write_ciphered_attribute(attribute, value) + write_attribute(attribute, Redmine::Ciphering.encrypt_text(value)) + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/configuration.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/configuration.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,107 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module Redmine + module Configuration + + # Configuration default values + @defaults = { + 'email_delivery' => nil + } + + @config = nil + + class << self + # Loads the Redmine configuration file + # Valid options: + # * :file: the configuration file to load (default: config/configuration.yml) + # * :env: the environment to load the configuration for (default: Rails.env) + def load(options={}) + filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml') + env = options[:env] || Rails.env + + @config = @defaults.dup + + load_deprecated_email_configuration(env) + if File.file?(filename) + @config.merge!(load_from_yaml(filename, env)) + end + + # Compatibility mode for those who copy email.yml over configuration.yml + %w(delivery_method smtp_settings sendmail_settings).each do |key| + if value = @config.delete(key) + @config['email_delivery'] ||= {} + @config['email_delivery'][key] = value + end + end + + if @config['email_delivery'] + ActionMailer::Base.perform_deliveries = true + @config['email_delivery'].each do |k, v| + v.symbolize_keys! if v.respond_to?(:symbolize_keys!) + ActionMailer::Base.send("#{k}=", v) + end + end + + @config + end + + # Returns a configuration setting + def [](name) + load unless @config + @config[name] + end + + # Yields a block with the specified hash configuration settings + def with(settings) + settings.stringify_keys! + load unless @config + was = settings.keys.inject({}) {|h,v| h[v] = @config[v]; h} + @config.merge! settings + yield if block_given? + @config.merge! was + end + + private + + def load_from_yaml(filename, env) + yaml = YAML::load_file(filename) + conf = {} + if yaml.is_a?(Hash) + if yaml['default'] + conf.merge!(yaml['default']) + end + if yaml[env] + conf.merge!(yaml[env]) + end + else + $stderr.puts "#{filename} is not a valid Redmine configuration file" + exit 1 + end + conf + end + + def load_deprecated_email_configuration(env) + deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml') + if File.file?(deprecated_email_conf) + warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting." + @config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)}) + end + end + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/core_ext/.svn/entries --- a/lib/redmine/core_ext/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/core_ext/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/core_ext +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z fcafa1cc4149d3a5de82816c61b7fa02 2009-08-17T16:32:24.020380Z 2844 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/core_ext/string/.svn/entries --- a/lib/redmine/core_ext/string/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/core_ext/string/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/core_ext/string +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/core_ext/string http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z e614ecdb2fac85cd9f8808e7cff7f9de 2009-08-17T16:32:24.020380Z 2844 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 1cc26c5de967944da3a6b07331512637 2009-10-10T15:09:19.510095Z 2912 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/default_data/.svn/entries --- a/lib/redmine/default_data/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/default_data/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/default_data +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/default_data http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 41958e843a8ba03548eed089e8002549 2010-06-30T01:55:44.694582Z 3820 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/export/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/export/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/svn/!svn/ver/4736/trunk/lib/redmine/export +END +pdf.rb +K 25 +svn:wc:ra_dav:version-url +V 50 +/svn/!svn/ver/4736/trunk/lib/redmine/export/pdf.rb +END diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/export/.svn/entries --- a/lib/redmine/export/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/export/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/export +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/export http://redmine.rubyforge.org/svn -2010-09-20T02:55:20.180218Z -4104 -edavis10 +2011-01-22T11:57:02.732751Z +4736 +jplang @@ -32,11 +32,11 @@ -2010-10-01T15:15:02.000000Z -aa6093490555bdd119ba8f1d34cab080 -2010-09-20T02:55:20.180218Z -4104 -edavis10 +2011-03-03T11:05:14.000000Z +b8bd24e9575d51f0c49f8245a5d593a2 +2011-01-22T11:57:02.732751Z +4736 +jplang has-props @@ -58,5 +58,5 @@ -10771 +10786 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/export/.svn/text-base/pdf.rb.svn-base --- a/lib/redmine/export/.svn/text-base/pdf.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/export/.svn/text-base/pdf.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -255,7 +255,7 @@ pdf.SetFontStyle('B',9) pdf.Cell(35,5, l(:field_description) + ":") pdf.SetFontStyle('',9) - pdf.MultiCell(155,5, issue.description,"BR") + pdf.MultiCell(155,5, issue.description.to_s,"BR") pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY) pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY) @@ -271,7 +271,7 @@ pdf.Ln unless changeset.comments.blank? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, changeset.comments) + pdf.MultiCell(190,5, changeset.comments.to_s) end pdf.Ln end @@ -291,7 +291,7 @@ end if journal.notes? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, journal.notes) + pdf.MultiCell(190,5, journal.notes.to_s) end pdf.Ln end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/export/pdf.rb --- a/lib/redmine/export/pdf.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/export/pdf.rb Thu Mar 03 12:02:03 2011 +0000 @@ -255,7 +255,7 @@ pdf.SetFontStyle('B',9) pdf.Cell(35,5, l(:field_description) + ":") pdf.SetFontStyle('',9) - pdf.MultiCell(155,5, issue.description,"BR") + pdf.MultiCell(155,5, issue.description.to_s,"BR") pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY) pdf.Line(pdf.GetX, pdf.GetY, 170, pdf.GetY) @@ -271,7 +271,7 @@ pdf.Ln unless changeset.comments.blank? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, changeset.comments) + pdf.MultiCell(190,5, changeset.comments.to_s) end pdf.Ln end @@ -291,7 +291,7 @@ end if journal.notes? pdf.SetFontStyle('',8) - pdf.MultiCell(190,5, journal.notes) + pdf.MultiCell(190,5, journal.notes.to_s) end pdf.Ln end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/.svn/all-wcprops --- a/lib/redmine/helpers/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/helpers/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,13 +1,19 @@ K 25 svn:wc:ra_dav:version-url V 44 -/svn/!svn/ver/4584/trunk/lib/redmine/helpers +/svn/!svn/ver/4968/trunk/lib/redmine/helpers END gantt.rb K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4584/trunk/lib/redmine/helpers/gantt.rb +/svn/!svn/ver/4968/trunk/lib/redmine/helpers/gantt.rb +END +diff.rb +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/4953/trunk/lib/redmine/helpers/diff.rb END calendar.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/.svn/entries --- a/lib/redmine/helpers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/helpers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/helpers http://redmine.rubyforge.org/svn -2010-12-30T15:04:08.033097Z -4584 +2011-02-28T20:23:28.847227Z +4968 jplang @@ -32,10 +32,10 @@ -2011-01-13T14:09:38.000000Z -2c61985f04e8f13965fd9880ff9ad5dc -2010-12-30T15:04:08.033097Z -4584 +2011-03-03T11:40:18.000000Z +b06b1d003a56093679e3004b619b0e04 +2011-02-28T20:23:28.847227Z +4968 jplang has-props @@ -58,7 +58,41 @@ -32266 +32380 + +diff.rb +file + + + + +2011-03-03T11:40:18.000000Z +a3487dfca2baab10aacea141b7c0fc5f +2011-02-27T12:50:47.369941Z +4953 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +2408 calendar.rb file @@ -66,7 +100,7 @@ -2010-09-23T14:37:45.027790Z +2011-03-03T11:05:14.000000Z 0a7d81755cf7c1519d4b4c1d84712139 2009-12-13T04:06:55.726600Z 3166 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/.svn/prop-base/diff.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/helpers/.svn/prop-base/diff.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/.svn/text-base/diff.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/helpers/.svn/text-base/diff.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,72 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module Redmine + module Helpers + class Diff + include ERB::Util + include ActionView::Helpers::TagHelper + include ActionView::Helpers::TextHelper + attr_reader :diff, :words + + def initialize(content_to, content_from) + @words = content_to.to_s.split(/(\s+)/) + @words = @words.select {|word| word != ' '} + words_from = content_from.to_s.split(/(\s+)/) + words_from = words_from.select {|word| word != ' '} + @diff = words_from.diff @words + end + + def to_html + words = self.words.collect{|word| h(word)} + words_add = 0 + words_del = 0 + dels = 0 + del_off = 0 + diff.diffs.each do |diff| + add_at = nil + add_to = nil + del_at = nil + deleted = "" + diff.each do |change| + pos = change[1] + if change[0] == "+" + add_at = pos + dels unless add_at + add_to = pos + dels + words_add += 1 + else + del_at = pos unless del_at + deleted << ' ' + h(change[2]) + words_del += 1 + end + end + if add_at + words[add_at] = '' + words[add_at] + words[add_to] = words[add_to] + '' + end + if del_at + words.insert del_at - del_off + dels + words_add, '' + deleted + '' + dels += 1 + del_off += words_del + words_del = 0 + end + end + words.join(' ') + end + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base --- a/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/helpers/.svn/text-base/gantt.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -353,11 +353,11 @@ subject = "" if issue.assigned_to.present? assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name - subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string) + subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string).to_s end subject << view.link_to_issue(issue) subject << '' - html_subject(options, subject, :css => "issue-subject") + "\n" + html_subject(options, subject, :css => "issue-subject", :title => issue.subject) + "\n" when :image image_subject(options, issue.subject) when :pdf @@ -709,9 +709,10 @@ end def html_subject(params, subject, options={}) - output = "
    " - output << subject - output << "
    " + style = "position: absolute;top:#{params[:top]}px;left:#{params[:indent]}px;" + style << "width:#{params[:subject_width] - params[:indent]}px;" if params[:subject_width] + + output = view.content_tag 'div', subject, :class => options[:css], :style => style, :title => options[:title] @subjects << output output end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/diff.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/helpers/diff.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,72 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +module Redmine + module Helpers + class Diff + include ERB::Util + include ActionView::Helpers::TagHelper + include ActionView::Helpers::TextHelper + attr_reader :diff, :words + + def initialize(content_to, content_from) + @words = content_to.to_s.split(/(\s+)/) + @words = @words.select {|word| word != ' '} + words_from = content_from.to_s.split(/(\s+)/) + words_from = words_from.select {|word| word != ' '} + @diff = words_from.diff @words + end + + def to_html + words = self.words.collect{|word| h(word)} + words_add = 0 + words_del = 0 + dels = 0 + del_off = 0 + diff.diffs.each do |diff| + add_at = nil + add_to = nil + del_at = nil + deleted = "" + diff.each do |change| + pos = change[1] + if change[0] == "+" + add_at = pos + dels unless add_at + add_to = pos + dels + words_add += 1 + else + del_at = pos unless del_at + deleted << ' ' + h(change[2]) + words_del += 1 + end + end + if add_at + words[add_at] = '' + words[add_at] + words[add_to] = words[add_to] + '' + end + if del_at + words.insert del_at - del_off + dels + words_add, '' + deleted + '' + dels += 1 + del_off += words_del + words_del = 0 + end + end + words.join(' ') + end + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/helpers/gantt.rb --- a/lib/redmine/helpers/gantt.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/helpers/gantt.rb Thu Mar 03 12:02:03 2011 +0000 @@ -353,11 +353,11 @@ subject = "" if issue.assigned_to.present? assigned_string = l(:field_assigned_to) + ": " + issue.assigned_to.name - subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string) + subject << view.avatar(issue.assigned_to, :class => 'gravatar icon-gravatar', :size => 10, :title => assigned_string).to_s end subject << view.link_to_issue(issue) subject << '' - html_subject(options, subject, :css => "issue-subject") + "\n" + html_subject(options, subject, :css => "issue-subject", :title => issue.subject) + "\n" when :image image_subject(options, issue.subject) when :pdf @@ -709,9 +709,10 @@ end def html_subject(params, subject, options={}) - output = "
    " - output << subject - output << "
    " + style = "position: absolute;top:#{params[:top]}px;left:#{params[:indent]}px;" + style << "width:#{params[:subject_width] - params[:indent]}px;" if params[:subject_width] + + output = view.content_tag 'div', subject, :class => options[:css], :style => style, :title => options[:title] @subjects << output output end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/i18n.rb --- a/lib/redmine/i18n.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/i18n.rb Thu Mar 03 12:02:03 2011 +0000 @@ -45,8 +45,8 @@ time = time.to_time if time.is_a?(String) zone = User.current.time_zone local = zone ? time.in_time_zone(zone) : (time.utc? ? time.localtime : time) - Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) : - ((include_date ? "#{format_date(time)} " : "") + "#{local.strftime(Setting.time_format)}") + (include_date ? "#{format_date(local)} " : "") + + (Setting.time_format.blank? ? ::I18n.l(local, :format => :time) : local.strftime(Setting.time_format)) end def day_name(day) diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/pop3.rb --- a/lib/redmine/pop3.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/pop3.rb Thu Mar 03 12:02:03 2011 +0000 @@ -27,30 +27,36 @@ delete_unprocessed = (pop_options[:delete_unprocessed].to_s == '1') pop = Net::POP3.APOP(apop).new(host,port) - puts "Connecting to #{host}..." + logger.debug "Connecting to #{host}..." if logger && logger.debug? pop.start(pop_options[:username], pop_options[:password]) do |pop_session| if pop_session.mails.empty? - puts "No email to process" + logger.debug "No email to process" if logger && logger.debug? else - puts "#{pop_session.mails.size} email(s) to process..." + logger.debug "#{pop_session.mails.size} email(s) to process..." if logger && logger.debug? pop_session.each_mail do |msg| message = msg.pop message_id = (message =~ /^Message-ID: (.*)/ ? $1 : '').strip if MailHandler.receive(message, options) msg.delete - puts "--> Message #{message_id} processed and deleted from the server" + logger.debug "--> Message #{message_id} processed and deleted from the server" if logger && logger.debug? else if delete_unprocessed msg.delete - puts "--> Message #{message_id} NOT processed and deleted from the server" + logger.debug "--> Message #{message_id} NOT processed and deleted from the server" if logger && logger.debug? else - puts "--> Message #{message_id} NOT processed and left on the server" + logger.debug "--> Message #{message_id} NOT processed and left on the server" if logger && logger.debug? end end end end end end + + private + + def logger + RAILS_DEFAULT_LOGGER + end end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/.svn/all-wcprops --- a/lib/redmine/scm/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4688/trunk/lib/redmine/scm +/svn/!svn/ver/4993/trunk/lib/redmine/scm END base.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/.svn/entries --- a/lib/redmine/scm/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm http://redmine.rubyforge.org/svn -2011-01-11T08:41:35.993532Z -4688 +2011-03-03T05:51:46.224821Z +4993 tmaruyama @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.043748Z +2011-03-03T11:05:14.000000Z 3a053c03d210decd9105a24ff5e1aa8f 2010-02-16T22:41:59.625572Z 3440 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/all-wcprops --- a/lib/redmine/scm/adapters/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,53 +1,53 @@ K 25 svn:wc:ra_dav:version-url V 49 -/svn/!svn/ver/4688/trunk/lib/redmine/scm/adapters +/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters END subversion_adapter.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/4539/trunk/lib/redmine/scm/adapters/subversion_adapter.rb +/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/subversion_adapter.rb END bazaar_adapter.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/4539/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/bazaar_adapter.rb END abstract_adapter.rb K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4613/trunk/lib/redmine/scm/adapters/abstract_adapter.rb +/svn/!svn/ver/4959/trunk/lib/redmine/scm/adapters/abstract_adapter.rb END git_adapter.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4624/trunk/lib/redmine/scm/adapters/git_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/git_adapter.rb END mercurial_adapter.rb K 25 svn:wc:ra_dav:version-url V 70 -/svn/!svn/ver/4688/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb +/svn/!svn/ver/4993/trunk/lib/redmine/scm/adapters/mercurial_adapter.rb END filesystem_adapter.rb K 25 svn:wc:ra_dav:version-url V 71 -/svn/!svn/ver/1510/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb +/svn/!svn/ver/4941/trunk/lib/redmine/scm/adapters/filesystem_adapter.rb END cvs_adapter.rb K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4601/trunk/lib/redmine/scm/adapters/cvs_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/cvs_adapter.rb END darcs_adapter.rb K 25 svn:wc:ra_dav:version-url V 66 -/svn/!svn/ver/4539/trunk/lib/redmine/scm/adapters/darcs_adapter.rb +/svn/!svn/ver/4992/trunk/lib/redmine/scm/adapters/darcs_adapter.rb END diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/entries --- a/lib/redmine/scm/adapters/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters http://redmine.rubyforge.org/svn -2011-01-11T08:41:35.993532Z -4688 +2011-03-03T05:51:46.224821Z +4993 tmaruyama @@ -32,11 +32,11 @@ -2011-01-13T14:09:38.000000Z -a388eb02c3afb298abad571f6f059c6b -2010-12-18T18:12:12.584764Z -4539 -jplang +2011-03-03T11:40:18.000000Z +7e0b7e8a12996f271854b48e2d7611e4 +2011-03-03T05:51:46.224821Z +4993 +tmaruyama @@ -58,7 +58,7 @@ -10741 +11535 bazaar_adapter.rb file @@ -66,11 +66,11 @@ -2011-01-13T14:09:38.000000Z -a8512f631e43683c18d08d5ff0c8f2a3 -2010-12-18T18:12:12.584764Z -4539 -jplang +2011-03-03T11:40:18.000000Z +2614557fb37905301939071ec226fe16 +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -92,7 +92,7 @@ -7352 +8274 mercurial dir @@ -103,10 +103,10 @@ -2011-01-13T14:09:38.000000Z -b63a1e9ae95a7fb7c053bc363cf6672b -2011-01-02T09:45:05.291687Z -4613 +2011-03-03T11:40:18.000000Z +5cc0323dd42df9a3377099b0fdf9e95f +2011-02-28T04:46:42.639929Z +4959 tmaruyama has-props @@ -129,7 +129,7 @@ -9889 +9832 git_adapter.rb file @@ -137,10 +137,10 @@ -2011-01-13T14:09:38.000000Z -eb7d9805e215f174c53d2806a94ce1ea -2011-01-03T10:45:00.658370Z -4624 +2011-03-03T11:40:18.000000Z +ba10ae64fed2363f2533aa558752be37 +2011-03-03T05:32:33.802461Z +4992 tmaruyama has-props @@ -163,7 +163,7 @@ -10102 +11905 mercurial_adapter.rb file @@ -171,10 +171,10 @@ -2011-01-13T14:09:38.000000Z -c084fab581021c9e215c54af6815d6c9 -2011-01-11T08:41:35.993532Z -4688 +2011-03-03T11:40:18.000000Z +fe99380d7b29fe936554e10293751813 +2011-03-03T05:51:46.224821Z +4993 tmaruyama has-props @@ -197,7 +197,7 @@ -8611 +11159 filesystem_adapter.rb file @@ -205,11 +205,11 @@ -2010-09-23T14:37:45.039790Z -5f311f051bcb17a87475757807f8a63e -2008-06-08T15:44:23.440995Z -1510 -jplang +2011-03-03T11:40:18.000000Z +4acd04cfa5dac0e54a35b8ef4a565217 +2011-02-24T05:58:59.661399Z +4941 +tmaruyama has-props @@ -231,7 +231,7 @@ -3509 +4266 cvs_adapter.rb file @@ -239,11 +239,11 @@ -2011-01-13T14:09:38.000000Z -f7675b9449831276c8816fc5669245a1 -2011-01-01T11:13:33.540439Z -4601 -jplang +2011-03-03T11:40:18.000000Z +a3914eff33df4b5a05a108945137360b +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -265,7 +265,7 @@ -13521 +14573 darcs_adapter.rb file @@ -273,11 +273,11 @@ -2011-01-13T14:09:38.000000Z -39ef0c99d6e5d7839059713e93624e2c -2010-12-18T18:12:12.584764Z -4539 -jplang +2011-03-03T11:40:18.000000Z +23725596dd2797f4dcdd5336e715c59a +2011-03-03T05:32:33.802461Z +4992 +tmaruyama has-props @@ -299,5 +299,5 @@ -7575 +8925 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/abstract_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,25 +19,29 @@ module Redmine module Scm - module Adapters + module Adapters class CommandFailed < StandardError #:nodoc: end - + class AbstractAdapter #:nodoc: class << self + def client_command + "" + end + # Returns the version of the scm client # Eg: [1, 5, 0] or [] if unknown def client_version [] end - + # Returns the version string of the scm client # Eg: '1.5.0' or 'Unknown version' if unknown def client_version_string v = client_version || 'Unknown version' v.is_a?(Array) ? v.join('.') : v.to_s end - + # Returns true if the current client version is above # or equals the given one # If option is :unknown is set to true, it will return @@ -45,19 +49,32 @@ def client_version_above?(v, options={}) ((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown]) end + + def client_available + true + end + + def shell_quote(str) + if Redmine::Platform.mswin? + '"' + str.gsub(/"/, '\\"') + '"' + else + "'" + str.gsub(/'/, "'\"'\"'") + "'" + end + end end - - def initialize(url, root_url=nil, login=nil, password=nil) + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @root_url = root_url.blank? ? retrieve_root_url : root_url end - + def adapter_name 'Abstract' end - + def supports_cat? true end @@ -65,11 +82,11 @@ def supports_annotate? respond_to?('annotate') end - + def root_url @root_url end - + def url @url end @@ -138,7 +155,7 @@ path ||= '' (path[-1,1] == "/") ? path : "#{path}/" end - + def without_leading_slash(path) path ||= '' path.gsub(%r{^/+}, '') @@ -148,13 +165,9 @@ path ||= '' (path[-1,1] == "/") ? path[0..-2] : path end - + def shell_quote(str) - if Redmine::Platform.mswin? - '"' + str.gsub(/"/, '\\"') + '"' - else - "'" + str.gsub(/'/, "'\"'\"'") + "'" - end + self.class.shell_quote(str) end private @@ -168,19 +181,19 @@ base = path.match(/^\//) ? root_url : url shell_quote("#{base}/#{path}".gsub(/[?<>\*]/, '')) end - + def logger self.class.logger end - + def shellout(cmd, &block) self.class.shellout(cmd, &block) end - + def self.logger RAILS_DEFAULT_LOGGER end - + def self.shellout(cmd, &block) logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug? if Rails.env == 'development' @@ -188,7 +201,12 @@ cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log" end begin - IO.popen(cmd, "r+") do |io| + if RUBY_VERSION < '1.9' + mode = "r+" + else + mode = "r+:ASCII-8BIT" + end + IO.popen(cmd, mode) do |io| io.close_write block.call(io) if block_given? end @@ -198,8 +216,8 @@ logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}") raise CommandFailed.new(msg) end - end - + end + # Hides username/password in a given command def self.strip_credential(cmd) q = (Redmine::Platform.mswin? ? '"' : "'") @@ -209,8 +227,19 @@ def strip_credential(cmd) self.class.strip_credential(cmd) end + + def scm_iconv(to, from, str) + return nil if str.nil? + return str if to == from + begin + Iconv.conv(to, from, str) + rescue Iconv::Failure => err + logger.error("failed to convert from #{from} to #{to}. #{err}") + nil + end + end end - + class Entries < Array def sort_by_name sort {|x,y| @@ -219,7 +248,7 @@ else x.kind <=> y.kind end - } + } end def revisions @@ -295,29 +324,8 @@ def format_identifier identifier end + end - def save(repo) - Changeset.transaction do - changeset = Changeset.new( - :repository => repo, - :revision => identifier, - :scmid => scmid, - :committer => author, - :committed_on => time, - :comments => message) - - if changeset.save - paths.each do |file| - Change.create( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end - end - end - end - end - class Annotate attr_reader :lines, :revisions diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,15 +19,47 @@ module Redmine module Scm - module Adapters + module Adapters class BazaarAdapter < AbstractAdapter - + # Bazaar executable name - BZR_BIN = "bzr" - + BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr" + + class << self + def client_command + @@bin ||= BZR_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(BZR_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s + end + end + # Get info about the repository def info - cmd = "#{BZR_BIN} revno #{target('')}" + cmd = "#{self.class.sq_bin} revno #{target('')}" info = nil shellout(cmd) do |io| if io.read =~ %r{^(\d+)\r?$} @@ -43,13 +75,13 @@ rescue CommandFailed return nil end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) path ||= '' entries = Entries.new - cmd = "#{BZR_BIN} ls -v --show-ids" + cmd = "#{self.class.sq_bin} ls -v --show-ids" identifier = -1 unless identifier && identifier.to_i > 0 cmd << " -r#{identifier.to_i}" cmd << " #{target(path)}" @@ -71,13 +103,13 @@ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : 'last:1' identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1 revisions = Revisions.new - cmd = "#{BZR_BIN} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}" + cmd = "#{self.class.sq_bin} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}" shellout(cmd) do |io| revision = nil parsing = nil @@ -132,7 +164,7 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path ||= '' if identifier_to @@ -143,7 +175,7 @@ if identifier_from identifier_from = identifier_from.to_i end - cmd = "#{BZR_BIN} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" + cmd = "#{self.class.sq_bin} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -153,9 +185,9 @@ #return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{BZR_BIN} cat" + cmd = "#{self.class.sq_bin} cat" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" cat = nil @@ -166,9 +198,9 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) - cmd = "#{BZR_BIN} annotate --all" + cmd = "#{self.class.sq_bin} annotate --all" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" blame = Annotate.new diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -23,14 +23,47 @@ class CvsAdapter < AbstractAdapter # CVS executable name - CVS_BIN = "cvs" - + CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs" + + class << self + def client_command + @@bin ||= CVS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(CVS_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + client_version_above?([1, 12]) + end + + def scm_command_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}m) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s + end + end + # Guidelines for the input: # url -> the project-path, relative to the cvsroot (eg. module name) # root_url -> the good old, sometimes damned, CVSROOT # login -> unnecessary # password -> unnecessary too - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @@ -38,24 +71,24 @@ raise CommandFailed if root_url.blank? @root_url = root_url end - + def root_url @root_url end - + def url @url end - + def info logger.debug " info" Info.new({:root_url => @root_url, :lastrev => nil}) end - + def get_previous_revision(revision) CvsRevisionHelper.new(revision).prevRev end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository # this method is used by the repository-browser (aka LIST) @@ -63,14 +96,14 @@ logger.debug " entries '#{path}' with identifier '#{identifier}'" path_with_project="#{url}#{with_leading_slash(path)}" entries = Entries.new - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rls -e" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rls -e" cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier cmd << " #{shell_quote path_with_project}" shellout(cmd) do |io| io.each_line(){|line| fields=line.chop.split('/',-1) logger.debug(">>InspectLine #{fields.inspect}") - + if fields[0]!="D" entries << Entry.new({:name => fields[-5], #:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]), @@ -96,20 +129,20 @@ end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - end + end STARTLOG="----------------------------" ENDLOG ="=============================================================================" - + # Returns all revisions found between identifier_from and identifier_to # in the repository. both identifier have to be dates or nil. # these method returns nothing but yield every result in block def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}, &block) logger.debug " revisions path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" - + path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog" - cmd << " -d\">#{time_to_cvstime(identifier_from)}\"" if identifier_from + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rlog" + cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from cmd << " #{shell_quote path_with_project}" shellout(cmd) do |io| state="entry_start" @@ -123,7 +156,7 @@ file_state=nil branch_map=nil - io.each_line() do |line| + io.each_line() do |line| if state!="revision" && /^#{ENDLOG}/ =~ line commit_log=String.new @@ -162,9 +195,9 @@ end next elsif state=="revision" - if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line + if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line if revision - + revHelper=CvsRevisionHelper.new(revision) revBranch="HEAD" @@ -176,7 +209,7 @@ logger.debug("********** YIELD Revision #{revision}::#{revBranch}") - yield Revision.new({ + yield Revision.new({ :time => date, :author => author, :message=>commit_log.chomp, @@ -188,9 +221,9 @@ :kind=>'file', :action=>file_state }] - }) + }) end - + commit_log=String.new revision=nil @@ -199,7 +232,7 @@ end next end - + if /^branches: (.+)$/ =~ line #TODO: version.branch = $1 elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line @@ -216,20 +249,20 @@ # version.line_minus = linechanges[2] # else # version.line_plus = 0 - # version.line_minus = 0 - # end - else + # version.line_minus = 0 + # end + else commit_log << line unless line =~ /^\*\*\* empty log message \*\*\*/ - end - end + end + end end end - end - + end + def diff(path, identifier_from, identifier_to=nil) logger.debug " diff path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -238,28 +271,29 @@ end return nil if $? && $?.exitstatus != 0 diff - end - + end + def cat(path, identifier=nil) identifier = (identifier) ? identifier : "HEAD" logger.debug " cat path:'#{path}',identifier #{identifier}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} co" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} co" cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier cmd << " -p #{shell_quote path_with_project}" cat = nil shellout(cmd) do |io| + io.binmode cat = io.read end return nil if $? && $?.exitstatus != 0 cat - end + end def annotate(path, identifier=nil) identifier = (identifier) ? identifier.to_i : "HEAD" logger.debug " annotate path:'#{path}',identifier #{identifier}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" blame = Annotate.new shellout(cmd) do |io| io.each_line do |line| @@ -270,9 +304,9 @@ return nil if $? && $?.exitstatus != 0 blame end - + private - + # Returns the root url without the connexion string # :pserver:anonymous@foo.bar:/path => /path # :ext:cvsservername:/path => /path @@ -290,6 +324,12 @@ end return time.strftime("%Y-%m-%d %H:%M:%S") end + + def time_to_cvstime_rlog(time) + return nil if time.nil? + t1 = time.clone.localtime + return t1.strftime("%Y-%m-%d %H:%M:%S") + end def normalize_cvs_path(path) normalize_path(path.gsub(/Attic\//,'')) @@ -339,7 +379,11 @@ private def buildRevision(rev) if rev== 0 - @base + if @branchid.nil? + @base+".0" + else + @base + end elsif @branchid.nil? @base+"."+rev.to_s else diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -20,31 +20,45 @@ module Redmine module Scm - module Adapters - class DarcsAdapter < AbstractAdapter + module Adapters + class DarcsAdapter < AbstractAdapter # Darcs executable name - DARCS_BIN = "darcs" - + DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs" + class << self + def client_command + @@bin ||= DARCS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(DARCS_BIN) + end + def client_version @@client_version ||= (darcs_binary_version || []) end - + + def client_available + !client_version.empty? + end + def darcs_binary_version - cmd = "#{DARCS_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read darcs version in first returned line - if m = io.gets.match(%r{((\d+\.)+\d+)}) - version = m[0].scan(%r{\d+}).collect(&:to_i) - end + darcsversion = darcs_binary_version_from_command_line.dup + if darcsversion.respond_to?(:force_encoding) + darcsversion.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def darcs_binary_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @root_url = url end @@ -59,14 +73,16 @@ rev = revisions(nil,nil,nil,{:limit => 1}) rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : nil end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) path_prefix = (path.blank? ? '' : "#{path}/") - path = '.' if path.blank? - entries = Entries.new - cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output" + if path.blank? + path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' ) + end + entries = Entries.new + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --xml-output" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" shellout(cmd) do |io| @@ -86,11 +102,11 @@ return nil if $? && $?.exitstatus != 0 entries.compact.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path = '.' if path.blank? revisions = Revisions.new - cmd = "#{DARCS_BIN} changes --repodir #{shell_quote @url} --xml-output" + cmd = "#{self.class.sq_bin} changes --repodir #{shell_quote @url} --xml-output" cmd << " --from-match #{shell_quote("hash #{identifier_from}")}" if identifier_from cmd << " --last #{options[:limit].to_i}" if options[:limit] shellout(cmd) do |io| @@ -113,10 +129,10 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path = '*' if path.blank? - cmd = "#{DARCS_BIN} diff --repodir #{shell_quote @url}" + cmd = "#{self.class.sq_bin} diff --repodir #{shell_quote @url}" if identifier_to.nil? cmd << " --match #{shell_quote("hash #{identifier_from}")}" else @@ -133,9 +149,9 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{DARCS_BIN} show content --repodir #{shell_quote @url}" + cmd = "#{self.class.sq_bin} show content --repodir #{shell_quote @url}" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" cat = nil @@ -148,7 +164,7 @@ end private - + # Returns an Entry from the given XML element # or nil if the entry was deleted def entry_from_xml(element, path_prefix) @@ -156,7 +172,7 @@ if modified_element.elements['modified_how'].text.match(/removed/) return nil end - + Entry.new({:name => element.attributes['name'], :path => path_prefix + element.attributes['name'], :kind => element.name == 'file' ? 'file' : 'dir', @@ -165,12 +181,41 @@ :identifier => nil, :scmid => modified_element.elements['patch'].attributes['hash'] }) - }) + }) end - + + def get_paths_for_patch(hash) + paths = get_paths_for_patch_raw(hash) + if self.class.client_version_above?([2, 4]) + orig_paths = paths + paths = [] + add_paths = [] + add_paths_name = [] + mod_paths = [] + other_paths = [] + orig_paths.each do |path| + if path[:action] == 'A' + add_paths << path + add_paths_name << path[:path] + elsif path[:action] == 'M' + mod_paths << path + else + other_paths << path + end + end + add_paths_name.each do |add_path| + mod_paths.delete_if { |m| m[:path] == add_path } + end + paths.concat add_paths + paths.concat mod_paths + paths.concat other_paths + end + paths + end + # Retrieve changed paths for a single patch - def get_paths_for_patch(hash) - cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output" + def get_paths_for_patch_raw(hash) + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --summary --xml-output" cmd << " --match #{shell_quote("hash #{hash}")} " paths = [] shellout(cmd) do |io| diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/filesystem_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -23,12 +23,19 @@ module Redmine module Scm - module Adapters + module Adapters class FilesystemAdapter < AbstractAdapter - - def initialize(url, root_url=nil, login=nil, password=nil) + class << self + def client_available + true + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = with_trailling_slash(url) + @path_encoding = path_encoding || 'UTF-8' end def format_path_ends(path, leading=true, trailling=true) @@ -46,47 +53,59 @@ rescue CommandFailed return nil end - + def entries(path="", identifier=nil) entries = Entries.new - Dir.new(target(path)).each do |e| - relative_path = format_path_ends((format_path_ends(path, - false, - true) + e), - false,false) - target = target(relative_path) - entries << - Entry.new({ :name => File.basename(e), + trgt_utf8 = target(path) + trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8) + Dir.new(trgt).each do |e1| + e_utf8 = scm_iconv('UTF-8', @path_encoding, e1) + relative_path_utf8 = format_path_ends((format_path_ends(path,false,true) + e_utf8),false,false) + t1_utf8 = target(relative_path_utf8) + t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8) + relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8) + e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8) + if File.exist?(t1) and # paranoid test + %w{file directory}.include?(File.ftype(t1)) and # avoid special types + not File.basename(e1).match(/^\.+$/) # avoid . and .. + p1 = File.readable?(t1) ? relative_path : "" + utf_8_path = scm_iconv('UTF-8', @path_encoding, p1) + entries << + Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)), # below : list unreadable files, but dont link them. - :path => File.readable?(target) ? relative_path : "", - :kind => (File.directory?(target) ? 'dir' : 'file'), - :size => (File.directory?(target) ? nil : [File.size(target)].pack('l').unpack('L').first), + :path => utf_8_path, + :kind => (File.directory?(t1) ? 'dir' : 'file'), + :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), :lastrev => - Revision.new({:time => (File.mtime(target)).localtime, - }) - }) if File.exist?(target) and # paranoid test - %w{file directory}.include?(File.ftype(target)) and # avoid special types - not File.basename(e).match(/^\.+$/) # avoid . and .. + Revision.new({:time => (File.mtime(t1)) }) + }) + end end entries.sort_by_name + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end - + def cat(path, identifier=nil) - File.new(target(path), "rb").read + p = scm_iconv(@path_encoding, 'UTF-8', target(path)) + File.new(p, "rb").read + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end private - + # AbstractAdapter::target is implicitly made to quote paths. # Here we do not shell-out, so we do not want quotes. def target(path=nil) - #Prevent the use of .. + # Prevent the use of .. if path and !path.match(/(^|\/)\.\.(\/|$)/) return "#{self.url}#{without_leading_slash(path)}" end return self.url end - end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/git_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,10 +19,53 @@ module Redmine module Scm - module Adapters + module Adapters class GitAdapter < AbstractAdapter + + SCM_GIT_REPORT_LAST_COMMIT = true + # Git executable name - GIT_BIN = "git" + GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" + + # raised if scm command exited with error, e.g. unknown revision. + class ScmCommandAborted < CommandFailed; end + + class << self + def client_command + @@bin ||= GIT_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(GIT_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version --no-color") { |io| io.read }.to_s + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT + end def info begin @@ -35,7 +78,7 @@ def branches return @branches if @branches @branches = [] - cmd = "#{GIT_BIN} --git-dir #{target('')} branch --no-color" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color" shellout(cmd) do |io| io.each_line do |line| @branches << line.match('\s*\*?\s*(.*)$')[1] @@ -46,20 +89,20 @@ def tags return @tags if @tags - cmd = "#{GIT_BIN} --git-dir #{target('')} tag" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag" shellout(cmd) do |io| @tags = io.readlines.sort!.map{|t| t.strip} end end def default_branch - branches.include?('master') ? 'master' : branches.first + branches.include?('master') ? 'master' : branches.first end - + def entries(path=nil, identifier=nil) path ||= '' entries = Entries.new - cmd = "#{GIT_BIN} --git-dir #{target('')} ls-tree -l " + cmd = "#{self.class.sq_bin} --git-dir #{target('')} ls-tree -l " cmd << shell_quote("HEAD:" + path) if identifier.nil? cmd << shell_quote(identifier + ":" + path) if identifier shellout(cmd) do |io| @@ -75,7 +118,7 @@ :path => full_path, :kind => (type == "tree") ? 'dir' : 'file', :size => (type == "tree") ? nil : size, - :lastrev => lastrev(full_path,identifier) + :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new }) unless entries.detect{|entry| entry.name == name} end end @@ -84,18 +127,17 @@ entries.sort_by_name end - def lastrev(path,rev) + def lastrev(path, rev) return nil if path.nil? - cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 " - cmd << " #{shell_quote rev} " if rev - cmd << "-- #{shell_quote path} " unless path.empty? + cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1| + cmd_args << rev if rev + cmd_args << "--" << path unless path.empty? lines = [] - shellout(cmd) { |io| lines = io.readlines } - return nil if $? && $?.exitstatus != 0 + scm_cmd(*cmd_args) { |io| lines = io.readlines } begin id = lines[0].split[1] author = lines[1].match('Author:\s+(.*)$')[1] - time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]).localtime + time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]) Revision.new({ :identifier => id, @@ -104,26 +146,29 @@ :time => time, :message => nil, :paths => nil - }) + }) rescue NoMethodError => e logger.error("The revision '#{path}' has a wrong format") return nil end + rescue ScmCommandAborted + nil end def revisions(path, identifier_from, identifier_to, options={}) revisions = Revisions.new + cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller| + cmd_args << "--reverse" if options[:reverse] + cmd_args << "--all" if options[:all] + cmd_args << "-n" << "#{options[:limit].to_i}" if options[:limit] + from_to = "" + from_to << "#{identifier_from}.." if identifier_from + from_to << "#{identifier_to}" if identifier_to + cmd_args << from_to if !from_to.empty? + cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since] + cmd_args << "--" << path if path && !path.empty? - cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --raw --date=iso --pretty=fuller " - cmd << " --reverse " if options[:reverse] - cmd << " --all " if options[:all] - cmd << " -n #{options[:limit].to_i} " if options[:limit] - cmd << "#{shell_quote(identifier_from + '..')}" if identifier_from - cmd << "#{shell_quote identifier_to}" if identifier_to - cmd << " --since=#{shell_quote(options[:since].strftime("%Y-%m-%d %H:%M:%S"))}" if options[:since] - cmd << " -- #{shell_quote path}" if path && !path.empty? - - shellout(cmd) do |io| + scm_cmd *cmd_args do |io| files=[] changeset = {} parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files @@ -200,8 +245,8 @@ end end end - - return nil if $? && $?.exitstatus != 0 + revisions + rescue ScmCommandAborted revisions end @@ -209,9 +254,9 @@ path ||= '' if identifier_to - cmd = "#{GIT_BIN} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" else - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" end cmd << " -- #{shell_quote path}" unless path.empty? @@ -227,7 +272,7 @@ def annotate(path, identifier=nil) identifier = 'HEAD' if identifier.blank? - cmd = "#{GIT_BIN} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" blame = Annotate.new content = nil shellout(cmd) { |io| io.binmode; content = io.read } @@ -250,12 +295,12 @@ end blame end - + def cat(path, identifier=nil) if identifier.nil? identifier = 'HEAD' end - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" cat = nil shellout(cmd) do |io| io.binmode @@ -271,6 +316,18 @@ identifier[0,8] end end + + def scm_cmd(*args, &block) + repo_path = root_url || url + full_args = [GIT_BIN, '--git-dir', repo_path] + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :scm_cmd end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -20,32 +20,51 @@ module Redmine module Scm - module Adapters + module Adapters class MercurialAdapter < AbstractAdapter # Mercurial executable name - HG_BIN = "hg" - TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial" + HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg" + HELPERS_DIR = File.dirname(__FILE__) + "/mercurial" + HG_HELPER_EXT = "#{HELPERS_DIR}/redminehelper.py" TEMPLATE_NAME = "hg-template" TEMPLATE_EXTENSION = "tmpl" + # raised if hg command exited with error, e.g. unknown revision. + class HgCommandAborted < CommandFailed; end + class << self + def client_command + @@bin ||= HG_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(HG_BIN) + end + def client_version @@client_version ||= (hgversion || []) end - def hgversion + def client_available + !client_version.empty? + end + + def hgversion # The hg version is expressed either as a # release number (eg 0.9.5 or 1.0) or as a revision # id composed of 12 hexa characters. - theversion = hgversion_from_command_line + theversion = hgversion_from_command_line.dup + if theversion.respond_to?(:force_encoding) + theversion.force_encoding('ASCII-8BIT') + end if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)}) m[2].scan(%r{\d+}).collect(&:to_i) end end def hgversion_from_command_line - shellout("#{HG_BIN} --version") { |io| io.read }.to_s + shellout("#{sq_bin} --version") { |io| io.read }.to_s end def template_path @@ -58,153 +77,193 @@ else ver = "0.9.5" end - "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" + "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" end end - def info - cmd = "#{HG_BIN} -R #{target('')} root" - root_url = nil - shellout(cmd) do |io| - root_url = io.read - end - return nil if $? && $?.exitstatus != 0 - info = Info.new({:root_url => root_url.chomp, - :lastrev => revisions(nil,nil,nil,{:limit => 1}).last - }) - info - rescue CommandFailed - return nil + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @path_encoding = path_encoding || 'UTF-8' end - def entries(path=nil, identifier=nil) - path ||= '' - entries = Entries.new - cmd = "#{HG_BIN} -R #{target('')} --cwd #{target('')} locate" - cmd << " -r #{hgrev(identifier)}" - cmd << " " + shell_quote("path:#{path}") unless path.empty? - shellout(cmd) do |io| - io.each_line do |line| - # HG uses antislashs as separator on Windows - line = line.gsub(/\\/, "/") - if path.empty? or e = line.gsub!(%r{^#{with_trailling_slash(path)}},'') - e ||= line - e = e.chomp.split(%r{[\/\\]}) - entries << Entry.new({:name => e.first, - :path => (path.nil? or path.empty? ? e.first : "#{with_trailling_slash(path)}#{e.first}"), - :kind => (e.size > 1 ? 'dir' : 'file'), - :lastrev => Revision.new - }) unless e.empty? || entries.detect{|entry| entry.name == e.first} - end + def info + tip = summary['repository']['tip'] + Info.new(:root_url => CGI.unescape(summary['repository']['root']), + :lastrev => Revision.new(:revision => tip['revision'], + :scmid => tip['node'])) + end + + def tags + as_ary(summary['repository']['tag']).map { |e| e['name'] } + end + + # Returns map of {'tag' => 'nodeid', ...} + def tagmap + alist = as_ary(summary['repository']['tag']).map do |e| + e.values_at('name', 'node') + end + Hash[*alist.flatten] + end + + def branches + as_ary(summary['repository']['branch']).map { |e| e['name'] } + end + + # Returns map of {'branch' => 'nodeid', ...} + def branchmap + alist = as_ary(summary['repository']['branch']).map do |e| + e.values_at('name', 'node') + end + Hash[*alist.flatten] + end + + def summary + return @summary if @summary + hg 'rhsummary' do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + @summary = ActiveSupport::XmlMini.parse(output)['rhsummary'] + rescue end end - return nil if $? && $?.exitstatus != 0 - entries.sort_by_name + end + private :summary + + def entries(path=nil, identifier=nil) + p1 = scm_iconv(@path_encoding, 'UTF-8', path) + manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)), + CGI.escape(without_leading_slash(p1.to_s))) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest'] + rescue + end + end + path_prefix = path.blank? ? '' : with_trailling_slash(path) + + entries = Entries.new + as_ary(manifest['dir']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + entries << Entry.new(:name => n, :path => p, :kind => 'dir') + end + + as_ary(manifest['file']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + lr = Revision.new(:revision => e['revision'], :scmid => e['node'], + :identifier => e['node'], + :time => Time.at(e['time'].to_i)) + entries << Entry.new(:name => n, :path => p, :kind => 'file', + :size => e['size'].to_i, :lastrev => lr) + end + + entries + rescue HgCommandAborted + nil # means not found end - # Fetch the revisions by using a template file that + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) + revs = Revisions.new + each_revision(path, identifier_from, identifier_to, options) { |e| revs << e } + revs + end + + # Iterates the revisions by using a template file that # makes Mercurial produce a xml output. - def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) - revisions = Revisions.new - cmd = "#{HG_BIN} --debug --encoding utf8 -R #{target('')} log -C --style #{shell_quote self.class.template_path}" - if identifier_from && identifier_to - cmd << " -r #{hgrev(identifier_from)}:#{hgrev(identifier_to)}" - elsif identifier_from - cmd << " -r #{hgrev(identifier_from)}:" - end - cmd << " --limit #{options[:limit].to_i}" if options[:limit] - cmd << " #{shell_quote path}" unless path.blank? - shellout(cmd) do |io| + def each_revision(path=nil, identifier_from=nil, identifier_to=nil, options={}) + hg_args = ['log', '--debug', '-C', '--style', self.class.template_path] + hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}" + hg_args << '--limit' << options[:limit] if options[:limit] + hg_args << hgtarget(path) unless path.blank? + log = hg(*hg_args) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin - # HG doesn't close the XML Document... - doc = REXML::Document.new(io.read << "") - doc.elements.each("log/logentry") do |logentry| - paths = [] - copies = logentry.get_elements('paths/path-copied') - logentry.elements.each("paths/path") do |path| - # Detect if the added file is a copy - if path.attributes['action'] == 'A' and c = copies.find{ |e| e.text == path.text } - from_path = c.attributes['copyfrom-path'] - from_rev = logentry.attributes['revision'] - end - paths << {:action => path.attributes['action'], - :path => "/#{CGI.unescape(path.text)}", - :from_path => from_path ? "/#{CGI.unescape(from_path)}" : nil, - :from_revision => from_rev ? from_rev : nil - } - end - paths.sort! { |x,y| x[:path] <=> y[:path] } - - revisions << Revision.new({:identifier => logentry.attributes['revision'], - :scmid => logentry.attributes['node'], - :author => (logentry.elements['author'] ? logentry.elements['author'].text : ""), - :time => Time.parse(logentry.elements['date'].text).localtime, - :message => logentry.elements['msg'].text, - :paths => paths - }) - end + # Mercurial < 1.5 does not support footer template for '' + ActiveSupport::XmlMini.parse("#{output}")['log'] rescue - logger.debug($!) end end - return nil if $? && $?.exitstatus != 0 - revisions + + as_ary(log['logentry']).each do |le| + cpalist = as_ary(le['paths']['path-copied']).map do |e| + [e['__content__'], e['copyfrom-path']].map { |s| CGI.unescape(s) } + end + cpmap = Hash[*cpalist.flatten] + + paths = as_ary(le['paths']['path']).map do |e| + p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) ) + {:action => e['action'], :path => with_leading_slash(p), + :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil), + :from_revision => (cpmap.member?(p) ? le['revision'] : nil)} + end.sort { |a, b| a[:path] <=> b[:path] } + + yield Revision.new(:revision => le['revision'], + :scmid => le['node'], + :author => (le['author']['__content__'] rescue ''), + :time => Time.parse(le['date']['__content__']).localtime, + :message => le['msg']['__content__'], + :paths => paths) + end + self end def diff(path, identifier_from, identifier_to=nil) - path ||= '' - diff_args = '' + hg_args = %w|rhdiff| + if identifier_to + hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from) + else + hg_args << '-c' << hgrev(identifier_from) + end + unless path.blank? + p = scm_iconv(@path_encoding, 'UTF-8', path) + hg_args << CGI.escape(hgtarget(p)) + end diff = [] - if identifier_to - diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}" - else - if self.class.client_version_above?([1, 2]) - diff_args = "-c #{hgrev(identifier_from)}" - else - return [] - end - end - cmd = "#{HG_BIN} -R #{target('')} --config diff.git=false diff --nodates #{diff_args}" - cmd << " -I #{target(path)}" unless path.empty? - shellout(cmd) do |io| + hg *hg_args do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue HgCommandAborted + nil # means not found end def cat(path, identifier=nil) - cmd = "#{HG_BIN} -R #{target('')} cat" - cmd << " -r #{hgrev(identifier)}" - cmd << " #{target(path)}" - cat = nil - shellout(cmd) do |io| + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) + hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io| io.binmode - cat = io.read + io.read end - return nil if $? && $?.exitstatus != 0 - cat + rescue HgCommandAborted + nil # means not found end def annotate(path, identifier=nil) - path ||= '' - cmd = "#{HG_BIN} -R #{target('')}" - cmd << " annotate -ncu" - cmd << " -r #{hgrev(identifier)}" - cmd << " #{target(path)}" + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) blame = Annotate.new - shellout(cmd) do |io| + hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io| io.each_line do |line| + line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding) next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3, :identifier => $3) blame.add_line($4.rstrip, r) end end - return nil if $? && $?.exitstatus != 0 blame + rescue HgCommandAborted + nil # means not found or cannot be annotated end class Revision < Redmine::Scm::Adapters::Revision @@ -214,11 +273,40 @@ end end + # Runs 'hg' command with the given args + def hg(*args, &block) + repo_path = root_url || url + full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8'] + full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}" + full_args << '--config' << 'diff.git=false' + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :hg + # Returns correct revision identifier - def hgrev(identifier) - shell_quote(identifier.blank? ? 'tip' : identifier.to_s) + def hgrev(identifier, sq=false) + rev = identifier.blank? ? 'tip' : identifier.to_s + rev = shell_quote(rev) if sq + rev end private :hgrev + + def hgtarget(path) + path ||= '' + root_url + '/' + without_leading_slash(path) + end + private :hgtarget + + def as_ary(o) + return [] unless o + o.is_a?(Array) ? o : Array[o] + end + private :as_ary end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base --- a/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -20,38 +20,54 @@ module Redmine module Scm - module Adapters + module Adapters class SubversionAdapter < AbstractAdapter - + # SVN executable name - SVN_BIN = "svn" - + SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn" + class << self + def client_command + @@bin ||= SVN_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(SVN_BIN) + end + def client_version @@client_version ||= (svn_binary_version || []) end - + + def client_available + !client_version.empty? + end + def svn_binary_version - cmd = "#{SVN_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read svn version in first returned line - if m = io.read.to_s.match(%r{\A(.*?)((\d+\.)+\d+)}) - version = m[2].scan(%r{\d+}).collect(&:to_i) - end + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end end - + # Get info about the svn repository def info - cmd = "#{SVN_BIN} info --xml #{target}" + cmd = "#{self.class.sq_bin} info --xml #{target}" cmd << credentials_string info = nil shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) #root_url = doc.elements["info/entry/repository/root"].text @@ -70,17 +86,20 @@ rescue CommandFailed return nil end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) path ||= '' identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" entries = Entries.new - cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}" cmd << credentials_string shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) each_xml_element(doc['lists']['list'], 'entry') do |entry| @@ -110,17 +129,20 @@ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name end - + def properties(path, identifier=nil) # proplist xml output supported in svn 1.5.0 and higher return nil unless self.class.client_version_above?([1, 5, 0]) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}" cmd << credentials_string properties = {} shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) each_xml_element(doc['properties']['target'], 'property') do |property| @@ -132,19 +154,22 @@ return nil if $? && $?.exitstatus != 0 properties end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1 revisions = Revisions.new - cmd = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}" + cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}" cmd << credentials_string cmd << " --verbose " if options[:with_paths] cmd << " --limit #{options[:limit].to_i}" if options[:limit] cmd << ' ' + target(path) shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) each_xml_element(doc['log'], 'logentry') do |logentry| @@ -171,13 +196,14 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil, type="inline") path ||= '' identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : '' + identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1) - - cmd = "#{SVN_BIN} diff -r " + + cmd = "#{self.class.sq_bin} diff -r " cmd << "#{identifier_to}:" cmd << "#{identifier_from}" cmd << " #{target(path)}@#{identifier_from}" @@ -191,10 +217,10 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" cmd << credentials_string cat = nil shellout(cmd) do |io| @@ -204,10 +230,10 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" cmd << credentials_string blame = Annotate.new shellout(cmd) do |io| diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/abstract_adapter.rb --- a/lib/redmine/scm/adapters/abstract_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/abstract_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,25 +19,29 @@ module Redmine module Scm - module Adapters + module Adapters class CommandFailed < StandardError #:nodoc: end - + class AbstractAdapter #:nodoc: class << self + def client_command + "" + end + # Returns the version of the scm client # Eg: [1, 5, 0] or [] if unknown def client_version [] end - + # Returns the version string of the scm client # Eg: '1.5.0' or 'Unknown version' if unknown def client_version_string v = client_version || 'Unknown version' v.is_a?(Array) ? v.join('.') : v.to_s end - + # Returns true if the current client version is above # or equals the given one # If option is :unknown is set to true, it will return @@ -45,19 +49,32 @@ def client_version_above?(v, options={}) ((client_version <=> v) >= 0) || (client_version.empty? && options[:unknown]) end + + def client_available + true + end + + def shell_quote(str) + if Redmine::Platform.mswin? + '"' + str.gsub(/"/, '\\"') + '"' + else + "'" + str.gsub(/'/, "'\"'\"'") + "'" + end + end end - - def initialize(url, root_url=nil, login=nil, password=nil) + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @root_url = root_url.blank? ? retrieve_root_url : root_url end - + def adapter_name 'Abstract' end - + def supports_cat? true end @@ -65,11 +82,11 @@ def supports_annotate? respond_to?('annotate') end - + def root_url @root_url end - + def url @url end @@ -138,7 +155,7 @@ path ||= '' (path[-1,1] == "/") ? path : "#{path}/" end - + def without_leading_slash(path) path ||= '' path.gsub(%r{^/+}, '') @@ -148,13 +165,9 @@ path ||= '' (path[-1,1] == "/") ? path[0..-2] : path end - + def shell_quote(str) - if Redmine::Platform.mswin? - '"' + str.gsub(/"/, '\\"') + '"' - else - "'" + str.gsub(/'/, "'\"'\"'") + "'" - end + self.class.shell_quote(str) end private @@ -168,19 +181,19 @@ base = path.match(/^\//) ? root_url : url shell_quote("#{base}/#{path}".gsub(/[?<>\*]/, '')) end - + def logger self.class.logger end - + def shellout(cmd, &block) self.class.shellout(cmd, &block) end - + def self.logger RAILS_DEFAULT_LOGGER end - + def self.shellout(cmd, &block) logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug? if Rails.env == 'development' @@ -188,7 +201,12 @@ cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log" end begin - IO.popen(cmd, "r+") do |io| + if RUBY_VERSION < '1.9' + mode = "r+" + else + mode = "r+:ASCII-8BIT" + end + IO.popen(cmd, mode) do |io| io.close_write block.call(io) if block_given? end @@ -198,8 +216,8 @@ logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}") raise CommandFailed.new(msg) end - end - + end + # Hides username/password in a given command def self.strip_credential(cmd) q = (Redmine::Platform.mswin? ? '"' : "'") @@ -209,8 +227,19 @@ def strip_credential(cmd) self.class.strip_credential(cmd) end + + def scm_iconv(to, from, str) + return nil if str.nil? + return str if to == from + begin + Iconv.conv(to, from, str) + rescue Iconv::Failure => err + logger.error("failed to convert from #{from} to #{to}. #{err}") + nil + end + end end - + class Entries < Array def sort_by_name sort {|x,y| @@ -219,7 +248,7 @@ else x.kind <=> y.kind end - } + } end def revisions @@ -295,29 +324,8 @@ def format_identifier identifier end + end - def save(repo) - Changeset.transaction do - changeset = Changeset.new( - :repository => repo, - :revision => identifier, - :scmid => scmid, - :committer => author, - :committed_on => time, - :comments => message) - - if changeset.save - paths.each do |file| - Change.create( - :changeset => changeset, - :action => file[:action], - :path => file[:path]) - end - end - end - end - end - class Annotate attr_reader :lines, :revisions diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/bazaar_adapter.rb --- a/lib/redmine/scm/adapters/bazaar_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/bazaar_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,15 +19,47 @@ module Redmine module Scm - module Adapters + module Adapters class BazaarAdapter < AbstractAdapter - + # Bazaar executable name - BZR_BIN = "bzr" - + BZR_BIN = Redmine::Configuration['scm_bazaar_command'] || "bzr" + + class << self + def client_command + @@bin ||= BZR_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(BZR_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s + end + end + # Get info about the repository def info - cmd = "#{BZR_BIN} revno #{target('')}" + cmd = "#{self.class.sq_bin} revno #{target('')}" info = nil shellout(cmd) do |io| if io.read =~ %r{^(\d+)\r?$} @@ -43,13 +75,13 @@ rescue CommandFailed return nil end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) path ||= '' entries = Entries.new - cmd = "#{BZR_BIN} ls -v --show-ids" + cmd = "#{self.class.sq_bin} ls -v --show-ids" identifier = -1 unless identifier && identifier.to_i > 0 cmd << " -r#{identifier.to_i}" cmd << " #{target(path)}" @@ -71,13 +103,13 @@ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : 'last:1' identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : 1 revisions = Revisions.new - cmd = "#{BZR_BIN} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}" + cmd = "#{self.class.sq_bin} log -v --show-ids -r#{identifier_to}..#{identifier_from} #{target(path)}" shellout(cmd) do |io| revision = nil parsing = nil @@ -132,7 +164,7 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path ||= '' if identifier_to @@ -143,7 +175,7 @@ if identifier_from identifier_from = identifier_from.to_i end - cmd = "#{BZR_BIN} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" + cmd = "#{self.class.sq_bin} diff -r#{identifier_to}..#{identifier_from} #{target(path)}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -153,9 +185,9 @@ #return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{BZR_BIN} cat" + cmd = "#{self.class.sq_bin} cat" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" cat = nil @@ -166,9 +198,9 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) - cmd = "#{BZR_BIN} annotate --all" + cmd = "#{self.class.sq_bin} annotate --all" cmd << " -r#{identifier.to_i}" if identifier && identifier.to_i > 0 cmd << " #{target(path)}" blame = Annotate.new diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/cvs_adapter.rb --- a/lib/redmine/scm/adapters/cvs_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/cvs_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -23,14 +23,47 @@ class CvsAdapter < AbstractAdapter # CVS executable name - CVS_BIN = "cvs" - + CVS_BIN = Redmine::Configuration['scm_cvs_command'] || "cvs" + + class << self + def client_command + @@bin ||= CVS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(CVS_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + client_version_above?([1, 12]) + end + + def scm_command_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}m) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s + end + end + # Guidelines for the input: # url -> the project-path, relative to the cvsroot (eg. module name) # root_url -> the good old, sometimes damned, CVSROOT # login -> unnecessary # password -> unnecessary too - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @login = login if login && !login.empty? @password = (password || "") if @login @@ -38,24 +71,24 @@ raise CommandFailed if root_url.blank? @root_url = root_url end - + def root_url @root_url end - + def url @url end - + def info logger.debug " info" Info.new({:root_url => @root_url, :lastrev => nil}) end - + def get_previous_revision(revision) CvsRevisionHelper.new(revision).prevRev end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository # this method is used by the repository-browser (aka LIST) @@ -63,14 +96,14 @@ logger.debug " entries '#{path}' with identifier '#{identifier}'" path_with_project="#{url}#{with_leading_slash(path)}" entries = Entries.new - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rls -e" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rls -e" cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier cmd << " #{shell_quote path_with_project}" shellout(cmd) do |io| io.each_line(){|line| fields=line.chop.split('/',-1) logger.debug(">>InspectLine #{fields.inspect}") - + if fields[0]!="D" entries << Entry.new({:name => fields[-5], #:path => fields[-4].include?(path)?fields[-4]:(path + "/"+ fields[-4]), @@ -96,20 +129,20 @@ end return nil if $? && $?.exitstatus != 0 entries.sort_by_name - end + end STARTLOG="----------------------------" ENDLOG ="=============================================================================" - + # Returns all revisions found between identifier_from and identifier_to # in the repository. both identifier have to be dates or nil. # these method returns nothing but yield every result in block def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}, &block) logger.debug " revisions path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" - + path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rlog" - cmd << " -d\">#{time_to_cvstime(identifier_from)}\"" if identifier_from + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rlog" + cmd << " -d\">#{time_to_cvstime_rlog(identifier_from)}\"" if identifier_from cmd << " #{shell_quote path_with_project}" shellout(cmd) do |io| state="entry_start" @@ -123,7 +156,7 @@ file_state=nil branch_map=nil - io.each_line() do |line| + io.each_line() do |line| if state!="revision" && /^#{ENDLOG}/ =~ line commit_log=String.new @@ -162,9 +195,9 @@ end next elsif state=="revision" - if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line + if /^#{ENDLOG}/ =~ line || /^#{STARTLOG}/ =~ line if revision - + revHelper=CvsRevisionHelper.new(revision) revBranch="HEAD" @@ -176,7 +209,7 @@ logger.debug("********** YIELD Revision #{revision}::#{revBranch}") - yield Revision.new({ + yield Revision.new({ :time => date, :author => author, :message=>commit_log.chomp, @@ -188,9 +221,9 @@ :kind=>'file', :action=>file_state }] - }) + }) end - + commit_log=String.new revision=nil @@ -199,7 +232,7 @@ end next end - + if /^branches: (.+)$/ =~ line #TODO: version.branch = $1 elsif /^revision (\d+(?:\.\d+)+).*$/ =~ line @@ -216,20 +249,20 @@ # version.line_minus = linechanges[2] # else # version.line_plus = 0 - # version.line_minus = 0 - # end - else + # version.line_minus = 0 + # end + else commit_log << line unless line =~ /^\*\*\* empty log message \*\*\*/ - end - end + end + end end end - end - + end + def diff(path, identifier_from, identifier_to=nil) logger.debug " diff path:'#{path}',identifier_from #{identifier_from}, identifier_to #{identifier_to}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rdiff -u -r#{identifier_to} -r#{identifier_from} #{shell_quote path_with_project}" diff = [] shellout(cmd) do |io| io.each_line do |line| @@ -238,28 +271,29 @@ end return nil if $? && $?.exitstatus != 0 diff - end - + end + def cat(path, identifier=nil) identifier = (identifier) ? identifier : "HEAD" logger.debug " cat path:'#{path}',identifier #{identifier}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} co" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} co" cmd << " -D \"#{time_to_cvstime(identifier)}\"" if identifier cmd << " -p #{shell_quote path_with_project}" cat = nil shellout(cmd) do |io| + io.binmode cat = io.read end return nil if $? && $?.exitstatus != 0 cat - end + end def annotate(path, identifier=nil) identifier = (identifier) ? identifier.to_i : "HEAD" logger.debug " annotate path:'#{path}',identifier #{identifier}" path_with_project="#{url}#{with_leading_slash(path)}" - cmd = "#{CVS_BIN} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" + cmd = "#{self.class.sq_bin} -d #{shell_quote root_url} rannotate -r#{identifier} #{shell_quote path_with_project}" blame = Annotate.new shellout(cmd) do |io| io.each_line do |line| @@ -270,9 +304,9 @@ return nil if $? && $?.exitstatus != 0 blame end - + private - + # Returns the root url without the connexion string # :pserver:anonymous@foo.bar:/path => /path # :ext:cvsservername:/path => /path @@ -290,6 +324,12 @@ end return time.strftime("%Y-%m-%d %H:%M:%S") end + + def time_to_cvstime_rlog(time) + return nil if time.nil? + t1 = time.clone.localtime + return t1.strftime("%Y-%m-%d %H:%M:%S") + end def normalize_cvs_path(path) normalize_path(path.gsub(/Attic\//,'')) @@ -339,7 +379,11 @@ private def buildRevision(rev) if rev== 0 - @base + if @branchid.nil? + @base+".0" + else + @base + end elsif @branchid.nil? @base+"."+rev.to_s else diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/darcs_adapter.rb --- a/lib/redmine/scm/adapters/darcs_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/darcs_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -20,31 +20,45 @@ module Redmine module Scm - module Adapters - class DarcsAdapter < AbstractAdapter + module Adapters + class DarcsAdapter < AbstractAdapter # Darcs executable name - DARCS_BIN = "darcs" - + DARCS_BIN = Redmine::Configuration['scm_darcs_command'] || "darcs" + class << self + def client_command + @@bin ||= DARCS_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(DARCS_BIN) + end + def client_version @@client_version ||= (darcs_binary_version || []) end - + + def client_available + !client_version.empty? + end + def darcs_binary_version - cmd = "#{DARCS_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read darcs version in first returned line - if m = io.gets.match(%r{((\d+\.)+\d+)}) - version = m[0].scan(%r{\d+}).collect(&:to_i) - end + darcsversion = darcs_binary_version_from_command_line.dup + if darcsversion.respond_to?(:force_encoding) + darcsversion.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + if m = darcsversion.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def darcs_binary_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end end - def initialize(url, root_url=nil, login=nil, password=nil) + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = url @root_url = url end @@ -59,14 +73,16 @@ rev = revisions(nil,nil,nil,{:limit => 1}) rev ? Info.new({:root_url => @url, :lastrev => rev.last}) : nil end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) path_prefix = (path.blank? ? '' : "#{path}/") - path = '.' if path.blank? - entries = Entries.new - cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --xml-output" + if path.blank? + path = ( self.class.client_version_above?([2, 2, 0]) ? @url : '.' ) + end + entries = Entries.new + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --xml-output" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" shellout(cmd) do |io| @@ -86,11 +102,11 @@ return nil if $? && $?.exitstatus != 0 entries.compact.sort_by_name end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path = '.' if path.blank? revisions = Revisions.new - cmd = "#{DARCS_BIN} changes --repodir #{shell_quote @url} --xml-output" + cmd = "#{self.class.sq_bin} changes --repodir #{shell_quote @url} --xml-output" cmd << " --from-match #{shell_quote("hash #{identifier_from}")}" if identifier_from cmd << " --last #{options[:limit].to_i}" if options[:limit] shellout(cmd) do |io| @@ -113,10 +129,10 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil) path = '*' if path.blank? - cmd = "#{DARCS_BIN} diff --repodir #{shell_quote @url}" + cmd = "#{self.class.sq_bin} diff --repodir #{shell_quote @url}" if identifier_to.nil? cmd << " --match #{shell_quote("hash #{identifier_from}")}" else @@ -133,9 +149,9 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) - cmd = "#{DARCS_BIN} show content --repodir #{shell_quote @url}" + cmd = "#{self.class.sq_bin} show content --repodir #{shell_quote @url}" cmd << " --match #{shell_quote("hash #{identifier}")}" if identifier cmd << " #{shell_quote path}" cat = nil @@ -148,7 +164,7 @@ end private - + # Returns an Entry from the given XML element # or nil if the entry was deleted def entry_from_xml(element, path_prefix) @@ -156,7 +172,7 @@ if modified_element.elements['modified_how'].text.match(/removed/) return nil end - + Entry.new({:name => element.attributes['name'], :path => path_prefix + element.attributes['name'], :kind => element.name == 'file' ? 'file' : 'dir', @@ -165,12 +181,41 @@ :identifier => nil, :scmid => modified_element.elements['patch'].attributes['hash'] }) - }) + }) end - + + def get_paths_for_patch(hash) + paths = get_paths_for_patch_raw(hash) + if self.class.client_version_above?([2, 4]) + orig_paths = paths + paths = [] + add_paths = [] + add_paths_name = [] + mod_paths = [] + other_paths = [] + orig_paths.each do |path| + if path[:action] == 'A' + add_paths << path + add_paths_name << path[:path] + elsif path[:action] == 'M' + mod_paths << path + else + other_paths << path + end + end + add_paths_name.each do |add_path| + mod_paths.delete_if { |m| m[:path] == add_path } + end + paths.concat add_paths + paths.concat mod_paths + paths.concat other_paths + end + paths + end + # Retrieve changed paths for a single patch - def get_paths_for_patch(hash) - cmd = "#{DARCS_BIN} annotate --repodir #{shell_quote @url} --summary --xml-output" + def get_paths_for_patch_raw(hash) + cmd = "#{self.class.sq_bin} annotate --repodir #{shell_quote @url} --summary --xml-output" cmd << " --match #{shell_quote("hash #{hash}")} " paths = [] shellout(cmd) do |io| diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/filesystem_adapter.rb --- a/lib/redmine/scm/adapters/filesystem_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/filesystem_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -23,12 +23,19 @@ module Redmine module Scm - module Adapters + module Adapters class FilesystemAdapter < AbstractAdapter - - def initialize(url, root_url=nil, login=nil, password=nil) + class << self + def client_available + true + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, + path_encoding=nil) @url = with_trailling_slash(url) + @path_encoding = path_encoding || 'UTF-8' end def format_path_ends(path, leading=true, trailling=true) @@ -46,47 +53,59 @@ rescue CommandFailed return nil end - + def entries(path="", identifier=nil) entries = Entries.new - Dir.new(target(path)).each do |e| - relative_path = format_path_ends((format_path_ends(path, - false, - true) + e), - false,false) - target = target(relative_path) - entries << - Entry.new({ :name => File.basename(e), + trgt_utf8 = target(path) + trgt = scm_iconv(@path_encoding, 'UTF-8', trgt_utf8) + Dir.new(trgt).each do |e1| + e_utf8 = scm_iconv('UTF-8', @path_encoding, e1) + relative_path_utf8 = format_path_ends((format_path_ends(path,false,true) + e_utf8),false,false) + t1_utf8 = target(relative_path_utf8) + t1 = scm_iconv(@path_encoding, 'UTF-8', t1_utf8) + relative_path = scm_iconv(@path_encoding, 'UTF-8', relative_path_utf8) + e1 = scm_iconv(@path_encoding, 'UTF-8', e_utf8) + if File.exist?(t1) and # paranoid test + %w{file directory}.include?(File.ftype(t1)) and # avoid special types + not File.basename(e1).match(/^\.+$/) # avoid . and .. + p1 = File.readable?(t1) ? relative_path : "" + utf_8_path = scm_iconv('UTF-8', @path_encoding, p1) + entries << + Entry.new({ :name => scm_iconv('UTF-8', @path_encoding, File.basename(e1)), # below : list unreadable files, but dont link them. - :path => File.readable?(target) ? relative_path : "", - :kind => (File.directory?(target) ? 'dir' : 'file'), - :size => (File.directory?(target) ? nil : [File.size(target)].pack('l').unpack('L').first), + :path => utf_8_path, + :kind => (File.directory?(t1) ? 'dir' : 'file'), + :size => (File.directory?(t1) ? nil : [File.size(t1)].pack('l').unpack('L').first), :lastrev => - Revision.new({:time => (File.mtime(target)).localtime, - }) - }) if File.exist?(target) and # paranoid test - %w{file directory}.include?(File.ftype(target)) and # avoid special types - not File.basename(e).match(/^\.+$/) # avoid . and .. + Revision.new({:time => (File.mtime(t1)) }) + }) + end end entries.sort_by_name + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end - + def cat(path, identifier=nil) - File.new(target(path), "rb").read + p = scm_iconv(@path_encoding, 'UTF-8', target(path)) + File.new(p, "rb").read + rescue => err + logger.error "scm: filesystem: error: #{err.message}" + raise CommandFailed.new(err.message) end private - + # AbstractAdapter::target is implicitly made to quote paths. # Here we do not shell-out, so we do not want quotes. def target(path=nil) - #Prevent the use of .. + # Prevent the use of .. if path and !path.match(/(^|\/)\.\.(\/|$)/) return "#{self.url}#{without_leading_slash(path)}" end return self.url end - end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/git_adapter.rb --- a/lib/redmine/scm/adapters/git_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/git_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,10 +19,53 @@ module Redmine module Scm - module Adapters + module Adapters class GitAdapter < AbstractAdapter + + SCM_GIT_REPORT_LAST_COMMIT = true + # Git executable name - GIT_BIN = "git" + GIT_BIN = Redmine::Configuration['scm_git_command'] || "git" + + # raised if scm command exited with error, e.g. unknown revision. + class ScmCommandAborted < CommandFailed; end + + class << self + def client_command + @@bin ||= GIT_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(GIT_BIN) + end + + def client_version + @@client_version ||= (scm_command_version || []) + end + + def client_available + !client_version.empty? + end + + def scm_command_version + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') + end + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version --no-color") { |io| io.read }.to_s + end + end + + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @flag_report_last_commit = SCM_GIT_REPORT_LAST_COMMIT + end def info begin @@ -35,7 +78,7 @@ def branches return @branches if @branches @branches = [] - cmd = "#{GIT_BIN} --git-dir #{target('')} branch --no-color" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} branch --no-color" shellout(cmd) do |io| io.each_line do |line| @branches << line.match('\s*\*?\s*(.*)$')[1] @@ -46,20 +89,20 @@ def tags return @tags if @tags - cmd = "#{GIT_BIN} --git-dir #{target('')} tag" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} tag" shellout(cmd) do |io| @tags = io.readlines.sort!.map{|t| t.strip} end end def default_branch - branches.include?('master') ? 'master' : branches.first + branches.include?('master') ? 'master' : branches.first end - + def entries(path=nil, identifier=nil) path ||= '' entries = Entries.new - cmd = "#{GIT_BIN} --git-dir #{target('')} ls-tree -l " + cmd = "#{self.class.sq_bin} --git-dir #{target('')} ls-tree -l " cmd << shell_quote("HEAD:" + path) if identifier.nil? cmd << shell_quote(identifier + ":" + path) if identifier shellout(cmd) do |io| @@ -75,7 +118,7 @@ :path => full_path, :kind => (type == "tree") ? 'dir' : 'file', :size => (type == "tree") ? nil : size, - :lastrev => lastrev(full_path,identifier) + :lastrev => @flag_report_last_commit ? lastrev(full_path,identifier) : Revision.new }) unless entries.detect{|entry| entry.name == name} end end @@ -84,18 +127,17 @@ entries.sort_by_name end - def lastrev(path,rev) + def lastrev(path, rev) return nil if path.nil? - cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --date=iso --pretty=fuller --no-merges -n 1 " - cmd << " #{shell_quote rev} " if rev - cmd << "-- #{shell_quote path} " unless path.empty? + cmd_args = %w|log --no-color --encoding=UTF-8 --date=iso --pretty=fuller --no-merges -n 1| + cmd_args << rev if rev + cmd_args << "--" << path unless path.empty? lines = [] - shellout(cmd) { |io| lines = io.readlines } - return nil if $? && $?.exitstatus != 0 + scm_cmd(*cmd_args) { |io| lines = io.readlines } begin id = lines[0].split[1] author = lines[1].match('Author:\s+(.*)$')[1] - time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]).localtime + time = Time.parse(lines[4].match('CommitDate:\s+(.*)$')[1]) Revision.new({ :identifier => id, @@ -104,26 +146,29 @@ :time => time, :message => nil, :paths => nil - }) + }) rescue NoMethodError => e logger.error("The revision '#{path}' has a wrong format") return nil end + rescue ScmCommandAborted + nil end def revisions(path, identifier_from, identifier_to, options={}) revisions = Revisions.new + cmd_args = %w|log --no-color --encoding=UTF-8 --raw --date=iso --pretty=fuller| + cmd_args << "--reverse" if options[:reverse] + cmd_args << "--all" if options[:all] + cmd_args << "-n" << "#{options[:limit].to_i}" if options[:limit] + from_to = "" + from_to << "#{identifier_from}.." if identifier_from + from_to << "#{identifier_to}" if identifier_to + cmd_args << from_to if !from_to.empty? + cmd_args << "--since=#{options[:since].strftime("%Y-%m-%d %H:%M:%S")}" if options[:since] + cmd_args << "--" << path if path && !path.empty? - cmd = "#{GIT_BIN} --git-dir #{target('')} log --no-color --raw --date=iso --pretty=fuller " - cmd << " --reverse " if options[:reverse] - cmd << " --all " if options[:all] - cmd << " -n #{options[:limit].to_i} " if options[:limit] - cmd << "#{shell_quote(identifier_from + '..')}" if identifier_from - cmd << "#{shell_quote identifier_to}" if identifier_to - cmd << " --since=#{shell_quote(options[:since].strftime("%Y-%m-%d %H:%M:%S"))}" if options[:since] - cmd << " -- #{shell_quote path}" if path && !path.empty? - - shellout(cmd) do |io| + scm_cmd *cmd_args do |io| files=[] changeset = {} parsing_descr = 0 #0: not parsing desc or files, 1: parsing desc, 2: parsing files @@ -200,8 +245,8 @@ end end end - - return nil if $? && $?.exitstatus != 0 + revisions + rescue ScmCommandAborted revisions end @@ -209,9 +254,9 @@ path ||= '' if identifier_to - cmd = "#{GIT_BIN} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} diff --no-color #{shell_quote identifier_to} #{shell_quote identifier_from}" else - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote identifier_from}" end cmd << " -- #{shell_quote path}" unless path.empty? @@ -227,7 +272,7 @@ def annotate(path, identifier=nil) identifier = 'HEAD' if identifier.blank? - cmd = "#{GIT_BIN} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} blame -p #{shell_quote identifier} -- #{shell_quote path}" blame = Annotate.new content = nil shellout(cmd) { |io| io.binmode; content = io.read } @@ -250,12 +295,12 @@ end blame end - + def cat(path, identifier=nil) if identifier.nil? identifier = 'HEAD' end - cmd = "#{GIT_BIN} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" + cmd = "#{self.class.sq_bin} --git-dir #{target('')} show --no-color #{shell_quote(identifier + ':' + path)}" cat = nil shellout(cmd) do |io| io.binmode @@ -271,6 +316,18 @@ identifier[0,8] end end + + def scm_cmd(*args, &block) + repo_path = root_url || url + full_args = [GIT_BIN, '--git-dir', repo_path] + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :scm_cmd end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/mercurial/.svn/all-wcprops --- a/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial +/svn/!svn/ver/4989/trunk/lib/redmine/scm/adapters/mercurial END hg-template-0.9.5.tmpl K 25 @@ -9,6 +9,12 @@ V 82 /svn/!svn/ver/4633/trunk/lib/redmine/scm/adapters/mercurial/hg-template-0.9.5.tmpl END +redminehelper.py +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4989/trunk/lib/redmine/scm/adapters/mercurial/redminehelper.py +END hg-template-1.0.tmpl K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/mercurial/.svn/dir-prop-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/dir-prop-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,7 @@ +K 10 +svn:ignore +V 36 +redminehelper.pyc +redminehelper.pyo + +END diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/mercurial/.svn/entries --- a/lib/redmine/scm/adapters/mercurial/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,16 +1,16 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/scm/adapters/mercurial http://redmine.rubyforge.org/svn -2011-01-05T15:02:24.961855Z -4633 +2011-03-02T10:17:36.526269Z +4989 tmaruyama - +has-props @@ -32,7 +32,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:14.000000Z 961af0eb6ab17203d985cdeac685937e 2011-01-05T15:02:24.961855Z 4633 @@ -60,13 +60,47 @@ 824 +redminehelper.py +file + + + + +2011-03-03T11:40:18.000000Z +5bf6790a201bf33c17cae96c6a9d75fc +2011-03-02T10:17:36.526269Z +4989 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +6270 + hg-template-1.0.tmpl file -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:14.000000Z 9d5de62ae8cdc141d3f8b970dbba07a0 2011-01-05T15:02:24.961855Z 4633 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/scm/adapters/mercurial/.svn/text-base/redminehelper.py.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,183 @@ +# redminehelper: Redmine helper extension for Mercurial +# +# Copyright 2010 Alessio Franceschelli (alefranz.net) +# Copyright 2010-2011 Yuya Nishihara +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. +"""helper commands for Redmine to reduce the number of hg calls + +To test this extension, please try:: + + $ hg --config extensions.redminehelper=redminehelper.py rhsummary + +I/O encoding: + +:file path: urlencoded, raw string +:tag name: utf-8 +:branch name: utf-8 +:node: 12-digits (short) hex string + +Output example of rhsummary:: + + + + + + + + ... + + + +Output example of rhmanifest:: + + + + + + + ... +
    + ... + + + +""" +import re, time, cgi, urllib +from mercurial import cmdutil, commands, node, error + +_x = cgi.escape +_u = lambda s: cgi.escape(urllib.quote(s)) + +def _tip(ui, repo): + # see mercurial/commands.py:tip + def tiprev(): + try: + return len(repo) - 1 + except TypeError: # Mercurial < 1.1 + return repo.changelog.count() - 1 + tipctx = repo.changectx(tiprev()) + ui.write('\n' + % (tipctx.rev(), _x(node.short(tipctx.node())))) + +_SPECIAL_TAGS = ('tip',) + +def _tags(ui, repo): + # see mercurial/commands.py:tags + for t, n in reversed(repo.tagslist()): + if t in _SPECIAL_TAGS: + continue + try: + r = repo.changelog.rev(n) + except error.LookupError: + continue + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _branches(ui, repo): + # see mercurial/commands.py:branches + def iterbranches(): + for t, n in repo.branchtags().iteritems(): + yield t, n, repo.changelog.rev(n) + def branchheads(branch): + try: + return repo.branchheads(branch, closed=False) + except TypeError: # Mercurial < 1.2 + return repo.branchheads(branch) + for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True): + if repo.lookup(r) in branchheads(t): + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _manifest(ui, repo, path, rev): + ctx = repo.changectx(rev) + ui.write('\n' + % (ctx.rev(), _u(path))) + + known = set() + pathprefix = (path.rstrip('/') + '/').lstrip('/') + for f, n in sorted(ctx.manifest().iteritems(), key=lambda e: e[0]): + if not f.startswith(pathprefix): + continue + name = re.sub(r'/.*', '/', f[len(pathprefix):]) + if name in known: + continue + known.add(name) + + if name.endswith('/'): + ui.write('\n' + % _x(urllib.quote(name[:-1]))) + else: + fctx = repo.filectx(f, fileid=n) + tm, tzoffset = fctx.date() + ui.write('\n' + % (_u(name), fctx.rev(), _x(node.short(fctx.node())), + tm, fctx.size(), )) + + ui.write('\n') + +def rhannotate(ui, repo, *pats, **opts): + return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts) + +def rhcat(ui, repo, file1, *pats, **opts): + return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts) + +def rhdiff(ui, repo, *pats, **opts): + """diff repository (or selected files)""" + change = opts.pop('change', None) + if change: # add -c option for Mercurial<1.1 + base = repo.changectx(change).parents()[0].rev() + opts['rev'] = [str(base), change] + opts['nodates'] = True + return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts) + +def rhmanifest(ui, repo, path='', **opts): + """output the sub-manifest of the specified directory""" + ui.write('\n') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _manifest(ui, repo, urllib.unquote_plus(path), urllib.unquote_plus(opts.get('rev'))) + finally: + ui.write('\n') + ui.write('\n') + +def rhsummary(ui, repo, **opts): + """output the summary of the repository""" + ui.write('\n') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _tip(ui, repo) + _tags(ui, repo) + _branches(ui, repo) + # TODO: bookmarks in core (Mercurial>=1.8) + finally: + ui.write('\n') + ui.write('\n') + +# This extension should be compatible with Mercurial 0.9.5. +# Note that Mercurial 0.9.5 doesn't have extensions.wrapfunction(). +cmdtable = { + 'rhannotate': (rhannotate, + [('r', 'rev', '', 'revision'), + ('u', 'user', None, 'list the author (long with -v)'), + ('n', 'number', None, 'list the revision number (default)'), + ('c', 'changeset', None, 'list the changeset'), + ], + 'hg rhannotate [-r REV] [-u] [-n] [-c] FILE...'), + 'rhcat': (rhcat, + [('r', 'rev', '', 'revision')], + 'hg rhcat ([-r REV] ...) FILE...'), + 'rhdiff': (rhdiff, + [('r', 'rev', [], 'revision'), + ('c', 'change', '', 'change made by revision')], + 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'), + 'rhmanifest': (rhmanifest, + [('r', 'rev', '', 'show the specified revision')], + 'hg rhmanifest [-r REV] [PATH]'), + 'rhsummary': (rhsummary, [], 'hg rhsummary'), +} diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/mercurial/redminehelper.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/redmine/scm/adapters/mercurial/redminehelper.py Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,183 @@ +# redminehelper: Redmine helper extension for Mercurial +# +# Copyright 2010 Alessio Franceschelli (alefranz.net) +# Copyright 2010-2011 Yuya Nishihara +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. +"""helper commands for Redmine to reduce the number of hg calls + +To test this extension, please try:: + + $ hg --config extensions.redminehelper=redminehelper.py rhsummary + +I/O encoding: + +:file path: urlencoded, raw string +:tag name: utf-8 +:branch name: utf-8 +:node: 12-digits (short) hex string + +Output example of rhsummary:: + + + + + + + + ... + + + +Output example of rhmanifest:: + + + + + + + ... + + ... + + + +""" +import re, time, cgi, urllib +from mercurial import cmdutil, commands, node, error + +_x = cgi.escape +_u = lambda s: cgi.escape(urllib.quote(s)) + +def _tip(ui, repo): + # see mercurial/commands.py:tip + def tiprev(): + try: + return len(repo) - 1 + except TypeError: # Mercurial < 1.1 + return repo.changelog.count() - 1 + tipctx = repo.changectx(tiprev()) + ui.write('\n' + % (tipctx.rev(), _x(node.short(tipctx.node())))) + +_SPECIAL_TAGS = ('tip',) + +def _tags(ui, repo): + # see mercurial/commands.py:tags + for t, n in reversed(repo.tagslist()): + if t in _SPECIAL_TAGS: + continue + try: + r = repo.changelog.rev(n) + except error.LookupError: + continue + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _branches(ui, repo): + # see mercurial/commands.py:branches + def iterbranches(): + for t, n in repo.branchtags().iteritems(): + yield t, n, repo.changelog.rev(n) + def branchheads(branch): + try: + return repo.branchheads(branch, closed=False) + except TypeError: # Mercurial < 1.2 + return repo.branchheads(branch) + for t, n, r in sorted(iterbranches(), key=lambda e: e[2], reverse=True): + if repo.lookup(r) in branchheads(t): + ui.write('\n' + % (r, _x(node.short(n)), _x(t))) + +def _manifest(ui, repo, path, rev): + ctx = repo.changectx(rev) + ui.write('\n' + % (ctx.rev(), _u(path))) + + known = set() + pathprefix = (path.rstrip('/') + '/').lstrip('/') + for f, n in sorted(ctx.manifest().iteritems(), key=lambda e: e[0]): + if not f.startswith(pathprefix): + continue + name = re.sub(r'/.*', '/', f[len(pathprefix):]) + if name in known: + continue + known.add(name) + + if name.endswith('/'): + ui.write('\n' + % _x(urllib.quote(name[:-1]))) + else: + fctx = repo.filectx(f, fileid=n) + tm, tzoffset = fctx.date() + ui.write('\n' + % (_u(name), fctx.rev(), _x(node.short(fctx.node())), + tm, fctx.size(), )) + + ui.write('\n') + +def rhannotate(ui, repo, *pats, **opts): + return commands.annotate(ui, repo, *map(urllib.unquote_plus, pats), **opts) + +def rhcat(ui, repo, file1, *pats, **opts): + return commands.cat(ui, repo, urllib.unquote_plus(file1), *map(urllib.unquote_plus, pats), **opts) + +def rhdiff(ui, repo, *pats, **opts): + """diff repository (or selected files)""" + change = opts.pop('change', None) + if change: # add -c option for Mercurial<1.1 + base = repo.changectx(change).parents()[0].rev() + opts['rev'] = [str(base), change] + opts['nodates'] = True + return commands.diff(ui, repo, *map(urllib.unquote_plus, pats), **opts) + +def rhmanifest(ui, repo, path='', **opts): + """output the sub-manifest of the specified directory""" + ui.write('\n') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _manifest(ui, repo, urllib.unquote_plus(path), urllib.unquote_plus(opts.get('rev'))) + finally: + ui.write('\n') + ui.write('\n') + +def rhsummary(ui, repo, **opts): + """output the summary of the repository""" + ui.write('\n') + ui.write('\n') + ui.write('\n' % _u(repo.root)) + try: + _tip(ui, repo) + _tags(ui, repo) + _branches(ui, repo) + # TODO: bookmarks in core (Mercurial>=1.8) + finally: + ui.write('\n') + ui.write('\n') + +# This extension should be compatible with Mercurial 0.9.5. +# Note that Mercurial 0.9.5 doesn't have extensions.wrapfunction(). +cmdtable = { + 'rhannotate': (rhannotate, + [('r', 'rev', '', 'revision'), + ('u', 'user', None, 'list the author (long with -v)'), + ('n', 'number', None, 'list the revision number (default)'), + ('c', 'changeset', None, 'list the changeset'), + ], + 'hg rhannotate [-r REV] [-u] [-n] [-c] FILE...'), + 'rhcat': (rhcat, + [('r', 'rev', '', 'revision')], + 'hg rhcat ([-r REV] ...) FILE...'), + 'rhdiff': (rhdiff, + [('r', 'rev', [], 'revision'), + ('c', 'change', '', 'change made by revision')], + 'hg rhdiff ([-c REV] | [-r REV] ...) [FILE]...'), + 'rhmanifest': (rhmanifest, + [('r', 'rev', '', 'show the specified revision')], + 'hg rhmanifest [-r REV] [PATH]'), + 'rhsummary': (rhsummary, [], 'hg rhsummary'), +} diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/mercurial_adapter.rb --- a/lib/redmine/scm/adapters/mercurial_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/mercurial_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -20,32 +20,51 @@ module Redmine module Scm - module Adapters + module Adapters class MercurialAdapter < AbstractAdapter # Mercurial executable name - HG_BIN = "hg" - TEMPLATES_DIR = File.dirname(__FILE__) + "/mercurial" + HG_BIN = Redmine::Configuration['scm_mercurial_command'] || "hg" + HELPERS_DIR = File.dirname(__FILE__) + "/mercurial" + HG_HELPER_EXT = "#{HELPERS_DIR}/redminehelper.py" TEMPLATE_NAME = "hg-template" TEMPLATE_EXTENSION = "tmpl" + # raised if hg command exited with error, e.g. unknown revision. + class HgCommandAborted < CommandFailed; end + class << self + def client_command + @@bin ||= HG_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(HG_BIN) + end + def client_version @@client_version ||= (hgversion || []) end - def hgversion + def client_available + !client_version.empty? + end + + def hgversion # The hg version is expressed either as a # release number (eg 0.9.5 or 1.0) or as a revision # id composed of 12 hexa characters. - theversion = hgversion_from_command_line + theversion = hgversion_from_command_line.dup + if theversion.respond_to?(:force_encoding) + theversion.force_encoding('ASCII-8BIT') + end if m = theversion.match(%r{\A(.*?)((\d+\.)+\d+)}) m[2].scan(%r{\d+}).collect(&:to_i) end end def hgversion_from_command_line - shellout("#{HG_BIN} --version") { |io| io.read }.to_s + shellout("#{sq_bin} --version") { |io| io.read }.to_s end def template_path @@ -58,153 +77,193 @@ else ver = "0.9.5" end - "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" + "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}" end end - def info - cmd = "#{HG_BIN} -R #{target('')} root" - root_url = nil - shellout(cmd) do |io| - root_url = io.read - end - return nil if $? && $?.exitstatus != 0 - info = Info.new({:root_url => root_url.chomp, - :lastrev => revisions(nil,nil,nil,{:limit => 1}).last - }) - info - rescue CommandFailed - return nil + def initialize(url, root_url=nil, login=nil, password=nil, path_encoding=nil) + super + @path_encoding = path_encoding || 'UTF-8' end - def entries(path=nil, identifier=nil) - path ||= '' - entries = Entries.new - cmd = "#{HG_BIN} -R #{target('')} --cwd #{target('')} locate" - cmd << " -r #{hgrev(identifier)}" - cmd << " " + shell_quote("path:#{path}") unless path.empty? - shellout(cmd) do |io| - io.each_line do |line| - # HG uses antislashs as separator on Windows - line = line.gsub(/\\/, "/") - if path.empty? or e = line.gsub!(%r{^#{with_trailling_slash(path)}},'') - e ||= line - e = e.chomp.split(%r{[\/\\]}) - entries << Entry.new({:name => e.first, - :path => (path.nil? or path.empty? ? e.first : "#{with_trailling_slash(path)}#{e.first}"), - :kind => (e.size > 1 ? 'dir' : 'file'), - :lastrev => Revision.new - }) unless e.empty? || entries.detect{|entry| entry.name == e.first} - end + def info + tip = summary['repository']['tip'] + Info.new(:root_url => CGI.unescape(summary['repository']['root']), + :lastrev => Revision.new(:revision => tip['revision'], + :scmid => tip['node'])) + end + + def tags + as_ary(summary['repository']['tag']).map { |e| e['name'] } + end + + # Returns map of {'tag' => 'nodeid', ...} + def tagmap + alist = as_ary(summary['repository']['tag']).map do |e| + e.values_at('name', 'node') + end + Hash[*alist.flatten] + end + + def branches + as_ary(summary['repository']['branch']).map { |e| e['name'] } + end + + # Returns map of {'branch' => 'nodeid', ...} + def branchmap + alist = as_ary(summary['repository']['branch']).map do |e| + e.values_at('name', 'node') + end + Hash[*alist.flatten] + end + + def summary + return @summary if @summary + hg 'rhsummary' do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + @summary = ActiveSupport::XmlMini.parse(output)['rhsummary'] + rescue end end - return nil if $? && $?.exitstatus != 0 - entries.sort_by_name + end + private :summary + + def entries(path=nil, identifier=nil) + p1 = scm_iconv(@path_encoding, 'UTF-8', path) + manifest = hg('rhmanifest', '-r', CGI.escape(hgrev(identifier)), + CGI.escape(without_leading_slash(p1.to_s))) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end + begin + ActiveSupport::XmlMini.parse(output)['rhmanifest']['repository']['manifest'] + rescue + end + end + path_prefix = path.blank? ? '' : with_trailling_slash(path) + + entries = Entries.new + as_ary(manifest['dir']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + entries << Entry.new(:name => n, :path => p, :kind => 'dir') + end + + as_ary(manifest['file']).each do |e| + n = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['name'])) + p = "#{path_prefix}#{n}" + lr = Revision.new(:revision => e['revision'], :scmid => e['node'], + :identifier => e['node'], + :time => Time.at(e['time'].to_i)) + entries << Entry.new(:name => n, :path => p, :kind => 'file', + :size => e['size'].to_i, :lastrev => lr) + end + + entries + rescue HgCommandAborted + nil # means not found end - # Fetch the revisions by using a template file that + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) + revs = Revisions.new + each_revision(path, identifier_from, identifier_to, options) { |e| revs << e } + revs + end + + # Iterates the revisions by using a template file that # makes Mercurial produce a xml output. - def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) - revisions = Revisions.new - cmd = "#{HG_BIN} --debug --encoding utf8 -R #{target('')} log -C --style #{shell_quote self.class.template_path}" - if identifier_from && identifier_to - cmd << " -r #{hgrev(identifier_from)}:#{hgrev(identifier_to)}" - elsif identifier_from - cmd << " -r #{hgrev(identifier_from)}:" - end - cmd << " --limit #{options[:limit].to_i}" if options[:limit] - cmd << " #{shell_quote path}" unless path.blank? - shellout(cmd) do |io| + def each_revision(path=nil, identifier_from=nil, identifier_to=nil, options={}) + hg_args = ['log', '--debug', '-C', '--style', self.class.template_path] + hg_args << '-r' << "#{hgrev(identifier_from)}:#{hgrev(identifier_to)}" + hg_args << '--limit' << options[:limit] if options[:limit] + hg_args << hgtarget(path) unless path.blank? + log = hg(*hg_args) do |io| + output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin - # HG doesn't close the XML Document... - doc = REXML::Document.new(io.read << "") - doc.elements.each("log/logentry") do |logentry| - paths = [] - copies = logentry.get_elements('paths/path-copied') - logentry.elements.each("paths/path") do |path| - # Detect if the added file is a copy - if path.attributes['action'] == 'A' and c = copies.find{ |e| e.text == path.text } - from_path = c.attributes['copyfrom-path'] - from_rev = logentry.attributes['revision'] - end - paths << {:action => path.attributes['action'], - :path => "/#{CGI.unescape(path.text)}", - :from_path => from_path ? "/#{CGI.unescape(from_path)}" : nil, - :from_revision => from_rev ? from_rev : nil - } - end - paths.sort! { |x,y| x[:path] <=> y[:path] } - - revisions << Revision.new({:identifier => logentry.attributes['revision'], - :scmid => logentry.attributes['node'], - :author => (logentry.elements['author'] ? logentry.elements['author'].text : ""), - :time => Time.parse(logentry.elements['date'].text).localtime, - :message => logentry.elements['msg'].text, - :paths => paths - }) - end + # Mercurial < 1.5 does not support footer template for '' + ActiveSupport::XmlMini.parse("#{output}")['log'] rescue - logger.debug($!) end end - return nil if $? && $?.exitstatus != 0 - revisions + + as_ary(log['logentry']).each do |le| + cpalist = as_ary(le['paths']['path-copied']).map do |e| + [e['__content__'], e['copyfrom-path']].map { |s| CGI.unescape(s) } + end + cpmap = Hash[*cpalist.flatten] + + paths = as_ary(le['paths']['path']).map do |e| + p = scm_iconv('UTF-8', @path_encoding, CGI.unescape(e['__content__']) ) + {:action => e['action'], :path => with_leading_slash(p), + :from_path => (cpmap.member?(p) ? with_leading_slash(cpmap[p]) : nil), + :from_revision => (cpmap.member?(p) ? le['revision'] : nil)} + end.sort { |a, b| a[:path] <=> b[:path] } + + yield Revision.new(:revision => le['revision'], + :scmid => le['node'], + :author => (le['author']['__content__'] rescue ''), + :time => Time.parse(le['date']['__content__']).localtime, + :message => le['msg']['__content__'], + :paths => paths) + end + self end def diff(path, identifier_from, identifier_to=nil) - path ||= '' - diff_args = '' + hg_args = %w|rhdiff| + if identifier_to + hg_args << '-r' << hgrev(identifier_to) << '-r' << hgrev(identifier_from) + else + hg_args << '-c' << hgrev(identifier_from) + end + unless path.blank? + p = scm_iconv(@path_encoding, 'UTF-8', path) + hg_args << CGI.escape(hgtarget(p)) + end diff = [] - if identifier_to - diff_args = "-r #{hgrev(identifier_to)} -r #{hgrev(identifier_from)}" - else - if self.class.client_version_above?([1, 2]) - diff_args = "-c #{hgrev(identifier_from)}" - else - return [] - end - end - cmd = "#{HG_BIN} -R #{target('')} --config diff.git=false diff --nodates #{diff_args}" - cmd << " -I #{target(path)}" unless path.empty? - shellout(cmd) do |io| + hg *hg_args do |io| io.each_line do |line| diff << line end end - return nil if $? && $?.exitstatus != 0 diff + rescue HgCommandAborted + nil # means not found end def cat(path, identifier=nil) - cmd = "#{HG_BIN} -R #{target('')} cat" - cmd << " -r #{hgrev(identifier)}" - cmd << " #{target(path)}" - cat = nil - shellout(cmd) do |io| + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) + hg 'rhcat', '-r', hgrev(identifier), hgtarget(p) do |io| io.binmode - cat = io.read + io.read end - return nil if $? && $?.exitstatus != 0 - cat + rescue HgCommandAborted + nil # means not found end def annotate(path, identifier=nil) - path ||= '' - cmd = "#{HG_BIN} -R #{target('')}" - cmd << " annotate -ncu" - cmd << " -r #{hgrev(identifier)}" - cmd << " #{target(path)}" + p = CGI.escape(scm_iconv(@path_encoding, 'UTF-8', path)) blame = Annotate.new - shellout(cmd) do |io| + hg 'rhannotate', '-ncu', '-r', hgrev(identifier), hgtarget(p) do |io| io.each_line do |line| + line.force_encoding('ASCII-8BIT') if line.respond_to?(:force_encoding) next unless line =~ %r{^([^:]+)\s(\d+)\s([0-9a-f]+):\s(.*)$} r = Revision.new(:author => $1.strip, :revision => $2, :scmid => $3, :identifier => $3) blame.add_line($4.rstrip, r) end end - return nil if $? && $?.exitstatus != 0 blame + rescue HgCommandAborted + nil # means not found or cannot be annotated end class Revision < Redmine::Scm::Adapters::Revision @@ -214,11 +273,40 @@ end end + # Runs 'hg' command with the given args + def hg(*args, &block) + repo_path = root_url || url + full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8'] + full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}" + full_args << '--config' << 'diff.git=false' + full_args += args + ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block) + if $? && $?.exitstatus != 0 + raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}" + end + ret + end + private :hg + # Returns correct revision identifier - def hgrev(identifier) - shell_quote(identifier.blank? ? 'tip' : identifier.to_s) + def hgrev(identifier, sq=false) + rev = identifier.blank? ? 'tip' : identifier.to_s + rev = shell_quote(rev) if sq + rev end private :hgrev + + def hgtarget(path) + path ||= '' + root_url + '/' + without_leading_slash(path) + end + private :hgtarget + + def as_ary(o) + return [] unless o + o.is_a?(Array) ? o : Array[o] + end + private :as_ary end end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/scm/adapters/subversion_adapter.rb --- a/lib/redmine/scm/adapters/subversion_adapter.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/scm/adapters/subversion_adapter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -20,38 +20,54 @@ module Redmine module Scm - module Adapters + module Adapters class SubversionAdapter < AbstractAdapter - + # SVN executable name - SVN_BIN = "svn" - + SVN_BIN = Redmine::Configuration['scm_subversion_command'] || "svn" + class << self + def client_command + @@bin ||= SVN_BIN + end + + def sq_bin + @@sq_bin ||= shell_quote(SVN_BIN) + end + def client_version @@client_version ||= (svn_binary_version || []) end - + + def client_available + !client_version.empty? + end + def svn_binary_version - cmd = "#{SVN_BIN} --version" - version = nil - shellout(cmd) do |io| - # Read svn version in first returned line - if m = io.read.to_s.match(%r{\A(.*?)((\d+\.)+\d+)}) - version = m[2].scan(%r{\d+}).collect(&:to_i) - end + scm_version = scm_version_from_command_line.dup + if scm_version.respond_to?(:force_encoding) + scm_version.force_encoding('ASCII-8BIT') end - return nil if $? && $?.exitstatus != 0 - version + if m = scm_version.match(%r{\A(.*?)((\d+\.)+\d+)}) + m[2].scan(%r{\d+}).collect(&:to_i) + end + end + + def scm_version_from_command_line + shellout("#{sq_bin} --version") { |io| io.read }.to_s end end - + # Get info about the svn repository def info - cmd = "#{SVN_BIN} info --xml #{target}" + cmd = "#{self.class.sq_bin} info --xml #{target}" cmd << credentials_string info = nil shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) #root_url = doc.elements["info/entry/repository/root"].text @@ -70,17 +86,20 @@ rescue CommandFailed return nil end - + # Returns an Entries collection # or nil if the given path doesn't exist in the repository def entries(path=nil, identifier=nil) path ||= '' identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" entries = Entries.new - cmd = "#{SVN_BIN} list --xml #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} list --xml #{target(path)}@#{identifier}" cmd << credentials_string shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) each_xml_element(doc['lists']['list'], 'entry') do |entry| @@ -110,17 +129,20 @@ logger.debug("Found #{entries.size} entries in the repository for #{target(path)}") if logger && logger.debug? entries.sort_by_name end - + def properties(path, identifier=nil) # proplist xml output supported in svn 1.5.0 and higher return nil unless self.class.client_version_above?([1, 5, 0]) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} proplist --verbose --xml #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} proplist --verbose --xml #{target(path)}@#{identifier}" cmd << credentials_string properties = {} shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) each_xml_element(doc['properties']['target'], 'property') do |property| @@ -132,19 +154,22 @@ return nil if $? && $?.exitstatus != 0 properties end - + def revisions(path=nil, identifier_from=nil, identifier_to=nil, options={}) path ||= '' identifier_from = (identifier_from && identifier_from.to_i > 0) ? identifier_from.to_i : "HEAD" identifier_to = (identifier_to && identifier_to.to_i > 0) ? identifier_to.to_i : 1 revisions = Revisions.new - cmd = "#{SVN_BIN} log --xml -r #{identifier_from}:#{identifier_to}" + cmd = "#{self.class.sq_bin} log --xml -r #{identifier_from}:#{identifier_to}" cmd << credentials_string cmd << " --verbose " if options[:with_paths] cmd << " --limit #{options[:limit].to_i}" if options[:limit] cmd << ' ' + target(path) shellout(cmd) do |io| output = io.read + if output.respond_to?(:force_encoding) + output.force_encoding('UTF-8') + end begin doc = ActiveSupport::XmlMini.parse(output) each_xml_element(doc['log'], 'logentry') do |logentry| @@ -171,13 +196,14 @@ return nil if $? && $?.exitstatus != 0 revisions end - + def diff(path, identifier_from, identifier_to=nil, type="inline") path ||= '' identifier_from = (identifier_from and identifier_from.to_i > 0) ? identifier_from.to_i : '' + identifier_to = (identifier_to and identifier_to.to_i > 0) ? identifier_to.to_i : (identifier_from.to_i - 1) - - cmd = "#{SVN_BIN} diff -r " + + cmd = "#{self.class.sq_bin} diff -r " cmd << "#{identifier_to}:" cmd << "#{identifier_from}" cmd << " #{target(path)}@#{identifier_from}" @@ -191,10 +217,10 @@ return nil if $? && $?.exitstatus != 0 diff end - + def cat(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} cat #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} cat #{target(path)}@#{identifier}" cmd << credentials_string cat = nil shellout(cmd) do |io| @@ -204,10 +230,10 @@ return nil if $? && $?.exitstatus != 0 cat end - + def annotate(path, identifier=nil) identifier = (identifier and identifier.to_i > 0) ? identifier.to_i : "HEAD" - cmd = "#{SVN_BIN} blame #{target(path)}@#{identifier}" + cmd = "#{self.class.sq_bin} blame #{target(path)}@#{identifier}" cmd << credentials_string blame = Annotate.new shellout(cmd) do |io| diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/unified_diff.rb --- a/lib/redmine/unified_diff.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/unified_diff.rb Thu Mar 03 12:02:03 2011 +0000 @@ -22,13 +22,21 @@ options.assert_valid_keys(:type, :max_lines) diff = diff.split("\n") if diff.is_a?(String) diff_type = options[:type] || 'inline' - lines = 0 @truncated = false diff_table = DiffTable.new(diff_type) diff.each do |line| + line_encoding = nil + if line.respond_to?(:force_encoding) + line_encoding = line.encoding + # TODO: UTF-16 and Japanese CP932 which is imcompatible with ASCII + # In Japan, diffrence between file path encoding + # and file contents encoding is popular. + line.force_encoding('ASCII-8BIT') + end unless diff_table.add_line line - self << diff_table if diff_table.length > 1 + line.force_encoding(line_encoding) if line_encoding + self << diff_table if diff_table.length > 0 diff_table = DiffTable.new(diff_type) end lines += 1 @@ -40,7 +48,7 @@ self << diff_table unless diff_table.empty? self end - + def truncated?; @truncated; end end diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/version.rb --- a/lib/redmine/version.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/version.rb Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,7 @@ module VERSION #:nodoc: MAJOR = 1 MINOR = 1 - TINY = 0 + TINY = 1 # Branch values: # * official release: nil diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/views/.svn/entries --- a/lib/redmine/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/views http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2011-01-13T14:09:39.000000Z +2011-03-03T11:05:14.000000Z e0e38b713c41ea63221dd877c6939983 2010-12-03T11:25:21.858858Z 4452 @@ -69,7 +69,7 @@ -2010-09-23T14:37:45.047759Z +2011-03-03T11:05:14.000000Z 849e9df27c041f540e690c6192939edf 2009-01-29T13:54:44.887081Z 2334 @@ -106,7 +106,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z 04feeced33ca55e9fb99099efe2fdcf6 2010-12-03T11:25:21.858858Z 4452 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/views/builders/.svn/entries --- a/lib/redmine/views/builders/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/views/builders/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/builders http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z 8816150c9264dfa6e639af165670cbb1 2010-12-11T13:13:49.013705Z 4489 @@ -66,7 +66,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z f9654f4bc43dbb5c01d5be2d6b045dd7 2010-12-11T13:13:49.013705Z 4489 @@ -100,7 +100,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z 4b47e2fa5030d1cdad48f3abb5ab7c44 2010-12-03T11:25:21.858858Z 4452 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/views/my_page/.svn/entries --- a/lib/redmine/views/my_page/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/views/my_page/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/views/my_page +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/views/my_page http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z b06dfe20a85191516f81de5874f37ec6 2009-04-05T13:33:54.194067Z 2659 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/wiki_formatting/.svn/entries --- a/lib/redmine/wiki_formatting/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/wiki_formatting +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:14.000000Z 879f8ce24a6bb5e4f5ea3b6f798b7a63 2010-11-06T17:47:27.890964Z 4376 diff -r fca2657f4aa5 -r eeebe205a056 lib/redmine/wiki_formatting/textile/.svn/entries --- a/lib/redmine/wiki_formatting/textile/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/redmine/wiki_formatting/textile/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/lib/redmine/wiki_formatting/textile +4993 +http://redmine.rubyforge.org/svn/trunk/lib/redmine/wiki_formatting/textile http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z dec83b1d0d7f682d1ebf1f172fe3c90b 2009-11-11T10:55:19.574870Z 3025 @@ -66,7 +66,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:14.000000Z b8052f700ecb0991fabdd3a5b684a412 2010-11-06T17:47:27.890964Z 4376 diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/all-wcprops --- a/lib/tasks/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4687/trunk/lib/tasks +/svn/!svn/ver/4950/trunk/lib/tasks END deprecated.rake K 25 @@ -39,6 +39,12 @@ V 52 /svn/!svn/ver/4405/trunk/lib/tasks/initializers.rake END +ciphering.rake +K 25 +svn:wc:ra_dav:version-url +V 49 +/svn/!svn/ver/4950/trunk/lib/tasks/ciphering.rake +END permissions.rake K 25 svn:wc:ra_dav:version-url @@ -55,7 +61,7 @@ K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4687/trunk/lib/tasks/testing.rake +/svn/!svn/ver/4806/trunk/lib/tasks/testing.rake END watchers.rake K 25 @@ -79,7 +85,7 @@ K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4254/trunk/lib/tasks/locales.rake +/svn/!svn/ver/4937/trunk/lib/tasks/locales.rake END migrate_from_trac.rake K 25 @@ -91,7 +97,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4599/trunk/lib/tasks/migrate_from_mantis.rake +/svn/!svn/ver/4765/trunk/lib/tasks/migrate_from_mantis.rake END email.rake K 25 diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/entries --- a/lib/tasks/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/lib/tasks http://redmine.rubyforge.org/svn -2011-01-11T08:41:11.973101Z -4687 -tmaruyama +2011-02-26T13:09:25.657748Z +4950 +jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 03301be8b264b5cb46d05896861dcc4d 2007-09-02T08:08:10.346505Z 691 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 2ee57ccc06c675e55c38a4153a27c7c3 2010-05-01T09:37:46.451305Z 3721 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 0c57af5536009680bb8c3c3302fc628d 2006-07-29T09:32:58.780216Z 12 @@ -134,7 +134,7 @@ -2010-09-24T12:48:29.799790Z +2011-03-03T11:05:14.000000Z 07fcf57752978d65a694eb57adcc0851 2010-09-20T23:17:51.402972Z 4167 @@ -162,13 +162,47 @@ 1606 +metrics.rake +file + + + + +2011-03-03T11:05:14.000000Z +0254f4ee916dee0a2572e63e947f8a1b +2009-07-27T00:55:43.057910Z +2825 +edavis10 + + + + + + + + + + + + + + + + + + + + + +113 + initializers.rake file -2010-11-19T13:04:51.424933Z +2011-03-03T11:05:14.000000Z c25b466de7654465538a91e5f5ab32b9 2010-11-14T15:14:19.280754Z 4405 @@ -196,17 +230,18 @@ 1343 -metrics.rake +ciphering.rake file -2010-09-23T14:37:45.063748Z -0254f4ee916dee0a2572e63e947f8a1b -2009-07-27T00:55:43.057910Z -2825 -edavis10 +2011-03-03T11:40:18.000000Z +b522c20249b1fad89c3276d10ccaaf6b +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props @@ -227,8 +262,7 @@ - -113 +1409 permissions.rake file @@ -236,7 +270,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 010fbb563237ff01803aa47736cf863e 2010-08-18T17:23:23.071766Z 3948 @@ -270,7 +304,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 984c757ee4c8fa78f649f8dd34b715cf 2009-03-15T10:03:56.604709Z 2592 @@ -304,10 +338,10 @@ -2011-01-13T14:11:09.000000Z -62ce14359d5062666d86230adc5ba695 -2011-01-11T08:41:11.973101Z -4687 +2011-03-03T11:40:18.000000Z +ca73c8345daa839f0145c671ad94b91f +2011-02-11T15:30:45.959165Z +4806 tmaruyama @@ -330,7 +364,7 @@ -3280 +3376 watchers.rake file @@ -338,7 +372,7 @@ -2010-09-23T14:37:45.067787Z +2011-03-03T11:05:14.000000Z 16eaf27a5959829a12961ff16e233600 2009-12-13T12:39:22.716082Z 3167 @@ -366,13 +400,47 @@ 180 +plugins.rake +file + + + + +2011-03-03T11:05:14.000000Z +f27a83cf3f04d7906ac2f3ca40d01a20 +2008-09-05T10:31:06.632668Z +1786 +jplang + + + + + + + + + + + + + + + + + + + + + +1256 + yardoc.rake file -2010-09-23T14:37:45.067787Z +2011-03-03T11:05:14.000000Z 5c9889bed6f4a4d18dbeb3d904855bb6 2010-08-07T15:11:26.667915Z 3922 @@ -400,51 +468,17 @@ 578 -plugins.rake -file - - - - -2010-09-23T14:37:45.067787Z -f27a83cf3f04d7906ac2f3ca40d01a20 -2008-09-05T10:31:06.632668Z -1786 -jplang - - - - - - - - - - - - - - - - - - - - - -1256 - locales.rake file -2010-11-19T13:04:51.424933Z -8cb19171aae8528b3149b7efa211fc50 -2010-10-15T22:41:47.658318Z -4254 -edavis10 +2011-03-03T11:40:18.000000Z +ceb44040708bb290ad5b62b5a366e823 +2011-02-23T18:03:33.945201Z +4937 +jplang has-props @@ -466,7 +500,7 @@ -3360 +4250 migrate_from_trac.rake file @@ -474,7 +508,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z db60f05f7cd325cbdd984f0b6d7b42ea 2010-12-31T15:30:50.544770Z 4599 @@ -508,10 +542,10 @@ -2011-01-13T14:11:09.000000Z -3155277c35e0978585a77b55a40901fb -2010-12-31T15:30:50.544770Z -4599 +2011-03-03T11:05:14.000000Z +ba7db3c8df92c72d300288ec7276dbad +2011-01-28T19:45:09.952949Z +4765 jplang @@ -534,7 +568,7 @@ -19137 +19166 email.rake file @@ -542,7 +576,7 @@ -2010-11-19T13:04:51.424933Z +2011-03-03T11:05:14.000000Z 7875b7a15307c626a93c284f33757320 2010-10-15T22:50:33.240825Z 4256 @@ -576,7 +610,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 82e0901f7cbdda05ed63c12a764c3614 2007-09-23T17:19:27.414302Z 752 @@ -610,7 +644,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z 93f8964aea856c06fb2eaa62ca2023c2 2011-01-06T18:52:37.169690Z 4643 @@ -644,7 +678,7 @@ -2010-09-23T14:37:45.063748Z +2011-03-03T11:05:14.000000Z 320b77011663b1209247bb809bc43ecb 2008-02-16T16:25:58.204498Z 1155 diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/prop-base/ciphering.rake.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/tasks/.svn/prop-base/ciphering.rake.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/text-base/ciphering.rake.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/tasks/.svn/text-base/ciphering.rake.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +namespace :db do + desc 'Encrypts SCM and LDAP passwords in the database.' + task :encrypt => :environment do + unless (Repository.encrypt_all(:password) && + AuthSource.encrypt_all(:account_password)) + raise "Some objects could not be saved after encryption, update was rollback'ed." + end + end + + desc 'Decrypts SCM and LDAP passwords in the database.' + task :decrypt => :environment do + unless (Repository.decrypt_all(:password) && + AuthSource.decrypt_all(:account_password)) + raise "Some objects could not be saved after decryption, update was rollback'ed." + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/text-base/locales.rake.svn-base --- a/lib/tasks/.svn/text-base/locales.rake.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/.svn/text-base/locales.rake.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,3 +1,10 @@ +desc 'Updates and checks locales against en.yml' +task :locales do + %w(locales:update locales:check_interpolation).collect do |task| + Rake::Task[task].invoke + end +end + namespace :locales do desc 'Updates language files based on en.yml content (only works for new top level keys).' task :update do @@ -28,6 +35,26 @@ lang.close end end + + desc 'Checks interpolation arguments in locals against en.yml' + task :check_interpolation do + dir = ENV['DIR'] || './config/locales' + en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en'] + files = Dir.glob(File.join(dir,'*.{yaml,yml}')) + files.each do |file| + file_strings = YAML.load(File.read(file)) + file_strings = file_strings[file_strings.keys.first] + + file_strings.each do |key, string| + next unless string.is_a?(String) + string.scan /%\{\w+\}/ do |match| + unless en_strings[key].nil? || en_strings[key].include?(match) + puts "#{file}: #{key} uses #{match} not found in en.yml" + end + end + end + end + end desc <<-END_DESC Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows). diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/text-base/migrate_from_mantis.rake.svn-base --- a/lib/tasks/.svn/text-base/migrate_from_mantis.rake.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/.svn/text-base/migrate_from_mantis.rake.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -287,7 +287,7 @@ project.versions.each do |version| v = Version.new :name => encode(version.version), :description => encode(version.description), - :effective_date => version.date_order.to_date + :effective_date => (version.date_order ? version.date_order.to_date : nil) v.project = p v.save versions_map[version.id] = v.id diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/.svn/text-base/testing.rake.svn-base --- a/lib/tasks/.svn/text-base/testing.rake.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/.svn/text-base/testing.rake.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -51,7 +51,8 @@ (supported_scms - [:subversion, :mercurial]).each do |scm| desc "Creates a test #{scm} repository" task scm => :create_dir do - system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" + # system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" + system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz" end end diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/ciphering.rake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/tasks/ciphering.rake Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +namespace :db do + desc 'Encrypts SCM and LDAP passwords in the database.' + task :encrypt => :environment do + unless (Repository.encrypt_all(:password) && + AuthSource.encrypt_all(:account_password)) + raise "Some objects could not be saved after encryption, update was rollback'ed." + end + end + + desc 'Decrypts SCM and LDAP passwords in the database.' + task :decrypt => :environment do + unless (Repository.decrypt_all(:password) && + AuthSource.decrypt_all(:account_password)) + raise "Some objects could not be saved after decryption, update was rollback'ed." + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/locales.rake --- a/lib/tasks/locales.rake Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/locales.rake Thu Mar 03 12:02:03 2011 +0000 @@ -1,3 +1,10 @@ +desc 'Updates and checks locales against en.yml' +task :locales do + %w(locales:update locales:check_interpolation).collect do |task| + Rake::Task[task].invoke + end +end + namespace :locales do desc 'Updates language files based on en.yml content (only works for new top level keys).' task :update do @@ -28,6 +35,26 @@ lang.close end end + + desc 'Checks interpolation arguments in locals against en.yml' + task :check_interpolation do + dir = ENV['DIR'] || './config/locales' + en_strings = YAML.load(File.read(File.join(dir,'en.yml')))['en'] + files = Dir.glob(File.join(dir,'*.{yaml,yml}')) + files.each do |file| + file_strings = YAML.load(File.read(file)) + file_strings = file_strings[file_strings.keys.first] + + file_strings.each do |key, string| + next unless string.is_a?(String) + string.scan /%\{\w+\}/ do |match| + unless en_strings[key].nil? || en_strings[key].include?(match) + puts "#{file}: #{key} uses #{match} not found in en.yml" + end + end + end + end + end desc <<-END_DESC Removes a translation string from all locale file (only works for top-level childless non-multiline keys, probably doesn\'t work on windows). diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/migrate_from_mantis.rake --- a/lib/tasks/migrate_from_mantis.rake Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/migrate_from_mantis.rake Thu Mar 03 12:02:03 2011 +0000 @@ -287,7 +287,7 @@ project.versions.each do |version| v = Version.new :name => encode(version.version), :description => encode(version.description), - :effective_date => version.date_order.to_date + :effective_date => (version.date_order ? version.date_order.to_date : nil) v.project = p v.save versions_map[version.id] = v.id diff -r fca2657f4aa5 -r eeebe205a056 lib/tasks/testing.rake --- a/lib/tasks/testing.rake Thu Jan 20 09:59:02 2011 +0000 +++ b/lib/tasks/testing.rake Thu Mar 03 12:02:03 2011 +0000 @@ -51,7 +51,8 @@ (supported_scms - [:subversion, :mercurial]).each do |scm| desc "Creates a test #{scm} repository" task scm => :create_dir do - system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" + # system "gunzip < test/fixtures/repositories/#{scm}_repository.tar.gz | tar -xv -C tmp/test" + system "tar -xvz -C tmp/test -f test/fixtures/repositories/#{scm}_repository.tar.gz" end end diff -r fca2657f4aa5 -r eeebe205a056 log/.svn/entries --- a/log/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/log/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/log +4993 +http://redmine.rubyforge.org/svn/trunk/log http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:11.000000Z ae0415159f2c4dba3fc1a559d4c0f9f5 2006-10-15T09:00:05.847811Z 31 diff -r fca2657f4aa5 -r eeebe205a056 public/.htaccess --- a/public/.htaccess Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -# General Apache options - - AddHandler fastcgi-script .fcgi - - - AddHandler fcgid-script .fcgi - - - AddHandler cgi-script .cgi - -Options +FollowSymLinks +ExecCGI - -# If you don't want Rails to look in certain directories, -# use the following rewrite rules so that Apache won't rewrite certain requests -# -# Example: -# RewriteCond %{REQUEST_URI} ^/notrails.* -# RewriteRule .* - [L] - -# Redirect all requests not available on the filesystem to Rails -# By default the cgi dispatcher is used which is very slow -# -# For better performance replace the dispatcher with the fastcgi one -# -# Example: -# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] -RewriteEngine On - -# If your Rails application is accessed via an Alias directive, -# then you MUST also set the RewriteBase in this htaccess file. -# -# Example: -# Alias /myrailsapp /path/to/myrailsapp/public -# RewriteBase /myrailsapp - -RewriteRule ^$ index.html [QSA] -RewriteRule ^([^.]+)$ $1.html [QSA] -RewriteCond %{REQUEST_FILENAME} !-f - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.cgi [QSA,L] - - -# In case Rails experiences terminal errors -# Instead of displaying this message you can supply a file here which will be rendered instead -# -# Example: -# ErrorDocument 500 /500.html - -ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 public/.svn/all-wcprops --- a/public/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/public/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,47 @@ K 25 svn:wc:ra_dav:version-url -V 45 -/svn/!svn/ver/4702/trunk/public +V 31 +/svn/!svn/ver/4954/trunk/public END +dispatch.fcgi.example +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/2017/trunk/public/dispatch.fcgi.example +END +500.html +K 25 +svn:wc:ra_dav:version-url +V 39 +/svn/!svn/ver/419/trunk/public/500.html +END +404.html +K 25 +svn:wc:ra_dav:version-url +V 39 +/svn/!svn/ver/419/trunk/public/404.html +END +dispatch.cgi.example +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/2017/trunk/public/dispatch.cgi.example +END +dispatch.rb.example +K 25 +svn:wc:ra_dav:version-url +V 51 +/svn/!svn/ver/2017/trunk/public/dispatch.rb.example +END +favicon.ico +K 25 +svn:wc:ra_dav:version-url +V 43 +/svn/!svn/ver/3845/trunk/public/favicon.ico +END +htaccess.fcgi.example +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/4775/trunk/public/htaccess.fcgi.example +END diff -r fca2657f4aa5 -r eeebe205a056 public/.svn/entries --- a/public/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/public http://redmine.rubyforge.org/svn -2011-01-11T20:37:31.480170Z -4702 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.075747Z +2011-03-03T11:05:14.000000Z aeefa1552a4af651eadd16f4e0bb1323 2008-11-11T13:54:10.112610Z 2017 @@ -72,7 +72,7 @@ -2010-09-23T14:37:45.071747Z +2011-03-03T11:05:14.000000Z b78e2e9e0cd94c786bb9404516e062c4 2007-04-04T18:20:45.423396Z 419 @@ -112,7 +112,7 @@ -2010-09-23T14:37:45.071747Z +2011-03-03T11:05:14.000000Z 5acfd3818d5f470c26a1af577d06195e 2007-04-04T18:20:45.423396Z 419 @@ -146,7 +146,7 @@ -2010-09-23T14:37:45.071747Z +2011-03-03T11:05:14.000000Z 5a5128856eb14ac7b3f94099cb504775 2008-11-11T13:54:10.112610Z 2017 @@ -174,47 +174,13 @@ 477 -.htaccess -file - - - - -2010-09-23T14:37:45.067787Z -67c99c6ef23adb15d9efed92be959b6e -2007-11-27T17:20:57.329371Z -934 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1632 - dispatch.rb.example file -2010-09-23T14:37:45.075747Z +2011-03-03T11:05:14.000000Z 5a5128856eb14ac7b3f94099cb504775 2008-11-11T13:54:10.112610Z 2017 @@ -251,7 +217,7 @@ -2010-07-23T14:49:47.756104Z +2011-03-03T11:05:14.000000Z 6d85758acb4f4baa4d242ba451c91026 2010-07-16T03:45:50.104236Z 3845 @@ -279,3 +245,37 @@ 7886 +htaccess.fcgi.example +file + + + + +2011-03-03T11:05:14.000000Z +67c99c6ef23adb15d9efed92be959b6e +2011-01-30T06:31:28.038726Z +4775 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1632 + diff -r fca2657f4aa5 -r eeebe205a056 public/.svn/prop-base/.htaccess.svn-base --- a/public/.svn/prop-base/.htaccess.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 9 -eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 public/.svn/prop-base/htaccess.fcgi.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/.svn/prop-base/htaccess.fcgi.example.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 9 +eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 public/.svn/text-base/.htaccess.svn-base --- a/public/.svn/text-base/.htaccess.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -# General Apache options - - AddHandler fastcgi-script .fcgi - - - AddHandler fcgid-script .fcgi - - - AddHandler cgi-script .cgi - -Options +FollowSymLinks +ExecCGI - -# If you don't want Rails to look in certain directories, -# use the following rewrite rules so that Apache won't rewrite certain requests -# -# Example: -# RewriteCond %{REQUEST_URI} ^/notrails.* -# RewriteRule .* - [L] - -# Redirect all requests not available on the filesystem to Rails -# By default the cgi dispatcher is used which is very slow -# -# For better performance replace the dispatcher with the fastcgi one -# -# Example: -# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] -RewriteEngine On - -# If your Rails application is accessed via an Alias directive, -# then you MUST also set the RewriteBase in this htaccess file. -# -# Example: -# Alias /myrailsapp /path/to/myrailsapp/public -# RewriteBase /myrailsapp - -RewriteRule ^$ index.html [QSA] -RewriteRule ^([^.]+)$ $1.html [QSA] -RewriteCond %{REQUEST_FILENAME} !-f - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] - - - RewriteRule ^(.*)$ dispatch.cgi [QSA,L] - - -# In case Rails experiences terminal errors -# Instead of displaying this message you can supply a file here which will be rendered instead -# -# Example: -# ErrorDocument 500 /500.html - -ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 public/.svn/text-base/htaccess.fcgi.example.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/.svn/text-base/htaccess.fcgi.example.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,55 @@ +# General Apache options + + AddHandler fastcgi-script .fcgi + + + AddHandler fcgid-script .fcgi + + + AddHandler cgi-script .cgi + +Options +FollowSymLinks +ExecCGI + +# If you don't want Rails to look in certain directories, +# use the following rewrite rules so that Apache won't rewrite certain requests +# +# Example: +# RewriteCond %{REQUEST_URI} ^/notrails.* +# RewriteRule .* - [L] + +# Redirect all requests not available on the filesystem to Rails +# By default the cgi dispatcher is used which is very slow +# +# For better performance replace the dispatcher with the fastcgi one +# +# Example: +# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] +RewriteEngine On + +# If your Rails application is accessed via an Alias directive, +# then you MUST also set the RewriteBase in this htaccess file. +# +# Example: +# Alias /myrailsapp /path/to/myrailsapp/public +# RewriteBase /myrailsapp + +RewriteRule ^$ index.html [QSA] +RewriteRule ^([^.]+)$ $1.html [QSA] +RewriteCond %{REQUEST_FILENAME} !-f + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.cgi [QSA,L] + + +# In case Rails experiences terminal errors +# Instead of displaying this message you can supply a file here which will be rendered instead +# +# Example: +# ErrorDocument 500 /500.html + +ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 public/favicon.ico Binary file public/favicon.ico has changed diff -r fca2657f4aa5 -r eeebe205a056 public/help/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/help/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 36 +/svn/!svn/ver/4758/trunk/public/help +END +wiki_syntax_detailed.html +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4758/trunk/public/help/wiki_syntax_detailed.html +END +wiki_syntax.html +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/1803/trunk/public/help/wiki_syntax.html +END diff -r fca2657f4aa5 -r eeebe205a056 public/help/.svn/entries --- a/public/help/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/help/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/help +4993 +http://redmine.rubyforge.org/svn/trunk/public/help http://redmine.rubyforge.org/svn -2010-10-29T22:48:59.506153Z -4308 -jbbarth +2011-01-23T16:12:38.944844Z +4758 +jplang @@ -32,11 +32,11 @@ -2010-11-30T13:11:53.000000Z -380699b753ffb01cba5c9504216ff64b -2010-10-29T22:48:59.506153Z -4308 -jbbarth +2011-03-03T11:05:14.000000Z +4e4c86877abc332b323cde0e35f235fa +2011-01-23T16:12:38.944844Z +4758 +jplang @@ -58,7 +58,7 @@ -11397 +12098 wiki_syntax.html file @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z f3c9e77ebd5a0c8e580df191a00bc01c 2008-09-13T09:45:07.868598Z 1803 diff -r fca2657f4aa5 -r eeebe205a056 public/help/.svn/text-base/wiki_syntax_detailed.html.svn-base --- a/public/help/.svn/text-base/wiki_syntax_detailed.html.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/public/help/.svn/text-base/wiki_syntax_detailed.html.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -46,7 +46,9 @@
    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to a changeset: r758 (displays r758)
    • -
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd). Added in r1236.
    • +
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd).
    • +
    • Link to a changeset of another project: sandbox:r758 (displays sanbox:r758)
    • +
    • Link to a changeset with a non-numeric hash: sandbox:c6f4d0fd (displays sandbox:c6f4d0fd).

    Wiki links:

    @@ -74,7 +76,7 @@
  • document#17 (link to document with id 17)
  • document:Greetings (link to the document with title "Greetings")
  • document:"Some document" (double quotes can be used when document title contains spaces)
  • -
  • document:some_project:"Some document" (link to a document with title "Some document" in other project "some_project") +
  • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
  • @@ -84,6 +86,7 @@
  • version#3 (link to version with id 3)
  • version:1.0.0 (link to version named "1.0.0")
  • version:"1.0 beta 2"
  • +
  • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
  • @@ -103,7 +106,9 @@
  • source:some/file#L120 (link to line 120 of the file)
  • source:some/file@52#L120 (link to line 120 of the file's revision 52)
  • source:"some file@52#L120" (use double quotes when the URL contains spaces
  • -
  • export:some/file (force the download of the file)
  • +
  • export:some/file (force the download of the file)
  • +
  • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
  • +
  • sandbox:export:some/file (force the download of the file)
  • diff -r fca2657f4aa5 -r eeebe205a056 public/help/wiki_syntax_detailed.html --- a/public/help/wiki_syntax_detailed.html Thu Jan 20 09:59:02 2011 +0000 +++ b/public/help/wiki_syntax_detailed.html Thu Mar 03 12:02:03 2011 +0000 @@ -46,7 +46,9 @@
    • Link to an issue: #124 (displays #124, link is striked-through if the issue is closed)
    • Link to a changeset: r758 (displays r758)
    • -
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd). Added in r1236.
    • +
    • Link to a changeset with a non-numeric hash: commit:c6f4d0fd (displays c6f4d0fd).
    • +
    • Link to a changeset of another project: sandbox:r758 (displays sanbox:r758)
    • +
    • Link to a changeset with a non-numeric hash: sandbox:c6f4d0fd (displays sandbox:c6f4d0fd).

    Wiki links:

    @@ -74,7 +76,7 @@
  • document#17 (link to document with id 17)
  • document:Greetings (link to the document with title "Greetings")
  • document:"Some document" (double quotes can be used when document title contains spaces)
  • -
  • document:some_project:"Some document" (link to a document with title "Some document" in other project "some_project") +
  • sandbox:document:"Some document" (link to a document with title "Some document" in other project "sandbox")
  • @@ -84,6 +86,7 @@
  • version#3 (link to version with id 3)
  • version:1.0.0 (link to version named "1.0.0")
  • version:"1.0 beta 2"
  • +
  • sandbox:version:1.0.0 (link to version "1.0.0" in the project "sandbox")
  • @@ -103,7 +106,9 @@
  • source:some/file#L120 (link to line 120 of the file)
  • source:some/file@52#L120 (link to line 120 of the file's revision 52)
  • source:"some file@52#L120" (use double quotes when the URL contains spaces
  • -
  • export:some/file (force the download of the file)
  • +
  • export:some/file (force the download of the file)
  • +
  • sandbox:source:some/file (link to the file located at /some/file in the repository of the project "sandbox")
  • +
  • sandbox:export:some/file (force the download of the file)
  • diff -r fca2657f4aa5 -r eeebe205a056 public/htaccess.fcgi.example --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/htaccess.fcgi.example Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,55 @@ +# General Apache options + + AddHandler fastcgi-script .fcgi + + + AddHandler fcgid-script .fcgi + + + AddHandler cgi-script .cgi + +Options +FollowSymLinks +ExecCGI + +# If you don't want Rails to look in certain directories, +# use the following rewrite rules so that Apache won't rewrite certain requests +# +# Example: +# RewriteCond %{REQUEST_URI} ^/notrails.* +# RewriteRule .* - [L] + +# Redirect all requests not available on the filesystem to Rails +# By default the cgi dispatcher is used which is very slow +# +# For better performance replace the dispatcher with the fastcgi one +# +# Example: +# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] +RewriteEngine On + +# If your Rails application is accessed via an Alias directive, +# then you MUST also set the RewriteBase in this htaccess file. +# +# Example: +# Alias /myrailsapp /path/to/myrailsapp/public +# RewriteBase /myrailsapp + +RewriteRule ^$ index.html [QSA] +RewriteRule ^([^.]+)$ $1.html [QSA] +RewriteCond %{REQUEST_FILENAME} !-f + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] + + + RewriteRule ^(.*)$ dispatch.cgi [QSA,L] + + +# In case Rails experiences terminal errors +# Instead of displaying this message you can supply a file here which will be rendered instead +# +# Example: +# ErrorDocument 500 /500.html + +ErrorDocument 500 "

    Application error

    Rails application failed to start properly" \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 public/images/.svn/all-wcprops --- a/public/images/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/public/images/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -51,12 +51,6 @@ V 50 /svn/!svn/ver/3419/trunk/public/images/warning.png END -reload.png -K 25 -svn:wc:ra_dav:version-url -V 49 -/svn/!svn/ver/3430/trunk/public/images/reload.png -END move.png K 25 svn:wc:ra_dav:version-url @@ -69,6 +63,12 @@ V 50 /svn/!svn/ver/3419/trunk/public/images/fav_off.png END +reload.png +K 25 +svn:wc:ra_dav:version-url +V 49 +/svn/!svn/ver/3430/trunk/public/images/reload.png +END project_marker.png K 25 svn:wc:ra_dav:version-url @@ -189,18 +189,18 @@ V 52 /svn/!svn/ver/4072/trunk/public/images/task_done.png END +bullet_delete.png +K 25 +svn:wc:ra_dav:version-url +V 56 +/svn/!svn/ver/3419/trunk/public/images/bullet_delete.png +END text_list_bullets.png K 25 svn:wc:ra_dav:version-url V 60 /svn/!svn/ver/3419/trunk/public/images/text_list_bullets.png END -bullet_delete.png -K 25 -svn:wc:ra_dav:version-url -V 56 -/svn/!svn/ver/3419/trunk/public/images/bullet_delete.png -END bullet_arrow_left.png K 25 svn:wc:ra_dav:version-url @@ -381,18 +381,18 @@ V 47 /svn/!svn/ver/3419/trunk/public/images/true.png END +arrow_down.png +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/3419/trunk/public/images/arrow_down.png +END 2uparrow.png K 25 svn:wc:ra_dav:version-url V 51 /svn/!svn/ver/3419/trunk/public/images/2uparrow.png END -arrow_down.png -K 25 -svn:wc:ra_dav:version-url -V 53 -/svn/!svn/ver/3419/trunk/public/images/arrow_down.png -END cancel.png K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 public/images/.svn/entries --- a/public/images/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/images/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/public/images http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 45d9f8f4b7723c5df684fd6785b40700 2010-02-13T09:08:12.698526Z 3419 @@ -66,7 +66,7 @@ -2011-01-13T14:11:09.000000Z +2011-03-03T11:05:14.000000Z 7042481efe0084860d2a7b176086b306 2010-12-18T16:06:20.343240Z 4534 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 2455a62f4801926d7c69099f5134c867 2010-02-13T09:08:12.698526Z 3419 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z bc6f6e0d67aba9e7689e852dad4977f9 2010-02-13T09:08:12.698526Z 3419 @@ -168,7 +168,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z ecc1979ed435769c700725495428359f 2010-09-10T03:09:02.311267Z 4072 @@ -196,13 +196,47 @@ 160 +folder_open_add.png +file + + + + +2011-03-03T11:05:14.000000Z +8ae3a2d9ef884ed73a4157cd9c0465b8 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +375 + 2downarrow.png file -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 6730b4ea633194233bec98ee5f7a3977 2010-02-13T09:08:12.698526Z 3419 @@ -230,47 +264,13 @@ 282 -folder_open_add.png -file - - - - -2010-09-23T14:37:45.139758Z -8ae3a2d9ef884ed73a4157cd9c0465b8 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -375 - warning.png file -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z f1cdd6ad27b9211924dcd8a4c8133f1b 2010-02-13T09:08:12.698526Z 3419 @@ -298,13 +298,47 @@ 613 +move.png +file + + + + +2011-03-03T11:05:14.000000Z +0a2ceb01cbc3c01186fdcc25ced8eb0d +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +321 + fav_off.png file -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z ff96c02d8f18116bb3f005f2c8b86e91 2010-02-13T09:08:12.698526Z 3419 @@ -332,47 +366,13 @@ 211 -move.png -file - - - - -2010-09-23T14:37:45.155802Z -0a2ceb01cbc3c01186fdcc25ced8eb0d -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -321 - reload.png file -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z a20844852ce8909ed4a19ccb0f6c6518 2010-02-14T13:13:16.743297Z 3430 @@ -406,7 +406,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 94cfc6b14b69f8eb30909fa1a0d8721d 2010-09-10T03:09:02.311267Z 4072 @@ -440,7 +440,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 6a0f06b7f2b400d1d7b07180a909fed2 2010-02-13T09:08:12.698526Z 3419 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 91b883d074b727f1a95cd0ce48510a3c 2010-02-13T09:08:12.698526Z 3419 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z acd6a5a422b44466803829ce8a12fd9a 2010-02-13T09:08:12.698526Z 3419 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 63c87d73f46ed17a4ebc2b5a7e6cd6f4 2010-02-13T09:08:12.698526Z 3419 @@ -576,7 +576,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 45e9710ba200afbac6ba55970bd9d625 2010-02-23T21:10:15.865943Z 3477 @@ -613,7 +613,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 7604387e10f9c0be473a497ee5f516b8 2010-02-13T09:08:12.698526Z 3419 @@ -647,7 +647,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 66da3813f290297bc39d289b859c3818 2010-02-13T09:08:12.698526Z 3419 @@ -681,7 +681,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 0c32351cd2f92465a51d8da771bd92cb 2010-02-13T09:08:12.698526Z 3419 @@ -715,7 +715,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 59894f5d5656b1f6e2af9c22187e6e86 2010-09-10T03:09:02.311267Z 4072 @@ -749,7 +749,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 30a7571b4822a789787f2a8b25ad4808 2010-02-13T09:08:12.698526Z 3419 @@ -783,7 +783,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 80f689a299e7e69fb2512482bca6f5d4 2010-02-13T09:08:12.698526Z 3419 @@ -817,7 +817,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z ce8f2e6769f9abc327609dea0ded14e5 2010-02-13T09:08:12.698526Z 3419 @@ -851,7 +851,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 242909ef391b4ebc83d53b13b4d90991 2010-02-13T09:08:12.698526Z 3419 @@ -885,7 +885,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z cf95da81d3626d67d5f49792341e396a 2010-02-13T09:08:12.698526Z 3419 @@ -919,7 +919,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 62d29dab3c8967d0ca404a25059c3dbd 2010-02-13T09:08:12.698526Z 3419 @@ -953,7 +953,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z eecb8adaaeabcff6c838886809c85f93 2010-02-13T09:08:12.698526Z 3419 @@ -987,7 +987,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 898a97e88d0cfc1dd41a6903d0a7cd72 2010-02-13T09:08:12.698526Z 3419 @@ -1021,7 +1021,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 3713155c5afcfeffaf877126d6b942aa 2010-02-13T09:08:12.698526Z 3419 @@ -1055,7 +1055,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 40c58172e0c52eee4deb5227ec37f0cf 2010-09-10T03:09:02.311267Z 4072 @@ -1089,7 +1089,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z fba036d7348ff28f7ab7dacbc52bc32a 2010-02-13T09:08:12.698526Z 3419 @@ -1123,7 +1123,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 01c137e009015642700b935edb321a89 2010-02-13T09:08:12.698526Z 3419 @@ -1157,7 +1157,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z ef1412a13d9113c5e5e85cfcd8300d9d 2010-02-13T09:08:12.698526Z 3419 @@ -1191,7 +1191,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z b2e4e10fb114db28b9245210a5505c44 2010-02-14T11:52:12.027647Z 3426 @@ -1225,7 +1225,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z e0d9ad958faa1c07b84c78c7b7e5ffae 2010-02-13T09:08:12.698526Z 3419 @@ -1259,7 +1259,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 3eb9e517f1a10430f7ec0ed7d30e05d8 2010-02-13T09:08:12.698526Z 3419 @@ -1293,7 +1293,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z e341b581fbbf8a5d038c8432409ceb5f 2010-02-23T21:10:15.865943Z 3477 @@ -1327,7 +1327,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 981a44ce8d3f71125a300dece0cc0f21 2010-02-13T09:08:12.698526Z 3419 @@ -1361,7 +1361,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z c4e01ea1c0ce5a1cd5154dfd2512fb21 2010-02-13T09:08:12.698526Z 3419 @@ -1395,7 +1395,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 944495c065d05a9161ad7da534703010 2010-02-13T09:08:12.698526Z 3419 @@ -1423,13 +1423,47 @@ 403 +attachment.png +file + + + + +2011-03-03T11:05:14.000000Z +0a35d4eaddb2292fed7062295ee0dcd8 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +939 + textfield.png file -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 985a1dadffeaa303ff1eef4ea53ec0f4 2010-02-13T09:08:12.698526Z 3419 @@ -1457,47 +1491,13 @@ 100 -attachment.png -file - - - - -2010-09-23T14:37:45.123788Z -0a35d4eaddb2292fed7062295ee0dcd8 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -939 - false.png file -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z f0c51de3ba403e552c8ab6e8084448a4 2010-02-13T09:08:12.698526Z 3419 @@ -1525,13 +1525,47 @@ 459 +bullet_toggle_plus.png +file + + + + +2011-03-03T11:05:14.000000Z +06cbf5da7daca348a87a6299a4112d71 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +217 + unlock.png file -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z fa1be48a747127ee34d4fae020b825d4 2010-02-14T13:13:16.743297Z 3430 @@ -1559,47 +1593,13 @@ 448 -bullet_toggle_plus.png -file - - - - -2010-09-23T14:37:45.127811Z -06cbf5da7daca348a87a6299a4112d71 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -217 - group.png file -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 8e1056421acf9e61af00f0dcb83fef12 2010-02-13T09:08:12.698526Z 3419 @@ -1627,13 +1627,115 @@ 700 +plugin.png +file + + + + +2011-03-03T11:05:14.000000Z +e019855b07d30f1ce1baf59b9df27125 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +538 + +loading.gif +file + + + + +2011-03-03T11:05:14.000000Z +03ce3dcc84af110e9da8699a841e5200 +2006-12-03T19:55:45.161980Z +62 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1553 + +bullet_blue.png +file + + + + +2011-03-03T11:05:14.000000Z +3363f60299360fb5539b769d089e145f +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +241 + save.png file -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 9e64db8f4905a17e3a6f68792cd5e199 2010-02-13T09:08:12.698526Z 3419 @@ -1661,115 +1763,13 @@ 440 -bullet_blue.png -file - - - - -2010-09-23T14:37:45.123788Z -3363f60299360fb5539b769d089e145f -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -241 - -loading.gif -file - - - - -2010-09-23T14:37:45.151760Z -03ce3dcc84af110e9da8699a841e5200 -2006-12-03T19:55:45.161980Z -62 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1553 - -plugin.png -file - - - - -2010-09-23T14:37:45.155802Z -e019855b07d30f1ce1baf59b9df27125 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -538 - bullet_add.png file -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 848b802c0ce8e051f98f086f6e31c8cd 2010-02-13T09:08:12.698526Z 3419 @@ -1803,7 +1803,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z eec8605f3797315b2d8397422df1aed3 2010-02-13T09:08:12.698526Z 3419 @@ -1837,7 +1837,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z 40c58172e0c52eee4deb5227ec37f0cf 2010-09-10T03:09:02.311267Z 4072 @@ -1871,7 +1871,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 7b5dcbdd0de4541b39e1302b6277684d 2010-02-13T09:08:12.698526Z 3419 @@ -1905,7 +1905,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z dca02b582c10127fcdc8af47e94d4e4c 2010-02-13T09:08:12.698526Z 3419 @@ -1933,13 +1933,81 @@ 608 +folder.png +file + + + + +2011-03-03T11:05:14.000000Z +59f2dc025632f00403490176e7f42bfc +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +970 + +report.png +file + + + + +2011-03-03T11:05:14.000000Z +8d8ec49f5773997411ff708a82e40568 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1014 + zoom_out.png file -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 42b319d6ad0249fb20833a17d5f373a4 2010-02-13T09:08:12.698526Z 3419 @@ -1967,81 +2035,13 @@ 461 -report.png -file - - - - -2010-09-23T14:37:45.155802Z -8d8ec49f5773997411ff708a82e40568 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1014 - -folder.png -file - - - - -2010-09-23T14:37:45.139758Z -59f2dc025632f00403490176e7f42bfc -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -970 - fav.png file -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 29feed9e7b5c34854bf9f9f39681e06b 2010-02-13T09:08:12.698526Z 3419 @@ -2075,7 +2075,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z c4c76ce450e3e838afd6aa8f34a8d9a8 2010-02-13T09:08:12.698526Z 3419 @@ -2109,7 +2109,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 97c12039afee2ea9c5a13e74f6fa5c0c 2010-02-13T09:08:12.698526Z 3419 @@ -2143,7 +2143,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z a30b3000c7286879d10ca1fbff06f71d 2010-02-13T09:08:12.698526Z 3419 @@ -2171,13 +2171,47 @@ 248 +arrow_down.png +file + + + + +2011-03-03T11:05:14.000000Z +ed9b7ced8e3b6275c14d528dc6909691 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +115 + 2uparrow.png file -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z afef823014efb32adcd9606b69119562 2010-02-13T09:08:12.698526Z 3419 @@ -2205,47 +2239,13 @@ 292 -arrow_down.png -file - - - - -2010-09-23T14:37:45.123788Z -ed9b7ced8e3b6275c14d528dc6909691 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -115 - cancel.png file -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 812bdb688394ba6e2ed3cb7ceb4b7df0 2010-02-13T09:08:12.698526Z 3419 @@ -2279,7 +2279,7 @@ -2010-09-23T14:37:45.139758Z +2011-03-03T11:05:14.000000Z 7e62689a93d0a23cbd1cf2dd754653e2 2010-02-13T09:08:12.698526Z 3419 @@ -2313,7 +2313,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 9856446e5026c8d31704b84e836dc06e 2010-02-13T09:08:12.698526Z 3419 @@ -2347,7 +2347,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z f94f71deb205f49de993ad9521791ada 2010-02-13T09:08:12.698526Z 3419 @@ -2381,7 +2381,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 3ec32bbf3ad9e052833d05c0d41445f0 2010-02-13T09:08:12.698526Z 3419 @@ -2415,7 +2415,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 980dcfdb816ce626e4d2df5c2a308549 2010-02-13T09:08:12.698526Z 3419 @@ -2449,7 +2449,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 3e9542b5042e280bc2fc0ae98c81529f 2010-02-13T09:08:12.698526Z 3419 @@ -2483,7 +2483,7 @@ -2010-09-23T14:37:45.151760Z +2011-03-03T11:05:14.000000Z 9a911ac680f354452f13729921e80d21 2010-02-13T09:08:12.698526Z 3419 @@ -2517,7 +2517,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z ea73bd6514b7d5f1d7ea2bd336f9303a 2010-02-13T09:08:12.698526Z 3419 @@ -2551,7 +2551,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 3b0e537dabdfa5385e76ea465c4ea57b 2010-02-13T09:08:12.698526Z 3419 @@ -2585,7 +2585,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 82e11faddb62c05a1ef9701035919c00 2010-02-13T09:08:12.698526Z 3419 @@ -2619,7 +2619,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z cd3890ab38793e53a99227a180616a70 2010-02-13T09:08:12.698526Z 3419 @@ -2653,7 +2653,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 9a73430b658b4e16668b3e3cc7e241b4 2010-02-13T09:08:12.698526Z 3419 @@ -2687,7 +2687,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 558c616ebcfa38b1c7b298184e58eb91 2010-02-13T09:08:12.698526Z 3419 @@ -2721,7 +2721,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z 2459e5967a6ddd78589ab52970574f3f 2010-02-13T09:08:12.698526Z 3419 @@ -2755,7 +2755,7 @@ -2010-09-23T14:37:45.131805Z +2011-03-03T11:05:14.000000Z 60f9166d90d7aeb71d0ec9ee337c3f5e 2010-02-13T09:08:12.698526Z 3419 @@ -2792,7 +2792,7 @@ -2010-09-23T14:37:45.127811Z +2011-03-03T11:05:14.000000Z cd5b56dff1c089b4e1e3db29b2b7226e 2010-02-13T09:08:12.698526Z 3419 @@ -2826,7 +2826,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 6172a7483daa35983c4ea5a35bd8c64a 2010-07-20T23:50:15.173990Z 3859 @@ -2860,7 +2860,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 6b08128a1b67ecb4b1ed06c9c505ac63 2010-02-13T09:08:12.698526Z 3419 @@ -2894,7 +2894,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 980dcfdb816ce626e4d2df5c2a308549 2010-02-13T09:08:12.698526Z 3419 @@ -2928,7 +2928,7 @@ -2010-09-23T14:37:45.123788Z +2011-03-03T11:05:14.000000Z 035a9d73627fc55aeaa7b553ac82ae9e 2010-02-13T09:08:12.698526Z 3419 @@ -2962,7 +2962,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z 06b4b4425c7439fd898cd68e97f75d0f 2010-02-13T09:08:12.698526Z 3419 @@ -2996,7 +2996,7 @@ -2010-09-23T14:37:45.163769Z +2011-03-03T11:05:14.000000Z d8ae88af42e1b9d1a4f9397041b17cd8 2010-02-13T09:08:12.698526Z 3419 @@ -3030,7 +3030,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 85089bb401af7c5d7325ee317483ac70 2010-02-13T09:08:12.698526Z 3419 @@ -3064,7 +3064,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 11dc95a35460864fc1e81bd95121cbf4 2010-02-13T09:08:12.698526Z 3419 @@ -3098,7 +3098,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z d8720cf3644e6ae0511c1391fb2ecf07 2009-02-11T19:07:07.158826Z 2442 @@ -3132,7 +3132,7 @@ -2010-09-23T14:37:45.155802Z +2011-03-03T11:05:14.000000Z 8b706274d81243b3d26fdf06dfc9e533 2010-02-13T09:08:12.698526Z 3419 @@ -3166,7 +3166,7 @@ -2010-09-24T12:48:29.823793Z +2011-03-03T11:05:14.000000Z f0626259c107cfa1d1e4cb9d9f6edd34 2010-09-10T03:09:02.311267Z 4072 @@ -3200,7 +3200,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 9265bd26d6ba3d780dcd6fe676352d93 2010-02-13T09:08:12.698526Z 3419 @@ -3234,7 +3234,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z e34a59e24637e7bf462f5a742dbe243f 2010-02-13T09:08:12.698526Z 3419 @@ -3268,7 +3268,7 @@ -2010-09-23T14:37:45.159811Z +2011-03-03T11:05:14.000000Z 11f086774137d85a5cc6590ec3335ead 2010-02-13T09:08:12.698526Z 3419 diff -r fca2657f4aa5 -r eeebe205a056 public/images/files/.svn/entries --- a/public/images/files/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/images/files/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/images/files +4993 +http://redmine.rubyforge.org/svn/trunk/public/images/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 136af9d95025ca62a3091a261266e13f 2010-02-13T09:08:12.698526Z 3419 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z c801cf9aa0103de823e53e83459a1ff9 2010-02-13T09:08:12.698526Z 3419 @@ -100,7 +100,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 1e51c81cb33d3d6746d440c1babfe0f5 2010-02-13T09:08:12.698526Z 3419 @@ -134,7 +134,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z db0495227202385c9fce1b73f2d58ff0 2010-02-13T09:08:12.698526Z 3419 @@ -168,7 +168,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 94db8424e52f54d7372a976574c4598e 2010-02-13T09:08:12.698526Z 3419 @@ -202,7 +202,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ad3ed8ec19bb2a3cca8c03e0ea1aa846 2010-02-13T09:08:12.698526Z 3419 @@ -236,7 +236,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 8e05d64f0b9f45f076b41521a8d6a8d1 2010-02-13T09:08:12.698526Z 3419 @@ -270,7 +270,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ea9b5de5353e1cac630021dfed30dba4 2010-02-13T09:08:12.698526Z 3419 @@ -304,7 +304,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 0790c67308754572014015fa90eef406 2010-02-13T09:08:12.698526Z 3419 @@ -338,7 +338,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z e11f9ebff53e8088dce2a0028f0d5190 2010-02-13T09:08:12.698526Z 3419 diff -r fca2657f4aa5 -r eeebe205a056 public/images/jstoolbar/.svn/entries --- a/public/images/jstoolbar/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/images/jstoolbar/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/images/jstoolbar +4993 +http://redmine.rubyforge.org/svn/trunk/public/images/jstoolbar http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z c77264aa6d145362b791c99d18f53ace 2010-02-13T09:08:12.698526Z 3419 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z c19bfc8d9620c00cdd8ae322426bc07e 2010-02-13T09:08:12.698526Z 3419 @@ -94,13 +94,81 @@ 252 +bt_ol.png +file + + + + +2011-03-03T11:05:14.000000Z +5477ff20be77ab65aa6b75f47778234e +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +248 + +bt_h3.png +file + + + + +2011-03-03T11:05:14.000000Z +cb940b592da5ed0367305cb0514d5684 +2010-02-13T09:08:12.698526Z +3419 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +261 + bt_code.png file -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z ef6624df45946b54e3b23db2a0c6b77b 2010-02-13T09:08:12.698526Z 3419 @@ -128,14 +196,14 @@ 927 -bt_h3.png +bt_strong.png file -2010-08-12T15:03:25.000000Z -cb940b592da5ed0367305cb0514d5684 +2011-03-03T11:05:14.000000Z +f9d7446ceaa5142a5030e9430b3a2bb4 2010-02-13T09:08:12.698526Z 3419 jplang @@ -160,41 +228,7 @@ -261 - -bt_ol.png -file - - - - -2010-08-12T15:03:25.000000Z -5477ff20be77ab65aa6b75f47778234e -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -248 +244 bt_img.png file @@ -202,7 +236,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 04a0e86c9eec7d85d445e7627b5fc8ea 2010-02-13T09:08:12.698526Z 3419 @@ -230,47 +264,13 @@ 1027 -bt_strong.png -file - - - - -2010-08-12T15:03:25.000000Z -f9d7446ceaa5142a5030e9430b3a2bb4 -2010-02-13T09:08:12.698526Z -3419 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -244 - bt_bq_remove.png file -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 123b8289e1bd69a5944cf727a5e39bc9 2010-02-13T09:08:12.698526Z 3419 @@ -304,7 +304,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 15d8f6c0fbf85718123fb7c7da782713 2010-02-13T09:08:12.698526Z 3419 @@ -338,7 +338,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 5a29cb56451be0fd714b99d2b2649bf0 2010-02-13T09:08:12.698526Z 3419 @@ -372,7 +372,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 07234419aecb827f11eef1ebd9b42482 2010-02-13T09:08:12.698526Z 3419 @@ -406,7 +406,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 5042501ddf948fe938ded69a40ef1024 2010-02-13T09:08:12.698526Z 3419 @@ -440,7 +440,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 584fb45fd15d894adc19ff3cf626fae9 2010-02-13T09:08:12.698526Z 3419 @@ -474,7 +474,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 8448f92476ae933bacef7bc30ffd18fd 2010-02-13T09:08:12.698526Z 3419 @@ -508,7 +508,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 38ee94bc0a44b9420854aceeccd2dd59 2010-02-13T09:08:12.698526Z 3419 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/.svn/all-wcprops --- a/public/javascripts/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4648/trunk/public/javascripts +/svn/!svn/ver/4947/trunk/public/javascripts END prototype.js K 25 @@ -13,7 +13,7 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4504/trunk/public/javascripts/context_menu.js +/svn/!svn/ver/4947/trunk/public/javascripts/context_menu.js END repository_navigation.js K 25 @@ -43,7 +43,7 @@ K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/4648/trunk/public/javascripts/application.js +/svn/!svn/ver/4900/trunk/public/javascripts/application.js END controls.js K 25 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/.svn/entries --- a/public/javascripts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts http://redmine.rubyforge.org/svn -2011-01-06T21:02:19.982329Z -4648 +2011-02-24T17:56:17.648907Z +4947 jplang @@ -35,7 +35,7 @@ -2010-09-23T14:37:45.243754Z +2011-03-03T11:05:14.000000Z b5684120e496c310977713be34be4868 2009-02-21T11:04:50.579477Z 2493 @@ -69,10 +69,10 @@ -2011-01-13T14:11:09.000000Z -d8370dbea2b172789fa1683412c110a5 -2010-12-12T16:26:24.102027Z -4504 +2011-03-03T11:40:18.000000Z +3065b1a7ff2aca0c2d6fb394f4fef7fa +2011-02-24T17:56:17.648907Z +4947 jplang has-props @@ -95,7 +95,7 @@ -7021 +6852 calendar dir @@ -106,7 +106,7 @@ -2010-09-23T14:37:45.243754Z +2011-03-03T11:05:14.000000Z b868f888ccb92a2e7d3b955f0213078c 2009-08-15T22:41:40.505056Z 2840 @@ -140,7 +140,7 @@ -2010-09-23T14:37:45.207758Z +2011-03-03T11:05:14.000000Z a7d95dc040992701ba78fd5b97af950e 2009-02-21T11:04:50.579477Z 2493 @@ -174,7 +174,7 @@ -2010-09-23T14:37:45.243754Z +2011-03-03T11:05:14.000000Z d62b158eef2592fbe11ce104e118631c 2009-11-28T11:59:45.246623Z 3106 @@ -208,7 +208,7 @@ -2010-09-23T14:37:45.207758Z +2011-03-03T11:05:14.000000Z 3aa08ad9af21eb305a120e2e1a47d1af 2009-02-21T11:04:50.579477Z 2493 @@ -242,10 +242,10 @@ -2011-01-13T14:11:09.000000Z -d9adfbc01d7b99bb5de20d5e9fb145a6 -2011-01-06T21:02:19.982329Z -4648 +2011-03-03T11:40:18.000000Z +312c6491eda00cbd741131ab1685a4b9 +2011-02-21T09:53:29.844413Z +4900 jplang has-props @@ -268,7 +268,7 @@ -7727 +8869 controls.js file @@ -276,7 +276,7 @@ -2010-09-23T14:37:45.207758Z +2011-03-03T11:05:14.000000Z 136701e951925f3dcb84f9a231f9326e 2009-02-21T11:04:50.579477Z 2493 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/.svn/text-base/application.js.svn-base --- a/public/javascripts/.svn/text-base/application.js.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/.svn/text-base/application.js.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -46,6 +46,12 @@ Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2}); } +function hideFieldset(el) { + var fieldset = Element.up(el, 'fieldset'); + fieldset.toggleClassName('collapsed'); + fieldset.down('div').hide(); +} + var fileFieldCount = 1; function addFileField() { @@ -249,6 +255,49 @@ Event.observe('project_enabled_module_names_issue_tracking', 'change', f); } +/* + * Class used to warn user when leaving a page with unsaved textarea + * Author: mathias.fischer@berlinonline.de +*/ + +var WarnLeavingUnsaved = Class.create({ + observedForms: false, + observedElements: false, + changedForms: false, + message: null, + + initialize: function(message){ + this.observedForms = $$('form'); + this.observedElements = $$('textarea'); + this.message = message; + + this.observedElements.each(this.observeChange.bind(this)); + this.observedForms.each(this.submitAction.bind(this)); + + window.onbeforeunload = this.unload.bind(this); + }, + + unload: function(){ + if(this.changedForms) + return this.message; + }, + + setChanged: function(){ + this.changedForms = true; + }, + + setUnchanged: function(){ + this.changedForms = false; + }, + + observeChange: function(element){ + element.observe('change',this.setChanged.bindAsEventListener(this)); + }, + + submitAction: function(element){ + element.observe('submit',this.setUnchanged.bindAsEventListener(this)); + } +}); /* shows and hides ajax indicator */ Ajax.Responders.register({ diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/.svn/text-base/context_menu.js.svn-base --- a/public/javascripts/.svn/text-base/context_menu.js.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/.svn/text-base/context_menu.js.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -11,7 +11,7 @@ if (!observingContextMenuClick) { Event.observe(document, 'click', this.Click.bindAsEventListener(this)); - Event.observe(document, (window.opera ? 'click' : 'contextmenu'), this.RightClick.bindAsEventListener(this)); + Event.observe(document, 'contextmenu', this.RightClick.bindAsEventListener(this)); observingContextMenuClick = true; } @@ -23,8 +23,6 @@ this.hideMenu(); // do not show the context menu on links if (Event.element(e).tagName == 'A') { return; } - // right-click simulated by Alt+Click with Opera - if (window.opera && !e.altKey) { return; } var tr = Event.findElement(e, 'tr'); if (tr == document || tr == undefined || !tr.hasClassName('hascontextmenu')) { return; } Event.stop(e); @@ -39,7 +37,6 @@ Click: function(e) { this.hideMenu(); if (Event.element(e).tagName == 'A') { return; } - if (window.opera && e.altKey) { return; } if (Event.isLeftClick(e) || (navigator.appVersion.match(/\bMSIE\b/))) { var tr = Event.findElement(e, 'tr'); if (tr!=null && tr!=document && tr.hasClassName('hascontextmenu')) { diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/application.js --- a/public/javascripts/application.js Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/application.js Thu Mar 03 12:02:03 2011 +0000 @@ -46,6 +46,12 @@ Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2}); } +function hideFieldset(el) { + var fieldset = Element.up(el, 'fieldset'); + fieldset.toggleClassName('collapsed'); + fieldset.down('div').hide(); +} + var fileFieldCount = 1; function addFileField() { @@ -249,6 +255,49 @@ Event.observe('project_enabled_module_names_issue_tracking', 'change', f); } +/* + * Class used to warn user when leaving a page with unsaved textarea + * Author: mathias.fischer@berlinonline.de +*/ + +var WarnLeavingUnsaved = Class.create({ + observedForms: false, + observedElements: false, + changedForms: false, + message: null, + + initialize: function(message){ + this.observedForms = $$('form'); + this.observedElements = $$('textarea'); + this.message = message; + + this.observedElements.each(this.observeChange.bind(this)); + this.observedForms.each(this.submitAction.bind(this)); + + window.onbeforeunload = this.unload.bind(this); + }, + + unload: function(){ + if(this.changedForms) + return this.message; + }, + + setChanged: function(){ + this.changedForms = true; + }, + + setUnchanged: function(){ + this.changedForms = false; + }, + + observeChange: function(element){ + element.observe('change',this.setChanged.bindAsEventListener(this)); + }, + + submitAction: function(element){ + element.observe('submit',this.setUnchanged.bindAsEventListener(this)); + } +}); /* shows and hides ajax indicator */ Ajax.Responders.register({ diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/4903/trunk/public/javascripts/calendar +END +calendar-setup.js +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/3252/trunk/public/javascripts/calendar/calendar-setup.js +END +calendar.js +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/3822/trunk/public/javascripts/calendar/calendar.js +END diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/.svn/entries --- a/public/javascripts/calendar/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/calendar/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/javascripts/calendar +4993 +http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar http://redmine.rubyforge.org/svn -2010-09-05T11:33:08.614151Z -4060 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -35,7 +35,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z e9be087e31b69f1e6a29ebd09b878486 2009-12-26T17:17:16.012737Z 3252 @@ -69,7 +69,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z a2dccec0bd70984b17a54239caf0d5e0 2010-06-30T02:54:15.730933Z 3822 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/lang/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,263 @@ +K 25 +svn:wc:ra_dav:version-url +V 57 +/svn/!svn/ver/4903/trunk/public/javascripts/calendar/lang +END +calendar-fi.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1186/trunk/public/javascripts/calendar/lang/calendar-fi.js +END +calendar-bs.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2629/trunk/public/javascripts/calendar/lang/calendar-bs.js +END +calendar-cs.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/764/trunk/public/javascripts/calendar/lang/calendar-cs.js +END +calendar-mk.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4049/trunk/public/javascripts/calendar/lang/calendar-mk.js +END +calendar-es.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-es.js +END +calendar-ko.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2182/trunk/public/javascripts/calendar/lang/calendar-ko.js +END +calendar-eu.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3338/trunk/public/javascripts/calendar/lang/calendar-eu.js +END +calendar-no.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1300/trunk/public/javascripts/calendar/lang/calendar-no.js +END +calendar-hu.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1452/trunk/public/javascripts/calendar/lang/calendar-hu.js +END +calendar-sk.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1998/trunk/public/javascripts/calendar/lang/calendar-sk.js +END +calendar-vi.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2493/trunk/public/javascripts/calendar/lang/calendar-vi.js +END +calendar-sr-yu.js +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4003/trunk/public/javascripts/calendar/lang/calendar-sr-yu.js +END +calendar-uk.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1149/trunk/public/javascripts/calendar/lang/calendar-uk.js +END +calendar-ro.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2630/trunk/public/javascripts/calendar/lang/calendar-ro.js +END +calendar-ru.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/907/trunk/public/javascripts/calendar/lang/calendar-ru.js +END +calendar-id.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3227/trunk/public/javascripts/calendar/lang/calendar-id.js +END +calendar-en.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-en.js +END +calendar-gl.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2296/trunk/public/javascripts/calendar/lang/calendar-gl.js +END +calendar-fr.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/748/trunk/public/javascripts/calendar/lang/calendar-fr.js +END +calendar-nl.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/539/trunk/public/javascripts/calendar/lang/calendar-nl.js +END +calendar-hr.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3320/trunk/public/javascripts/calendar/lang/calendar-hr.js +END +calendar-zh-tw.js +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh-tw.js +END +calendar-mn.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3626/trunk/public/javascripts/calendar/lang/calendar-mn.js +END +calendar-pl.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/749/trunk/public/javascripts/calendar/lang/calendar-pl.js +END +calendar-th.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1383/trunk/public/javascripts/calendar/lang/calendar-th.js +END +calendar-it.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4003/trunk/public/javascripts/calendar/lang/calendar-it.js +END +calendar-sl.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2340/trunk/public/javascripts/calendar/lang/calendar-sl.js +END +calendar-lt.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1149/trunk/public/javascripts/calendar/lang/calendar-lt.js +END +calendar-lv.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/3737/trunk/public/javascripts/calendar/lang/calendar-lv.js +END +calendar-zh.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1498/trunk/public/javascripts/calendar/lang/calendar-zh.js +END +calendar-pt.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1927/trunk/public/javascripts/calendar/lang/calendar-pt.js +END +calendar-ca.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4060/trunk/public/javascripts/calendar/lang/calendar-ca.js +END +calendar-pt-br.js +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/1453/trunk/public/javascripts/calendar/lang/calendar-pt-br.js +END +calendar-da.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2292/trunk/public/javascripts/calendar/lang/calendar-da.js +END +calendar-sr.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4003/trunk/public/javascripts/calendar/lang/calendar-sr.js +END +calendar-tr.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1817/trunk/public/javascripts/calendar/lang/calendar-tr.js +END +calendar-fa.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4903/trunk/public/javascripts/calendar/lang/calendar-fa.js +END +calendar-bg.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/502/trunk/public/javascripts/calendar/lang/calendar-bg.js +END +calendar-de.js +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/419/trunk/public/javascripts/calendar/lang/calendar-de.js +END +calendar-en-gb.js +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/3809/trunk/public/javascripts/calendar/lang/calendar-en-gb.js +END +calendar-sv.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2290/trunk/public/javascripts/calendar/lang/calendar-sv.js +END +calendar-ja.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1051/trunk/public/javascripts/calendar/lang/calendar-ja.js +END +calendar-he.js +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/1478/trunk/public/javascripts/calendar/lang/calendar-he.js +END diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/lang/.svn/entries --- a/public/javascripts/calendar/lang/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/calendar/lang/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts/calendar/lang http://redmine.rubyforge.org/svn -2010-09-05T11:33:08.614151Z -4060 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z d89a932075b18af4121f1941175d33d6 2008-03-05T08:54:26.865464Z 1186 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 1f10556f12619006e5cd99bf0e5061cc 2009-03-24T19:16:02.676125Z 2629 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 071917d0ae794b3cb057a0b354cd5105 2007-09-25T16:37:51.755262Z 764 @@ -134,7 +134,7 @@ -2010-09-24T12:48:29.835791Z +2011-03-03T11:05:14.000000Z 1044fe45dceaa0d72c32aca5c86eea4a 2010-08-29T12:54:04.302020Z 4049 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 5728a3665edb05faed6661f0f77c6eab 2007-04-04T18:20:45.423396Z 419 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 42ef87b559c68d2db63b109f3cb3f3ed 2008-12-24T15:48:59.830167Z 2182 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 3f9bda99497d5c8342d87b4ec6aa44ba 2010-01-25T15:25:46.560119Z 3338 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 4ae334472d40209252da8c69f07eabd5 2008-03-27T19:27:40.125888Z 1300 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 3c66093b97b7d0bb66f04dbc0be4afb3 2008-05-25T12:18:49.439996Z 1452 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z c161d1507fbd65ebddd7ada7c495eb89 2008-11-09T00:29:20.731069Z 1998 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z a85bbd596ff7e03e9434a286edd134fd 2009-02-21T11:04:50.579477Z 2493 @@ -400,13 +400,47 @@ 3978 +calendar-sr-yu.js +file + + + + +2011-03-03T11:05:14.000000Z +c48be791f5e8d236624752ce05cd3ed7 +2010-08-19T15:41:09.090282Z +4003 +winterheart + + + + + + + + + + + + + + + + + + + + + +3687 + calendar-uk.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 46811ee79796d2345bea2308475d1ec9 2008-02-15T17:47:19.829750Z 1149 @@ -434,47 +468,13 @@ 3600 -calendar-sr-yu.js -file - - - - -2010-09-23T14:37:45.203758Z -c48be791f5e8d236624752ce05cd3ed7 -2010-08-19T15:41:09.090282Z -4003 -winterheart - - - - - - - - - - - - - - - - - - - - - -3687 - calendar-ro.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 7e96487f7e089a48bd61d5e6e8785fe1 2009-03-24T19:20:53.296475Z 2630 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 8555f3d813ca70ecbd2aaecae826549f 2007-11-16T21:24:22.091853Z 907 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z f5a05a0d27c2d22fa8a7bf16be345250 2009-12-23T18:56:03.404741Z 3227 @@ -570,47 +570,13 @@ 3845 -calendar-gl.js -file - - - - -2010-09-23T14:37:45.195758Z -c4f74e36f6a3debcf8ec065bc6886f04 -2009-01-23T15:37:59.406714Z -2296 -winterheart - - - - - - - - - - - - - - - - - - - - - -3855 - calendar-en.js file -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 46811ee79796d2345bea2308475d1ec9 2007-04-04T18:20:45.423396Z 419 @@ -638,13 +604,47 @@ 3600 +calendar-gl.js +file + + + + +2011-03-03T11:05:14.000000Z +c4f74e36f6a3debcf8ec065bc6886f04 +2009-01-23T15:37:59.406714Z +2296 +winterheart + + + + + + + + + + + + + + + + + + + + + +3855 + calendar-fr.js file -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 0bfaa3ec0b265f9d5a815d9b9b348c96 2007-09-22T14:12:44.830265Z 748 @@ -672,13 +672,81 @@ 3870 +calendar-nl.js +file + + + + +2011-03-03T11:05:14.000000Z +c029bd9c4867bb39e86d1d6efada6d58 +2007-05-24T17:29:11.682821Z +539 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3701 + +calendar-hr.js +file + + + + +2011-03-03T11:05:14.000000Z +f8d0daa275cf612206c43d4c9be95d08 +2010-01-17T10:33:30.937961Z +3320 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3646 + calendar-zh-tw.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 0bed4c9c046772a12267b4118bf1504a 2008-06-07T09:03:20.687527Z 1498 @@ -706,81 +774,13 @@ 3841 -calendar-hr.js -file - - - - -2010-09-23T14:37:45.195758Z -f8d0daa275cf612206c43d4c9be95d08 -2010-01-17T10:33:30.937961Z -3320 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3646 - -calendar-nl.js -file - - - - -2010-09-23T14:37:45.199778Z -c029bd9c4867bb39e86d1d6efada6d58 -2007-05-24T17:29:11.682821Z -539 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3701 - calendar-mn.js file -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 307341352eee53b3ccd1fbec2a4b27f7 2010-04-03T10:49:16.109274Z 3626 @@ -808,13 +808,47 @@ 3904 +calendar-pl.js +file + + + + +2011-03-03T11:05:14.000000Z +eabf711c28d30bb9474f3f505766f286 +2007-09-22T14:56:09.057923Z +749 +jplang + + + + + + + + + + + + + + + + + + + + + +3974 + calendar-th.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z c8c19e66c3e1099c3e0ecae6462f68da 2008-04-30T08:47:14.770680Z 1383 @@ -842,47 +876,13 @@ 4417 -calendar-pl.js -file - - - - -2010-09-23T14:37:45.199778Z -eabf711c28d30bb9474f3f505766f286 -2007-09-22T14:56:09.057923Z -749 -jplang - - - - - - - - - - - - - - - - - - - - - -3974 - calendar-it.js file -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z d637b0156da2601e000e16f1ac178768 2010-08-19T15:41:09.090282Z 4003 @@ -916,7 +916,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z cbf1a5c6b271835c701031aacaeaa271 2009-01-31T12:02:37.933490Z 2340 @@ -950,7 +950,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z 33bc41a153fc6fb2aa53069fb0f647d6 2008-02-15T17:47:19.829750Z 1149 @@ -978,13 +978,47 @@ 3909 +calendar-lv.js +file + + + + +2011-03-03T11:05:14.000000Z +b260d88c13c01ebf4e7c94b9cb022930 +2010-05-14T18:15:41.754813Z +3737 +winterheart + + + + + + + + + + + + + + + + + + + + + +3803 + calendar-zh.js file -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 02222471f3e701ac1223096737fa5705 2008-06-07T09:03:20.687527Z 1498 @@ -1012,47 +1046,13 @@ 3600 -calendar-lv.js -file - - - - -2010-09-23T14:37:45.199778Z -b260d88c13c01ebf4e7c94b9cb022930 -2010-05-14T18:15:41.754813Z -3737 -winterheart - - - - - - - - - - - - - - - - - - - - - -3803 - calendar-ca.js file -2010-09-24T12:48:29.835791Z +2011-03-03T11:05:14.000000Z 2756627844089652700c203ee91ec6f3 2010-09-05T11:33:08.614151Z 4060 @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 67f2807b1ee731af4fe16f358a8d9096 2008-10-06T15:00:56.914741Z 1927 @@ -1120,7 +1120,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z c684331ae98de9a0e03db4de8f985e44 2008-05-25T12:42:56.738934Z 1453 @@ -1154,7 +1154,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 0d732eaa10604b943c7d600a15c8a651 2009-01-20T16:09:07.993954Z 2292 @@ -1188,7 +1188,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z a26f883ac70499ee0409af2c08156a84 2010-08-19T15:41:09.090282Z 4003 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 8cb3dced137544295b39ef836028433e 2008-09-13T17:25:01.876743Z 1817 @@ -1250,13 +1250,47 @@ 3776 +calendar-fa.js +file + + + + +2011-03-03T11:40:18.000000Z +79e745b797f9148ac63de8ce583e2282 +2011-02-21T10:08:59.720731Z +4903 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3977 + calendar-bg.js file -2010-09-23T14:37:45.191758Z +2011-03-03T11:05:14.000000Z df1a74fadb5ce5b1cc53aa70034f578b 2007-05-02T19:36:00.768529Z 502 @@ -1290,7 +1324,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z d508459192a856b332d75de94c8d5c6c 2007-04-04T18:20:45.423396Z 419 @@ -1324,7 +1358,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 66418d047f243e10172798af0fb4d927 2010-06-21T19:54:55.180393Z 3809 @@ -1358,7 +1392,7 @@ -2010-09-23T14:37:45.203758Z +2011-03-03T11:05:14.000000Z 7dc0f35efebbe8b0d078d2c847b43b7c 2009-01-20T15:45:34.332677Z 2290 @@ -1392,7 +1426,7 @@ -2010-09-23T14:37:45.199778Z +2011-03-03T11:05:14.000000Z eb66ba69ac2233b24fe200060ec67ab7 2008-01-10T18:34:14.889747Z 1051 @@ -1426,7 +1460,7 @@ -2010-09-23T14:37:45.195758Z +2011-03-03T11:05:14.000000Z 0c77d7dafe8031971e69a7a57b3dc93e 2008-05-30T15:34:53.673854Z 1478 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/lang/.svn/prop-base/calendar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/.svn/prop-base/calendar-fa.js.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/lang/.svn/text-base/calendar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/.svn/text-base/calendar-fa.js.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar FA language +// Author: Behrang Noroozinia, behrangn at g mail +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("یک‌شنبه", + "دوشنبه", + "سه‌شنبه", + "چهارشنبه", + "پنج‌شنبه", + "آدینه", + "شنبه", + "یک‌شنبه"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("یک", + "دو", + "سه", + "چهار", + "پنج", + "آدینه", + "شنبه", + "یک"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("ژانویه", + "Ùوریه", + "مارس", + "آوریل", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپتامبر", + "اکتبر", + "نوامبر", + "دسامبر"); + +// short month names +Calendar._SMN = new Array +("ژان", + "Ùور", + "مار", + "آور", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپت", + "اکت", + "نوا", + "دسا"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "درباره گاهشمار"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "سال پیشین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["PREV_MONTH"] = "ماه پیشین ( برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["GO_TODAY"] = "برو به امروز"; +Calendar._TT["NEXT_MONTH"] = "ماه پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["NEXT_YEAR"] = "سال پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["SEL_DATE"] = "گزینش"; +Calendar._TT["DRAG_TO_MOVE"] = "برای جابجایی بکشید"; +Calendar._TT["PART_TODAY"] = " (امروز)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "آغاز Ù‡ÙØªÙ‡ از %s"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "4,5"; + +Calendar._TT["CLOSE"] = "بسته"; +Calendar._TT["TODAY"] = "امروز"; +Calendar._TT["TIME_PART"] = "زدن (با Shift) یا کشیدن برای ویرایش"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "Ù‡ÙØªÙ‡"; +Calendar._TT["TIME"] = "زمان:"; diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/calendar/lang/calendar-fa.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/calendar/lang/calendar-fa.js Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar FA language +// Author: Behrang Noroozinia, behrangn at g mail +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("یک‌شنبه", + "دوشنبه", + "سه‌شنبه", + "چهارشنبه", + "پنج‌شنبه", + "آدینه", + "شنبه", + "یک‌شنبه"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("یک", + "دو", + "سه", + "چهار", + "پنج", + "آدینه", + "شنبه", + "یک"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 0; + +// full month names +Calendar._MN = new Array +("ژانویه", + "Ùوریه", + "مارس", + "آوریل", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپتامبر", + "اکتبر", + "نوامبر", + "دسامبر"); + +// short month names +Calendar._SMN = new Array +("ژان", + "Ùور", + "مار", + "آور", + "مه", + "ژوئن", + "ژوئیه", + "اوت", + "سپت", + "اکت", + "نوا", + "دسا"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "درباره گاهشمار"; + +Calendar._TT["ABOUT"] = +"DHTML Date/Time Selector\n" + +"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) +"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + +"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"\n\n" + +"Date selection:\n" + +"- Use the \xab, \xbb buttons to select year\n" + +"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + +"- Hold mouse button on any of the above buttons for faster selection."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Time selection:\n" + +"- Click on any of the time parts to increase it\n" + +"- or Shift-click to decrease it\n" + +"- or click and drag for faster selection."; + +Calendar._TT["PREV_YEAR"] = "سال پیشین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["PREV_MONTH"] = "ماه پیشین ( برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["GO_TODAY"] = "برو به امروز"; +Calendar._TT["NEXT_MONTH"] = "ماه پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["NEXT_YEAR"] = "سال پسین (برای Ùهرست Ù†Ú¯Ù‡ دارید)"; +Calendar._TT["SEL_DATE"] = "گزینش"; +Calendar._TT["DRAG_TO_MOVE"] = "برای جابجایی بکشید"; +Calendar._TT["PART_TODAY"] = " (امروز)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "آغاز Ù‡ÙØªÙ‡ از %s"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "4,5"; + +Calendar._TT["CLOSE"] = "بسته"; +Calendar._TT["TODAY"] = "امروز"; +Calendar._TT["TIME_PART"] = "زدن (با Shift) یا کشیدن برای ویرایش"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d"; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e"; + +Calendar._TT["WK"] = "Ù‡ÙØªÙ‡"; +Calendar._TT["TIME"] = "زمان:"; diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/context_menu.js --- a/public/javascripts/context_menu.js Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/context_menu.js Thu Mar 03 12:02:03 2011 +0000 @@ -11,7 +11,7 @@ if (!observingContextMenuClick) { Event.observe(document, 'click', this.Click.bindAsEventListener(this)); - Event.observe(document, (window.opera ? 'click' : 'contextmenu'), this.RightClick.bindAsEventListener(this)); + Event.observe(document, 'contextmenu', this.RightClick.bindAsEventListener(this)); observingContextMenuClick = true; } @@ -23,8 +23,6 @@ this.hideMenu(); // do not show the context menu on links if (Event.element(e).tagName == 'A') { return; } - // right-click simulated by Alt+Click with Opera - if (window.opera && !e.altKey) { return; } var tr = Event.findElement(e, 'tr'); if (tr == document || tr == undefined || !tr.hasClassName('hascontextmenu')) { return; } Event.stop(e); @@ -39,7 +37,6 @@ Click: function(e) { this.hideMenu(); if (Event.element(e).tagName == 'A') { return; } - if (window.opera && e.altKey) { return; } if (Event.isLeftClick(e) || (navigator.appVersion.match(/\bMSIE\b/))) { var tr = Event.findElement(e, 'tr'); if (tr!=null && tr!=document && tr.hasClassName('hascontextmenu')) { diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 53 +/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar +END +textile.js +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/1955/trunk/public/javascripts/jstoolbar/textile.js +END +jstoolbar.js +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/1955/trunk/public/javascripts/jstoolbar/jstoolbar.js +END diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/.svn/entries --- a/public/javascripts/jstoolbar/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/jstoolbar/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/javascripts/jstoolbar +4993 +http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar http://redmine.rubyforge.org/svn -2010-08-29T12:54:04.302020Z -4049 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -35,7 +35,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 277ebc7c66d8c8280bbe729e6cb11529 2008-10-27T11:08:29.901011Z 1955 @@ -69,7 +69,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 2b77f98553b6d5e0d4c405195eebe664 2008-10-27T11:08:29.901011Z 1955 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/lang/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,263 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar/lang +END +jstoolbar-mk.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4049/trunk/public/javascripts/jstoolbar/lang/jstoolbar-mk.js +END +jstoolbar-es.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2033/trunk/public/javascripts/jstoolbar/lang/jstoolbar-es.js +END +jstoolbar-ko.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2202/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ko.js +END +jstoolbar-eu.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/3338/trunk/public/javascripts/jstoolbar/lang/jstoolbar-eu.js +END +jstoolbar-no.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1540/trunk/public/javascripts/jstoolbar/lang/jstoolbar-no.js +END +jstoolbar-hu.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-hu.js +END +jstoolbar-sk.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1997/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sk.js +END +jstoolbar-vi.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2493/trunk/public/javascripts/jstoolbar/lang/jstoolbar-vi.js +END +jstoolbar-sr-yu.js +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js +END +jstoolbar-uk.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-uk.js +END +jstoolbar-ro.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2630/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ro.js +END +jstoolbar-ru.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2901/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ru.js +END +jstoolbar-id.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/3227/trunk/public/javascripts/jstoolbar/lang/jstoolbar-id.js +END +jstoolbar-en.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-en.js +END +jstoolbar-gl.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2296/trunk/public/javascripts/jstoolbar/lang/jstoolbar-gl.js +END +jstoolbar-fr.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fr.js +END +jstoolbar-nl.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2291/trunk/public/javascripts/jstoolbar/lang/jstoolbar-nl.js +END +jstoolbar-hr.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/3320/trunk/public/javascripts/jstoolbar/lang/jstoolbar-hr.js +END +jstoolbar-zh-tw.js +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh-tw.js +END +jstoolbar-mn.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/3626/trunk/public/javascripts/jstoolbar/lang/jstoolbar-mn.js +END +jstoolbar-pl.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1928/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pl.js +END +jstoolbar-th.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-th.js +END +jstoolbar-it.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-it.js +END +jstoolbar-sl.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2340/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sl.js +END +jstoolbar-lt.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lt.js +END +jstoolbar-lv.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/3737/trunk/public/javascripts/jstoolbar/lang/jstoolbar-lv.js +END +jstoolbar-zh.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1498/trunk/public/javascripts/jstoolbar/lang/jstoolbar-zh.js +END +jstoolbar-pt.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1927/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt.js +END +jstoolbar-ca.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1865/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ca.js +END +jstoolbar-pt-br.js +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-pt-br.js +END +jstoolbar-da.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2921/trunk/public/javascripts/jstoolbar/lang/jstoolbar-da.js +END +jstoolbar-sr.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4003/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sr.js +END +jstoolbar-tr.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1817/trunk/public/javascripts/jstoolbar/lang/jstoolbar-tr.js +END +jstoolbar-fa.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4903/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fa.js +END +jstoolbar-bg.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-bg.js +END +jstoolbar-de.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-de.js +END +jstoolbar-en-gb.js +K 25 +svn:wc:ra_dav:version-url +V 77 +/svn/!svn/ver/3809/trunk/public/javascripts/jstoolbar/lang/jstoolbar-en-gb.js +END +jstoolbar-sv.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2298/trunk/public/javascripts/jstoolbar/lang/jstoolbar-sv.js +END +jstoolbar-ja.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2901/trunk/public/javascripts/jstoolbar/lang/jstoolbar-ja.js +END +jstoolbar-he.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-he.js +END +jstoolbar-fi.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-fi.js +END +jstoolbar-bs.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/2629/trunk/public/javascripts/jstoolbar/lang/jstoolbar-bs.js +END +jstoolbar-cs.js +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/1479/trunk/public/javascripts/jstoolbar/lang/jstoolbar-cs.js +END diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/lang/.svn/entries --- a/public/javascripts/jstoolbar/lang/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/public/javascripts/jstoolbar/lang http://redmine.rubyforge.org/svn -2010-08-29T12:54:04.302020Z -4049 -winterheart +2011-02-21T10:08:59.720731Z +4903 +jplang @@ -32,7 +32,7 @@ -2010-09-24T12:48:29.827791Z +2011-03-03T11:05:14.000000Z 318952e82ec967a5474a8b8464b66c63 2010-08-29T12:54:04.302020Z 4049 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 21ca3fea9a77d127edb7d2e95b33b8f8 2008-11-14T15:18:13.107466Z 2033 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 7cbd6179e32e9b8ec12a884c820565ca 2008-12-29T18:27:27.433290Z 2202 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 73ba5f511744c07325bc0eae3dce14e6 2010-01-25T15:25:46.560119Z 3338 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z b1cfe765b72f2d904756bf60307c97b7 2008-06-15T09:49:16.794942Z 1540 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 83762b06ef0b9a9756f858357bf11361 2008-05-30T16:35:36.510811Z 1479 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z b27b3e83de7c68c7752703799c0a4cda 2008-11-08T22:34:41.558925Z 1997 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 06a6efe1fa0092d534f1cc403529670b 2009-02-21T11:04:50.579477Z 2493 @@ -298,13 +298,47 @@ 783 +jstoolbar-sr-yu.js +file + + + + +2011-03-03T11:05:14.000000Z +bf8f49f26dc22319ff3da721c261c593 +2010-08-19T15:41:09.090282Z +4003 +winterheart + + + + + + + + + + + + + + + + + + + + + +761 + jstoolbar-uk.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -332,47 +366,13 @@ 722 -jstoolbar-sr-yu.js -file - - - - -2010-09-23T14:37:45.239756Z -bf8f49f26dc22319ff3da721c261c593 -2010-08-19T15:41:09.090282Z -4003 -winterheart - - - - - - - - - - - - - - - - - - - - - -761 - jstoolbar-ro.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z de3d5c4af91e93505e939ccb1ef6b27a 2009-03-24T19:20:53.296475Z 2630 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 9f461eb7e9ab4460155983bd005c3237 2009-09-24T15:03:23.893264Z 2901 @@ -440,7 +440,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z fd6a3f960f0d6e1ce7e6466d592453fe 2009-12-23T18:56:03.404741Z 3227 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 1114856226e757ddfb08a99ab1cac3eb 2009-01-23T15:37:59.406714Z 2296 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 9b432fe2e801ed76abf312a10c643fb8 2008-05-30T16:35:36.510811Z 1479 @@ -570,13 +570,81 @@ 753 +jstoolbar-nl.js +file + + + + +2011-03-03T11:05:14.000000Z +b1bc7a04b7b466073845dd2c81bbbf23 +2009-01-20T15:53:09.750096Z +2291 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +753 + +jstoolbar-hr.js +file + + + + +2011-03-03T11:05:14.000000Z +f13f0553753c4b53bd96c294ca6ce15e +2010-01-17T10:33:30.937961Z +3320 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +721 + jstoolbar-zh-tw.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z be45a6e710f3a07e9fab41d795a64030 2008-06-07T09:03:20.687527Z 1498 @@ -604,81 +672,13 @@ 716 -jstoolbar-hr.js -file - - - - -2010-09-23T14:37:45.231813Z -f13f0553753c4b53bd96c294ca6ce15e -2010-01-17T10:33:30.937961Z -3320 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -721 - -jstoolbar-nl.js -file - - - - -2010-09-23T14:37:45.235815Z -b1bc7a04b7b466073845dd2c81bbbf23 -2009-01-20T15:53:09.750096Z -2291 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -753 - jstoolbar-mn.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z e7df0709db363c802a6a5a4913520ac5 2010-04-03T10:49:16.109274Z 3626 @@ -706,13 +706,47 @@ 916 +jstoolbar-pl.js +file + + + + +2011-03-03T11:05:14.000000Z +1d2b7d7c66953806ca428f91a95d2eaa +2008-10-07T17:41:16.515762Z +1928 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +851 + jstoolbar-th.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 3f844a6495d4eebb122b5c7b21696282 2008-05-30T16:35:36.510811Z 1479 @@ -740,47 +774,13 @@ 931 -jstoolbar-pl.js -file - - - - -2010-09-23T14:37:45.235815Z -1d2b7d7c66953806ca428f91a95d2eaa -2008-10-07T17:41:16.515762Z -1928 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -851 - jstoolbar-it.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z c7198fe4acf23cf7df996603e68b492b 2010-08-19T15:41:09.090282Z 4003 @@ -814,7 +814,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z a85f4ab1ed887a855f03c2cc8efb0107 2009-01-31T12:02:37.933490Z 2340 @@ -848,7 +848,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 1fbcdee2a48a3d359fd766880b9b606f 2008-05-30T16:35:36.510811Z 1479 @@ -876,13 +876,47 @@ 754 +jstoolbar-lv.js +file + + + + +2011-03-03T11:05:14.000000Z +5a44b7a9bd5b7db86d0a7398ee5bc779 +2010-05-14T18:15:41.754813Z +3737 +winterheart + + + + + + + + + + + + + + + + + + + + + +836 + jstoolbar-zh.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z fa9b7d27a231a3c85c1a4632f2563ac4 2008-06-07T09:03:20.687527Z 1498 @@ -910,81 +944,13 @@ 722 -jstoolbar-lv.js -file - - - - -2010-09-23T14:37:45.235815Z -5a44b7a9bd5b7db86d0a7398ee5bc779 -2010-05-14T18:15:41.754813Z -3737 -winterheart - - - - - - - - - - - - - - - - - - - - - -836 - -jstoolbar-ca.js -file - - - - -2010-09-23T14:37:45.231813Z -6aacb53ed49e6e14831baf8c38096662 -2008-09-15T16:07:30.857601Z -1865 -winterheart - - - - - - - - - - - - - - - - - - - - - -763 - jstoolbar-pt.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 2479961837e503c00632ff7e6997b10d 2008-10-06T15:00:56.914741Z 1927 @@ -1012,13 +978,47 @@ 823 +jstoolbar-ca.js +file + + + + +2011-03-03T11:05:14.000000Z +6aacb53ed49e6e14831baf8c38096662 +2008-09-15T16:07:30.857601Z +1865 +winterheart + + + + + + + + + + + + + + + + + + + + + +763 + jstoolbar-da.js file -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 4061b38de5e085dac922f77f94bd254a 2009-10-11T09:24:45.635758Z 2921 @@ -1046,13 +1046,47 @@ 746 +jstoolbar-sr.js +file + + + + +2011-03-03T11:05:14.000000Z +fb00cc94dfc8f319dda707b957aae8a6 +2010-08-19T15:41:09.090282Z +4003 +winterheart +has-props + + + + + + + + + + + + + + + + + + + + +912 + jstoolbar-pt-br.js file -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 37aed8a5fce8e7f2030ac37e3d635068 2008-05-30T16:35:36.510811Z 1479 @@ -1080,47 +1114,13 @@ 819 -jstoolbar-sr.js -file - - - - -2010-09-23T14:37:45.239756Z -fb00cc94dfc8f319dda707b957aae8a6 -2010-08-19T15:41:09.090282Z -4003 -winterheart -has-props - - - - - - - - - - - - - - - - - - - - -912 - jstoolbar-tr.js file -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z c7333a1fd77fe1f7db31810175f8fe8f 2008-09-13T17:25:01.876743Z 1817 @@ -1148,13 +1148,47 @@ 662 +jstoolbar-fa.js +file + + + + +2011-03-03T11:40:18.000000Z +5fde8ac79f7084911ce37f5cdad2052e +2011-02-21T10:08:59.720731Z +4903 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +838 + jstoolbar-bg.js file -2010-09-23T14:37:45.227756Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -1188,7 +1222,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 7c5edef659f90a30330909bc13b0d6fb 2008-05-30T16:35:36.510811Z 1479 @@ -1222,7 +1256,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2010-06-21T19:54:55.180393Z 3809 @@ -1256,7 +1290,7 @@ -2010-09-23T14:37:45.239756Z +2011-03-03T11:05:14.000000Z 7ec48cf15b3d65b2a0994b50b033b4b8 2009-01-23T15:46:22.446544Z 2298 @@ -1290,7 +1324,7 @@ -2010-09-23T14:37:45.235815Z +2011-03-03T11:05:14.000000Z 06245b4053c38d6bf3ae61d1bf4c7587 2009-09-24T15:03:23.893264Z 2901 @@ -1324,7 +1358,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z c49e65f5c02ababbaa0c9a9968424950 2008-05-30T16:35:36.510811Z 1479 @@ -1358,7 +1392,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 0377fba91478a1df25844aa70609e204 2008-05-30T16:35:36.510811Z 1479 @@ -1392,7 +1426,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z da8e9ced2ea20fedc7bb3204082fc68a 2009-03-24T19:16:02.676125Z 2629 @@ -1426,7 +1460,7 @@ -2010-09-23T14:37:45.231813Z +2011-03-03T11:05:14.000000Z 8394af79dae7854d27ccdb8b72c3262c 2008-05-30T16:35:36.510811Z 1479 diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/lang/.svn/prop-base/jstoolbar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/prop-base/jstoolbar-fa.js.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-fa.js.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/.svn/text-base/jstoolbar-fa.js.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,16 @@ +jsToolBar.strings = {}; +jsToolBar.strings['Strong'] = 'پررنگ'; +jsToolBar.strings['Italic'] = 'کج'; +jsToolBar.strings['Underline'] = 'زیرخط'; +jsToolBar.strings['Deleted'] = 'برداشته شده'; +jsToolBar.strings['Code'] = 'کد درون خطی'; +jsToolBar.strings['Heading 1'] = 'سربرگ Û±'; +jsToolBar.strings['Heading 2'] = 'سربرگ Û²'; +jsToolBar.strings['Heading 3'] = 'سربرگ Û³'; +jsToolBar.strings['Unordered list'] = 'Ùهرست بدون شماره'; +jsToolBar.strings['Ordered list'] = 'Ùهرست با شماره'; +jsToolBar.strings['Quote'] = 'تو بردن'; +jsToolBar.strings['Unquote'] = 'بیرون آوردن'; +jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده'; +jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی'; +jsToolBar.strings['Image'] = 'عکس'; diff -r fca2657f4aa5 -r eeebe205a056 public/javascripts/jstoolbar/lang/jstoolbar-fa.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/public/javascripts/jstoolbar/lang/jstoolbar-fa.js Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,16 @@ +jsToolBar.strings = {}; +jsToolBar.strings['Strong'] = 'پررنگ'; +jsToolBar.strings['Italic'] = 'کج'; +jsToolBar.strings['Underline'] = 'زیرخط'; +jsToolBar.strings['Deleted'] = 'برداشته شده'; +jsToolBar.strings['Code'] = 'کد درون خطی'; +jsToolBar.strings['Heading 1'] = 'سربرگ Û±'; +jsToolBar.strings['Heading 2'] = 'سربرگ Û²'; +jsToolBar.strings['Heading 3'] = 'سربرگ Û³'; +jsToolBar.strings['Unordered list'] = 'Ùهرست بدون شماره'; +jsToolBar.strings['Ordered list'] = 'Ùهرست با شماره'; +jsToolBar.strings['Quote'] = 'تو بردن'; +jsToolBar.strings['Unquote'] = 'بیرون آوردن'; +jsToolBar.strings['Preformatted text'] = 'نوشته قالب بندی شده'; +jsToolBar.strings['Wiki link'] = 'پیوند به برگ ویکی'; +jsToolBar.strings['Image'] = 'عکس'; diff -r fca2657f4aa5 -r eeebe205a056 public/stylesheets/.svn/all-wcprops --- a/public/stylesheets/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/public/stylesheets/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 43 -/svn/!svn/ver/4702/trunk/public/stylesheets +/svn/!svn/ver/4954/trunk/public/stylesheets END context_menu.css K 25 @@ -49,5 +49,5 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4702/trunk/public/stylesheets/application.css +/svn/!svn/ver/4954/trunk/public/stylesheets/application.css END diff -r fca2657f4aa5 -r eeebe205a056 public/stylesheets/.svn/entries --- a/public/stylesheets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/stylesheets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/public/stylesheets http://redmine.rubyforge.org/svn -2011-01-11T20:37:31.480170Z -4702 +2011-02-27T13:34:41.060565Z +4954 jplang @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z d4e12d14040f9f048ddc696b1c0adf71 2010-05-01T11:54:40.545656Z 3725 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z ee22ead851abb7d0733ccd46315ccdc2 2010-08-19T01:13:50.846630Z 3950 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z c8ca83463f3cde626ce2e2c3dca08cb2 2010-08-22T19:12:21.015911Z 4014 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z d4a1902945bf7a0faa18be73960030c9 2008-09-17T17:18:05.938945Z 1872 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z cb7655798f97e931ea4992a9dd1afc4f 2010-08-22T19:12:21.015911Z 4014 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.247783Z +2011-03-03T11:05:14.000000Z 62cab819ebe98bd9fb95415ac7b52e12 2007-12-28T21:58:33.550772Z 1024 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.251810Z +2011-03-03T11:05:14.000000Z 360ffe5ea0cba43a286c7e42756b463f 2010-03-28T11:30:48.135356Z 3619 @@ -270,10 +270,31 @@ - -b268a66dce14ef4250f269776b4ddcde -2011-01-11T20:37:31.480170Z -4702 +2011-03-03T11:40:18.000000Z +1c8f6eb0fe9e3708adf095c11bc824bf +2011-02-27T13:34:41.060565Z +4954 jplang has-props + + + + + + + + + + + + + + + + + + + + +35897 diff -r fca2657f4aa5 -r eeebe205a056 public/stylesheets/.svn/text-base/application.css.svn-base --- a/public/stylesheets/.svn/text-base/application.css.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/public/stylesheets/.svn/text-base/application.css.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -672,6 +672,13 @@ .diff_out { background: #fcc; } .diff_in { background: #cfc; } +.text-diff { +padding: 1em; +background-color:#f6f6f6; +color:#505050; +border: 1px solid #e4e4e4; +} + /***** Wiki *****/ div.wiki table { border: 1px solid #505050; @@ -783,6 +790,7 @@ } .gantt_subjects { font-size: 0.8em; } +.gantt_subjects div { line-height:1.2em;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; } .task { position: absolute; diff -r fca2657f4aa5 -r eeebe205a056 public/stylesheets/.svn/tmp/application.css.tmp --- a/public/stylesheets/.svn/tmp/application.css.tmp Thu Jan 20 09:59:02 2011 +0000 +++ b/public/stylesheets/.svn/tmp/application.css.tmp Thu Mar 03 12:02:03 2011 +0000 @@ -841,7 +841,6 @@ .icon-folder { background-image: url(../images/folder.png); } .open .icon-folder { background-image: url(../images/folder_open.png); } .icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } .icon-user { background-image: url(../images/user.png); } .icon-projects { background-image: url(../images/projects.png); } .icon-help { background-image: url(../images/help.png); } @@ -914,8 +913,8 @@ } td.username img.gravatar { - float: left; - margin: 0 1em 0 0; + margin: 0 0.5em 0 0; + vertical-align: top; } #activity dt img.gravatar { diff -r fca2657f4aa5 -r eeebe205a056 public/stylesheets/.svn/tmp/tempfile.tmp --- a/public/stylesheets/.svn/tmp/tempfile.tmp Thu Jan 20 09:59:02 2011 +0000 +++ b/public/stylesheets/.svn/tmp/tempfile.tmp Thu Mar 03 12:02:03 2011 +0000 @@ -1,3 +1,4 @@ +html {overflow-y:scroll;} body { font-family: Verdana, sans-serif; font-size: 12px; color:#484848; margin: 0; padding: 0; min-width: 900px; } h1, h2, h3, h4 { font-family: "Trebuchet MS", Verdana, sans-serif;} @@ -178,6 +179,8 @@ tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } +tr.wiki-page-version td.updated_on, tr.wiki-page-version td.author {text-align:center;} + tr.time-entry { text-align: center; white-space: nowrap; } tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } @@ -663,6 +666,7 @@ } #parent_issue_candidates ul li {width: 500px;} +#related_issue_candidates ul li {width: 500px;} /***** Diff *****/ .diff_out { background: #fcc; } @@ -778,6 +782,8 @@ overflow: hidden; } +.gantt_subjects { font-size: 0.8em; } + .task { position: absolute; height:8px; @@ -790,24 +796,26 @@ } .task.label {width:100%;} +.task.label.project, .task.label.version { font-weight: bold; } .task_late { background:#f66 url(../images/task_late.png); border: 1px solid #f66; } .task_done { background:#00c600 url(../images/task_done.png); border: 1px solid #00c600; } .task_todo { background:#aaa url(../images/task_todo.png); border: 1px solid #aaa; } -.task_todo.parent { background: #888; border: 1px solid #888; height: 6px;} +.task_todo.parent { background: #888; border: 1px solid #888; height: 3px;} .task_late.parent, .task_done.parent { height: 3px;} -.task_todo.parent .left { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -5px; left: 0px; top: -1px;} -.task_todo.parent .right { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-right: -5px; right: 0px; top: -1px;} +.task.parent.marker.starting { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; left: 0px; top: -1px;} +.task.parent.marker.ending { position: absolute; background: url(../images/task_parent_end.png) no-repeat 0 0; width: 8px; height: 16px; margin-left: -4px; right: 0px; top: -1px;} -.milestone { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; } -.milestone_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.milestone_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.milestone_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} -.project-line { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; } -.project_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} -.project_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} -.project_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.version.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.version.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.version.marker { background-image:url(../images/version_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } + +.project.task_late { background:#f66 url(../images/milestone_late.png); border: 1px solid #f66; height: 2px; margin-top: 3px;} +.project.task_done { background:#00c600 url(../images/milestone_done.png); border: 1px solid #00c600; height: 2px; margin-top: 3px;} +.project.task_todo { background:#fff url(../images/milestone_todo.png); border: 1px solid #fff; height: 2px; margin-top: 3px;} +.project.marker { background-image:url(../images/project_marker.png); background-repeat: no-repeat; border: 0; margin-left: -4px; margin-top: 1px; } .version-behind-schedule a, .issue-behind-schedule a {color: #f66914;} .version-overdue a, .issue-overdue a, .project-overdue a {color: #f00;} @@ -833,7 +841,6 @@ .icon-folder { background-image: url(../images/folder.png); } .open .icon-folder { background-image: url(../images/folder_open.png); } .icon-package { background-image: url(../images/package.png); } -.icon-home { background-image: url(../images/home.png); } .icon-user { background-image: url(../images/user.png); } .icon-projects { background-image: url(../images/projects.png); } .icon-help { background-image: url(../images/help.png); } @@ -906,8 +913,8 @@ } td.username img.gravatar { - float: left; - margin: 0 1em 0 0; + margin: 0 0.5em 0 0; + vertical-align: top; } #activity dt img.gravatar { diff -r fca2657f4aa5 -r eeebe205a056 public/stylesheets/application.css --- a/public/stylesheets/application.css Thu Jan 20 09:59:02 2011 +0000 +++ b/public/stylesheets/application.css Thu Mar 03 12:02:03 2011 +0000 @@ -350,8 +350,8 @@ ul.projects ul.projects { border-left: 3px solid #e0e0e0; } ul.projects li.root { list-style-type:none; margin-bottom: 1em; } ul.projects li.child { list-style-type:none; margin-top: 1em;} -ul.projects div.root a.project { /* font-family: "Trebuchet MS", Verdana, sans-serif; */ font-weight: bold; font-size: 16px; margin: 0 0 10px 0; } -/* .my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; } */ +ul.projects div.root a.project { font-family: "Trebuchet MS", Verdana, sans-serif; font-weight: bold; font-size: 16px; margin: 0 0 10px 0; } +.my-project { padding-left: 18px; background: url(../images/fav.png) no-repeat 0 50%; } #tracker_project_ids ul { margin: 0; padding-left: 1em; } #tracker_project_ids li { list-style-type:none; } @@ -672,6 +672,13 @@ .diff_out { background: #fcc; } .diff_in { background: #cfc; } +.text-diff { +padding: 1em; +background-color:#f6f6f6; +color:#505050; +border: 1px solid #e4e4e4; +} + /***** Wiki *****/ div.wiki table { border: 1px solid #505050; @@ -783,6 +790,7 @@ } .gantt_subjects { font-size: 0.8em; } +.gantt_subjects div { line-height:1.2em;height:16px;overflow:hidden;white-space:nowrap;text-overflow: ellipsis; } .task { position: absolute; diff -r fca2657f4aa5 -r eeebe205a056 public/themes/.svn/entries --- a/public/themes/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/themes/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/themes +4993 +http://redmine.rubyforge.org/svn/trunk/public/themes http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 5b7a0352b95a67871b90c5a90a226123 2007-10-10T17:17:37.630066Z 818 diff -r fca2657f4aa5 -r eeebe205a056 public/themes/alternate/.svn/entries --- a/public/themes/alternate/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/themes/alternate/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/themes/alternate +4993 +http://redmine.rubyforge.org/svn/trunk/public/themes/alternate http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 public/themes/alternate/stylesheets/.svn/entries --- a/public/themes/alternate/stylesheets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/themes/alternate/stylesheets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/themes/alternate/stylesheets +4993 +http://redmine.rubyforge.org/svn/trunk/public/themes/alternate/stylesheets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 8a47fb469dca292ea631422810927fe3 2009-11-15T21:15:31.339604Z 3069 diff -r fca2657f4aa5 -r eeebe205a056 public/themes/classic/.svn/entries --- a/public/themes/classic/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/themes/classic/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/themes/classic +4993 +http://redmine.rubyforge.org/svn/trunk/public/themes/classic http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 public/themes/classic/images/.svn/entries --- a/public/themes/classic/images/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/themes/classic/images/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/themes/classic/images +4993 +http://redmine.rubyforge.org/svn/trunk/public/themes/classic/images http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z a137eb4441860564ce1655357af26de8 2009-12-18T14:10:26.630799Z 3183 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 99bea32e1990e011e870f6c562e87a6a 2009-12-18T14:10:26.630799Z 3183 diff -r fca2657f4aa5 -r eeebe205a056 public/themes/classic/stylesheets/.svn/entries --- a/public/themes/classic/stylesheets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/public/themes/classic/stylesheets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/public/themes/classic/stylesheets +4993 +http://redmine.rubyforge.org/svn/trunk/public/themes/classic/stylesheets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:14.000000Z 1bfaedd3f6b62419367da41a7a9310b2 2009-12-18T14:10:26.630799Z 3183 diff -r fca2657f4aa5 -r eeebe205a056 script/.svn/entries --- a/script/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/script/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/script +4993 +http://redmine.rubyforge.org/svn/trunk/script http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 623b2f8265970f73bdb3489872d00eb6 2010-11-02T00:20:21.419252Z 4359 @@ -69,7 +69,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 2ac529bf7a654b9b91b2fea2275aa44e 2010-11-02T00:20:21.419252Z 4359 @@ -103,7 +103,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z ff97a702418dbc85fec089b97506281f 2010-11-02T00:20:21.419252Z 4359 @@ -137,7 +137,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 1fd5fa2d4aeee5b4111a40f62ae85446 2010-11-02T00:20:21.419252Z 4359 @@ -171,7 +171,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 95866cb3b894816b540afd282b952618 2010-11-02T00:20:21.419252Z 4359 @@ -205,7 +205,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 0cccc4eabf129ebd7b571d3eceda8893 2010-11-02T00:20:21.419252Z 4359 @@ -239,7 +239,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z b0aeca2e257a2226502c570e671e1b76 2010-11-02T00:20:21.419252Z 4359 @@ -273,7 +273,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z fb51df9bca94c25a928f40468354700f 2010-11-02T00:20:21.419252Z 4359 @@ -310,7 +310,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z db0dd437d39c21fe52e1fc05a0680163 2010-11-02T00:20:21.419252Z 4359 diff -r fca2657f4aa5 -r eeebe205a056 script/performance/.svn/entries --- a/script/performance/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/script/performance/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/script/performance +4993 +http://redmine.rubyforge.org/svn/trunk/script/performance http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 33063b7a3d4dbef12ac8bcb55a5e6e3e 2010-11-02T00:20:21.419252Z 4359 @@ -66,7 +66,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 9d3b872769337c49e648b9fe47e4e280 2010-11-02T00:20:21.419252Z 4359 @@ -100,7 +100,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z b6500710f6029724e44cbd25f80eaaf1 2010-11-02T00:20:21.419252Z 4359 diff -r fca2657f4aa5 -r eeebe205a056 script/process/.svn/entries --- a/script/process/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/script/process/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/script/process +4993 +http://redmine.rubyforge.org/svn/trunk/script/process http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 47bf41d8d2c97d220d9f70916e94c651 2010-11-02T00:20:21.419252Z 4359 @@ -66,7 +66,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 9137857ebdaf61d57a3496f7e61fede3 2010-11-02T00:20:21.419252Z 4359 @@ -100,7 +100,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 99af2666610d48d13e2eeceacf487d16 2010-11-02T00:20:21.419252Z 4359 @@ -134,7 +134,7 @@ -2010-11-30T13:11:53.000000Z +2011-03-03T11:05:13.000000Z 64b5316e88e7555bf827ad04edbce4a6 2010-11-02T00:20:21.419252Z 4359 diff -r fca2657f4aa5 -r eeebe205a056 test/.svn/all-wcprops --- a/test/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 29 -/svn/!svn/ver/4730/trunk/test +/svn/!svn/ver/4991/trunk/test END object_daddy_helpers.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/.svn/entries --- a/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test http://redmine.rubyforge.org/svn -2011-01-16T15:36:42.998302Z -4730 -jplang +2011-03-03T03:35:13.139305Z +4991 +tmaruyama @@ -35,7 +35,7 @@ -2010-09-24T12:48:25.883734Z +2011-03-03T11:05:09.000000Z bec9d26a7ae75350529040e7bca36bfa 2010-09-10T19:44:45.405792Z 4078 @@ -72,7 +72,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 07898564890be4ff9e6c039fa6aa9d41 2011-01-01T12:24:18.924489Z 4603 @@ -118,7 +118,7 @@ -2010-09-23T14:37:45.427769Z +2011-03-03T11:05:09.000000Z 29604d905b321f5bf19b86f7b9797394 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 test/exemplars/.svn/entries --- a/test/exemplars/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/exemplars/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/exemplars http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 26c766235d2f79490fa33a7ec9c154ae 2010-01-27T18:29:03.119133Z 3340 @@ -66,7 +66,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z 62261c71ec828fa443bd44e055602e3d 2010-01-27T18:29:03.119133Z 3340 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 0da51e5e074d641e056e5011545571b8 2010-01-27T18:29:03.119133Z 3340 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 5b8b8763d7419d535d1d14d7bfb4f343 2010-01-27T18:29:03.119133Z 3340 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 13a55da47c4b6a61a3dbfd73eea41049 2010-08-19T22:24:42.251508Z 4010 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 26c91af771947fc671b87a08282608b3 2010-04-13T05:57:27.803435Z 3670 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z acf3ae00213d45112f6e13ecce212af1 2010-01-28T19:05:21.831741Z 3342 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 662be883bd5a43d964b868caaf34b276 2010-01-27T18:29:03.119133Z 3340 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z 2dc494eb57aee9ee3c3ca5324f61e707 2010-01-27T18:29:03.119133Z 3340 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 06cec6b1adf323a00a75e5c008f73c57 2010-01-27T18:29:03.119133Z 3340 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z e51316252a08488be9aa2878c00c4959 2010-01-27T18:29:03.119133Z 3340 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z e5f24c612cf3bcc7b17aeeafeae0697d 2009-10-20T00:36:51.144135Z 2937 @@ -440,7 +440,7 @@ -2010-11-19T13:04:41.365641Z +2011-03-03T11:05:08.000000Z 9be3a10325013fa24b00903db30d1ca3 2010-11-14T16:24:21.989522Z 4406 @@ -474,7 +474,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 24d00671cf3c2137d957ee6dac273517 2010-01-28T19:05:21.831741Z 3342 @@ -508,7 +508,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 1f7deb35b057dce8eb5dbc41d9a29019 2010-01-28T19:05:21.831741Z 3342 @@ -542,7 +542,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 575c5f91f698576ec8f6cc88bbcd31d8 2010-01-27T18:29:03.119133Z 3340 @@ -576,7 +576,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z fd5cfe62b2a92441a7cdb5035c4c4897 2009-10-18T22:25:00.956502Z 2930 @@ -610,7 +610,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z faf4bf5a3a3662c361ce668c20c293a4 2010-01-27T18:29:03.119133Z 3340 @@ -644,7 +644,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 91f000c1e57fb0edc16bf90ea8efc6fa 2010-01-28T19:05:21.831741Z 3342 @@ -678,7 +678,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 3b871be1550b1a964324a18f868dabae 2009-12-06T10:28:20.099964Z 3123 @@ -712,7 +712,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z dfe8cbec2ef3bcffe6b9352e3a3d807c 2009-10-18T22:25:00.956502Z 2930 @@ -746,7 +746,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z a9ebd14814e0885fc096d0702745f30d 2010-01-27T18:29:03.119133Z 3340 @@ -774,13 +774,47 @@ 481 +member_role_exemplar.rb +file + + + + +2011-03-03T11:05:08.000000Z +d1bdf1810c216ecde56d0750f78bea10 +2010-01-27T18:29:03.119133Z +3340 +edavis10 + + + + + + + + + + + + + + + + + + + + + +250 + issue_exemplar.rb file -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 92ac53d6b3a2e00ae1a9e0e4bc5d548b 2010-02-08T18:53:12.750770Z 3398 @@ -808,16 +842,16 @@ 449 -member_role_exemplar.rb +tracker_exemplar.rb file -2010-09-23T14:37:45.291809Z -d1bdf1810c216ecde56d0750f78bea10 -2010-01-27T18:29:03.119133Z -3340 +2011-03-03T11:05:08.000000Z +94aed9cd40bd95ab8d8c2f51bfc097cf +2009-10-18T22:25:00.956502Z +2930 edavis10 @@ -840,7 +874,7 @@ -250 +179 issue_status_exemplar.rb file @@ -848,7 +882,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z d17dfd87c9c081965089712a4ce42a6d 2009-10-18T22:25:00.956502Z 2930 @@ -876,14 +910,14 @@ 182 -tracker_exemplar.rb +time_entry_activity.rb file -2010-09-23T14:37:45.291809Z -94aed9cd40bd95ab8d8c2f51bfc097cf +2011-03-03T11:05:08.000000Z +74f5207a054732dd9be1b3184340ca77 2009-10-18T22:25:00.956502Z 2930 edavis10 @@ -908,7 +942,7 @@ -179 +236 subversion_repository_exemplar.rb file @@ -916,7 +950,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 908d8689f3ff469978b8af8bb55084b4 2010-01-27T18:29:03.119133Z 3340 @@ -944,14 +978,14 @@ 235 -time_entry_activity.rb +role_exemplar.rb file -2010-09-23T14:37:45.291809Z -74f5207a054732dd9be1b3184340ca77 +2011-03-03T11:05:08.000000Z +9c97ca570fa9b00ab1ecebd226f52f66 2009-10-18T22:25:00.956502Z 2930 edavis10 @@ -976,7 +1010,7 @@ -236 +157 changeset_exemplar.rb file @@ -984,7 +1018,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z c01820cc719616bb5a0895cfddb40798 2010-01-27T18:29:03.119133Z 3340 @@ -1012,47 +1046,13 @@ 377 -role_exemplar.rb -file - - - - -2010-09-23T14:37:45.291809Z -9c97ca570fa9b00ab1ecebd226f52f66 -2009-10-18T22:25:00.956502Z -2930 -edavis10 - - - - - - - - - - - - - - - - - - - - - -157 - comment_exemplar.rb file -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z 27218d998d6798365d0cc47ae8d8bb87 2010-01-28T19:05:21.831741Z 3342 @@ -1086,7 +1086,7 @@ -2010-09-23T14:37:45.295820Z +2011-03-03T11:05:08.000000Z 0b05f7ce166d5bb3695d2fad7e56fc7f 2010-01-27T18:29:03.119133Z 3340 @@ -1120,7 +1120,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 2a6254ddbc381a97b49b17936c25ef78 2010-01-28T19:05:21.831741Z 3342 @@ -1154,7 +1154,7 @@ -2010-09-23T14:37:45.287807Z +2011-03-03T11:05:08.000000Z d60529466c1df6db1edcdac71fa1a9d7 2010-04-13T05:57:27.803435Z 3670 @@ -1188,7 +1188,7 @@ -2010-11-19T13:04:41.365641Z +2011-03-03T11:05:08.000000Z 44278bb3b28eed2566aab063777becf7 2010-09-28T18:22:10.512346Z 4218 @@ -1222,7 +1222,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 0a69ac358346b15717ccb6b0cddba4be 2010-01-27T18:29:03.119133Z 3340 @@ -1256,7 +1256,7 @@ -2010-09-23T14:37:45.291809Z +2011-03-03T11:05:08.000000Z 19471f6afbec20925ddd6824c1290526 2010-01-27T18:29:03.119133Z 3340 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/.svn/all-wcprops --- a/test/fixtures/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,19 +1,19 @@ K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/4681/trunk/test/fixtures +/svn/!svn/ver/4964/trunk/test/fixtures END journal_details.yml K 25 svn:wc:ra_dav:version-url V 58 -/svn/!svn/ver/3123/trunk/test/fixtures/journal_details.yml +/svn/!svn/ver/4954/trunk/test/fixtures/journal_details.yml END issue_statuses.yml K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/2895/trunk/test/fixtures/issue_statuses.yml +/svn/!svn/ver/4895/trunk/test/fixtures/issue_statuses.yml END changesets.yml K 25 @@ -199,7 +199,7 @@ K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4216/trunk/test/fixtures/users.yml +/svn/!svn/ver/4936/trunk/test/fixtures/users.yml END auth_sources.yml K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/.svn/entries --- a/test/fixtures/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures http://redmine.rubyforge.org/svn -2011-01-10T19:45:20.108166Z -4681 -jplang +2011-02-28T14:12:47.115180Z +4964 +tmaruyama @@ -35,10 +35,10 @@ -2010-09-23T14:37:45.327799Z -7f7308fa24fe8015418b4bf81a265389 -2009-12-06T10:28:20.099964Z -3123 +2011-03-03T11:40:18.000000Z +c85ec633618360a62da10b17100bbf56 +2011-02-27T13:34:41.060565Z +4954 jplang has-props @@ -61,7 +61,7 @@ -359 +547 ldap dir @@ -72,10 +72,10 @@ -2010-09-23T14:37:45.327799Z -940bc0bea76bc76ba8ef1b224d744eee -2009-09-20T14:06:57.257282Z -2895 +2011-03-03T11:40:18.000000Z +2d31c6b69ca13da5466d1600bae9a2fd +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -98,7 +98,7 @@ -505 +589 changesets.yml file @@ -106,7 +106,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z d3a777560e5a963bc848b30547a65d4b 2010-12-05T11:45:09.061840Z 4470 @@ -140,7 +140,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 15f318dd68723b4c4dab1e1ca66dd044 2011-01-06T20:36:31.826591Z 4645 @@ -177,7 +177,7 @@ -2010-09-23T14:37:45.355763Z +2011-03-03T11:05:09.000000Z a519d5e75a6d1ac1516064c882aa773c 2009-09-20T14:06:57.257282Z 2895 @@ -205,13 +205,47 @@ 165 +time_entries.yml +file + + + + +2011-03-03T11:05:09.000000Z +5259028ece10055ea04cb1baddadd334 +2009-10-21T22:34:52.412718Z +2950 +edavis10 +has-props + + + + + + + + + + + + + + + + + + + + +1074 + projects_trackers.yml file -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z b7264b0f4d285dc38ba7139feaabafe2 2008-12-29T12:40:56.716698Z 2196 @@ -245,7 +279,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z e9853df4a04648bcb9389127748b24c4 2009-09-20T14:06:57.257282Z 2895 @@ -273,47 +307,13 @@ 428 -time_entries.yml -file - - - - -2010-09-23T14:37:45.351765Z -5259028ece10055ea04cb1baddadd334 -2009-10-21T22:34:52.412718Z -2950 -edavis10 -has-props - - - - - - - - - - - - - - - - - - - - -1074 - custom_values.yml file -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 342c09046e9942f00cced7e066066202 2010-12-11T10:47:00.859736Z 4488 @@ -347,7 +347,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z b72e570a19a6a6297fd0e78a0c15d9a6 2009-09-20T14:06:57.257282Z 2895 @@ -381,7 +381,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z e6b2256ffe56fa2baa64e474f5c920d6 2009-09-20T14:06:57.257282Z 2895 @@ -415,7 +415,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 7e42308ab41cac587386d54899cfcef5 2009-09-20T14:06:57.257282Z 2895 @@ -449,7 +449,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z ad513155b260eb8a8739d4d13c2823a8 2009-12-19T13:32:21.556847Z 3194 @@ -483,7 +483,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z 1cdfea6614ecba6cddecb3d4524c38ba 2009-12-26T16:14:55.591181Z 3250 @@ -517,7 +517,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 159394b420966c9e2f5ab0e31cb93b41 2009-11-27T20:32:28.228739Z 3099 @@ -554,7 +554,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z e5a26332fd48dac7e33a963622f49994 2009-09-20T14:06:57.257282Z 2895 @@ -582,13 +582,16 @@ 293 +configuration +dir + changes.yml file -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z 909e55408711ba1774e1c071b162962f 2009-09-20T14:06:57.257282Z 2895 @@ -622,7 +625,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z c6789a99aba9f28cf1d31a36b36224c8 2010-01-03T11:18:09.741250Z 3278 @@ -656,7 +659,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z bafbddc194242dbdcac1f2bfc550c27b 2010-03-13T14:56:49.379682Z 3573 @@ -693,7 +696,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z 86387d627355e1debc04c364c29efe81 2009-12-26T16:14:55.591181Z 3250 @@ -727,7 +730,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z a8c37ca171bb5f39ffbc6cd3ffcf0c52 2010-12-10T11:06:21.419457Z 4482 @@ -761,7 +764,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z b5bafc332d23c9efcc2ef648a9a393b9 2009-11-16T18:07:30.910440Z 3071 @@ -789,13 +792,47 @@ 2345 +wiki_contents.yml +file + + + + +2011-03-03T11:05:09.000000Z +595d0f0964e3c3f8ce7edb4b07941ffa +2011-01-10T19:45:20.108166Z +4681 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1953 + watchers.yml file -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 9dbcd982c4227d919ea750ce4fde79a7 2009-02-12T17:35:57.542817Z 2456 @@ -823,47 +860,13 @@ 219 -wiki_contents.yml -file - - - - -2011-01-13T14:09:10.000000Z -595d0f0964e3c3f8ce7edb4b07941ffa -2011-01-10T19:45:20.108166Z -4681 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1953 - wiki_pages.yml file -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 8d80a417fe13f7041cdec04f3206169e 2011-01-10T18:32:04.408692Z 4680 @@ -897,7 +900,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z c1fe3d9f5bbcbf5cf73c684b744d0c7a 2010-12-12T17:00:52.100205Z 4505 @@ -931,7 +934,7 @@ -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z 0cb04e10717d1de94f328dd92f2e9f8c 2009-09-20T14:06:57.257282Z 2895 @@ -965,7 +968,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z fcf009196cf46bc9d64e947e8275e51f 2009-09-20T14:06:57.257282Z 2895 @@ -1002,7 +1005,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z a12098ae3dcc7df2fffdc5aabc036445 2009-12-26T16:14:55.591181Z 3250 @@ -1039,7 +1042,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z 0f791723030addfd84aeb8e8478b4373 2009-12-06T10:28:20.099964Z 3123 @@ -1073,7 +1076,7 @@ -2010-09-23T14:37:45.355763Z +2011-03-03T11:05:09.000000Z be9ed58ec8ae1a4d2e1608c712c480be 2009-09-20T14:06:57.257282Z 2895 @@ -1107,7 +1110,7 @@ -2010-09-23T14:37:45.319762Z +2011-03-03T11:05:09.000000Z 28c83450d87eb6a49fe3d920f05e16b7 2010-01-14T20:00:17.463579Z 3313 @@ -1141,11 +1144,11 @@ -2010-11-19T13:04:46.864726Z -f590d477ec468a76d8d31d5ed99de0e6 -2010-09-28T18:22:00.231301Z -4216 -edavis10 +2011-03-03T11:40:18.000000Z +4bc8168f868eb01690365ddcb82e8841 +2011-02-23T17:27:31.762248Z +4936 +jplang has-props @@ -1167,7 +1170,7 @@ -3294 +3500 auth_sources.yml file @@ -1175,7 +1178,7 @@ -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z f299e9e4f8b4310d276f3cc0bd4573a2 2010-02-26T08:42:40.283735Z 3490 @@ -1209,7 +1212,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z f41152c0bbe67b30733fb44c847c0c28 2009-12-13T12:39:22.716082Z 3167 @@ -1243,7 +1246,7 @@ -2010-09-23T14:37:45.327799Z +2011-03-03T11:05:09.000000Z 14b2db45f35ee3e6f8c2a8a05b94c82b 2009-11-07T08:44:56.035544Z 3013 @@ -1277,7 +1280,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 0670d0dee081a5f922aa2d3ff7af9764 2009-12-06T10:28:20.099964Z 3123 @@ -1311,7 +1314,7 @@ -2010-09-23T14:37:45.315821Z +2011-03-03T11:05:09.000000Z c3c2ab815b9af7fb01ccafc5fc881f87 2009-10-25T11:23:46.266302Z 2976 @@ -1345,7 +1348,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z c91798950ab5d71a04f10a60ad9e5259 2011-01-01T13:40:36.520874Z 4604 @@ -1379,7 +1382,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 3106fd060b768ea17e35b5ea975e0aca 2010-12-12T17:00:52.100205Z 4505 @@ -1413,7 +1416,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 644bd85c22127195b9f31217cce0595e 2009-09-20T14:06:57.257282Z 2895 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/.svn/text-base/issue_statuses.yml.svn-base --- a/test/fixtures/.svn/text-base/issue_statuses.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/.svn/text-base/issue_statuses.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,31 +1,37 @@ --- +issue_statuses_001: + id: 1 + name: New + is_default: true + is_closed: false + position: 1 +issue_statuses_002: + id: 2 + name: Assigned + is_default: false + is_closed: false + position: 2 +issue_statuses_003: + id: 3 + name: Resolved + is_default: false + is_closed: false + position: 3 +issue_statuses_004: + name: Feedback + id: 4 + is_default: false + is_closed: false + position: 4 +issue_statuses_005: + id: 5 + name: Closed + is_default: false + is_closed: true + position: 5 issue_statuses_006: + id: 6 name: Rejected is_default: false is_closed: true - id: 6 -issue_statuses_001: - name: New - is_default: true - is_closed: false - id: 1 -issue_statuses_002: - name: Assigned - is_default: false - is_closed: false - id: 2 -issue_statuses_003: - name: Resolved - is_default: false - is_closed: false - id: 3 -issue_statuses_004: - name: Feedback - is_default: false - is_closed: false - id: 4 -issue_statuses_005: - name: Closed - is_default: false - is_closed: true - id: 5 + position: 6 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/.svn/text-base/journal_details.yml.svn-base --- a/test/fixtures/.svn/text-base/journal_details.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/.svn/text-base/journal_details.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -20,3 +20,10 @@ value: "6" prop_key: fixed_version_id journal_id: 4 +journal_details_004: + old_value: "This word was removed and an other was" + property: attr + id: 4 + value: "This word was and an other was added" + prop_key: description + journal_id: 3 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/.svn/text-base/users.yml.svn-base --- a/test/fixtures/.svn/text-base/users.yml.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/.svn/text-base/users.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,9 @@ status: 1 last_login_on: language: en - hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608 + # password = foo + salt: 3126f764c3c5ac61cbfc103f25f934cf + hashed_password: 9e4dd7eeb172c12a0691a6d9d3a269f7e9fe671b updated_on: 2006-07-19 19:34:07 +02:00 admin: false mail: rhill@somenet.foo @@ -20,7 +22,9 @@ status: 1 last_login_on: 2006-07-19 22:57:52 +02:00 language: en - hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997 + # password = admin + salt: 82090c953c4a0000a7db253b0691a6b4 + hashed_password: b5b6ff9543bf1387374cdfa27a54c96d236a7150 updated_on: 2006-07-19 22:57:52 +02:00 admin: true mail: admin@somenet.foo @@ -36,7 +40,9 @@ status: 1 last_login_on: 2006-07-19 22:42:15 +02:00 language: en - hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d + # password = jsmith + salt: 67eb4732624d5a7753dcea7ce0bb7d7d + hashed_password: bfbe06043353a677d0215b26a5800d128d5413bc updated_on: 2006-07-19 22:42:15 +02:00 admin: false mail: jsmith@somenet.foo @@ -52,7 +58,9 @@ status: 1 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + # password = foo + salt: 7599f9963ec07b5a3b55b354407120c0 + hashed_password: 8f659c8d7c072f189374edacfa90d6abbc26d8ed updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper@somenet.foo @@ -70,7 +78,7 @@ status: 3 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + hashed_password: 1 updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper2@somenet.foo diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 52 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration +END +no_default.yml +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/no_default.yml +END +overrides.yml +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/overrides.yml +END +default.yml +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/default.yml +END +empty.yml +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4752/trunk/test/fixtures/configuration/empty.yml +END diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,164 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/test/fixtures/configuration +http://redmine.rubyforge.org/svn + + + +2011-01-23T10:22:00.456857Z +4752 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +no_default.yml +file + + + + +2011-03-03T11:05:09.000000Z +3c3b944decf7592dd335fc1d536985e7 +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +64 + +overrides.yml +file + + + + +2011-03-03T11:05:09.000000Z +0b2286bdf8e49e063fb511553d63d73b +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +83 + +default.yml +file + + + + +2011-03-03T11:05:09.000000Z +8f9245a8cde919ad5693021c5eb8e67e +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +64 + +empty.yml +file + + + + +2011-03-03T11:05:09.000000Z +f807b10f3b740dafc7ebfd848048a587 +2011-01-23T10:22:00.456857Z +4752 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +43 + diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/prop-base/default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/default.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/prop-base/empty.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/empty.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/prop-base/no_default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/no_default.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/prop-base/overrides.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/prop-base/overrides.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/text-base/default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/default.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,8 @@ +default: + somesetting: foo + +production: + +development: + +test: diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/text-base/empty.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/empty.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,7 @@ +default: + +production: + +development: + +test: diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/text-base/no_default.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/no_default.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,8 @@ +default: + +production: + +development: + +test: + somesetting: foo diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/.svn/text-base/overrides.yml.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/.svn/text-base/overrides.yml.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +default: + somesetting: foo + +production: + +development: + +test: + somesetting: bar diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/default.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/default.yml Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,8 @@ +default: + somesetting: foo + +production: + +development: + +test: diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/empty.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/empty.yml Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,7 @@ +default: + +production: + +development: + +test: diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/no_default.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/no_default.yml Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,8 @@ +default: + +production: + +development: + +test: + somesetting: foo diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/configuration/overrides.yml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/configuration/overrides.yml Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,9 @@ +default: + somesetting: foo + +production: + +development: + +test: + somesetting: bar diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/diffs/.svn/entries --- a/test/fixtures/diffs/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/diffs/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/fixtures/diffs +4993 +http://redmine.rubyforge.org/svn/trunk/test/fixtures/diffs http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:09.000000Z 64527b211202fbff696792d538e2b14e 2008-12-07T15:21:40.165860Z 2112 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/encoding/.svn/entries --- a/test/fixtures/encoding/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/encoding/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/fixtures/encoding +4993 +http://redmine.rubyforge.org/svn/trunk/test/fixtures/encoding http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:09.000000Z eee83cf374737071543358b83f85f75b 2010-02-20T11:24:41.988635Z 3466 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/files/.svn/entries --- a/test/fixtures/files/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/files/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/files http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 8ab69915b7f66c8199e6d137073d9ffe 2011-01-01T13:40:36.520874Z 4604 @@ -66,7 +66,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 69b7e1bc8546406b1ddc3719d879254c 2011-01-01T13:40:36.520874Z 4604 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z 8b4167c6b87869174dd17db0694ef2e1 2008-06-09T18:40:59.518583Z 1520 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z c72c8a9a0de99c39f9e6d712c13b7624 2008-06-09T18:40:59.518583Z 1520 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.323763Z +2011-03-03T11:05:09.000000Z 1478adae0d4eb06d35897518540e25d6 2008-12-02T17:57:13.240321Z 2085 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/files/.svn/prop-base/060719210727_changeset_iso8859-1.diff.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/.svn/prop-base/060719210727_changeset_iso8859-1.diff.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/files/.svn/text-base/060719210727_changeset_iso8859-1.diff.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/.svn/text-base/060719210727_changeset_iso8859-1.diff.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/files/.svn/text-base/060719210727_changeset_utf8.diff.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/.svn/text-base/060719210727_changeset_utf8.diff.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/files/060719210727_changeset_iso8859-1.diff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/060719210727_changeset_iso8859-1.diff Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/files/060719210727_changeset_utf8.diff --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/fixtures/files/060719210727_changeset_utf8.diff Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,13 @@ +Index: trunk/app/controllers/issues_controller.rb +=================================================================== +--- trunk/app/controllers/issues_controller.rb (révision 1483) ++++ trunk/app/controllers/issues_controller.rb (révision 1484) +@@ -149,7 +149,7 @@ + attach_files(@issue, params[:attachments]) + flash[:notice] = 'Demande créée avec succès' + Mailer.deliver_issue_add(@issue) if Setting.notified_events.include?('issue_added') +- redirect_to :controller => 'issues', :action => 'show', :id => @issue, :project_id => @project ++ redirect_to :controller => 'issues', :action => 'show', :id => @issue + return + end + end diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/issue_statuses.yml --- a/test/fixtures/issue_statuses.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/issue_statuses.yml Thu Mar 03 12:02:03 2011 +0000 @@ -1,31 +1,37 @@ --- +issue_statuses_001: + id: 1 + name: New + is_default: true + is_closed: false + position: 1 +issue_statuses_002: + id: 2 + name: Assigned + is_default: false + is_closed: false + position: 2 +issue_statuses_003: + id: 3 + name: Resolved + is_default: false + is_closed: false + position: 3 +issue_statuses_004: + name: Feedback + id: 4 + is_default: false + is_closed: false + position: 4 +issue_statuses_005: + id: 5 + name: Closed + is_default: false + is_closed: true + position: 5 issue_statuses_006: + id: 6 name: Rejected is_default: false is_closed: true - id: 6 -issue_statuses_001: - name: New - is_default: true - is_closed: false - id: 1 -issue_statuses_002: - name: Assigned - is_default: false - is_closed: false - id: 2 -issue_statuses_003: - name: Resolved - is_default: false - is_closed: false - id: 3 -issue_statuses_004: - name: Feedback - is_default: false - is_closed: false - id: 4 -issue_statuses_005: - name: Closed - is_default: false - is_closed: true - id: 5 + position: 6 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/journal_details.yml --- a/test/fixtures/journal_details.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/journal_details.yml Thu Mar 03 12:02:03 2011 +0000 @@ -20,3 +20,10 @@ value: "6" prop_key: fixed_version_id journal_id: 4 +journal_details_004: + old_value: "This word was removed and an other was" + property: attr + id: 4 + value: "This word was and an other was added" + prop_key: description + journal_id: 3 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/ldap/.svn/entries --- a/test/fixtures/ldap/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/ldap/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/fixtures/ldap +4993 +http://redmine.rubyforge.org/svn/trunk/test/fixtures/ldap http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:09.000000Z acbef41cb6cf252c83489cc3344e2604 2010-02-26T08:31:36.418866Z 3489 @@ -66,7 +66,7 @@ -2010-08-12T15:03:25.000000Z +2011-03-03T11:05:09.000000Z f1b10e6d96dd658e563d4ba74d52e87b 2010-02-26T08:31:36.418866Z 3489 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/mail_handler/.svn/all-wcprops --- a/test/fixtures/mail_handler/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/mail_handler/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -3,36 +3,36 @@ V 51 /svn/!svn/ver/4575/trunk/test/fixtures/mail_handler END +ticket_html_only.eml +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/2136/trunk/test/fixtures/mail_handler/ticket_html_only.eml +END message_reply_by_subject.eml K 25 svn:wc:ra_dav:version-url V 80 /svn/!svn/ver/2294/trunk/test/fixtures/mail_handler/message_reply_by_subject.eml END -ticket_html_only.eml -K 25 -svn:wc:ra_dav:version-url -V 72 -/svn/!svn/ver/2136/trunk/test/fixtures/mail_handler/ticket_html_only.eml -END issue_update_with_multiple_quoted_reply_above.eml K 25 svn:wc:ra_dav:version-url V 101 /svn/!svn/ver/4361/trunk/test/fixtures/mail_handler/issue_update_with_multiple_quoted_reply_above.eml END +ticket_with_localized_attributes.eml +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/4395/trunk/test/fixtures/mail_handler/ticket_with_localized_attributes.eml +END ticket_with_spaces_between_attribute_and_separator.eml K 25 svn:wc:ra_dav:version-url V 106 /svn/!svn/ver/2838/trunk/test/fixtures/mail_handler/ticket_with_spaces_between_attribute_and_separator.eml END -ticket_with_localized_attributes.eml -K 25 -svn:wc:ra_dav:version-url -V 88 -/svn/!svn/ver/4395/trunk/test/fixtures/mail_handler/ticket_with_localized_attributes.eml -END ticket_with_long_subject.eml K 25 svn:wc:ra_dav:version-url @@ -105,18 +105,18 @@ V 92 /svn/!svn/ver/4361/trunk/test/fixtures/mail_handler/issue_update_with_quoted_reply_above.eml END +ticket_with_custom_fields.eml +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/2211/trunk/test/fixtures/mail_handler/ticket_with_custom_fields.eml +END ticket_reply.eml K 25 svn:wc:ra_dav:version-url V 68 /svn/!svn/ver/2288/trunk/test/fixtures/mail_handler/ticket_reply.eml END -ticket_with_custom_fields.eml -K 25 -svn:wc:ra_dav:version-url -V 81 -/svn/!svn/ver/2211/trunk/test/fixtures/mail_handler/ticket_with_custom_fields.eml -END message_reply.eml K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/mail_handler/.svn/entries --- a/test/fixtures/mail_handler/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/mail_handler/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/mail_handler http://redmine.rubyforge.org/svn @@ -26,47 +26,13 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 -issue_update_with_multiple_quoted_reply_above.eml -file - - - - -2010-11-19T13:04:46.204713Z -ef4c0db9f76d81792292785d2ae9cb6a -2010-11-02T19:00:31.177706Z -4361 -edavis10 - - - - - - - - - - - - - - - - - - - - - -2018 - ticket_html_only.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 5e24af78a4534798611158a3d81efb34 2008-12-14T17:10:16.292262Z 2136 @@ -100,7 +66,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 09130a1100cb410ed07fdff5564b2993 2009-01-21T18:22:30.765588Z 2294 @@ -128,13 +94,47 @@ 410 +issue_update_with_multiple_quoted_reply_above.eml +file + + + + +2011-03-03T11:05:09.000000Z +ef4c0db9f76d81792292785d2ae9cb6a +2010-11-02T19:00:31.177706Z +4361 +edavis10 + + + + + + + + + + + + + + + + + + + + + +2018 + ticket_with_localized_attributes.eml file -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z 8ac895d880e6f19fc21333c4003babaf 2010-11-12T12:29:35.878777Z 4395 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 4fbec91f5454b84077ae1290fba0bc8e 2009-08-13T16:57:36.259313Z 2838 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z ed7adca07ce64c4d15f3e638a222e38d 2010-06-20T16:22:36.211973Z 3801 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 0c3b0545575d405416f585f8d5910bcb 2009-11-08T13:51:53.384956Z 3022 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 40927905de0187dc52a9adb3e4a2c252 2008-11-30T16:00:45.142894Z 2077 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z d276c2037b0bf277b66f921379695c35 2008-07-06T16:26:25.352975Z 1643 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.335799Z +2011-03-03T11:05:09.000000Z 1fc46fd2b0b8dcdaf67dfde24d0e8b89 2010-01-17T11:00:54.196987Z 3322 @@ -372,7 +372,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 4d85674ea94930e7f1c8e288f03a57b8 2008-06-22T10:45:03.753412Z 1568 @@ -406,7 +406,7 @@ -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 9dbf54ce4376f62447ef0696fe9b3a79 2010-06-19T19:24:17.380627Z 3783 @@ -434,13 +434,47 @@ 485 +ticket_by_unknown_user.eml +file + + + + +2011-03-03T11:05:09.000000Z +0979c01baf02b924bd8a6db3980c59c9 +2009-06-14T14:48:34.287541Z +2789 +jplang + + + + + + + + + + + + + + + + + + + + + +526 + ticket_with_invalid_attributes.eml file -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z 605f28e31469b6897f33cf34bbc1ad0a 2010-11-14T13:48:01.671461Z 4404 @@ -468,47 +502,13 @@ 2028 -ticket_by_unknown_user.eml -file - - - - -2010-09-23T14:37:45.339796Z -0979c01baf02b924bd8a6db3980c59c9 -2009-06-14T14:48:34.287541Z -2789 -jplang - - - - - - - - - - - - - - - - - - - - - -526 - ticket_reply_with_status.eml file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:09.000000Z f1b76e664d73fd54d9e346c2329d94a9 2010-12-29T17:36:01.998670Z 4575 @@ -542,7 +542,7 @@ -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z af7f3e5f9caddc2cad5fba0ba9d73882 2010-11-12T11:34:53.754717Z 4394 @@ -576,7 +576,7 @@ -2010-11-19T13:04:46.204713Z +2011-03-03T11:05:09.000000Z 977375e727ce2d63ce878f877d692c62 2010-11-02T19:00:31.177706Z 4361 @@ -604,47 +604,13 @@ 1979 -ticket_reply.eml -file - - - - -2010-09-23T14:37:45.339796Z -4bd4decc00f83404fdd1a835809e4552 -2009-01-19T18:29:07.726757Z -2288 -jplang - - - - - - - - - - - - - - - - - - - - - -2012 - ticket_with_custom_fields.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z 4ef77e6337f95c7a8362c4a51c09d0af 2008-12-30T14:57:33.008940Z 2211 @@ -672,13 +638,47 @@ 1887 +ticket_reply.eml +file + + + + +2011-03-03T11:05:09.000000Z +4bd4decc00f83404fdd1a835809e4552 +2009-01-19T18:29:07.726757Z +2288 +jplang + + + + + + + + + + + + + + + + + + + + + +2012 + message_reply.eml file -2010-09-23T14:37:45.339796Z +2011-03-03T11:05:09.000000Z c174d0c5bbb339ef9361c45aab58b2bb 2009-01-19T19:03:53.393843Z 2289 @@ -712,7 +712,7 @@ -2010-09-23T14:37:45.343799Z +2011-03-03T11:05:09.000000Z 7bc2d83ee5c078a264dd66ec75f35c77 2009-03-06T18:25:19.434505Z 2553 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/mailer/.svn/entries --- a/test/fixtures/mailer/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/mailer/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/fixtures/mailer +4993 +http://redmine.rubyforge.org/svn/trunk/test/fixtures/mailer http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/repositories/.svn/all-wcprops --- a/test/fixtures/repositories/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/repositories/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 51 -/svn/!svn/ver/4676/trunk/test/fixtures/repositories +/svn/!svn/ver/4964/trunk/test/fixtures/repositories END darcs_repository.tar.gz K 25 @@ -31,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 73 -/svn/!svn/ver/4310/trunk/test/fixtures/repositories/git_repository.tar.gz +/svn/!svn/ver/4964/trunk/test/fixtures/repositories/git_repository.tar.gz END filesystem_repository.tar.gz K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/repositories/.svn/entries --- a/test/fixtures/repositories/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/repositories/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/fixtures/repositories http://redmine.rubyforge.org/svn -2011-01-10T17:43:01.353336Z -4676 -jplang +2011-02-28T14:12:47.115180Z +4964 +tmaruyama @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 0553391b55404e8ff509358b388f085b 2008-03-12T20:28:49.748698Z 1236 @@ -66,7 +66,7 @@ -2011-01-13T14:09:10.000000Z +2011-03-03T11:05:09.000000Z 2436fc3d3aefeb07b291d5660396ca8d 2011-01-10T17:43:01.353336Z 4676 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z bd13c11517bf083e83846aeccff745f1 2010-06-20T16:08:26.745839Z 3800 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.347765Z +2011-03-03T11:05:09.000000Z fa70d4aeca5639d750d94281ad664957 2007-12-03T19:19:36.156779Z 951 @@ -168,11 +168,11 @@ -2010-11-19T13:04:46.860726Z -300e21b10239e2fa28df3111924b8328 -2010-10-29T23:21:57.240368Z -4310 -jbbarth +2011-03-03T11:40:18.000000Z +a520f027eaf4a4548dfbc85e8d7e71c5 +2011-02-28T14:12:47.115180Z +4964 +tmaruyama has-props @@ -194,7 +194,7 @@ -20730 +15432 filesystem_repository.tar.gz file @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 9fbee7c5669de84f0767597eb41af9f7 2008-06-08T15:40:24.603157Z 1508 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.351765Z +2011-03-03T11:05:09.000000Z 0c4730bd5eb192e094531f218b7a3119 2007-12-13T18:52:09.073829Z 987 diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/repositories/.svn/text-base/git_repository.tar.gz.svn-base Binary file test/fixtures/repositories/.svn/text-base/git_repository.tar.gz.svn-base has changed diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/repositories/git_repository.tar.gz Binary file test/fixtures/repositories/git_repository.tar.gz has changed diff -r fca2657f4aa5 -r eeebe205a056 test/fixtures/users.yml --- a/test/fixtures/users.yml Thu Jan 20 09:59:02 2011 +0000 +++ b/test/fixtures/users.yml Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,9 @@ status: 1 last_login_on: language: en - hashed_password: 4e4aeb7baaf0706bd670263fef42dad15763b608 + # password = foo + salt: 3126f764c3c5ac61cbfc103f25f934cf + hashed_password: 9e4dd7eeb172c12a0691a6d9d3a269f7e9fe671b updated_on: 2006-07-19 19:34:07 +02:00 admin: false mail: rhill@somenet.foo @@ -20,7 +22,9 @@ status: 1 last_login_on: 2006-07-19 22:57:52 +02:00 language: en - hashed_password: d033e22ae348aeb5660fc2140aec35850c4da997 + # password = admin + salt: 82090c953c4a0000a7db253b0691a6b4 + hashed_password: b5b6ff9543bf1387374cdfa27a54c96d236a7150 updated_on: 2006-07-19 22:57:52 +02:00 admin: true mail: admin@somenet.foo @@ -36,7 +40,9 @@ status: 1 last_login_on: 2006-07-19 22:42:15 +02:00 language: en - hashed_password: a9a653d4151fa2c081ba1ffc2c2726f3b80b7d7d + # password = jsmith + salt: 67eb4732624d5a7753dcea7ce0bb7d7d + hashed_password: bfbe06043353a677d0215b26a5800d128d5413bc updated_on: 2006-07-19 22:42:15 +02:00 admin: false mail: jsmith@somenet.foo @@ -52,7 +58,9 @@ status: 1 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + # password = foo + salt: 7599f9963ec07b5a3b55b354407120c0 + hashed_password: 8f659c8d7c072f189374edacfa90d6abbc26d8ed updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper@somenet.foo @@ -70,7 +78,7 @@ status: 3 last_login_on: language: en - hashed_password: 7feb7657aa7a7bf5aef3414a5084875f27192415 + hashed_password: 1 updated_on: 2006-07-19 19:33:19 +02:00 admin: false mail: dlopper2@somenet.foo diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/all-wcprops --- a/test/functional/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 40 -/svn/!svn/ver/4729/trunk/test/functional +/svn/!svn/ver/4982/trunk/test/functional END issues_controller_test.rb K 25 @@ -69,18 +69,18 @@ V 65 /svn/!svn/ver/4509/trunk/test/functional/admin_controller_test.rb END -welcome_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 67 -/svn/!svn/ver/4509/trunk/test/functional/welcome_controller_test.rb -END context_menus_controller_test.rb K 25 svn:wc:ra_dav:version-url V 73 /svn/!svn/ver/4673/trunk/test/functional/context_menus_controller_test.rb END +welcome_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/4900/trunk/test/functional/welcome_controller_test.rb +END account_controller_test.rb K 25 svn:wc:ra_dav:version-url @@ -93,6 +93,12 @@ V 69 /svn/!svn/ver/4509/trunk/test/functional/calendars_controller_test.rb END +journals_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4954/trunk/test/functional/journals_controller_test.rb +END time_entry_reports_controller_test.rb K 25 svn:wc:ra_dav:version-url @@ -103,13 +109,7 @@ K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4509/trunk/test/functional/workflows_controller_test.rb -END -journals_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4535/trunk/test/functional/journals_controller_test.rb +/svn/!svn/ver/4895/trunk/test/functional/workflows_controller_test.rb END project_enumerations_controller_test.rb K 25 @@ -139,7 +139,7 @@ K 25 svn:wc:ra_dav:version-url V 76 -/svn/!svn/ver/4577/trunk/test/functional/repositories_cvs_controller_test.rb +/svn/!svn/ver/4982/trunk/test/functional/repositories_cvs_controller_test.rb END application_controller_test.rb K 25 @@ -165,18 +165,18 @@ V 66 /svn/!svn/ver/4509/trunk/test/functional/search_controller_test.rb END -repositories_bazaar_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 79 -/svn/!svn/ver/4509/trunk/test/functional/repositories_bazaar_controller_test.rb -END messages_controller_test.rb K 25 svn:wc:ra_dav:version-url V 68 /svn/!svn/ver/4509/trunk/test/functional/messages_controller_test.rb END +repositories_bazaar_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4982/trunk/test/functional/repositories_bazaar_controller_test.rb +END attachments_controller_test.rb K 25 svn:wc:ra_dav:version-url @@ -225,23 +225,23 @@ V 68 /svn/!svn/ver/4647/trunk/test/functional/projects_controller_test.rb END -repositories_git_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 76 -/svn/!svn/ver/4713/trunk/test/functional/repositories_git_controller_test.rb -END members_controller_test.rb K 25 svn:wc:ra_dav:version-url V 67 /svn/!svn/ver/4509/trunk/test/functional/members_controller_test.rb END +repositories_git_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4734/trunk/test/functional/repositories_git_controller_test.rb +END repositories_mercurial_controller_test.rb K 25 svn:wc:ra_dav:version-url V 82 -/svn/!svn/ver/4718/trunk/test/functional/repositories_mercurial_controller_test.rb +/svn/!svn/ver/4855/trunk/test/functional/repositories_mercurial_controller_test.rb END issue_categories_controller_test.rb K 25 @@ -289,7 +289,7 @@ K 25 svn:wc:ra_dav:version-url V 78 -/svn/!svn/ver/4509/trunk/test/functional/repositories_darcs_controller_test.rb +/svn/!svn/ver/4982/trunk/test/functional/repositories_darcs_controller_test.rb END wiki_controller_test.rb K 25 @@ -297,29 +297,29 @@ V 64 /svn/!svn/ver/4509/trunk/test/functional/wiki_controller_test.rb END +previews_controller_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4509/trunk/test/functional/previews_controller_test.rb +END auth_sources_controller_test.rb K 25 svn:wc:ra_dav:version-url V 72 /svn/!svn/ver/4509/trunk/test/functional/auth_sources_controller_test.rb END -previews_controller_test.rb -K 25 -svn:wc:ra_dav:version-url -V 68 -/svn/!svn/ver/4509/trunk/test/functional/previews_controller_test.rb -END repositories_subversion_controller_test.rb K 25 svn:wc:ra_dav:version-url V 83 -/svn/!svn/ver/4710/trunk/test/functional/repositories_subversion_controller_test.rb +/svn/!svn/ver/4896/trunk/test/functional/repositories_subversion_controller_test.rb END issue_relations_controller_test.rb K 25 svn:wc:ra_dav:version-url V 75 -/svn/!svn/ver/4509/trunk/test/functional/issue_relations_controller_test.rb +/svn/!svn/ver/4764/trunk/test/functional/issue_relations_controller_test.rb END versions_controller_test.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/entries --- a/test/functional/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/functional http://redmine.rubyforge.org/svn -2011-01-16T15:23:11.666065Z -4729 -jplang +2011-03-01T10:27:30.170724Z +4982 +tmaruyama @@ -32,7 +32,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 1831ada3aea1c4ecb568cb55a718eec9 2010-12-18T13:40:50.641112Z 4530 @@ -66,7 +66,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z b42af2a4997da321fbe322b3d4ef47da 2010-12-12T23:24:34.194336Z 4509 @@ -100,7 +100,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 60c22807824b3989da92a03d4be0a1e6 2010-12-12T23:24:34.194336Z 4509 @@ -134,7 +134,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f7c1328f2c586830c64233c2db054f0a 2010-12-12T23:24:34.194336Z 4509 @@ -168,7 +168,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z e6efbfdb394b5a3d4c8f5430c202a5b0 2010-12-12T23:24:34.194336Z 4509 @@ -202,7 +202,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 145c16cdb388cc98a1223c6f6dd6fb17 2010-12-12T23:24:34.194336Z 4509 @@ -236,7 +236,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 69809abf0a26741f5ca07db44aa223c0 2010-12-12T23:24:34.194336Z 4509 @@ -270,7 +270,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z cc837387e8b85884334a89e8bf935118 2010-12-12T23:24:34.194336Z 4509 @@ -304,7 +304,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z b68039337f934e7e49f4a06cda5e2b12 2010-12-12T23:24:34.194336Z 4509 @@ -338,7 +338,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 0798c1198c6db7754d04c79144c449c0 2010-12-12T23:24:34.194336Z 4509 @@ -372,7 +372,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 744fc8a1d2a4cdf6e8aa3ad0caa0fe4a 2010-12-12T23:24:34.194336Z 4509 @@ -400,47 +400,13 @@ 4086 -welcome_controller_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -bf75948e1edceb4241e67a84731477f6 -2010-12-12T23:24:34.194336Z -4509 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -2379 - context_menus_controller_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z d3363951aa9a6c2a59c32d83d2483226 2011-01-09T21:01:40.583303Z 4673 @@ -468,13 +434,47 @@ 6411 +welcome_controller_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +99cada623881a6be69cdf13119cc1de7 +2011-02-21T09:53:29.844413Z +4900 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3015 + account_controller_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f6ad0bbad8d30d8ea41eb0b7ecaf32b6 2010-12-12T23:24:34.194336Z 4509 @@ -508,7 +508,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z a7eb2ff041caaed4c7c09ad8f9fe3719 2010-12-12T23:24:34.194336Z 4509 @@ -536,13 +536,47 @@ 2390 +journals_controller_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +aa7254e0715b3701554945deb5d98998 +2011-02-27T13:34:41.060565Z +4954 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3099 + time_entry_reports_controller_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z e21197e1c3590e65b300103bf8e16efe 2010-12-12T23:24:34.194336Z 4509 @@ -570,16 +604,16 @@ 5424 -journals_controller_test.rb +workflows_controller_test.rb file -2011-01-13T14:09:08.000000Z -04e54620db6899c02b7e7a9e2645d0a6 -2010-12-18T17:11:41.680297Z -4535 +2011-03-03T11:40:17.000000Z +843e1eb3b5d05f3cb16580fe88d1baf5 +2011-02-20T15:38:07.840581Z +4895 jplang has-props @@ -602,41 +636,7 @@ -2783 - -workflows_controller_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -e99e1deab48be8515101e664af4d55da -2010-12-12T23:24:34.194336Z -4509 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -6673 +7860 project_enumerations_controller_test.rb file @@ -644,7 +644,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 11b0d808c1b8f003db130d54022dbab0 2010-12-31T15:45:35.200558Z 4600 @@ -678,7 +678,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z b1aac6fc8fdaa84c3e3652849721bfa5 2010-12-12T23:24:34.194336Z 4509 @@ -706,13 +706,47 @@ 2663 +issue_moves_controller_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +539d0852190ec556b2284bfe678e8523 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +5131 + users_controller_test.rb file -2011-01-19T15:03:31.000000Z +2011-03-03T11:05:08.000000Z 067fe08ee66949066dd0db8fa2741f5e 2011-01-16T15:23:11.666065Z 4729 @@ -740,51 +774,17 @@ 9068 -issue_moves_controller_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -539d0852190ec556b2284bfe678e8523 -2010-12-12T23:24:34.194336Z -4509 -jbbarth - - - - - - - - - - - - - - - - - - - - - -5131 - repositories_cvs_controller_test.rb file -2011-01-13T14:09:08.000000Z -1d8cb0fdead69e39081ca4d0f7c68e51 -2010-12-29T17:46:47.689075Z -4577 -jplang +2011-03-03T11:40:17.000000Z +1802113ecf354a24583d7c5a8db750b6 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -806,7 +806,7 @@ -6662 +8336 application_controller_test.rb file @@ -814,7 +814,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 278a104110d269c64def6c487219db07 2010-12-23T13:33:01.454946Z 4571 @@ -848,7 +848,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 10667cf5e4dc66eea96b196643c93a42 2010-12-12T23:24:34.194336Z 4509 @@ -882,7 +882,7 @@ -2010-09-23T14:37:45.387766Z +2011-03-03T11:05:08.000000Z d6759c42ae866d7210c7006911e82a42 2010-05-23T03:16:31.304135Z 3744 @@ -916,7 +916,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z ce03a18446664d9bc073791097735811 2010-12-12T23:24:34.194336Z 4509 @@ -944,47 +944,13 @@ 4680 -repositories_bazaar_controller_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -c7a720bd5851fd9afe177432179cd921 -2010-12-12T23:24:34.194336Z -4509 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -5059 - messages_controller_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 887437d272f8b8eba93dbf8bd5645868 2010-12-12T23:24:34.194336Z 4509 @@ -1012,13 +978,47 @@ 5047 +repositories_bazaar_controller_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +138b8dc8d1e30b2a8f5eda76b0f905b6 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +5177 + attachments_controller_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 00941bda584b7f5b7b636e48635d83dd 2011-01-01T13:40:36.520874Z 4604 @@ -1052,7 +1052,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 893a5cfefe3652680d241de9a657652c 2010-12-12T23:24:34.194336Z 4509 @@ -1086,7 +1086,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 39db66894beef1baa1696d6aee75f45d 2010-12-12T23:24:34.194336Z 4509 @@ -1120,7 +1120,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z c8fa245738b58d9f87afc40fc1b71f94 2010-12-12T23:24:34.194336Z 4509 @@ -1154,7 +1154,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z d50a042e5cc7e5d43cbb9be02b82aaf6 2010-12-12T23:24:34.194336Z 4509 @@ -1188,7 +1188,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 3ed28603b2a3697d060e06d90dd7b118 2010-12-12T23:24:34.194336Z 4509 @@ -1222,7 +1222,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f5552cd43c853f04daaadb5d6c7bf159 2010-12-12T23:24:34.194336Z 4509 @@ -1256,7 +1256,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z dbbc4feeecbff202aa7569d4a17beaa1 2011-01-06T20:57:17.003359Z 4647 @@ -1290,7 +1290,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 7cdb2ab302fb93f982b33fb6460d48c3 2010-12-12T23:24:34.194336Z 4509 @@ -1324,10 +1324,10 @@ -2011-01-19T15:03:31.000000Z -77f633299c1c1b0a463c44e8cb0df415 -2011-01-14T23:10:13.682113Z -4713 +2011-03-03T11:05:08.000000Z +0852f4a59ed3301126f2b2a95fee40ef +2011-01-21T13:22:28.782688Z +4734 tmaruyama has-props @@ -1350,7 +1350,7 @@ -7824 +8148 repositories_mercurial_controller_test.rb file @@ -1358,10 +1358,10 @@ -2011-01-19T15:03:31.000000Z -a1c9433bf435d82001d81ebe611a3647 -2011-01-15T10:15:41.926218Z -4718 +2011-03-03T11:40:17.000000Z +c737d31340fe167746054c6975d86b18 +2011-02-16T11:18:18.909794Z +4855 tmaruyama has-props @@ -1384,7 +1384,7 @@ -7534 +7919 issue_categories_controller_test.rb file @@ -1392,7 +1392,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z eff59ff8c4c616a1773223454b960363 2010-12-12T23:24:34.194336Z 4509 @@ -1426,7 +1426,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z d91b8b56b5bd1fd602e96842dfabab72 2010-12-12T23:24:34.194336Z 4509 @@ -1460,7 +1460,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z df6f548bb7fbdaeb235c5e8d3c1be576 2010-12-12T23:24:34.194336Z 4509 @@ -1494,7 +1494,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f3101a3b1343baa274ce471911aa0e96 2010-12-12T23:24:34.194336Z 4509 @@ -1528,7 +1528,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 00f79a248e4bf77814823526e38ee630 2010-12-14T18:29:24.891563Z 4511 @@ -1562,7 +1562,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 8c664ac03cac7930264318af932f46e0 2010-12-12T23:24:34.194336Z 4509 @@ -1596,7 +1596,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 190cbeea6f926cc615d6d2918a50e909 2010-12-12T23:24:34.194336Z 4509 @@ -1630,11 +1630,11 @@ -2011-01-13T14:09:08.000000Z -ac4fd4943d72406872230aa7bad0213c -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:40:17.000000Z +a05a557c98b400ffe59662be78e31270 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -1656,7 +1656,7 @@ -3844 +4268 wiki_controller_test.rb file @@ -1664,7 +1664,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 33e64585bc7591ba6089135bbadb817e 2010-12-12T23:24:34.194336Z 4509 @@ -1692,13 +1692,47 @@ 17903 +previews_controller_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +c262b8203846b82045458a273da221fc +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +1106 + auth_sources_controller_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 017010de8f7353d064e6b866e9dbb0c3 2010-12-12T23:24:34.194336Z 4509 @@ -1726,51 +1760,17 @@ 1961 -previews_controller_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -c262b8203846b82045458a273da221fc -2010-12-12T23:24:34.194336Z -4509 -jbbarth - - - - - - - - - - - - - - - - - - - - - -1106 - repositories_subversion_controller_test.rb file -2011-01-19T15:03:31.000000Z -9ffab3723a0facfd46dabe5efe813d30 -2011-01-14T20:22:36.080461Z -4710 -jplang +2011-03-03T11:40:17.000000Z +d6a450e274753a0903a76b51c16eae7b +2011-02-21T03:59:30.193463Z +4896 +tmaruyama has-props @@ -1792,7 +1792,7 @@ -9276 +11247 issue_relations_controller_test.rb file @@ -1800,11 +1800,11 @@ -2011-01-13T14:09:08.000000Z -71066c7d539a973325b545d1d8183fe5 -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:05:08.000000Z +ac7b05267cda86408af77321975d9099 +2011-01-27T21:38:47.430923Z +4764 +jplang has-props @@ -1826,7 +1826,7 @@ -2165 +2998 versions_controller_test.rb file @@ -1834,7 +1834,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 2e73f89630c087f8170f62f3f79079c0 2010-12-12T23:24:34.194336Z 4509 @@ -1868,7 +1868,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 4194cdc2f733e6e1a38bedb7a6af05c8 2010-12-12T23:24:34.194336Z 4509 @@ -1902,7 +1902,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 770100e7a7049e202c8a1ea476659a30 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/issue_relations_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/issue_relations_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/issue_relations_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -33,6 +33,19 @@ end end + def test_new_xhr + assert_difference 'IssueRelation.count' do + @request.session[:user_id] = 3 + xhr :post, :new, + :issue_id => 3, + :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 2 # relations + end + end + end + def test_new_should_accept_id_with_hash assert_difference 'IssueRelation.count' do @request.session[:user_id] = 3 @@ -68,4 +81,20 @@ post :destroy, :id => '2', :issue_id => '3' end end + + def test_destroy_xhr + IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r| + r.issue_from_id = 3 + r.issue_to_id = 1 + end + + assert_difference 'IssueRelation.count', -1 do + @request.session[:user_id] = 3 + xhr :post, :destroy, :id => '2', :issue_id => '3' + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 1 # relation left + end + end + end end diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/journals_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/journals_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/journals_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -38,6 +38,19 @@ assert_equal 'application/atom+xml', @response.content_type end + def test_diff + get :diff, :id => 3, :detail_id => 4 + assert_response :success + assert_template 'diff' + + assert_tag 'span', + :attributes => {:class => 'diff_out'}, + :content => /removed/ + assert_tag 'span', + :attributes => {:class => 'diff_in'}, + :content => /added/ + end + def test_reply_to_issue @request.session[:user_id] = 2 get :new, :id => 6 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_bazaar_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -32,9 +32,13 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -43,7 +47,7 @@ assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root get :show, :id => 3 assert_response :success @@ -53,7 +57,7 @@ assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'} end - + def test_browse_directory get :show, :id => 3, :path => ['directory'] assert_response :success diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_cvs_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -29,7 +29,8 @@ REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? # CVS module MODULE_NAME = 'test' - + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @@ -37,14 +38,19 @@ Setting.default_language = 'en' User.current = nil - @project = Project.find(1) - @project.repository = Repository::Cvs.create(:root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(PRJ_ID) + @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID), + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -52,7 +58,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -66,7 +74,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -78,8 +88,9 @@ end def test_browse_at_given_revision - Project.find(1).repository.fetch_changesets - get :show, :id => 1, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -87,7 +98,9 @@ end def test_entry - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' assert_no_tag :tag => 'td', :attributes => { :class => /line-code/}, @@ -96,8 +109,9 @@ def test_entry_at_given_revision # changesets must be loaded - Project.find(1).repository.fetch_changesets - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 @@ -106,18 +120,24 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['sources', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' assert_response :success end def test_directory_entry - get :entry, :id => 1, :path => ['sources'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) @@ -125,8 +145,9 @@ end def test_diff - Project.find(1).repository.fetch_changesets - get :diff, :id => 1, :rev => 3, :type => 'inline' + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline' assert_response :success assert_template 'diff' assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' }, @@ -134,10 +155,29 @@ assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, :content => /watched.remove_all_watcher/ end + + def test_diff_new_files + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline' + assert_response :success + assert_template 'diff' + assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, + :content => /watched.remove_watcher/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/README/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/delete.png / + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/edit.png/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/sources\/watchers_controller.rb/ + end def test_annotate - Project.find(1).repository.fetch_changesets - get :annotate, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' # 1.1 line diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_darcs_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -26,26 +26,35 @@ # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' + PRJ_ID = 3 def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Darcs.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(PRJ_ID) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -54,9 +63,11 @@ assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end - + def test_browse_directory - get :show, :id => 3, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -66,27 +77,31 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_browse_at_given_revision - Project.find(3).repository.fetch_changesets - get :show, :id => 3, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_equal ['delete.png'], assigns(:entries).collect(&:name) end - + def test_changes - get :changes, :id => 3, :path => ['images', 'edit.png'] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['images', 'edit.png'] assert_response :success assert_template 'changes' assert_tag :tag => 'h2', :content => 'edit.png' end - + def test_diff - Project.find(3).repository.fetch_changesets + @repository.fetch_changesets + @repository.reload # Full diff of changeset 5 - get :diff, :id => 3, :rev => 5 + get :diff, :id => PRJ_ID, :rev => 5 assert_response :success assert_template 'diff' # Line 22 removed diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/repositories_git_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_git_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_git_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -170,6 +170,15 @@ :sibling => { :tag => 'td', :content => /watcher =/ } end + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => 3, :rev => 'deff7', :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ deff712f/ + end + def test_annotate_binary_file get :annotate, :id => 3, :path => ['images', 'edit.png'] assert_response 500 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_mercurial_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -34,6 +34,7 @@ User.current = nil @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) assert @repository + @diff_c_support = true end if File.directory?(REPOSITORY_PATH) @@ -137,7 +138,7 @@ assert_response :success assert_template 'diff' - if @repository.scm.class.client_version_above?([1, 2]) + if @diff_c_support # Line 22 removed assert_tag :tag => 'th', :content => '22', @@ -196,6 +197,17 @@ :sibling => { :tag => 'td', :content => /watcher =/ } end + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + [2, '400bb8672109', '400', 400].each do |r1| + get :annotate, :id => 3, :rev => r1, :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/ + end + end + def test_empty_revision @repository.fetch_changesets @repository.reload diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -26,17 +26,26 @@ :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new Setting.default_language = 'en' User.current = nil + + @project = Project.find(PRJ_ID) + @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") + assert @repository end if repository_configured?('subversion') def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -44,7 +53,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -53,7 +64,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['subversion_test'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -65,7 +78,9 @@ end def test_browse_at_given_revision - get :show, :id => 1, :path => ['subversion_test'], :rev => 4 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -73,7 +88,9 @@ end def test_file_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ] assert_response :success assert_template 'changes' @@ -93,7 +110,9 @@ end def test_directory_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ] assert_response :success assert_template 'changes' @@ -103,15 +122,19 @@ end def test_entry - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'entry' end def test_entry_should_send_if_too_big + @repository.fetch_changesets + @repository.reload # no files in the test repo is larger than 1KB... with_settings :file_max_size_displayed => 0 do - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] @@ -119,7 +142,9 @@ end def test_entry_at_given_revision - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 and file was moved in r6 @@ -128,27 +153,36 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['subversion_test', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] end def test_directory_entry - get :entry, :id => 1, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) assert_equal 'folder', assigns(:entry).name end + # TODO: this test needs fixtures. def test_revision + @repository.fetch_changesets + @repository.reload get :revision, :id => 1, :rev => 2 assert_response :success assert_template 'revision' @@ -167,19 +201,30 @@ end def test_invalid_revision - get :revision, :id => 1, :rev => 'something_weird' + @repository.fetch_changesets + @repository.reload + get :revision, :id => PRJ_ID, :rev => 'something_weird' + assert_response 404 + assert_error_tag :content => /was not found/ + end + + def test_invalid_revision_diff + get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird' assert_response 404 assert_error_tag :content => /was not found/ end def test_empty_revision + @repository.fetch_changesets + @repository.reload ['', ' ', nil].each do |r| - get :revision, :id => 1, :rev => r + get :revision, :id => PRJ_ID, :rev => r assert_response 404 assert_error_tag :content => /was not found/ end end + # TODO: this test needs fixtures. def test_revision_with_repository_pointing_to_a_subdirectory r = Project.find(1).repository # Changes repository url to a subdirectory @@ -203,7 +248,9 @@ end def test_revision_diff - get :diff, :id => 1, :rev => 3 + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3 assert_response :success assert_template 'diff' @@ -211,7 +258,9 @@ end def test_directory_diff - get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'diff' @@ -224,10 +273,21 @@ end def test_annotate - get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'annotate' end + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 8/ + end else puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/welcome_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/welcome_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/welcome_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -67,4 +67,28 @@ assert_equal 'text/plain', @response.content_type assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$}) end + + def test_warn_on_leaving_unsaved_turn_on + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '1' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end + + def test_warn_on_leaving_unsaved_turn_off + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '0' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_no_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end end diff -r fca2657f4aa5 -r eeebe205a056 test/functional/.svn/text-base/workflows_controller_test.rb.svn-base --- a/test/functional/.svn/text-base/workflows_controller_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/.svn/text-base/workflows_controller_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -65,17 +65,17 @@ # allowed transitions assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '5', + :name => 'issue_status[3][5][]', + :value => 'always', :checked => 'checked' } # not allowed assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '2', + :name => 'issue_status[3][2][]', + :value => 'always', :checked => nil } # unused assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[4][]' } + :name => 'issue_status[1][1][]' } end def test_get_edit_with_role_and_tracker_and_all_statuses @@ -89,13 +89,17 @@ assert_equal IssueStatus.count, assigns(:statuses).size assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[1][]', - :value => '1', + :name => 'issue_status[1][1][]', + :value => 'always', :checked => nil } end def test_post_edit - post :edit, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']} + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['always'], '2' => ['always']} + } assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) @@ -103,6 +107,30 @@ assert_nil Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4}) end + def test_post_edit_with_additional_transitions + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee']} + } + assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' + + assert_equal 4, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) + + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5}) + assert ! w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1}) + assert w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2}) + assert ! w.author + assert w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4}) + assert w.author + assert w.assignee + end + def test_clear_workflow assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/issue_relations_controller_test.rb --- a/test/functional/issue_relations_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/issue_relations_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -33,6 +33,19 @@ end end + def test_new_xhr + assert_difference 'IssueRelation.count' do + @request.session[:user_id] = 3 + xhr :post, :new, + :issue_id => 3, + :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 2 # relations + end + end + end + def test_new_should_accept_id_with_hash assert_difference 'IssueRelation.count' do @request.session[:user_id] = 3 @@ -68,4 +81,20 @@ post :destroy, :id => '2', :issue_id => '3' end end + + def test_destroy_xhr + IssueRelation.create!(:relation_type => IssueRelation::TYPE_RELATES) do |r| + r.issue_from_id = 3 + r.issue_to_id = 1 + end + + assert_difference 'IssueRelation.count', -1 do + @request.session[:user_id] = 3 + xhr :post, :destroy, :id => '2', :issue_id => '3' + assert_select_rjs 'relations' do + assert_select 'table', 1 + assert_select 'tr', 1 # relation left + end + end + end end diff -r fca2657f4aa5 -r eeebe205a056 test/functional/journals_controller_test.rb --- a/test/functional/journals_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/journals_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2008 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -38,6 +38,19 @@ assert_equal 'application/atom+xml', @response.content_type end + def test_diff + get :diff, :id => 3, :detail_id => 4 + assert_response :success + assert_template 'diff' + + assert_tag 'span', + :attributes => {:class => 'diff_out'}, + :content => /removed/ + assert_tag 'span', + :attributes => {:class => 'diff_in'}, + :content => /added/ + end + def test_reply_to_issue @request.session[:user_id] = 2 get :new, :id => 6 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/repositories_bazaar_controller_test.rb --- a/test/functional/repositories_bazaar_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/repositories_bazaar_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -32,9 +32,13 @@ @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Bazaar.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show get :show, :id => 3 @@ -43,7 +47,7 @@ assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root get :show, :id => 3 assert_response :success @@ -53,7 +57,7 @@ assert assigns(:entries).detect {|e| e.name == 'directory' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'doc-mkdir.txt' && e.kind == 'file'} end - + def test_browse_directory get :show, :id => 3, :path => ['directory'] assert_response :success diff -r fca2657f4aa5 -r eeebe205a056 test/functional/repositories_cvs_controller_test.rb --- a/test/functional/repositories_cvs_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/repositories_cvs_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -29,7 +29,8 @@ REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? # CVS module MODULE_NAME = 'test' - + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @@ -37,14 +38,19 @@ Setting.default_language = 'en' User.current = nil - @project = Project.find(1) - @project.repository = Repository::Cvs.create(:root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(PRJ_ID) + @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID), + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -52,7 +58,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -66,7 +74,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -78,8 +88,9 @@ end def test_browse_at_given_revision - Project.find(1).repository.fetch_changesets - get :show, :id => 1, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -87,7 +98,9 @@ end def test_entry - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'entry' assert_no_tag :tag => 'td', :attributes => { :class => /line-code/}, @@ -96,8 +109,9 @@ def test_entry_at_given_revision # changesets must be loaded - Project.find(1).repository.fetch_changesets - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 @@ -106,18 +120,24 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['sources', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw' assert_response :success end def test_directory_entry - get :entry, :id => 1, :path => ['sources'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['sources'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) @@ -125,8 +145,9 @@ end def test_diff - Project.find(1).repository.fetch_changesets - get :diff, :id => 1, :rev => 3, :type => 'inline' + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline' assert_response :success assert_template 'diff' assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' }, @@ -134,10 +155,29 @@ assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, :content => /watched.remove_all_watcher/ end + + def test_diff_new_files + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline' + assert_response :success + assert_template 'diff' + assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' }, + :content => /watched.remove_watcher/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/README/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/delete.png / + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/images\/edit.png/ + assert_tag :tag => 'th', :attributes => { :class => 'filename' }, + :content => /test\/sources\/watchers_controller.rb/ + end def test_annotate - Project.find(1).repository.fetch_changesets - get :annotate, :id => 1, :path => ['sources', 'watchers_controller.rb'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'] assert_response :success assert_template 'annotate' # 1.1 line diff -r fca2657f4aa5 -r eeebe205a056 test/functional/repositories_darcs_controller_test.rb --- a/test/functional/repositories_darcs_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/repositories_darcs_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -26,26 +26,35 @@ # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' + PRJ_ID = 3 def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new User.current = nil - Repository::Darcs.create(:project => Project.find(3), :url => REPOSITORY_PATH) + @project = Project.find(PRJ_ID) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_show - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_not_nil assigns(:changesets) end - + def test_browse_root - get :show, :id => 3 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -54,9 +63,11 @@ assert assigns(:entries).detect {|e| e.name == 'sources' && e.kind == 'dir'} assert assigns(:entries).detect {|e| e.name == 'README' && e.kind == 'file'} end - + def test_browse_directory - get :show, :id => 3, :path => ['images'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -66,27 +77,31 @@ assert_equal 'file', entry.kind assert_equal 'images/edit.png', entry.path end - + def test_browse_at_given_revision - Project.find(3).repository.fetch_changesets - get :show, :id => 3, :path => ['images'], :rev => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['images'], :rev => 1 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) assert_equal ['delete.png'], assigns(:entries).collect(&:name) end - + def test_changes - get :changes, :id => 3, :path => ['images', 'edit.png'] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['images', 'edit.png'] assert_response :success assert_template 'changes' assert_tag :tag => 'h2', :content => 'edit.png' end - + def test_diff - Project.find(3).repository.fetch_changesets + @repository.fetch_changesets + @repository.reload # Full diff of changeset 5 - get :diff, :id => 3, :rev => 5 + get :diff, :id => PRJ_ID, :rev => 5 assert_response :success assert_template 'diff' # Line 22 removed diff -r fca2657f4aa5 -r eeebe205a056 test/functional/repositories_git_controller_test.rb --- a/test/functional/repositories_git_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/repositories_git_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -170,6 +170,15 @@ :sibling => { :tag => 'td', :content => /watcher =/ } end + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => 3, :rev => 'deff7', :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ deff712f/ + end + def test_annotate_binary_file get :annotate, :id => 3, :path => ['images', 'edit.png'] assert_response 500 diff -r fca2657f4aa5 -r eeebe205a056 test/functional/repositories_mercurial_controller_test.rb --- a/test/functional/repositories_mercurial_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/repositories_mercurial_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -34,6 +34,7 @@ User.current = nil @repository = Repository::Mercurial.create(:project => Project.find(3), :url => REPOSITORY_PATH) assert @repository + @diff_c_support = true end if File.directory?(REPOSITORY_PATH) @@ -137,7 +138,7 @@ assert_response :success assert_template 'diff' - if @repository.scm.class.client_version_above?([1, 2]) + if @diff_c_support # Line 22 removed assert_tag :tag => 'th', :content => '22', @@ -196,6 +197,17 @@ :sibling => { :tag => 'td', :content => /watcher =/ } end + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + [2, '400bb8672109', '400', 400].each do |r1| + get :annotate, :id => 3, :rev => r1, :path => ['sources', 'watchers_controller.rb'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 2:400bb8672109/ + end + end + def test_empty_revision @repository.fetch_changesets @repository.reload diff -r fca2657f4aa5 -r eeebe205a056 test/functional/repositories_subversion_controller_test.rb --- a/test/functional/repositories_subversion_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/repositories_subversion_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -26,17 +26,26 @@ :repositories, :issues, :issue_statuses, :changesets, :changes, :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers + PRJ_ID = 3 + def setup @controller = RepositoriesController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new Setting.default_language = 'en' User.current = nil + + @project = Project.find(PRJ_ID) + @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") + assert @repository end if repository_configured?('subversion') def test_show - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -44,7 +53,9 @@ end def test_browse_root - get :show, :id => 1 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -53,7 +64,9 @@ end def test_browse_directory - get :show, :id => 1, :path => ['subversion_test'] + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'] assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -65,7 +78,9 @@ end def test_browse_at_given_revision - get :show, :id => 1, :path => ['subversion_test'], :rev => 4 + @repository.fetch_changesets + @repository.reload + get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4 assert_response :success assert_template 'show' assert_not_nil assigns(:entries) @@ -73,7 +88,9 @@ end def test_file_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ] assert_response :success assert_template 'changes' @@ -93,7 +110,9 @@ end def test_directory_changes - get :changes, :id => 1, :path => ['subversion_test', 'folder' ] + @repository.fetch_changesets + @repository.reload + get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ] assert_response :success assert_template 'changes' @@ -103,15 +122,19 @@ end def test_entry - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'entry' end def test_entry_should_send_if_too_big + @repository.fetch_changesets + @repository.reload # no files in the test repo is larger than 1KB... with_settings :file_max_size_displayed => 0 do - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] @@ -119,7 +142,9 @@ end def test_entry_at_given_revision - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 assert_response :success assert_template 'entry' # this line was removed in r3 and file was moved in r6 @@ -128,27 +153,36 @@ end def test_entry_not_found - get :entry, :id => 1, :path => ['subversion_test', 'zzz.c'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c'] assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, :content => /The entry or revision was not found in the repository/ end def test_entry_download - get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' assert_response :success assert_template '' assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] end def test_directory_entry - get :entry, :id => 1, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'show' assert_not_nil assigns(:entry) assert_equal 'folder', assigns(:entry).name end + # TODO: this test needs fixtures. def test_revision + @repository.fetch_changesets + @repository.reload get :revision, :id => 1, :rev => 2 assert_response :success assert_template 'revision' @@ -167,19 +201,30 @@ end def test_invalid_revision - get :revision, :id => 1, :rev => 'something_weird' + @repository.fetch_changesets + @repository.reload + get :revision, :id => PRJ_ID, :rev => 'something_weird' + assert_response 404 + assert_error_tag :content => /was not found/ + end + + def test_invalid_revision_diff + get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird' assert_response 404 assert_error_tag :content => /was not found/ end def test_empty_revision + @repository.fetch_changesets + @repository.reload ['', ' ', nil].each do |r| - get :revision, :id => 1, :rev => r + get :revision, :id => PRJ_ID, :rev => r assert_response 404 assert_error_tag :content => /was not found/ end end + # TODO: this test needs fixtures. def test_revision_with_repository_pointing_to_a_subdirectory r = Project.find(1).repository # Changes repository url to a subdirectory @@ -203,7 +248,9 @@ end def test_revision_diff - get :diff, :id => 1, :rev => 3 + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 3 assert_response :success assert_template 'diff' @@ -211,7 +258,9 @@ end def test_directory_diff - get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] + @repository.fetch_changesets + @repository.reload + get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] assert_response :success assert_template 'diff' @@ -224,10 +273,21 @@ end def test_annotate - get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c'] + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'] assert_response :success assert_template 'annotate' end + + def test_annotate_at_given_revision + @repository.fetch_changesets + @repository.reload + get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c'] + assert_response :success + assert_template 'annotate' + assert_tag :tag => 'h2', :content => /@ 8/ + end else puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/functional/welcome_controller_test.rb --- a/test/functional/welcome_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/welcome_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -67,4 +67,28 @@ assert_equal 'text/plain', @response.content_type assert @response.body.match(%r{^Disallow: /projects/ecookbook/issues\r?$}) end + + def test_warn_on_leaving_unsaved_turn_on + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '1' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end + + def test_warn_on_leaving_unsaved_turn_off + user = User.find(2) + user.pref.warn_on_leaving_unsaved = '0' + user.pref.save! + @request.session[:user_id] = 2 + + get :index + assert_no_tag 'script', + :attributes => {:type => "text/javascript"}, + :content => %r{new WarnLeavingUnsaved} + end end diff -r fca2657f4aa5 -r eeebe205a056 test/functional/workflows_controller_test.rb --- a/test/functional/workflows_controller_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/functional/workflows_controller_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -65,17 +65,17 @@ # allowed transitions assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '5', + :name => 'issue_status[3][5][]', + :value => 'always', :checked => 'checked' } # not allowed assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[3][]', - :value => '2', + :name => 'issue_status[3][2][]', + :value => 'always', :checked => nil } # unused assert_no_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[4][]' } + :name => 'issue_status[1][1][]' } end def test_get_edit_with_role_and_tracker_and_all_statuses @@ -89,13 +89,17 @@ assert_equal IssueStatus.count, assigns(:statuses).size assert_tag :tag => 'input', :attributes => { :type => 'checkbox', - :name => 'issue_status[1][]', - :value => '1', + :name => 'issue_status[1][1][]', + :value => 'always', :checked => nil } end def test_post_edit - post :edit, :role_id => 2, :tracker_id => 1, :issue_status => {'4' => ['5'], '3' => ['1', '2']} + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['always'], '2' => ['always']} + } assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' assert_equal 3, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) @@ -103,6 +107,30 @@ assert_nil Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 5, :new_status_id => 4}) end + def test_post_edit_with_additional_transitions + post :edit, :role_id => 2, :tracker_id => 1, + :issue_status => { + '4' => {'5' => ['always']}, + '3' => {'1' => ['author'], '2' => ['assignee'], '4' => ['author', 'assignee']} + } + assert_redirected_to '/workflows/edit?role_id=2&tracker_id=1' + + assert_equal 4, Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) + + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 4, :new_status_id => 5}) + assert ! w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 1}) + assert w.author + assert ! w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 2}) + assert ! w.author + assert w.assignee + w = Workflow.find(:first, :conditions => {:role_id => 2, :tracker_id => 1, :old_status_id => 3, :new_status_id => 4}) + assert w.author + assert w.assignee + end + def test_clear_workflow assert Workflow.count(:conditions => {:tracker_id => 1, :role_id => 2}) > 0 diff -r fca2657f4aa5 -r eeebe205a056 test/integration/.svn/entries --- a/test/integration/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/integration/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z b828e87474858f965d2048f5f15f8e4b 2010-12-12T23:24:34.194336Z 4509 @@ -63,13 +63,16 @@ lib dir +api_test +dir + routing_test.rb file -2011-01-19T15:03:31.000000Z +2011-03-03T11:05:08.000000Z 7e4b62197ce8e1dfe456477ae9ee384f 2011-01-16T15:23:11.666065Z 4729 @@ -97,16 +100,13 @@ 28869 -api_test -dir - admin_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z fbd4d2a8c15f4ec209250f3395903604 2010-12-12T23:24:34.194336Z 4509 @@ -140,7 +140,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 4b83660bc635b651f2e1d2d8ee50b84b 2010-12-12T23:24:34.194336Z 4509 @@ -174,7 +174,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 09fa9e6798468c9b7fda21b438e16c5e 2010-12-12T23:24:34.194336Z 4509 @@ -208,7 +208,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 5cdf08841a7442b774036772bb1fc1a7 2010-12-12T23:24:34.194336Z 4509 @@ -242,7 +242,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z ff949103a3bdac892a3372cfb71047f0 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/integration/api_test/.svn/entries --- a/test/integration/api_test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/integration/api_test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration/api_test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 7d38bb393dfe949c081c7e9ee2ea0caa 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +66,7 @@ -2011-01-19T15:03:31.000000Z +2011-03-03T11:05:08.000000Z 5cca5d3e833a26e12978491298f55859 2011-01-16T15:23:11.666065Z 4729 @@ -100,7 +100,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 1704d0f93701094c0ebf95183e078b5f 2010-12-12T23:24:34.194336Z 4509 @@ -134,7 +134,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 92abe10e190b64c60afc90866336aa7c 2010-12-12T23:24:34.194336Z 4509 @@ -168,7 +168,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 31d08ba85b57fcdb41e06c1f367de87e 2011-01-06T20:36:31.826591Z 4645 @@ -202,7 +202,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z a4c38f734c93d99d52de27d41a380756 2010-12-12T23:24:34.194336Z 4509 @@ -236,7 +236,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 445e18c4a9d648b99d948eac4e750480 2010-12-12T23:24:34.194336Z 4509 @@ -270,7 +270,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z bee85bcaab5d8fb5f90a64ad4ac32e3c 2010-12-12T23:24:34.194336Z 4509 @@ -304,7 +304,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 24e8e5b1544016befedeea49b8fb5cb5 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/integration/lib/.svn/entries --- a/test/integration/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/integration/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/integration/lib +4993 +http://redmine.rubyforge.org/svn/trunk/test/integration/lib http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 test/integration/lib/redmine/.svn/entries --- a/test/integration/lib/redmine/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/integration/lib/redmine/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/integration/lib/redmine http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 302d4ea0c07530cc9d48b971849df66d 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +66,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 782f5d377a79dea8a580dcd902121b37 2010-12-23T09:42:33.439630Z 4560 diff -r fca2657f4aa5 -r eeebe205a056 test/mocks/.svn/entries --- a/test/mocks/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/mocks/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/mocks +4993 +http://redmine.rubyforge.org/svn/trunk/test/mocks http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:09.000000Z c73745cf74166bf38552d6469b74b190 2009-09-20T14:06:57.257282Z 2895 diff -r fca2657f4aa5 -r eeebe205a056 test/mocks/development/.svn/entries --- a/test/mocks/development/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/mocks/development/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/mocks/development +4993 +http://redmine.rubyforge.org/svn/trunk/test/mocks/development http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 test/mocks/test/.svn/entries --- a/test/mocks/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/mocks/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/test/mocks/test +4993 +http://redmine.rubyforge.org/svn/trunk/test/mocks/test http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/all-wcprops --- a/test/unit/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 34 -/svn/!svn/ver/4730/trunk/test/unit +/svn/!svn/ver/4991/trunk/test/unit END document_test.rb K 25 @@ -19,13 +19,13 @@ K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4703/trunk/test/unit/repository_git_test.rb +/svn/!svn/ver/4986/trunk/test/unit/repository_git_test.rb END repository_mercurial_test.rb K 25 svn:wc:ra_dav:version-url V 63 -/svn/!svn/ver/4704/trunk/test/unit/repository_mercurial_test.rb +/svn/!svn/ver/4991/trunk/test/unit/repository_mercurial_test.rb END issue_relation_test.rb K 25 @@ -55,13 +55,13 @@ K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4723/trunk/test/unit/issue_test.rb +/svn/!svn/ver/4958/trunk/test/unit/issue_test.rb END issue_status_test.rb K 25 svn:wc:ra_dav:version-url V 55 -/svn/!svn/ver/4509/trunk/test/unit/issue_status_test.rb +/svn/!svn/ver/4895/trunk/test/unit/issue_status_test.rb END time_entry_activity_test.rb K 25 @@ -79,13 +79,13 @@ K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4703/trunk/test/unit/repository_subversion_test.rb +/svn/!svn/ver/4987/trunk/test/unit/repository_subversion_test.rb END repository_bazaar_test.rb K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/4613/trunk/test/unit/repository_bazaar_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_bazaar_test.rb END role_test.rb K 25 @@ -97,7 +97,7 @@ K 25 svn:wc:ra_dav:version-url V 52 -/svn/!svn/ver/4613/trunk/test/unit/changeset_test.rb +/svn/!svn/ver/4984/trunk/test/unit/changeset_test.rb END comment_test.rb K 25 @@ -139,7 +139,7 @@ K 25 svn:wc:ra_dav:version-url V 47 -/svn/!svn/ver/4730/trunk/test/unit/user_test.rb +/svn/!svn/ver/4936/trunk/test/unit/user_test.rb END mail_handler_test.rb K 25 @@ -151,7 +151,7 @@ K 25 svn:wc:ra_dav:version-url V 53 -/svn/!svn/ver/4726/trunk/test/unit/repository_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_test.rb END time_entry_test.rb K 25 @@ -165,17 +165,23 @@ V 52 /svn/!svn/ver/4509/trunk/test/unit/principal_test.rb END +journal_observer_test.rb +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/4509/trunk/test/unit/journal_observer_test.rb +END auth_source_ldap_test.rb K 25 svn:wc:ra_dav:version-url V 59 /svn/!svn/ver/4509/trunk/test/unit/auth_source_ldap_test.rb END -journal_observer_test.rb +repository_filesystem_test.rb K 25 svn:wc:ra_dav:version-url -V 59 -/svn/!svn/ver/4509/trunk/test/unit/journal_observer_test.rb +V 64 +/svn/!svn/ver/4509/trunk/test/unit/repository_filesystem_test.rb END project_nested_set_test.rb K 25 @@ -183,11 +189,11 @@ V 61 /svn/!svn/ver/4650/trunk/test/unit/project_nested_set_test.rb END -repository_filesystem_test.rb +message_test.rb K 25 svn:wc:ra_dav:version-url -V 64 -/svn/!svn/ver/4509/trunk/test/unit/repository_filesystem_test.rb +V 50 +/svn/!svn/ver/4509/trunk/test/unit/message_test.rb END wiki_redirect_test.rb K 25 @@ -195,12 +201,6 @@ V 56 /svn/!svn/ver/4509/trunk/test/unit/wiki_redirect_test.rb END -message_test.rb -K 25 -svn:wc:ra_dav:version-url -V 50 -/svn/!svn/ver/4509/trunk/test/unit/message_test.rb -END issue_category_test.rb K 25 svn:wc:ra_dav:version-url @@ -223,13 +223,13 @@ K 25 svn:wc:ra_dav:version-url V 57 -/svn/!svn/ver/4509/trunk/test/unit/repository_cvs_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_cvs_test.rb END repository_darcs_test.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4608/trunk/test/unit/repository_darcs_test.rb +/svn/!svn/ver/4982/trunk/test/unit/repository_darcs_test.rb END activity_test.rb K 25 @@ -271,13 +271,13 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4509/trunk/test/unit/issue_nested_set_test.rb +/svn/!svn/ver/4735/trunk/test/unit/issue_nested_set_test.rb END query_test.rb K 25 svn:wc:ra_dav:version-url V 48 -/svn/!svn/ver/4553/trunk/test/unit/query_test.rb +/svn/!svn/ver/4888/trunk/test/unit/query_test.rb END search_test.rb K 25 @@ -285,18 +285,18 @@ V 49 /svn/!svn/ver/4509/trunk/test/unit/search_test.rb END +custom_value_test.rb +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/4509/trunk/test/unit/custom_value_test.rb +END project_test.rb K 25 svn:wc:ra_dav:version-url V 50 /svn/!svn/ver/4615/trunk/test/unit/project_test.rb END -custom_value_test.rb -K 25 -svn:wc:ra_dav:version-url -V 55 -/svn/!svn/ver/4509/trunk/test/unit/custom_value_test.rb -END member_test.rb K 25 svn:wc:ra_dav:version-url diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/entries --- a/test/unit/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit http://redmine.rubyforge.org/svn -2011-01-16T15:36:42.998302Z -4730 -jplang +2011-03-03T03:35:13.139305Z +4991 +tmaruyama @@ -32,7 +32,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 31100b89782bb9004a5f162375b5192b 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +66,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z e89c6342d99d8e32ca9c9d3399641b96 2010-12-12T23:24:34.194336Z 4509 @@ -100,10 +100,10 @@ -2011-01-13T14:08:14.000000Z -f95988379d5f7fa7f341954a886c6a3e -2011-01-13T12:04:30.962313Z -4703 +2011-03-03T11:40:17.000000Z +47242b5b6c39be0674556191a42a70ff +2011-03-02T05:12:39.499704Z +4986 tmaruyama has-props @@ -126,7 +126,7 @@ -4415 +5437 repository_mercurial_test.rb file @@ -134,10 +134,10 @@ -2011-01-13T14:08:14.000000Z -37d81db20cb50110ac1f7fa44e5ecb40 -2011-01-13T12:04:51.838288Z -4704 +2011-03-03T11:40:17.000000Z +df5148d6503c41188684ca42c8fb1563 +2011-03-03T03:35:13.139305Z +4991 tmaruyama has-props @@ -160,7 +160,7 @@ -6345 +7231 issue_relation_test.rb file @@ -168,7 +168,7 @@ -2011-01-19T15:03:31.000000Z +2011-03-03T11:05:08.000000Z c121bfc1afd3428c1c63ffc8e4c9441e 2011-01-15T14:03:39.071238Z 4721 @@ -202,7 +202,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 9aa8e8e5f5ef4c0c74c9fcdaba7ada60 2010-12-31T11:16:03.020751Z 4597 @@ -236,7 +236,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 01227adbe16fcf333a7e99f9a7bcc0f6 2010-12-12T23:24:34.194336Z 4509 @@ -270,7 +270,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z afdfda5a2d9285920afb8815085ad0ee 2010-12-12T23:24:34.194336Z 4509 @@ -304,10 +304,10 @@ -2011-01-19T15:03:31.000000Z -a8c280ae08bee271010554106ded8aa0 -2011-01-15T14:12:18.630628Z -4723 +2011-03-03T11:40:17.000000Z +103def744f4a7e87035c40962f5f4b9f +2011-02-27T15:51:10.736814Z +4958 jplang has-props @@ -330,7 +330,7 @@ -30795 +32944 issue_status_test.rb file @@ -338,11 +338,11 @@ -2011-01-13T14:08:14.000000Z -46bccc51b3aa0bd4b3826318f662f587 -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:40:17.000000Z +927e020ce867263e6cf5af443bfaecd8 +2011-02-20T15:38:07.840581Z +4895 +jplang has-props @@ -364,7 +364,7 @@ -3236 +4757 time_entry_activity_test.rb file @@ -372,7 +372,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 41183297c9b098b67d368c45289eb47f 2010-12-12T23:24:34.194336Z 4509 @@ -406,7 +406,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 32e8c8fd522283c8008b2dac1de383dd 2010-12-12T23:24:34.194336Z 4509 @@ -440,10 +440,10 @@ -2011-01-13T14:08:14.000000Z -fb0636f5bb4d94047ed14879e88f7df7 -2011-01-13T12:04:30.962313Z -4703 +2011-03-03T11:40:17.000000Z +428e976e05c3c4bffbc9885ef1272fc7 +2011-03-02T07:10:39.633104Z +4987 tmaruyama has-props @@ -466,7 +466,7 @@ -5506 +7066 repository_bazaar_test.rb file @@ -474,10 +474,10 @@ -2011-01-13T14:08:14.000000Z -b0c66b65fc51cdbf6f9885dddbfe5a23 -2011-01-02T09:45:05.291687Z -4613 +2011-03-03T11:40:17.000000Z +562f1297bf47e2199e1f04ccd1733f49 +2011-03-01T10:27:30.170724Z +4982 tmaruyama has-props @@ -500,10 +500,41 @@ -3125 +2704 -helpers -dir +changeset_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +ee5c9c8f3cf4814a73673fe693faf697 +2011-03-01T15:35:27.747088Z +4984 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +10123 role_test.rb file @@ -511,7 +542,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 54e0d5b5ac94a5a9a0649b2af1b030e4 2010-12-12T23:24:34.194336Z 4509 @@ -539,39 +570,8 @@ 3054 -changeset_test.rb -file - - - - -2011-01-13T14:08:14.000000Z -c3cb358e85c7a5ddde50a50e8e8395d9 -2011-01-02T09:45:05.291687Z -4613 -tmaruyama -has-props - - - - - - - - - - - - - - - - - - - - -7938 +helpers +dir comment_test.rb file @@ -579,7 +579,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z d279aa9cdae195412ec42a41d76bc999 2010-12-12T23:24:34.194336Z 4509 @@ -613,7 +613,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z fe66a05a1301e78c21ab94a101fda6af 2011-01-10T18:32:04.408692Z 4680 @@ -650,7 +650,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z fadeda4795465dbbbf5873729ddba30a 2010-12-12T23:24:34.194336Z 4509 @@ -684,7 +684,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 93378a65c9f444ca160b6681b7435610 2010-12-12T23:24:34.194336Z 4509 @@ -718,7 +718,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 621cee22436f207cb82915edfe609d42 2010-12-12T23:24:34.194336Z 4509 @@ -752,7 +752,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f1290324d506f8535d74ccf3f878c24f 2010-12-12T23:24:34.194336Z 4509 @@ -786,10 +786,10 @@ -2011-01-19T15:03:31.000000Z -6dc51cd302ef5c8dc8f571846733a835 -2011-01-16T15:36:42.998302Z -4730 +2011-03-03T11:40:17.000000Z +93a08b69d91fdc8222483cbb6d20563d +2011-02-23T17:27:31.762248Z +4936 jplang has-props @@ -812,7 +812,75 @@ -24597 +26161 + +mail_handler_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +ccd63941c3776cd520a713f27ed01d08 +2010-12-29T17:38:57.772516Z +4576 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +18979 + +repository_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +71ee0e9aa37fb046390f5774895ef623 +2011-03-01T10:27:30.170724Z +4982 +tmaruyama +has-props + + + + + + + + + + + + + + + + + + + + +6540 time_entry_test.rb file @@ -820,7 +888,7 @@ -2011-01-19T15:03:31.000000Z +2011-03-03T11:05:08.000000Z ab1c1db4414427c710071842f98a5685 2011-01-14T18:45:28.811697Z 4709 @@ -848,73 +916,73 @@ 4317 -repository_test.rb +principal_test.rb file -2011-01-19T15:03:31.000000Z -759b702e56d17ca338fcead30d8cfcbe -2011-01-16T14:27:02.047144Z -4726 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6554 +2011-03-03T11:05:08.000000Z +69e70ceb20c56bbb25155e8120146aa3 +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +2078 -mail_handler_test.rb +journal_observer_test.rb file -2011-01-13T14:09:08.000000Z -ccd63941c3776cd520a713f27ed01d08 -2010-12-29T17:38:57.772516Z -4576 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -18979 +2011-03-03T11:05:08.000000Z +0a054ecc047ebca7e0cb9fe8aadf51eb +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +3959 auth_source_ldap_test.rb file @@ -922,7 +990,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 4de167441793151c86bc376e671cc3c1 2010-12-12T23:24:34.194336Z 4509 @@ -950,73 +1018,39 @@ 2793 -principal_test.rb +project_nested_set_test.rb file -2011-01-13T14:09:08.000000Z -69e70ceb20c56bbb25155e8120146aa3 -2010-12-12T23:24:34.194336Z -4509 -jbbarth - - - - - - - - - - - - - - - - - - - - - -2078 - -journal_observer_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -0a054ecc047ebca7e0cb9fe8aadf51eb -2010-12-12T23:24:34.194336Z -4509 -jbbarth - - - - - - - - - - - - - - - - - - - - - -3959 +2011-03-03T11:05:08.000000Z +47282cfa59c0817a7936d60b0ac3e16c +2011-01-06T21:17:08.355137Z +4650 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +4027 repository_filesystem_test.rb file @@ -1024,7 +1058,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 8d990ac10b1aeee25c74ee1f5cdc9d18 2010-12-12T23:24:34.194336Z 4509 @@ -1052,47 +1086,13 @@ 1940 -project_nested_set_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -47282cfa59c0817a7936d60b0ac3e16c -2011-01-06T21:17:08.355137Z -4650 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4027 - message_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 6b620c2638af1111d237a35ecba5107d 2010-12-12T23:24:34.194336Z 4509 @@ -1126,7 +1126,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f4be42a1985df0fc471331477246eea7 2010-12-12T23:24:34.194336Z 4509 @@ -1160,7 +1160,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z fb1799532feba53a1df0355271636ce7 2010-12-12T23:24:34.194336Z 4509 @@ -1194,7 +1194,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z e8fef8d0f3de527136fabe2c2195be9e 2010-12-31T15:24:42.140175Z 4598 @@ -1228,7 +1228,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 23d11bc7cfedc1a4d419928eb81d5c64 2010-12-12T23:24:34.194336Z 4509 @@ -1262,11 +1262,11 @@ -2011-01-13T14:09:08.000000Z -c57bd5b650a9fa0627831717134ceeb2 -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:40:17.000000Z +a2d7bc3feefa89da466f5ead9e4da18d +2011-03-01T10:27:30.170724Z +4982 +tmaruyama has-props @@ -1288,7 +1288,7 @@ -2542 +3909 repository_darcs_test.rb file @@ -1296,10 +1296,10 @@ -2011-01-13T14:09:08.000000Z -ae2d97f344e9c59bb09648e9e333db84 -2011-01-01T22:01:28.805978Z -4608 +2011-03-03T11:40:17.000000Z +44a11577927a86290e2887c1e0c0dd24 +2011-03-01T10:27:30.170724Z +4982 tmaruyama has-props @@ -1322,7 +1322,7 @@ -2596 +2723 activity_test.rb file @@ -1330,7 +1330,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z f2227b773374d5366d6ee7e26f7f977e 2010-12-12T23:24:34.194336Z 4509 @@ -1364,7 +1364,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 50cc3fd88223d69f74e1b11991989bbc 2010-12-12T23:24:34.194336Z 4509 @@ -1398,7 +1398,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 3665052c1291d40753ee1ab4c61cd237 2010-12-12T23:24:34.194336Z 4509 @@ -1432,7 +1432,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 5f0c8e09595f6c8f6a95def9d4ff3833 2010-12-12T23:24:34.194336Z 4509 @@ -1466,7 +1466,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 870052407719f2a360e8e95f0498130f 2010-12-12T23:24:34.194336Z 4509 @@ -1500,7 +1500,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 2b51ebfe6e4e23011d9b29f08028d832 2010-12-12T23:24:34.194336Z 4509 @@ -1534,11 +1534,11 @@ -2011-01-13T14:09:08.000000Z -bdd4058358d08008a7597d544590d561 -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:05:08.000000Z +a9a2a1d3497b65464c17a71858f15278 +2011-01-22T11:46:15.415880Z +4735 +jplang has-props @@ -1560,7 +1560,7 @@ -13662 +14804 query_test.rb file @@ -1568,10 +1568,10 @@ -2011-01-13T14:09:08.000000Z -25fe3c9e8b257bd7f2ce5b8a28f8f508 -2010-12-21T21:46:54.984442Z -4553 +2011-03-03T11:40:17.000000Z +1cf7133fc93cd35e36b828afe1abdd35 +2011-02-20T13:03:32.835478Z +4888 jplang has-props @@ -1594,7 +1594,7 @@ -20770 +21925 search_test.rb file @@ -1602,7 +1602,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 7c10ed0c6e700b4bfe67499ced7f9129 2010-12-12T23:24:34.194336Z 4509 @@ -1630,13 +1630,47 @@ 4661 +custom_value_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +e012f89814e1a9ddec5e1fd550c6b5e1 +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +3677 + project_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z d50e8af60d440f2f3c60a31031b79830 2011-01-02T11:38:35.152085Z 4615 @@ -1664,47 +1698,13 @@ 39071 -custom_value_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -e012f89814e1a9ddec5e1fd550c6b5e1 -2010-12-12T23:24:34.194336Z -4509 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -3677 - member_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z ef906b6b6bdeaa8d627ff66390dd31ab 2010-12-12T23:24:34.194336Z 4509 @@ -1738,7 +1738,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 2f98e8acd7868617728cd08702411096 2010-12-12T23:24:34.194336Z 4509 @@ -1772,7 +1772,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 759e3cea9ff889147937b83bcc137e4b 2010-12-12T23:24:34.194336Z 4509 @@ -1806,7 +1806,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z eab02ac34d43f18f1bc929dd62d6ee9a 2010-12-12T23:24:34.194336Z 4509 @@ -1840,7 +1840,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 59b08ad686160723b5b83df2cb5f8ee1 2010-12-12T23:24:34.194336Z 4509 @@ -1874,7 +1874,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 8a4fd1977e88faed5d7ebca9ac40d037 2010-12-12T23:24:34.194336Z 4509 @@ -1908,7 +1908,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 8f6032e2276c7077ad1716c67634c17e 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/changeset_test.rb.svn-base --- a/test/unit/.svn/text-base/changeset_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/changeset_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -72,24 +72,40 @@ Setting.commit_ref_keywords = '*' Setting.commit_logtime_enabled = '1' - c = Changeset.new(:repository => Project.find(1).repository, - :committed_on => 24.hours.ago, - :comments => 'Worked on this issue #1 @2h', - :revision => '520', - :user => User.find(2)) - assert_difference 'TimeEntry.count' do - c.scan_comment_for_issue_ids + { + '2' => 2.0, + '2h' => 2.0, + '2hours' => 2.0, + '15m' => 0.25, + '15min' => 0.25, + '3h15' => 3.25, + '3h15m' => 3.25, + '3h15min' => 3.25, + '3:15' => 3.25, + '3.25' => 3.25, + '3.25h' => 3.25, + '3,25' => 3.25, + '3,25h' => 3.25, + }.each do |syntax, expected_hours| + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => 24.hours.ago, + :comments => "Worked on this issue #1 @#{syntax}", + :revision => '520', + :user => User.find(2)) + assert_difference 'TimeEntry.count' do + c.scan_comment_for_issue_ids + end + assert_equal [1], c.issue_ids.sort + + time = TimeEntry.first(:order => 'id desc') + assert_equal 1, time.issue_id + assert_equal 1, time.project_id + assert_equal 2, time.user_id + assert_equal expected_hours, time.hours, "@#{syntax} should be logged as #{expected_hours} hours but was #{time.hours}" + assert_equal Date.yesterday, time.spent_on + assert time.activity.is_default? + assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}" end - assert_equal [1], c.issue_ids.sort - - time = TimeEntry.first(:order => 'id desc') - assert_equal 1, time.issue_id - assert_equal 1, time.project_id - assert_equal 2, time.user_id - assert_equal 2.0, time.hours - assert_equal Date.yesterday, time.spent_on - assert time.activity.is_default? - assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}" end def test_ref_keywords_closing_with_timelog @@ -100,7 +116,7 @@ c = Changeset.new(:repository => Project.find(1).repository, :committed_on => Time.now, - :comments => 'This is a comment. Fixes #1 @2.5, #2 @1', + :comments => 'This is a comment. Fixes #1 @4.5, #2 @1', :user => User.find(2)) assert_difference 'TimeEntry.count', 2 do c.scan_comment_for_issue_ids @@ -169,12 +185,12 @@ assert_equal [2], c.issue_ids.sort assert c.issues.first.project != c.project end - + def test_text_tag_revision c = Changeset.new(:revision => '520') assert_equal 'r520', c.text_tag end - + def test_text_tag_hash c = Changeset.new(:scmid => '7234cb2750b63f47bff735edc50a1c0a433c2518', :revision => '7234cb2750b63f47bff735edc50a1c0a433c2518') assert_equal 'commit:7234cb2750b63f47bff735edc50a1c0a433c2518', c.text_tag @@ -204,19 +220,67 @@ changeset = Changeset.find_by_revision('10') assert_nil changeset.next end - + def test_comments_should_be_converted_to_utf8 - with_settings :commit_logs_encoding => 'ISO-8859-1' do - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) assert_equal "Texte encodé en ISO-8859-1.", c.comments - end end - + def test_invalid_utf8_sequences_in_comments_should_be_stripped - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") - assert_equal "Texte encod en ISO-8859-1.", c.comments + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'UTF-8' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) + if str.respond_to?(:force_encoding) + assert_equal "Texte encod? en ISO-8859-1.", c.comments + else + assert_equal "Texte encod en ISO-8859-1.", c.comments + end + end + + def test_comments_should_be_converted_all_latin1_to_utf8 + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + proj = Project.find(3) + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => s1) + assert( c.save ) + assert_equal s2, c.comments end def test_identifier diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/issue_nested_set_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_nested_set_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/issue_nested_set_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -202,7 +202,19 @@ issue2 = create_issue! issue3 = create_issue!(:parent_issue_id => issue2.id) issue4 = create_issue!(:parent_issue_id => issue1.id) - issue2.reload.destroy + + issue3.init_journal(User.find(2)) + issue3.subject = 'child with journal' + issue3.save! + + assert_difference 'Issue.count', -2 do + assert_difference 'Journal.count', -1 do + assert_difference 'JournalDetail.count', -1 do + Issue.find(issue2.id).destroy + end + end + end + issue1.reload issue4.reload assert !Issue.exists?(issue2.id) @@ -211,6 +223,26 @@ assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt] end + def test_destroy_child_issue_with_children + root = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'root') + child = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'child', :parent_issue_id => root.id) + leaf = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'leaf', :parent_issue_id => child.id) + leaf.init_journal(User.find(2)) + leaf.subject = 'leaf with journal' + leaf.save! + + assert_difference 'Issue.count', -2 do + assert_difference 'Journal.count', -1 do + assert_difference 'JournalDetail.count', -1 do + Issue.find(child.id).destroy + end + end + end + + root = Issue.find(root.id) + assert root.leaf?, "Root issue is not a leaf (lft: #{root.lft}, rgt: #{root.rgt})" + end + def test_parent_priority_should_be_the_highest_child_priority parent = create_issue!(:priority => IssuePriority.find_by_name('Normal')) # Create children diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/issue_status_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_status_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/issue_status_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueStatusTest < ActiveSupport::TestCase - fixtures :issue_statuses, :issues + fixtures :issue_statuses, :issues, :roles, :trackers def test_create status = IssueStatus.new :name => "Assigned" @@ -68,6 +68,30 @@ status.reload assert status.is_default? end + + def test_new_statuses_allowed_to + Workflow.delete_all + + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true) + status = IssueStatus.find(1) + role = Role.find(1) + tracker = Tracker.find(1) + + assert_equal [2], status.new_statuses_allowed_to([role], tracker, false, false).map(&:id) + assert_equal [2], status.find_new_statuses_allowed_to([role], tracker, false, false).map(&:id) + + assert_equal [2, 3], status.new_statuses_allowed_to([role], tracker, true, false).map(&:id) + assert_equal [2, 3], status.find_new_statuses_allowed_to([role], tracker, true, false).map(&:id) + + assert_equal [2, 4], status.new_statuses_allowed_to([role], tracker, false, true).map(&:id) + assert_equal [2, 4], status.find_new_statuses_allowed_to([role], tracker, false, true).map(&:id) + + assert_equal [2, 3, 4, 5], status.new_statuses_allowed_to([role], tracker, true, true).map(&:id) + assert_equal [2, 3, 4, 5], status.find_new_statuses_allowed_to([role], tracker, true, true).map(&:id) + end context "#update_done_ratios" do setup do diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/issue_test.rb.svn-base --- a/test/unit/.svn/text-base/issue_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/issue_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -210,6 +210,33 @@ assert_equal IssueCategory.find(1).assigned_to, issue.assigned_to end + + + def test_new_statuses_allowed_to + Workflow.delete_all + + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true) + status = IssueStatus.find(1) + role = Role.find(1) + tracker = Tracker.find(1) + user = User.find(2) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1) + assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user) + assert_equal [1, 2, 3], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :assigned_to => user) + assert_equal [1, 2, 4], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user) + assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) + end + def test_copy issue = Issue.new.copy_from(1) assert issue.save @@ -594,6 +621,29 @@ assert ActionMailer::Base.deliveries.empty? end + def test_journalized_description + IssueCustomField.delete_all + + i = Issue.first + old_description = i.description + new_description = "This is the new description" + + i.init_journal(User.find(2)) + i.description = new_description + assert_difference 'Journal.count', 1 do + assert_difference 'JournalDetail.count', 1 do + i.save! + end + end + + detail = JournalDetail.first(:order => 'id DESC') + assert_equal i, detail.journal.journalized + assert_equal 'attr', detail.property + assert_equal 'description', detail.prop_key + assert_equal old_description, detail.old_value + assert_equal new_description, detail.value + end + def test_saving_twice_should_not_duplicate_journal_details i = Issue.find(:first) i.init_journal(User.find(2), 'Some notes') diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/query_test.rb.svn-base --- a/test/unit/.svn/text-base/query_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/query_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -484,7 +484,6 @@ # Users not in a group assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" assert_find_issues_with_query_is_successful @query - end should "search assigned to any group member (all)" do @@ -494,7 +493,22 @@ # Only users in a group assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" assert_find_issues_with_query_is_successful @query - + end + + should "return an empty set with = empty group" do + @empty_group = Group.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '=', [@empty_group.id.to_s]) + + assert_equal [], find_issues_with_query(@query) + end + + should "return issues with ! empty group" do + @empty_group = Group.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '!', [@empty_group.id.to_s]) + + assert_find_issues_with_query_is_successful @query end end @@ -540,6 +554,22 @@ assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')" assert_find_issues_with_query_is_successful @query end + + should "return an empty set with empty role" do + @empty_role = Role.generate! + @query = Query.new(:name => '_') + @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s]) + + assert_equal [], find_issues_with_query(@query) + end + + should "return issues with ! empty role" do + @empty_role = Role.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '!', [@empty_role.id.to_s]) + + assert_find_issues_with_query_is_successful @query + end end end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_bazaar_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,16 +19,19 @@ class RepositoryBazaarTest < ActiveSupport::TestCase fixtures :projects - + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository' REPOSITORY_PATH.gsub!(/\/+/, '/') def setup - @project = Project.find(1) - assert @repository = Repository::Bazaar.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}") + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => "file:///#{REPOSITORY_PATH}", + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @@ -38,7 +41,7 @@ assert_equal 9, @repository.changes.count assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 5 @@ -49,7 +52,7 @@ @repository.fetch_changesets assert_equal 4, @repository.changesets.count end - + def test_entries entries = @repository.entries assert_equal 2, entries.size @@ -68,19 +71,6 @@ assert_equal 'file', entries.last.kind assert_equal 'edit.png', entries.last.name end - - def test_cat - cat = @repository.scm.cat('directory/document.txt') - assert cat =~ /Write the contents of a file as of a given revision to standard output/ - end - - def test_annotate - annotate = @repository.scm.annotate('doc-mkdir.txt') - assert_equal 17, annotate.lines.size - assert_equal '1', annotate.revisions[0].identifier - assert_equal 'jsmith@', annotate.revisions[0].author - assert_equal 'mkdir', annotate.lines[0] - end else puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_cvs_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_cvs_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_cvs_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -27,34 +27,64 @@ MODULE_NAME = 'test' def setup - @project = Project.find(1) - assert @repository = Repository::Cvs.create(:project => @project, - :root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(3) + @repository = Repository::Cvs.create(:project => @project, + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch + assert_equal 0, @repository.changesets.count @repository.fetch_changesets @repository.reload assert_equal 5, @repository.changesets.count assert_equal 14, @repository.changes.count assert_not_nil @repository.changesets.find_by_comments('Two files changed') + + r2 = @repository.changesets.find_by_revision('2') + assert_equal 'v1-20071213-162510', r2.scmid end def test_fetch_changesets_incremental + assert_equal 0, @repository.changesets.count @repository.fetch_changesets - # Remove the 3 latest changesets - @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) + # Remove changesets with revision > 3 + @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3} @repository.reload - assert_equal 2, @repository.changesets.count - + assert_equal 3, @repository.changesets.count + assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision) + + rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal '3', rev3_commit.revision + # 2007-12-14 01:27:22 +0900 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + assert_equal 'HEAD-20071213-162722', rev3_commit.scmid + assert_equal rev3_committed_on, rev3_commit.committed_on + latest_rev = @repository.latest_changeset + assert_equal rev3_committed_on, latest_rev.committed_on + @repository.fetch_changesets + @repository.reload assert_equal 5, @repository.changesets.count + + assert_equal %w|5 4 3 2 1|, @repository.changesets.collect(&:revision) + rev5_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal 'HEAD-20071213-163001', rev5_commit.scmid + # 2007-12-14 01:30:01 +0900 + rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1) + assert_equal rev5_committed_on, rev5_commit.committed_on end def test_deleted_files_should_not_be_listed + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @repository.reload + assert_equal 5, @repository.changesets.count + entries = @repository.entries('sources') assert entries.detect {|e| e.name == 'watchers_controller.rb'} assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_darcs_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_darcs_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_darcs_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -19,25 +19,28 @@ class RepositoryDarcsTest < ActiveSupport::TestCase fixtures :projects - + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' - + def setup - @project = Project.find(1) - assert @repository = Repository::Darcs.create(:project => @project, :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - + assert_equal 6, @repository.changesets.count assert_equal 13, @repository.changes.count assert_equal "Initial commit.", @repository.changesets.find_by_revision('1').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 3 @@ -48,8 +51,10 @@ @repository.fetch_changesets assert_equal 6, @repository.changesets.count end - + def test_deleted_files_should_not_be_listed + @repository.fetch_changesets + @repository.reload entries = @repository.entries('sources') assert entries.detect {|e| e.name == 'watchers_controller.rb'} assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_git_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_git_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_git_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -18,25 +18,29 @@ require File.expand_path('../../test_helper', __FILE__) class RepositoryGitTest < ActiveSupport::TestCase - fixtures :projects, :repositories, :enabled_modules, :users, :roles - + fixtures :projects, :repositories, :enabled_modules, :users, :roles + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? - + + FELIX_HEX = "Felix Sch\xC3\xA4fer" + def setup - @project = Project.find(1) - assert @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH) + Setting.commit_logs_encoding = 'UTF-8' + @project = Project.find(3) + @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - - assert_equal 15, @repository.changesets.count - assert_equal 24, @repository.changes.count - + + assert_equal 16, @repository.changesets.count + assert_equal 25, @repository.changes.count + commit = @repository.changesets.find(:first, :order => 'committed_on ASC') assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments assert_equal "jsmith ", commit.committer @@ -57,10 +61,20 @@ # Remove the 3 latest changesets @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) @repository.reload - assert_equal 12, @repository.changesets.count - + cs1 = @repository.changesets + assert_equal 13, cs1.count + + rev_a_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.revision + # Mon Jul 5 22:34:26 2010 +0200 + rev_a_committed_on = Time.gm(2010, 7, 5, 20, 34, 26) + assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.scmid + assert_equal rev_a_committed_on, rev_a_commit.committed_on + latest_rev = @repository.latest_changeset + assert_equal rev_a_committed_on, latest_rev.committed_on + @repository.fetch_changesets - assert_equal 15, @repository.changesets.count + assert_equal 16, @repository.changesets.count end def test_find_changeset_by_name @@ -103,6 +117,17 @@ assert c.event_title.include?('abc7234c:') assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev] end + + def test_log_utf8 + @repository.fetch_changesets + @repository.reload + str_felix_hex = FELIX_HEX + if str_felix_hex.respond_to?(:force_encoding) + str_felix_hex.force_encoding('UTF-8') + end + c = @repository.changesets.find_by_revision('ed5bb786bbda2dee66a2d50faf51429dbc043a7b') + assert_equal "#{str_felix_hex} ", c.committer + end else puts "Git test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_mercurial_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -22,23 +22,23 @@ # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository' - + def setup - @project = Project.find(1) - assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - assert_equal 17, @repository.changesets.count assert_equal 25, @repository.changes.count assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision('0').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 2 @@ -49,19 +49,6 @@ @repository.fetch_changesets assert_equal 17, @repository.changesets.count end - - def test_entries - assert_equal 2, @repository.entries("sources", 2).size - assert_equal 2, @repository.entries("sources", '400bb8672109').size - assert_equal 1, @repository.entries("sources", 3).size - assert_equal 1, @repository.entries("sources", 'b3a615152df8').size - end - - def test_locate_on_outdated_repository - assert_equal 1, @repository.entries("images", 0).size - assert_equal 2, @repository.entries("images").size - assert_equal 2, @repository.entries("images", 2).size - end def test_isodatesec # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher @@ -171,6 +158,43 @@ assert c.event_title.include?('123:abc400bb8672:') assert_equal 'abc400bb8672', c.event_url[:rev] end + + def test_latest_changesets_with_limit + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('', nil, 2) + assert_equal @repository.latest_changesets('', nil)[0, 2], changesets + end + + def test_latest_changesets_with_filepath + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('README', nil) + assert_equal %w|8 6 1 0|, changesets.collect(&:revision) + + path = 'sql_escape/percent%dir/percent%file1.txt' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|11 10 9|, changesets.collect(&:revision) + + path = 'sql_escape/underscore_dir/understrike_file.txt' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|12 9|, changesets.collect(&:revision) + end + + def test_latest_changesets_with_dirpath + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('images', nil) + assert_equal %w|1 0|, changesets.collect(&:revision) + + path = 'sql_escape/percent%dir' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|13 11 10 9|, changesets.collect(&:revision) + + path = 'sql_escape/underscore_dir' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|13 12 9|, changesets.collect(&:revision) + end else puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_subversion_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_subversion_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_subversion_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -21,8 +21,9 @@ fixtures :projects, :repositories, :enabled_modules, :users, :roles def setup - @project = Project.find(1) - assert @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}") + @project = Project.find(3) + assert @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") end if repository_configured?('subversion') @@ -74,7 +75,7 @@ end def test_directory_listing_with_square_brackets_in_base - @project = Project.find(1) + @project = Project.find(3) @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]") @repository.fetch_changesets @@ -136,6 +137,56 @@ assert c.event_title.include?('123456789:') assert_equal '123456789', c.event_url[:rev] end + + def test_log_encoding_ignore_setting + with_settings :commit_logs_encoding => 'windows-1252' do + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + c = Changeset.new(:repository => @repository, + :comments=>s2, + :revision=>'123', + :committed_on => Time.now) + assert c.save + assert_equal s2, c.comments + end + end + + def test_previous + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('3') + assert_equal @repository.find_changeset_by_name('2'), changeset.previous + end + + def test_previous_nil + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('1') + assert_nil changeset.previous + end + + def test_next + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('2') + assert_equal @repository.find_changeset_by_name('3'), changeset.next + end + + def test_next_nil + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('11') + assert_nil changeset.next + end else puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/repository_test.rb.svn-base --- a/test/unit/.svn/text-base/repository_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/repository_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -125,16 +125,19 @@ assert_not_equal( comment, changeset.comments ) assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments ) end - + def test_for_urls_strip - repository = Repository::Cvs.create(:project => Project.find(4), :url => ' :pserver:login:password@host:/path/to/the/repository', - :root_url => 'foo ') + repository = Repository::Cvs.create( + :project => Project.find(4), + :url => ' :pserver:login:password@host:/path/to/the/repository', + :root_url => 'foo ', + :log_encoding => 'UTF-8') assert repository.save repository.reload assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url assert_equal 'foo', repository.root_url end - + def test_manual_user_mapping assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.') diff -r fca2657f4aa5 -r eeebe205a056 test/unit/.svn/text-base/user_test.rb.svn-base --- a/test/unit/.svn/text-base/user_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/.svn/text-base/user_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -361,7 +361,6 @@ user = User.try_to_login("admin", "hello") assert_kind_of User, user assert_equal "admin", user.login - assert_equal User.hash_password("hello"), user.hashed_password end def test_name_format @@ -383,6 +382,22 @@ assert_equal nil, user end + context ".try_to_login" do + context "with good credentials" do + should "return the user" do + user = User.try_to_login("admin", "admin") + assert_kind_of User, user + assert_equal "admin", user.login + end + end + + context "with wrong credentials" do + should "return nil" do + assert_nil User.try_to_login("admin", "foo") + end + end + end + if ldap_configured? context "#try_to_login using LDAP" do context "with failed connection to the LDAP server" do @@ -672,6 +687,7 @@ should "be false for a user with :only_my_events and isn't an author, creator, or assignee" do @user = User.generate_with_protected!(:mail_notification => 'only_my_events') + Member.create!(:user => @user, :project => @project, :role_ids => [1]) assert ! @user.notify_about?(@issue) end @@ -704,12 +720,45 @@ @assignee.update_attribute(:mail_notification, 'only_owner') assert ! @assignee.notify_about?(@issue) end + + should "be true for a user with :selected and is the author" do + @author.update_attribute(:mail_notification, 'selected') + assert @author.notify_about?(@issue) + end + + should "be true for a user with :selected and is the assignee" do + @assignee.update_attribute(:mail_notification, 'selected') + assert @assignee.notify_about?(@issue) + end + + should "be false for a user with :selected and is not the author or assignee" do + @user = User.generate_with_protected!(:mail_notification => 'selected') + Member.create!(:user => @user, :project => @project, :role_ids => [1]) + assert ! @user.notify_about?(@issue) + end end context "other events" do should 'be added and tested' end end + + def test_salt_unsalted_passwords + # Restore a user with an unsalted password + user = User.find(1) + user.salt = nil + user.hashed_password = User.hash_password("unsalted") + user.save! + + User.salt_unsalted_passwords! + + user.reload + # Salt added + assert !user.salt.blank? + # Password still valid + assert user.check_password?("unsalted") + assert_equal user, User.try_to_login(user.login, "unsalted") + end if Object.const_defined?(:OpenID) diff -r fca2657f4aa5 -r eeebe205a056 test/unit/changeset_test.rb --- a/test/unit/changeset_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/changeset_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -72,24 +72,40 @@ Setting.commit_ref_keywords = '*' Setting.commit_logtime_enabled = '1' - c = Changeset.new(:repository => Project.find(1).repository, - :committed_on => 24.hours.ago, - :comments => 'Worked on this issue #1 @2h', - :revision => '520', - :user => User.find(2)) - assert_difference 'TimeEntry.count' do - c.scan_comment_for_issue_ids + { + '2' => 2.0, + '2h' => 2.0, + '2hours' => 2.0, + '15m' => 0.25, + '15min' => 0.25, + '3h15' => 3.25, + '3h15m' => 3.25, + '3h15min' => 3.25, + '3:15' => 3.25, + '3.25' => 3.25, + '3.25h' => 3.25, + '3,25' => 3.25, + '3,25h' => 3.25, + }.each do |syntax, expected_hours| + c = Changeset.new(:repository => Project.find(1).repository, + :committed_on => 24.hours.ago, + :comments => "Worked on this issue #1 @#{syntax}", + :revision => '520', + :user => User.find(2)) + assert_difference 'TimeEntry.count' do + c.scan_comment_for_issue_ids + end + assert_equal [1], c.issue_ids.sort + + time = TimeEntry.first(:order => 'id desc') + assert_equal 1, time.issue_id + assert_equal 1, time.project_id + assert_equal 2, time.user_id + assert_equal expected_hours, time.hours, "@#{syntax} should be logged as #{expected_hours} hours but was #{time.hours}" + assert_equal Date.yesterday, time.spent_on + assert time.activity.is_default? + assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}" end - assert_equal [1], c.issue_ids.sort - - time = TimeEntry.first(:order => 'id desc') - assert_equal 1, time.issue_id - assert_equal 1, time.project_id - assert_equal 2, time.user_id - assert_equal 2.0, time.hours - assert_equal Date.yesterday, time.spent_on - assert time.activity.is_default? - assert time.comments.include?('r520'), "r520 was expected in time_entry comments: #{time.comments}" end def test_ref_keywords_closing_with_timelog @@ -100,7 +116,7 @@ c = Changeset.new(:repository => Project.find(1).repository, :committed_on => Time.now, - :comments => 'This is a comment. Fixes #1 @2.5, #2 @1', + :comments => 'This is a comment. Fixes #1 @4.5, #2 @1', :user => User.find(2)) assert_difference 'TimeEntry.count', 2 do c.scan_comment_for_issue_ids @@ -169,12 +185,12 @@ assert_equal [2], c.issue_ids.sort assert c.issues.first.project != c.project end - + def test_text_tag_revision c = Changeset.new(:revision => '520') assert_equal 'r520', c.text_tag end - + def test_text_tag_hash c = Changeset.new(:scmid => '7234cb2750b63f47bff735edc50a1c0a433c2518', :revision => '7234cb2750b63f47bff735edc50a1c0a433c2518') assert_equal 'commit:7234cb2750b63f47bff735edc50a1c0a433c2518', c.text_tag @@ -204,19 +220,67 @@ changeset = Changeset.find_by_revision('10') assert_nil changeset.next end - + def test_comments_should_be_converted_to_utf8 - with_settings :commit_logs_encoding => 'ISO-8859-1' do - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) assert_equal "Texte encodé en ISO-8859-1.", c.comments - end end - + def test_invalid_utf8_sequences_in_comments_should_be_stripped - c = Changeset.new - c.comments = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") - assert_equal "Texte encod en ISO-8859-1.", c.comments + proj = Project.find(3) + str = File.read("#{RAILS_ROOT}/test/fixtures/encoding/iso-8859-1.txt") + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'UTF-8' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => str) + assert( c.save ) + if str.respond_to?(:force_encoding) + assert_equal "Texte encod? en ISO-8859-1.", c.comments + else + assert_equal "Texte encod en ISO-8859-1.", c.comments + end + end + + def test_comments_should_be_converted_all_latin1_to_utf8 + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + proj = Project.find(3) + r = Repository::Bazaar.create!( + :project => proj, :url => '/tmp/test/bazaar', + :log_encoding => 'ISO-8859-1' ) + assert r + c = Changeset.new(:repository => r, + :committed_on => Time.now, + :revision => '123', + :scmid => '12345', + :comments => s1) + assert( c.save ) + assert_equal s2, c.comments end def test_identifier diff -r fca2657f4aa5 -r eeebe205a056 test/unit/helpers/.svn/all-wcprops --- a/test/unit/helpers/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/helpers/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 42 -/svn/!svn/ver/4696/trunk/test/unit/helpers +/svn/!svn/ver/4982/trunk/test/unit/helpers +END +repository_helper_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4932/trunk/test/unit/helpers/repository_helper_test.rb END custom_fields_helper_test.rb K 25 @@ -25,7 +31,7 @@ K 25 svn:wc:ra_dav:version-url V 69 -/svn/!svn/ver/4696/trunk/test/unit/helpers/application_helper_test.rb +/svn/!svn/ver/4982/trunk/test/unit/helpers/application_helper_test.rb END search_helper_test.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/helpers/.svn/entries --- a/test/unit/helpers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/helpers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/helpers http://redmine.rubyforge.org/svn -2011-01-11T16:03:24.486964Z -4696 +2011-03-01T10:27:30.170724Z +4982 tmaruyama @@ -26,13 +26,47 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 +repository_helper_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +657e0f9ae00af3978571139525631dcc +2011-02-23T07:04:52.071012Z +4932 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +2288 + custom_fields_helper_test.rb file -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z 0091346b4a944910faf5733e2ed88a76 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +100,7 @@ -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z ac087c4ae8e6354c77ef7189351ce220 2010-12-12T23:24:34.194336Z 4509 @@ -100,7 +134,7 @@ -2010-09-23T14:37:45.483825Z +2011-03-03T11:05:08.000000Z 2c72db60f744a7dec4600df692c40766 2010-08-11T14:42:10.119704Z 3936 @@ -134,10 +168,10 @@ -2011-01-13T14:08:13.000000Z -29c11d5b78186bda781c09791622a62f -2011-01-11T16:03:24.486964Z -4696 +2011-03-03T11:40:17.000000Z +1f311492ce81d8708bef3193e684f98d +2011-03-01T10:27:30.170724Z +4982 tmaruyama has-props @@ -160,7 +194,7 @@ -33335 +35024 search_helper_test.rb file @@ -168,7 +202,7 @@ -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z 9eb29557d249537fed237c15e1b1b65b 2010-12-12T23:24:34.194336Z 4509 @@ -202,7 +236,7 @@ -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z fd65c7c018eb59b2d8697ebeb6b7ba71 2010-12-12T23:24:34.194336Z 4509 @@ -236,7 +270,7 @@ -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z 93f6f6ca679f5c32988254776b6d09ae 2010-12-12T23:24:34.194336Z 4509 @@ -270,7 +304,7 @@ -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z b26d2e82551d9f01c0394400ffd85136 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base --- a/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/helpers/.svn/text-base/application_helper_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -200,7 +200,7 @@ 'export:/some/file' => link_to('export:/some/file', source_url.merge(:format => 'raw'), :class => 'source download'), # message 'message#4' => link_to('Post 2', message_url, :class => 'message'), - 'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5'), :class => 'message'), + 'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5', :r => 5), :class => 'message'), # project 'project#3' => link_to('eCookbook Subproject 1', project_url, :class => 'project'), 'project:subproject1' => link_to('eCookbook Subproject 1', project_url, :class => 'project'), @@ -224,6 +224,35 @@ @project = Project.find(1) to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text), "#{text} failed" } end + + def test_cross_project_redmine_links + source_link = link_to('ecookbook:source:/some/file', {:controller => 'repositories', :action => 'entry', :id => 'ecookbook', :path => ['some', 'file']}, + :class => 'source') + + changeset_link = link_to('ecookbook:r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2}, + :class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3') + + to_test = { + # documents + 'document:"Test document"' => 'document:"Test document"', + 'ecookbook:document:"Test document"' => 'Test document', + 'invalid:document:"Test document"' => 'invalid:document:"Test document"', + # versions + 'version:"1.0"' => 'version:"1.0"', + 'ecookbook:version:"1.0"' => '1.0', + 'invalid:version:"1.0"' => 'invalid:version:"1.0"', + # changeset + 'r2' => 'r2', + 'ecookbook:r2' => changeset_link, + 'invalid:r2' => 'invalid:r2', + # source + 'source:/some/file' => 'source:/some/file', + 'ecookbook:source:/some/file' => source_link, + 'invalid:source:/some/file' => 'invalid:source:/some/file', + } + @project = Project.find(3) + to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text), "#{text} failed" } + end def test_redmine_links_git_commit changeset_link = link_to('abcd', @@ -263,7 +292,9 @@ 'commit:20080308225258-98289-abcd456efg.gz' => changeset_link, } @project = Project.find(3) - r = Repository::Darcs.create!(:project => @project, :url => '/tmp/test/darcs') + r = Repository::Darcs.create!( + :project => @project, :url => '/tmp/test/darcs', + :log_encoding => 'UTF-8') assert r c = Changeset.new(:repository => r, :committed_on => Time.now, diff -r fca2657f4aa5 -r eeebe205a056 test/unit/helpers/.svn/text-base/repository_helper_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/helpers/.svn/text-base/repository_helper_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,68 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../test_helper', __FILE__) + +class RepositoryHelperTest < HelperTestCase + include RepositoriesHelper + + def test_from_latin1_to_utf8 + with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do + s1 = "Texte encod\xc3\xa9" + s2 = "Texte encod\xe9" + s3 = s2 + if s1.respond_to?(:force_encoding) + s1.force_encoding("UTF-8") + s2.force_encoding("ASCII-8BIT") + s3.force_encoding("UTF-8") + end + assert_equal s1, to_utf8(s2) + assert_equal s1, to_utf8(s3) + end + end + + def test_from_euc_jp_to_utf8 + with_settings :repositories_encodings => 'UTF-8,EUC-JP' do + s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3" + s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3" + s3 = s2 + if s1.respond_to?(:force_encoding) + s1.force_encoding("UTF-8") + s2.force_encoding("ASCII-8BIT") + s3.force_encoding("UTF-8") + end + assert_equal s1, to_utf8(s2) + assert_equal s1, to_utf8(s3) + end + end + + def test_to_utf8_should_be_converted_all_latin1_to_utf8 + with_settings :repositories_encodings => 'ISO-8859-1' do + s1 = "\xc3\x82\xc2\x80" + s2 = "\xC2\x80" + s3 = s2 + if s1.respond_to?(:force_encoding) + s1.force_encoding("UTF-8") + s2.force_encoding("ASCII-8BIT") + s3.force_encoding("UTF-8") + end + assert_equal s1, to_utf8(s2) + assert_equal s1, to_utf8(s3) + end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/helpers/application_helper_test.rb --- a/test/unit/helpers/application_helper_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/helpers/application_helper_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -200,7 +200,7 @@ 'export:/some/file' => link_to('export:/some/file', source_url.merge(:format => 'raw'), :class => 'source download'), # message 'message#4' => link_to('Post 2', message_url, :class => 'message'), - 'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5'), :class => 'message'), + 'message#5' => link_to('RE: post 2', message_url.merge(:anchor => 'message-5', :r => 5), :class => 'message'), # project 'project#3' => link_to('eCookbook Subproject 1', project_url, :class => 'project'), 'project:subproject1' => link_to('eCookbook Subproject 1', project_url, :class => 'project'), @@ -224,6 +224,35 @@ @project = Project.find(1) to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text), "#{text} failed" } end + + def test_cross_project_redmine_links + source_link = link_to('ecookbook:source:/some/file', {:controller => 'repositories', :action => 'entry', :id => 'ecookbook', :path => ['some', 'file']}, + :class => 'source') + + changeset_link = link_to('ecookbook:r2', {:controller => 'repositories', :action => 'revision', :id => 'ecookbook', :rev => 2}, + :class => 'changeset', :title => 'This commit fixes #1, #2 and references #1 & #3') + + to_test = { + # documents + 'document:"Test document"' => 'document:"Test document"', + 'ecookbook:document:"Test document"' => 'Test document', + 'invalid:document:"Test document"' => 'invalid:document:"Test document"', + # versions + 'version:"1.0"' => 'version:"1.0"', + 'ecookbook:version:"1.0"' => '1.0', + 'invalid:version:"1.0"' => 'invalid:version:"1.0"', + # changeset + 'r2' => 'r2', + 'ecookbook:r2' => changeset_link, + 'invalid:r2' => 'invalid:r2', + # source + 'source:/some/file' => 'source:/some/file', + 'ecookbook:source:/some/file' => source_link, + 'invalid:source:/some/file' => 'invalid:source:/some/file', + } + @project = Project.find(3) + to_test.each { |text, result| assert_equal "

    #{result}

    ", textilizable(text), "#{text} failed" } + end def test_redmine_links_git_commit changeset_link = link_to('abcd', @@ -263,7 +292,9 @@ 'commit:20080308225258-98289-abcd456efg.gz' => changeset_link, } @project = Project.find(3) - r = Repository::Darcs.create!(:project => @project, :url => '/tmp/test/darcs') + r = Repository::Darcs.create!( + :project => @project, :url => '/tmp/test/darcs', + :log_encoding => 'UTF-8') assert r c = Changeset.new(:repository => r, :committed_on => Time.now, diff -r fca2657f4aa5 -r eeebe205a056 test/unit/helpers/repository_helper_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/helpers/repository_helper_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,68 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../test_helper', __FILE__) + +class RepositoryHelperTest < HelperTestCase + include RepositoriesHelper + + def test_from_latin1_to_utf8 + with_settings :repositories_encodings => 'UTF-8,ISO-8859-1' do + s1 = "Texte encod\xc3\xa9" + s2 = "Texte encod\xe9" + s3 = s2 + if s1.respond_to?(:force_encoding) + s1.force_encoding("UTF-8") + s2.force_encoding("ASCII-8BIT") + s3.force_encoding("UTF-8") + end + assert_equal s1, to_utf8(s2) + assert_equal s1, to_utf8(s3) + end + end + + def test_from_euc_jp_to_utf8 + with_settings :repositories_encodings => 'UTF-8,EUC-JP' do + s1 = "\xe3\x83\xac\xe3\x83\x83\xe3\x83\x89\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xb3" + s2 = "\xa5\xec\xa5\xc3\xa5\xc9\xa5\xde\xa5\xa4\xa5\xf3" + s3 = s2 + if s1.respond_to?(:force_encoding) + s1.force_encoding("UTF-8") + s2.force_encoding("ASCII-8BIT") + s3.force_encoding("UTF-8") + end + assert_equal s1, to_utf8(s2) + assert_equal s1, to_utf8(s3) + end + end + + def test_to_utf8_should_be_converted_all_latin1_to_utf8 + with_settings :repositories_encodings => 'ISO-8859-1' do + s1 = "\xc3\x82\xc2\x80" + s2 = "\xC2\x80" + s3 = s2 + if s1.respond_to?(:force_encoding) + s1.force_encoding("UTF-8") + s2.force_encoding("ASCII-8BIT") + s3.force_encoding("UTF-8") + end + assert_equal s1, to_utf8(s2) + assert_equal s1, to_utf8(s3) + end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/issue_nested_set_test.rb --- a/test/unit/issue_nested_set_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/issue_nested_set_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -202,7 +202,19 @@ issue2 = create_issue! issue3 = create_issue!(:parent_issue_id => issue2.id) issue4 = create_issue!(:parent_issue_id => issue1.id) - issue2.reload.destroy + + issue3.init_journal(User.find(2)) + issue3.subject = 'child with journal' + issue3.save! + + assert_difference 'Issue.count', -2 do + assert_difference 'Journal.count', -1 do + assert_difference 'JournalDetail.count', -1 do + Issue.find(issue2.id).destroy + end + end + end + issue1.reload issue4.reload assert !Issue.exists?(issue2.id) @@ -211,6 +223,26 @@ assert_equal [issue1.id, 2, 3], [issue4.root_id, issue4.lft, issue4.rgt] end + def test_destroy_child_issue_with_children + root = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'root') + child = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'child', :parent_issue_id => root.id) + leaf = Issue.create!(:project_id => 1, :author_id => 2, :tracker_id => 1, :subject => 'leaf', :parent_issue_id => child.id) + leaf.init_journal(User.find(2)) + leaf.subject = 'leaf with journal' + leaf.save! + + assert_difference 'Issue.count', -2 do + assert_difference 'Journal.count', -1 do + assert_difference 'JournalDetail.count', -1 do + Issue.find(child.id).destroy + end + end + end + + root = Issue.find(root.id) + assert root.leaf?, "Root issue is not a leaf (lft: #{root.lft}, rgt: #{root.rgt})" + end + def test_parent_priority_should_be_the_highest_child_priority parent = create_issue!(:priority => IssuePriority.find_by_name('Normal')) # Create children diff -r fca2657f4aa5 -r eeebe205a056 test/unit/issue_status_test.rb --- a/test/unit/issue_status_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/issue_status_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -18,7 +18,7 @@ require File.expand_path('../../test_helper', __FILE__) class IssueStatusTest < ActiveSupport::TestCase - fixtures :issue_statuses, :issues + fixtures :issue_statuses, :issues, :roles, :trackers def test_create status = IssueStatus.new :name => "Assigned" @@ -68,6 +68,30 @@ status.reload assert status.is_default? end + + def test_new_statuses_allowed_to + Workflow.delete_all + + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true) + status = IssueStatus.find(1) + role = Role.find(1) + tracker = Tracker.find(1) + + assert_equal [2], status.new_statuses_allowed_to([role], tracker, false, false).map(&:id) + assert_equal [2], status.find_new_statuses_allowed_to([role], tracker, false, false).map(&:id) + + assert_equal [2, 3], status.new_statuses_allowed_to([role], tracker, true, false).map(&:id) + assert_equal [2, 3], status.find_new_statuses_allowed_to([role], tracker, true, false).map(&:id) + + assert_equal [2, 4], status.new_statuses_allowed_to([role], tracker, false, true).map(&:id) + assert_equal [2, 4], status.find_new_statuses_allowed_to([role], tracker, false, true).map(&:id) + + assert_equal [2, 3, 4, 5], status.new_statuses_allowed_to([role], tracker, true, true).map(&:id) + assert_equal [2, 3, 4, 5], status.find_new_statuses_allowed_to([role], tracker, true, true).map(&:id) + end context "#update_done_ratios" do setup do diff -r fca2657f4aa5 -r eeebe205a056 test/unit/issue_test.rb --- a/test/unit/issue_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/issue_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -210,6 +210,33 @@ assert_equal IssueCategory.find(1).assigned_to, issue.assigned_to end + + + def test_new_statuses_allowed_to + Workflow.delete_all + + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 2, :author => false, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 3, :author => true, :assignee => false) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 4, :author => false, :assignee => true) + Workflow.create!(:role_id => 1, :tracker_id => 1, :old_status_id => 1, :new_status_id => 5, :author => true, :assignee => true) + status = IssueStatus.find(1) + role = Role.find(1) + tracker = Tracker.find(1) + user = User.find(2) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1) + assert_equal [1, 2], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user) + assert_equal [1, 2, 3], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :assigned_to => user) + assert_equal [1, 2, 4], issue.new_statuses_allowed_to(user).map(&:id) + + issue = Issue.generate!(:tracker => tracker, :status => status, :project_id => 1, :author => user, :assigned_to => user) + assert_equal [1, 2, 3, 4, 5], issue.new_statuses_allowed_to(user).map(&:id) + end + def test_copy issue = Issue.new.copy_from(1) assert issue.save @@ -594,6 +621,29 @@ assert ActionMailer::Base.deliveries.empty? end + def test_journalized_description + IssueCustomField.delete_all + + i = Issue.first + old_description = i.description + new_description = "This is the new description" + + i.init_journal(User.find(2)) + i.description = new_description + assert_difference 'Journal.count', 1 do + assert_difference 'JournalDetail.count', 1 do + i.save! + end + end + + detail = JournalDetail.first(:order => 'id DESC') + assert_equal i, detail.journal.journalized + assert_equal 'attr', detail.property + assert_equal 'description', detail.prop_key + assert_equal old_description, detail.old_value + assert_equal new_description, detail.value + end + def test_saving_twice_should_not_duplicate_journal_details i = Issue.find(:first) i.init_journal(User.find(2), 'Some notes') diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/.svn/all-wcprops --- a/test/unit/lib/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 38 -/svn/!svn/ver/4705/trunk/test/unit/lib +/svn/!svn/ver/4964/trunk/test/unit/lib END redmine_test.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/.svn/entries --- a/test/unit/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib http://redmine.rubyforge.org/svn -2011-01-13T12:05:11.734883Z -4705 +2011-02-28T14:12:47.115180Z +4964 tmaruyama @@ -35,7 +35,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z eec42202798f1936d0e12c27f43f9add 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/all-wcprops --- a/test/unit/lib/redmine/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,13 @@ K 25 svn:wc:ra_dav:version-url V 46 -/svn/!svn/ver/4705/trunk/test/unit/lib/redmine +/svn/!svn/ver/4964/trunk/test/unit/lib/redmine +END +wiki_formatting.rb +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/wiki_formatting.rb END menu_manager_test.rb K 25 @@ -15,17 +21,11 @@ V 61 /svn/!svn/ver/4509/trunk/test/unit/lib/redmine/plugin_test.rb END -wiki_formatting.rb -K 25 -svn:wc:ra_dav:version-url -V 65 -/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/wiki_formatting.rb -END i18n_test.rb K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4679/trunk/test/unit/lib/redmine/i18n_test.rb +/svn/!svn/ver/4894/trunk/test/unit/lib/redmine/i18n_test.rb END hook_test.rb K 25 @@ -51,17 +51,29 @@ V 61 /svn/!svn/ver/4509/trunk/test/unit/lib/redmine/themes_test.rb END +configuration_test.rb +K 25 +svn:wc:ra_dav:version-url +V 68 +/svn/!svn/ver/4949/trunk/test/unit/lib/redmine/configuration_test.rb +END mime_type_test.rb K 25 svn:wc:ra_dav:version-url V 64 /svn/!svn/ver/4509/trunk/test/unit/lib/redmine/mime_type_test.rb END +ciphering_test.rb +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/!svn/ver/4950/trunk/test/unit/lib/redmine/ciphering_test.rb +END unified_diff_test.rb K 25 svn:wc:ra_dav:version-url V 67 -/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/unified_diff_test.rb +/svn/!svn/ver/4929/trunk/test/unit/lib/redmine/unified_diff_test.rb END notifiable_test.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/entries --- a/test/unit/lib/redmine/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine http://redmine.rubyforge.org/svn -2011-01-13T12:05:11.734883Z -4705 +2011-02-28T14:12:47.115180Z +4964 tmaruyama @@ -32,10 +32,10 @@ -2011-01-13T14:08:14.000000Z -9aeca8ed785b33fdf901312133798b8b -2011-01-10T18:25:12.105765Z -4679 +2011-03-03T11:40:17.000000Z +4368129679eec86fab2cd631de3b8cc5 +2011-02-20T14:56:37.399906Z +4894 jplang has-props @@ -58,7 +58,7 @@ -4202 +4952 scm dir @@ -69,7 +69,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 761d6ebcd277ba4a1d0a2216a7fe8925 2010-12-12T23:24:34.194336Z 4509 @@ -103,7 +103,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 2e952466cca65bea9ea095ad2ec01811 2010-12-12T23:24:34.194336Z 4509 @@ -137,7 +137,7 @@ -2011-01-13T14:08:14.000000Z +2011-03-03T11:05:08.000000Z 161e4b78a0d1cdfd67d5bd54f6480726 2010-12-12T23:24:34.194336Z 4509 @@ -174,13 +174,81 @@ menu_manager dir +plugin_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +d2f2e4457ed4eda1b5efb8a41a3de255 +2010-12-12T23:24:34.194336Z +4509 +jbbarth +has-props + + + + + + + + + + + + + + + + + + + + +4168 + +menu_manager_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +1a6043d0994b5fb4a09f3962ab5542ce +2010-12-12T23:24:34.194336Z +4509 +jbbarth + + + + + + + + + + + + + + + + + + + + + +1044 + wiki_formatting.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 22afe4f1981d3d856beef3275f95f243 2010-12-12T23:24:34.194336Z 4509 @@ -208,81 +276,13 @@ 1966 -plugin_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -d2f2e4457ed4eda1b5efb8a41a3de255 -2010-12-12T23:24:34.194336Z -4509 -jbbarth -has-props - - - - - - - - - - - - - - - - - - - - -4168 - -menu_manager_test.rb -file - - - - -2011-01-13T14:09:08.000000Z -1a6043d0994b5fb4a09f3962ab5542ce -2010-12-12T23:24:34.194336Z -4509 -jbbarth - - - - - - - - - - - - - - - - - - - - - -1044 - hook_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 6b610cfc1e3e51f457eea06a6e6fb9a0 2010-12-12T23:24:34.194336Z 4509 @@ -310,16 +310,13 @@ 5741 -helpers -dir - access_control_test.rb file -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 6682bde90d30369ef1d27b806391134f 2010-12-12T23:24:34.194336Z 4509 @@ -347,17 +344,88 @@ 1801 +helpers +dir + +configuration_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +d96ffe5035b073e1dffdb3f01fe8e06e +2011-02-25T14:30:05.998365Z +4949 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +1877 + +ciphering_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +c2c353211cdd7cf9a87b9102e26b8d14 +2011-02-26T13:09:25.657748Z +4950 +jplang +has-props + + + + + + + + + + + + + + + + + + + + +3125 + unified_diff_test.rb file -2011-01-13T14:09:08.000000Z -247766b1dcc53d063207850027e6f78d -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:40:17.000000Z +6b58d3612b430c0757566b1cd6bfcda0 +2011-02-23T07:03:45.049119Z +4929 +tmaruyama has-props @@ -379,7 +447,7 @@ -1923 +2455 notifiable_test.rb file @@ -387,7 +455,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 562f9308fbaa71c0ef605a5cfe24d3a5 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/prop-base/ciphering_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/.svn/prop-base/ciphering_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/prop-base/configuration_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/.svn/prop-base/configuration_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 13 +svn:eol-style +V 6 +native +END diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/text-base/ciphering_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/.svn/text-base/ciphering_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,84 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../../test_helper', __FILE__) + +class Redmine::CipheringTest < ActiveSupport::TestCase + + def test_password_should_be_encrypted + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + r = Repository::Subversion.generate!(:password => 'foo') + assert_equal 'foo', r.password + assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/) + end + end + + def test_password_should_be_clear_with_blank_key + Redmine::Configuration.with 'database_cipher_key' => '' do + r = Repository::Subversion.generate!(:password => 'foo') + assert_equal 'foo', r.password + assert_equal 'foo', r.read_attribute(:password) + end + end + + def test_password_should_be_clear_with_nil_key + Redmine::Configuration.with 'database_cipher_key' => nil do + r = Repository::Subversion.generate!(:password => 'foo') + assert_equal 'foo', r.password + assert_equal 'foo', r.read_attribute(:password) + end + end + + def test_unciphered_password_should_be_readable + Redmine::Configuration.with 'database_cipher_key' => nil do + r = Repository::Subversion.generate!(:password => 'clear') + end + + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + r = Repository.first(:order => 'id DESC') + assert_equal 'clear', r.password + end + end + + def test_encrypt_all + Repository.delete_all + Redmine::Configuration.with 'database_cipher_key' => nil do + Repository::Subversion.generate!(:password => 'foo') + Repository::Subversion.generate!(:password => 'bar') + end + + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + assert Repository.encrypt_all(:password) + r = Repository.first(:order => 'id DESC') + assert_equal 'bar', r.password + assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/) + end + end + + def test_decrypt_all + Repository.delete_all + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + Repository::Subversion.generate!(:password => 'foo') + Repository::Subversion.generate!(:password => 'bar') + + assert Repository.decrypt_all(:password) + r = Repository.first(:order => 'id DESC') + assert_equal 'bar', r.password + assert_equal 'bar', r.read_attribute(:password) + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/text-base/configuration_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/.svn/text-base/configuration_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,61 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../../test_helper', __FILE__) + +class Redmine::ConfigurationTest < ActiveSupport::TestCase + def setup + @conf = Redmine::Configuration + end + + def test_empty + assert_kind_of Hash, load_conf('empty.yml', 'test') + end + + def test_default + assert_kind_of Hash, load_conf('default.yml', 'test') + assert_equal 'foo', @conf['somesetting'] + end + + def test_no_default + assert_kind_of Hash, load_conf('no_default.yml', 'test') + assert_equal 'foo', @conf['somesetting'] + end + + def test_overrides + assert_kind_of Hash, load_conf('overrides.yml', 'test') + assert_equal 'bar', @conf['somesetting'] + end + + def test_with + load_conf('default.yml', 'test') + assert_equal 'foo', @conf['somesetting'] + @conf.with 'somesetting' => 'bar' do + assert_equal 'bar', @conf['somesetting'] + end + assert_equal 'foo', @conf['somesetting'] + end + + private + + def load_conf(file, env) + @conf.load( + :file => File.join(Rails.root, 'test', 'fixtures', 'configuration', file), + :env => env + ) + end +end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/text-base/i18n_test.rb.svn-base --- a/test/unit/lib/redmine/.svn/text-base/i18n_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/.svn/text-base/i18n_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -58,13 +58,36 @@ end end + def test_time_format + set_language_if_valid 'en' + now = Time.parse('2011-02-20 15:45:22') + with_settings :time_format => '%H:%M' do + with_settings :date_format => '' do + assert_equal '02/20/2011 15:45', format_time(now) + assert_equal '15:45', format_time(now, false) + end + + with_settings :date_format => '%Y-%m-%d' do + assert_equal '2011-02-20 15:45', format_time(now) + assert_equal '15:45', format_time(now, false) + end + end + end + def test_time_format_default set_language_if_valid 'en' - now = Time.now - Setting.date_format = '' - Setting.time_format = '' - assert_equal I18n.l(now), format_time(now) - assert_equal I18n.l(now, :format => :time), format_time(now, false) + now = Time.parse('2011-02-20 15:45:22') + with_settings :time_format => '' do + with_settings :date_format => '' do + assert_equal '02/20/2011 03:45 pm', format_time(now) + assert_equal '03:45 pm', format_time(now, false) + end + + with_settings :date_format => '%Y-%m-%d' do + assert_equal '2011-02-20 03:45 pm', format_time(now) + assert_equal '03:45 pm', format_time(now, false) + end + end end def test_time_format diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/.svn/text-base/unified_diff_test.rb.svn-base --- a/test/unit/lib/redmine/.svn/text-base/unified_diff_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/.svn/text-base/unified_diff_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -60,8 +60,39 @@ assert_equal 1, diff.size end + def test_one_line_new_files + diff = Redmine::UnifiedDiff.new(<<-DIFF +diff -r 000000000000 -r ea98b14f75f0 README1 +--- /dev/null ++++ b/README1 +@@ -0,0 +1,1 @@ ++test1 +diff -r 000000000000 -r ea98b14f75f0 README2 +--- /dev/null ++++ b/README2 +@@ -0,0 +1,1 @@ ++test2 +diff -r 000000000000 -r ea98b14f75f0 README3 +--- /dev/null ++++ b/README3 +@@ -0,0 +1,3 @@ ++test4 ++test5 ++test6 +diff -r 000000000000 -r ea98b14f75f0 README4 +--- /dev/null ++++ b/README4 +@@ -0,0 +1,3 @@ ++test4 ++test5 ++test6 +DIFF + ) + assert_equal 4, diff.size + end + private - + def read_diff_fixture(filename) File.new(File.join(File.dirname(__FILE__), '/../../../fixtures/diffs', filename)).read end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/ciphering_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/ciphering_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,84 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../../test_helper', __FILE__) + +class Redmine::CipheringTest < ActiveSupport::TestCase + + def test_password_should_be_encrypted + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + r = Repository::Subversion.generate!(:password => 'foo') + assert_equal 'foo', r.password + assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/) + end + end + + def test_password_should_be_clear_with_blank_key + Redmine::Configuration.with 'database_cipher_key' => '' do + r = Repository::Subversion.generate!(:password => 'foo') + assert_equal 'foo', r.password + assert_equal 'foo', r.read_attribute(:password) + end + end + + def test_password_should_be_clear_with_nil_key + Redmine::Configuration.with 'database_cipher_key' => nil do + r = Repository::Subversion.generate!(:password => 'foo') + assert_equal 'foo', r.password + assert_equal 'foo', r.read_attribute(:password) + end + end + + def test_unciphered_password_should_be_readable + Redmine::Configuration.with 'database_cipher_key' => nil do + r = Repository::Subversion.generate!(:password => 'clear') + end + + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + r = Repository.first(:order => 'id DESC') + assert_equal 'clear', r.password + end + end + + def test_encrypt_all + Repository.delete_all + Redmine::Configuration.with 'database_cipher_key' => nil do + Repository::Subversion.generate!(:password => 'foo') + Repository::Subversion.generate!(:password => 'bar') + end + + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + assert Repository.encrypt_all(:password) + r = Repository.first(:order => 'id DESC') + assert_equal 'bar', r.password + assert r.read_attribute(:password).match(/\Aaes-256-cbc:.+\Z/) + end + end + + def test_decrypt_all + Repository.delete_all + Redmine::Configuration.with 'database_cipher_key' => 'secret' do + Repository::Subversion.generate!(:password => 'foo') + Repository::Subversion.generate!(:password => 'bar') + + assert Repository.decrypt_all(:password) + r = Repository.first(:order => 'id DESC') + assert_equal 'bar', r.password + assert_equal 'bar', r.read_attribute(:password) + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/configuration_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/configuration_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,61 @@ +# Redmine - project management software +# Copyright (C) 2006-2011 Jean-Philippe Lang +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +require File.expand_path('../../../../test_helper', __FILE__) + +class Redmine::ConfigurationTest < ActiveSupport::TestCase + def setup + @conf = Redmine::Configuration + end + + def test_empty + assert_kind_of Hash, load_conf('empty.yml', 'test') + end + + def test_default + assert_kind_of Hash, load_conf('default.yml', 'test') + assert_equal 'foo', @conf['somesetting'] + end + + def test_no_default + assert_kind_of Hash, load_conf('no_default.yml', 'test') + assert_equal 'foo', @conf['somesetting'] + end + + def test_overrides + assert_kind_of Hash, load_conf('overrides.yml', 'test') + assert_equal 'bar', @conf['somesetting'] + end + + def test_with + load_conf('default.yml', 'test') + assert_equal 'foo', @conf['somesetting'] + @conf.with 'somesetting' => 'bar' do + assert_equal 'bar', @conf['somesetting'] + end + assert_equal 'foo', @conf['somesetting'] + end + + private + + def load_conf(file, env) + @conf.load( + :file => File.join(Rails.root, 'test', 'fixtures', 'configuration', file), + :env => env + ) + end +end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/helpers/.svn/entries --- a/test/unit/lib/redmine/helpers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/helpers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/helpers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 1d6b4373836fef676ab3a28235c140b8 2010-12-29T20:29:42.467534Z 4582 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/i18n_test.rb --- a/test/unit/lib/redmine/i18n_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/i18n_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -58,13 +58,36 @@ end end + def test_time_format + set_language_if_valid 'en' + now = Time.parse('2011-02-20 15:45:22') + with_settings :time_format => '%H:%M' do + with_settings :date_format => '' do + assert_equal '02/20/2011 15:45', format_time(now) + assert_equal '15:45', format_time(now, false) + end + + with_settings :date_format => '%Y-%m-%d' do + assert_equal '2011-02-20 15:45', format_time(now) + assert_equal '15:45', format_time(now, false) + end + end + end + def test_time_format_default set_language_if_valid 'en' - now = Time.now - Setting.date_format = '' - Setting.time_format = '' - assert_equal I18n.l(now), format_time(now) - assert_equal I18n.l(now, :format => :time), format_time(now, false) + now = Time.parse('2011-02-20 15:45:22') + with_settings :time_format => '' do + with_settings :date_format => '' do + assert_equal '02/20/2011 03:45 pm', format_time(now) + assert_equal '03:45 pm', format_time(now, false) + end + + with_settings :date_format => '%Y-%m-%d' do + assert_equal '2011-02-20 03:45 pm', format_time(now) + assert_equal '03:45 pm', format_time(now, false) + end + end end def test_time_format diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/menu_manager/.svn/entries --- a/test/unit/lib/redmine/menu_manager/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/menu_manager/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/menu_manager http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:07.000000Z +2011-03-03T11:05:08.000000Z fdf6a6902bb3de694d7a4fabbdfe2798 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +66,7 @@ -2011-01-13T14:09:07.000000Z +2011-03-03T11:05:08.000000Z fdde38850555e88b18c742d7d15be035 2010-12-12T23:24:34.194336Z 4509 @@ -100,7 +100,7 @@ -2011-01-13T14:09:07.000000Z +2011-03-03T11:05:08.000000Z 18c96ac64de73c38eb9d766226b34ca7 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/.svn/all-wcprops --- a/test/unit/lib/redmine/scm/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 50 -/svn/!svn/ver/4705/trunk/test/unit/lib/redmine/scm +/svn/!svn/ver/4964/trunk/test/unit/lib/redmine/scm END diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/.svn/entries --- a/test/unit/lib/redmine/scm/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/scm http://redmine.rubyforge.org/svn -2011-01-13T12:05:11.734883Z -4705 +2011-02-28T14:12:47.115180Z +4964 tmaruyama diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/all-wcprops --- a/test/unit/lib/redmine/scm/adapters/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,25 +1,31 @@ K 25 svn:wc:ra_dav:version-url V 59 -/svn/!svn/ver/4705/trunk/test/unit/lib/redmine/scm/adapters +/svn/!svn/ver/4964/trunk/test/unit/lib/redmine/scm/adapters END subversion_adapter_test.rb K 25 svn:wc:ra_dav:version-url V 86 -/svn/!svn/ver/4509/trunk/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb +/svn/!svn/ver/4825/trunk/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb +END +bazaar_adapter_test.rb +K 25 +svn:wc:ra_dav:version-url +V 82 +/svn/!svn/ver/4836/trunk/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb END git_adapter_test.rb K 25 svn:wc:ra_dav:version-url V 79 -/svn/!svn/ver/4510/trunk/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb +/svn/!svn/ver/4964/trunk/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb END mercurial_adapter_test.rb K 25 svn:wc:ra_dav:version-url V 85 -/svn/!svn/ver/4705/trunk/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb +/svn/!svn/ver/4875/trunk/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb END filesystem_adapter_test.rb K 25 @@ -27,3 +33,15 @@ V 86 /svn/!svn/ver/4509/trunk/test/unit/lib/redmine/scm/adapters/filesystem_adapter_test.rb END +cvs_adapter_test.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4832/trunk/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb +END +darcs_adapter_test.rb +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/4748/trunk/test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb +END diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/entries --- a/test/unit/lib/redmine/scm/adapters/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/scm/adapters http://redmine.rubyforge.org/svn -2011-01-13T12:05:11.734883Z -4705 +2011-02-28T14:12:47.115180Z +4964 tmaruyama @@ -32,11 +32,11 @@ -2011-01-13T14:08:13.000000Z -765ef194c70144742d0b8bfcb99f6627 -2010-12-12T23:24:34.194336Z -4509 -jbbarth +2011-03-03T11:40:17.000000Z +f0de1284b35555e358dcb810fff1e7e5 +2011-02-15T02:12:39.628343Z +4825 +tmaruyama has-props @@ -58,7 +58,41 @@ -1221 +2221 + +bazaar_adapter_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +2f30e1187cf8e155707fdf3ff7925f55 +2011-02-15T11:05:33.284244Z +4836 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +1755 git_adapter_test.rb file @@ -66,11 +100,11 @@ -2011-01-13T14:08:13.000000Z -2e3d6f99dd454ee396770a707ea169db -2010-12-12T23:24:45.195624Z -4510 -jbbarth +2011-03-03T11:40:17.000000Z +3d2db23c9a95bf5342365aa4580873c7 +2011-02-28T14:12:47.115180Z +4964 +tmaruyama has-props @@ -92,7 +126,7 @@ -3016 +4592 mercurial_adapter_test.rb file @@ -100,10 +134,10 @@ -2011-01-13T14:08:13.000000Z -7af2ec05aa23ebf083f7aa58bca43f95 -2011-01-13T12:05:11.734883Z -4705 +2011-03-03T11:40:17.000000Z +20194ed3de36e9107b3279bb4ae596e9 +2011-02-18T07:15:58.762873Z +4875 tmaruyama has-props @@ -126,7 +160,7 @@ -6096 +10201 filesystem_adapter_test.rb file @@ -134,7 +168,7 @@ -2011-01-13T14:08:13.000000Z +2011-03-03T11:05:08.000000Z 61cf9f9a3628f6766845641d99adaa83 2010-12-12T23:24:34.194336Z 4509 @@ -162,3 +196,71 @@ 1449 +cvs_adapter_test.rb +file + + + + +2011-03-03T11:40:17.000000Z +ddf3ab1a187f29d3e377f684c2c0f18c +2011-02-15T08:04:11.026838Z +4832 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +1844 + +darcs_adapter_test.rb +file + + + + +2011-03-03T11:05:08.000000Z +3a836e9a54b113ed5fe6490ce88ebebe +2011-01-23T04:17:03.473127Z +4748 +tmaruyama + + + + + + + + + + + + + + + + + + + + + +1649 + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/bazaar_adapter_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,54 @@ +require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' + + class BazaarAdapterTest < ActiveSupport::TestCase + + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository' + REPOSITORY_PATH.gsub!(/\/+/, '/') + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::BazaarAdapter.new(REPOSITORY_PATH) + end + + def test_scm_version + to_test = { "Bazaar (bzr) 2.1.2\n" => [2,1,2], + "2.1.1\n1.7\n1.8" => [2,1,1], + "2.0.1\r\n1.8.1\r\n1.9.1" => [2,0,1]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + def test_cat + cat = @adapter.cat('directory/document.txt') + assert cat =~ /Write the contents of a file as of a given revision to standard output/ + end + + def test_annotate + annotate = @adapter.annotate('doc-mkdir.txt') + assert_equal 17, annotate.lines.size + assert_equal '1', annotate.revisions[0].identifier + assert_equal 'jsmith@', annotate.revisions[0].author + assert_equal 'mkdir', annotate.lines[0] + end + + private + + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version + end + else + puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + end + end + +rescue LoadError + class BazaarMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/cvs_adapter_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,59 @@ +require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' + + class CvsAdapterTest < ActiveSupport::TestCase + + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository' + REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? + MODULE_NAME = 'test' + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH) + end + + def test_scm_version + to_test = { "\nConcurrent Versions System (CVS) 1.12.13 (client/server)\n" => [1,12,13], + "\r\n1.12.12\r\n1.12.11" => [1,12,12], + "1.12.11\r\n1.12.10\r\n" => [1,12,11]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + def test_revisions_all + cnt = 0 + @adapter.revisions('', nil, nil, :with_paths => true) do |revision| + cnt += 1 + end + assert_equal 14, cnt + end + + def test_revisions_from_rev3 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + cnt = 0 + @adapter.revisions('', rev3_committed_on, nil, :with_paths => true) do |revision| + cnt += 1 + end + assert_equal 2, cnt + end + + private + + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version + end + else + puts "Cvs test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + end + end + +rescue LoadError + class CvsMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter_test.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/darcs_adapter_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,53 @@ +require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' + + class DarcsAdapterTest < ActiveSupport::TestCase + + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH) + end + + def test_darcsversion + to_test = { "1.0.9 (release)\n" => [1,0,9] , + "2.2.0 (release)\n" => [2,2,0] } + to_test.each do |s, v| + test_darcsversion_for(s, v) + end + end + + def test_revisions + id1 = '20080308225258-98289-761f654d669045eabee90b91b53a21ce5593cadf.gz' + revs = @adapter.revisions('', nil, nil, {:with_path => true}) + assert_equal 6, revs.size + assert_equal id1, revs[5].scmid + paths = revs[5].paths + assert_equal 5, paths.size + assert_equal 'A', paths[0][:action] + assert_equal '/README', paths[0][:path] + assert_equal 'A', paths[1][:action] + assert_equal '/images', paths[1][:path] + end + + private + + def test_darcsversion_for(darcsversion, version) + @adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion) + assert_equal version, @adapter.class.darcs_binary_version + end + + else + puts "Darcs test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + end + end + +rescue LoadError + class DarcsMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/text-base/git_adapter_test.rb.svn-base --- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/git_adapter_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/git_adapter_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -1,71 +1,120 @@ # encoding: utf-8 +# This file includes UTF-8 "Felix Schäfer". +# We need to consider Ruby 1.9 compatibility. + require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' -class GitAdapterTest < ActiveSupport::TestCase - REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' + class GitAdapterTest < ActiveSupport::TestCase + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' - if File.directory?(REPOSITORY_PATH) - def setup - @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH) + FELIX_UTF8 = "Felix Schäfer" + FELIX_HEX = "Felix Sch\xC3\xA4fer" + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH) + end + + def test_scm_version + to_test = { "git version 1.7.3.4\n" => [1,7,3,4], + "1.6.1\n1.7\n1.8" => [1,6,1], + "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + def test_branches + assert_equal @adapter.branches, ['master', 'test-latin-1', 'test_branch'] + end + + def test_getting_all_revisions + assert_equal 16, @adapter.revisions('',nil,nil,:all => true).length + end + + def test_getting_certain_revisions + assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length + end + + def test_getting_revisions_with_spaces_in_filename + assert_equal 1, @adapter.revisions("filemane with spaces.txt", + nil, nil, :all => true).length + end + + def test_getting_revisions_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", + @adapter.revisions(" filename with a leading space.txt ", + nil, nil, :all => true)[0].paths[0][:path] + end + + def test_getting_entries_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", + @adapter.entries('', + '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name + end + + def test_annotate + annotate = @adapter.annotate('sources/watchers_controller.rb') + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 41, annotate.lines.size + assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip + assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", + annotate.revisions[4].identifier + assert_equal "jsmith", annotate.revisions[4].author + end + + def test_annotate_moved_file + annotate = @adapter.annotate('renamed_test.txt') + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 2, annotate.lines.size + end + + def test_last_rev + last_rev = @adapter.lastrev("README", + "4f26664364207fa8b1af9f8722647ab2d4ac5d43") + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier + assert_equal "Adam Soltys ", last_rev.author + assert_equal "2009-06-24 05:27:38".to_time, last_rev.time + end + + def test_last_rev_with_spaces_in_filename + last_rev = @adapter.lastrev("filemane with spaces.txt", + "ed5bb786bbda2dee66a2d50faf51429dbc043a7b") + str_felix_utf8 = FELIX_UTF8 + str_felix_hex = FELIX_HEX + last_rev_author = last_rev.author + if last_rev_author.respond_to?(:force_encoding) + last_rev_author.force_encoding('UTF-8') + end + assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid + assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier + assert_equal "#{str_felix_utf8} ", + last_rev.author + assert_equal "#{str_felix_hex} ", + last_rev.author + assert_equal "2010-09-18 19:59:46".to_time, last_rev.time + end + + private + + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version + end + + else + puts "Git test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end + end - def test_branches - assert_equal @adapter.branches, ['master', 'test_branch'] - end - - def test_getting_all_revisions - assert_equal 15, @adapter.revisions('',nil,nil,:all => true).length - end - - def test_getting_certain_revisions - assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length - end - - def test_getting_revisions_with_spaces_in_filename - assert_equal 1, @adapter.revisions("filemane with spaces.txt", nil, nil, :all => true).length - end - - def test_getting_revisions_with_leading_and_trailing_spaces_in_filename - assert_equal " filename with a leading space.txt ", @adapter.revisions(" filename with a leading space.txt ", nil, nil, :all => true)[0].paths[0][:path] - end - - def test_getting_entries_with_leading_and_trailing_spaces_in_filename - assert_equal " filename with a leading space.txt ", @adapter.entries('', '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name - end - - def test_annotate - annotate = @adapter.annotate('sources/watchers_controller.rb') - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 41, annotate.lines.size - assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip - assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", annotate.revisions[4].identifier - assert_equal "jsmith", annotate.revisions[4].author - end - - def test_annotate_moved_file - annotate = @adapter.annotate('renamed_test.txt') - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 2, annotate.lines.size - end - - def test_last_rev - last_rev = @adapter.lastrev("README", "4f26664364207fa8b1af9f8722647ab2d4ac5d43") - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier - assert_equal "Adam Soltys ", last_rev.author - assert_equal "2009-06-24 05:27:38".to_time, last_rev.time - end - - def test_last_rev_with_spaces_in_filename - last_rev = @adapter.lastrev("filemane with spaces.txt", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b") - assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid - assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier - assert_equal "Felix Schäfer ", last_rev.author - assert_equal "2010-09-18 19:59:46".to_time, last_rev.time - end - else - puts "Git test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end +rescue LoadError + class GitMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end end end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter_test.rb.svn-base --- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/mercurial_adapter_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,7 @@ class MercurialAdapterTest < ActiveSupport::TestCase - TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_DIR + HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION @@ -13,6 +13,7 @@ if File.directory?(REPOSITORY_PATH) def setup @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH) + @diff_c_support = true end def test_hgversion @@ -42,6 +43,31 @@ end end + def test_info + [REPOSITORY_PATH, REPOSITORY_PATH + "/", + REPOSITORY_PATH + "//"].each do |repo| + adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo) + repo_path = adp.info.root_url.gsub(/\\/, "/") + assert_equal REPOSITORY_PATH, repo_path + assert_equal '16', adp.info.lastrev.revision + assert_equal '4cddb4e45f52',adp.info.lastrev.scmid + end + end + + def test_revisions + revisions = @adapter.revisions(nil, 2, 4) + assert_equal 3, revisions.size + assert_equal '2', revisions[0].revision + assert_equal '400bb8672109', revisions[0].scmid + assert_equal '4', revisions[2].revision + assert_equal 'def6d2f1254a', revisions[2].scmid + + revisions = @adapter.revisions(nil, 2, 4, {:limit => 2}) + assert_equal 2, revisions.size + assert_equal '2', revisions[0].revision + assert_equal '400bb8672109', revisions[0].scmid + end + def test_diff if @adapter.class.client_version_above?([1, 2]) assert_nil @adapter.diff(nil, '100000') @@ -49,7 +75,7 @@ assert_nil @adapter.diff(nil, '100000', '200000') [2, '400bb8672109', '400', 400].each do |r1| diff1 = @adapter.diff(nil, r1) - if @adapter.class.client_version_above?([1, 2]) + if @diff_c_support assert_equal 28, diff1.size buf = diff1[24].gsub(/\r\n|\r|\n/, "") assert_equal "+ return true unless klass.respond_to?('watched_by')", buf @@ -69,6 +95,17 @@ end end + def test_diff_made_by_revision + if @diff_c_support + [16, '16', '4cddb4e45f52'].each do |r1| + diff1 = @adapter.diff(nil, r1) + assert_equal 5, diff1.size + buf = diff1[4].gsub(/\r\n|\r|\n/, "") + assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf + end + end + end + def test_cat [2, '400bb8672109', '400', 400].each do |r| buf = @adapter.cat('sources/welcome_controller.rb', r) @@ -93,9 +130,12 @@ end end - # TODO filesize etc. def test_entries assert_nil @adapter.entries(nil, '100000') + + assert_equal 1, @adapter.entries("sources", 3).size + assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size + [2, '400bb8672109', '400', 400].each do |r| entries1 = @adapter.entries(nil, r) assert entries1 @@ -103,9 +143,15 @@ assert_equal 'sources', entries1[1].name assert_equal 'sources', entries1[1].path assert_equal 'dir', entries1[1].kind - assert_equal 'README', entries1[2].name - assert_equal 'README', entries1[2].path - assert_equal 'file', entries1[2].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 27, readme.size + assert_equal '1', readme.lastrev.revision + assert_equal '9d5b5b004199', readme.lastrev.identifier + # 2007-12-14 10:24:01 +0100 + assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time entries2 = @adapter.entries('sources', r) assert entries2 @@ -119,6 +165,48 @@ end end + def test_entries_tag + entries1 = @adapter.entries(nil, 'tag_test.00') + assert entries1 + assert_equal 3, entries1.size + assert_equal 'sources', entries1[1].name + assert_equal 'sources', entries1[1].path + assert_equal 'dir', entries1[1].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 21, readme.size + assert_equal '0', readme.lastrev.revision + assert_equal '0885933ad4f6', readme.lastrev.identifier + # 2007-12-14 10:22:52 +0100 + assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time + end + + def test_entries_branch + entries1 = @adapter.entries(nil, 'test-branch-00') + assert entries1 + assert_equal 5, entries1.size + assert_equal 'sql_escape', entries1[2].name + assert_equal 'sql_escape', entries1[2].path + assert_equal 'dir', entries1[2].kind + readme = entries1[4] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 365, readme.size + assert_equal '8', readme.lastrev.revision + assert_equal 'c51f5bb613cd', readme.lastrev.identifier + # 2001-02-01 00:00:00 -0900 + assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time + end + + def test_locate_on_outdated_repository + assert_equal 1, @adapter.entries("images", 0).size + assert_equal 2, @adapter.entries("images").size + assert_equal 2, @adapter.entries("images", 2).size + end + def test_access_by_nodeid path = 'sources/welcome_controller.rb' assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109') @@ -130,6 +218,28 @@ assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400') end + def test_tags + assert_equal ['tag_test.00', 'tag-init-revision'], @adapter.tags + end + + def test_tagmap + tm = { 'tag_test.00' => '6987191f453a', + 'tag-init-revision' => '0885933ad4f6' } + assert_equal tm, @adapter.tagmap + end + + def test_branches + assert_equal ['default', 'branch (1)[2]&,%.-3_4', 'test-branch-00'], + @adapter.branches + end + + def test_branchmap + bm = { 'default' => '4cddb4e45f52', + 'branch (1)[2]&,%.-3_4' => '933ca60293d7', + 'test-branch-00' => '3a330eb32958' } + assert_equal bm, @adapter.branchmap + end + private def test_hgversion_for(hgversion, version) @@ -138,7 +248,7 @@ end def test_template_path_for(version, template) - assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", + assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", @adapter.class.template_path_for(version) assert File.exist?(@adapter.class.template_path_for(version)) end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter_test.rb.svn-base --- a/test/unit/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter_test.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/.svn/text-base/subversion_adapter_test.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -17,15 +17,47 @@ require File.expand_path('../../../../../../test_helper', __FILE__) -class SubversionAdapterTest < ActiveSupport::TestCase +begin + require 'mocha' + + class SubversionAdapterTest < ActiveSupport::TestCase - if repository_configured?('subversion') - def test_client_version - v = Redmine::Scm::Adapters::SubversionAdapter.client_version - assert v.is_a?(Array) + if repository_configured?('subversion') + def setup + repo_path = "file://#{self.class.repository_path('subversion')}" + @adapter = Redmine::Scm::Adapters::SubversionAdapter.new(repo_path) + end + + def test_client_version + v = Redmine::Scm::Adapters::SubversionAdapter.client_version + assert v.is_a?(Array) + end + + def test_scm_version + to_test = { "svn, version 1.6.13 (r1002816)\n" => [1,6,13], + "svn, versione 1.6.13 (r1002816)\n" => [1,6,13], + "1.6.1\n1.7\n1.8" => [1,6,1], + "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + private + + def test_scm_version_for(scm_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_version) + assert_equal version, @adapter.class.svn_binary_version + end + + else + puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end - else - puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + end + +rescue LoadError + class SubversionMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end end end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/scm/adapters/bazaar_adapter_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,54 @@ +require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' + + class BazaarAdapterTest < ActiveSupport::TestCase + + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository' + REPOSITORY_PATH.gsub!(/\/+/, '/') + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::BazaarAdapter.new(REPOSITORY_PATH) + end + + def test_scm_version + to_test = { "Bazaar (bzr) 2.1.2\n" => [2,1,2], + "2.1.1\n1.7\n1.8" => [2,1,1], + "2.0.1\r\n1.8.1\r\n1.9.1" => [2,0,1]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + def test_cat + cat = @adapter.cat('directory/document.txt') + assert cat =~ /Write the contents of a file as of a given revision to standard output/ + end + + def test_annotate + annotate = @adapter.annotate('doc-mkdir.txt') + assert_equal 17, annotate.lines.size + assert_equal '1', annotate.revisions[0].identifier + assert_equal 'jsmith@', annotate.revisions[0].author + assert_equal 'mkdir', annotate.lines[0] + end + + private + + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version + end + else + puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + end + end + +rescue LoadError + class BazaarMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/scm/adapters/cvs_adapter_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,59 @@ +require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' + + class CvsAdapterTest < ActiveSupport::TestCase + + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository' + REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? + MODULE_NAME = 'test' + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::CvsAdapter.new(MODULE_NAME, REPOSITORY_PATH) + end + + def test_scm_version + to_test = { "\nConcurrent Versions System (CVS) 1.12.13 (client/server)\n" => [1,12,13], + "\r\n1.12.12\r\n1.12.11" => [1,12,12], + "1.12.11\r\n1.12.10\r\n" => [1,12,11]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + def test_revisions_all + cnt = 0 + @adapter.revisions('', nil, nil, :with_paths => true) do |revision| + cnt += 1 + end + assert_equal 14, cnt + end + + def test_revisions_from_rev3 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + cnt = 0 + @adapter.revisions('', rev3_committed_on, nil, :with_paths => true) do |revision| + cnt += 1 + end + assert_equal 2, cnt + end + + private + + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version + end + else + puts "Cvs test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + end + end + +rescue LoadError + class CvsMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/unit/lib/redmine/scm/adapters/darcs_adapter_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,53 @@ +require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' + + class DarcsAdapterTest < ActiveSupport::TestCase + + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::DarcsAdapter.new(REPOSITORY_PATH) + end + + def test_darcsversion + to_test = { "1.0.9 (release)\n" => [1,0,9] , + "2.2.0 (release)\n" => [2,2,0] } + to_test.each do |s, v| + test_darcsversion_for(s, v) + end + end + + def test_revisions + id1 = '20080308225258-98289-761f654d669045eabee90b91b53a21ce5593cadf.gz' + revs = @adapter.revisions('', nil, nil, {:with_path => true}) + assert_equal 6, revs.size + assert_equal id1, revs[5].scmid + paths = revs[5].paths + assert_equal 5, paths.size + assert_equal 'A', paths[0][:action] + assert_equal '/README', paths[0][:path] + assert_equal 'A', paths[1][:action] + assert_equal '/images', paths[1][:path] + end + + private + + def test_darcsversion_for(darcsversion, version) + @adapter.class.expects(:darcs_binary_version_from_command_line).returns(darcsversion) + assert_equal version, @adapter.class.darcs_binary_version + end + + else + puts "Darcs test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end + end + end + +rescue LoadError + class DarcsMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end + end +end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/git_adapter_test.rb --- a/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/git_adapter_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -1,71 +1,120 @@ # encoding: utf-8 +# This file includes UTF-8 "Felix Schäfer". +# We need to consider Ruby 1.9 compatibility. + require File.expand_path('../../../../../../test_helper', __FILE__) +begin + require 'mocha' -class GitAdapterTest < ActiveSupport::TestCase - REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' + class GitAdapterTest < ActiveSupport::TestCase + REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' - if File.directory?(REPOSITORY_PATH) - def setup - @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH) + FELIX_UTF8 = "Felix Schäfer" + FELIX_HEX = "Felix Sch\xC3\xA4fer" + + if File.directory?(REPOSITORY_PATH) + def setup + @adapter = Redmine::Scm::Adapters::GitAdapter.new(REPOSITORY_PATH) + end + + def test_scm_version + to_test = { "git version 1.7.3.4\n" => [1,7,3,4], + "1.6.1\n1.7\n1.8" => [1,6,1], + "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + def test_branches + assert_equal @adapter.branches, ['master', 'test-latin-1', 'test_branch'] + end + + def test_getting_all_revisions + assert_equal 16, @adapter.revisions('',nil,nil,:all => true).length + end + + def test_getting_certain_revisions + assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length + end + + def test_getting_revisions_with_spaces_in_filename + assert_equal 1, @adapter.revisions("filemane with spaces.txt", + nil, nil, :all => true).length + end + + def test_getting_revisions_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", + @adapter.revisions(" filename with a leading space.txt ", + nil, nil, :all => true)[0].paths[0][:path] + end + + def test_getting_entries_with_leading_and_trailing_spaces_in_filename + assert_equal " filename with a leading space.txt ", + @adapter.entries('', + '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name + end + + def test_annotate + annotate = @adapter.annotate('sources/watchers_controller.rb') + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 41, annotate.lines.size + assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip + assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", + annotate.revisions[4].identifier + assert_equal "jsmith", annotate.revisions[4].author + end + + def test_annotate_moved_file + annotate = @adapter.annotate('renamed_test.txt') + assert_kind_of Redmine::Scm::Adapters::Annotate, annotate + assert_equal 2, annotate.lines.size + end + + def test_last_rev + last_rev = @adapter.lastrev("README", + "4f26664364207fa8b1af9f8722647ab2d4ac5d43") + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid + assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier + assert_equal "Adam Soltys ", last_rev.author + assert_equal "2009-06-24 05:27:38".to_time, last_rev.time + end + + def test_last_rev_with_spaces_in_filename + last_rev = @adapter.lastrev("filemane with spaces.txt", + "ed5bb786bbda2dee66a2d50faf51429dbc043a7b") + str_felix_utf8 = FELIX_UTF8 + str_felix_hex = FELIX_HEX + last_rev_author = last_rev.author + if last_rev_author.respond_to?(:force_encoding) + last_rev_author.force_encoding('UTF-8') + end + assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid + assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier + assert_equal "#{str_felix_utf8} ", + last_rev.author + assert_equal "#{str_felix_hex} ", + last_rev.author + assert_equal "2010-09-18 19:59:46".to_time, last_rev.time + end + + private + + def test_scm_version_for(scm_command_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version) + assert_equal version, @adapter.class.scm_command_version + end + + else + puts "Git test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end + end - def test_branches - assert_equal @adapter.branches, ['master', 'test_branch'] - end - - def test_getting_all_revisions - assert_equal 15, @adapter.revisions('',nil,nil,:all => true).length - end - - def test_getting_certain_revisions - assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length - end - - def test_getting_revisions_with_spaces_in_filename - assert_equal 1, @adapter.revisions("filemane with spaces.txt", nil, nil, :all => true).length - end - - def test_getting_revisions_with_leading_and_trailing_spaces_in_filename - assert_equal " filename with a leading space.txt ", @adapter.revisions(" filename with a leading space.txt ", nil, nil, :all => true)[0].paths[0][:path] - end - - def test_getting_entries_with_leading_and_trailing_spaces_in_filename - assert_equal " filename with a leading space.txt ", @adapter.entries('', '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name - end - - def test_annotate - annotate = @adapter.annotate('sources/watchers_controller.rb') - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 41, annotate.lines.size - assert_equal "# This program is free software; you can redistribute it and/or", annotate.lines[4].strip - assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", annotate.revisions[4].identifier - assert_equal "jsmith", annotate.revisions[4].author - end - - def test_annotate_moved_file - annotate = @adapter.annotate('renamed_test.txt') - assert_kind_of Redmine::Scm::Adapters::Annotate, annotate - assert_equal 2, annotate.lines.size - end - - def test_last_rev - last_rev = @adapter.lastrev("README", "4f26664364207fa8b1af9f8722647ab2d4ac5d43") - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid - assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier - assert_equal "Adam Soltys ", last_rev.author - assert_equal "2009-06-24 05:27:38".to_time, last_rev.time - end - - def test_last_rev_with_spaces_in_filename - last_rev = @adapter.lastrev("filemane with spaces.txt", "ed5bb786bbda2dee66a2d50faf51429dbc043a7b") - assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid - assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier - assert_equal "Felix Schäfer ", last_rev.author - assert_equal "2010-09-18 19:59:46".to_time, last_rev.time - end - else - puts "Git test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end +rescue LoadError + class GitMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end end end + diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb --- a/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/mercurial_adapter_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -4,7 +4,7 @@ class MercurialAdapterTest < ActiveSupport::TestCase - TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_DIR + HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION @@ -13,6 +13,7 @@ if File.directory?(REPOSITORY_PATH) def setup @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH) + @diff_c_support = true end def test_hgversion @@ -42,6 +43,31 @@ end end + def test_info + [REPOSITORY_PATH, REPOSITORY_PATH + "/", + REPOSITORY_PATH + "//"].each do |repo| + adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo) + repo_path = adp.info.root_url.gsub(/\\/, "/") + assert_equal REPOSITORY_PATH, repo_path + assert_equal '16', adp.info.lastrev.revision + assert_equal '4cddb4e45f52',adp.info.lastrev.scmid + end + end + + def test_revisions + revisions = @adapter.revisions(nil, 2, 4) + assert_equal 3, revisions.size + assert_equal '2', revisions[0].revision + assert_equal '400bb8672109', revisions[0].scmid + assert_equal '4', revisions[2].revision + assert_equal 'def6d2f1254a', revisions[2].scmid + + revisions = @adapter.revisions(nil, 2, 4, {:limit => 2}) + assert_equal 2, revisions.size + assert_equal '2', revisions[0].revision + assert_equal '400bb8672109', revisions[0].scmid + end + def test_diff if @adapter.class.client_version_above?([1, 2]) assert_nil @adapter.diff(nil, '100000') @@ -49,7 +75,7 @@ assert_nil @adapter.diff(nil, '100000', '200000') [2, '400bb8672109', '400', 400].each do |r1| diff1 = @adapter.diff(nil, r1) - if @adapter.class.client_version_above?([1, 2]) + if @diff_c_support assert_equal 28, diff1.size buf = diff1[24].gsub(/\r\n|\r|\n/, "") assert_equal "+ return true unless klass.respond_to?('watched_by')", buf @@ -69,6 +95,17 @@ end end + def test_diff_made_by_revision + if @diff_c_support + [16, '16', '4cddb4e45f52'].each do |r1| + diff1 = @adapter.diff(nil, r1) + assert_equal 5, diff1.size + buf = diff1[4].gsub(/\r\n|\r|\n/, "") + assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf + end + end + end + def test_cat [2, '400bb8672109', '400', 400].each do |r| buf = @adapter.cat('sources/welcome_controller.rb', r) @@ -93,9 +130,12 @@ end end - # TODO filesize etc. def test_entries assert_nil @adapter.entries(nil, '100000') + + assert_equal 1, @adapter.entries("sources", 3).size + assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size + [2, '400bb8672109', '400', 400].each do |r| entries1 = @adapter.entries(nil, r) assert entries1 @@ -103,9 +143,15 @@ assert_equal 'sources', entries1[1].name assert_equal 'sources', entries1[1].path assert_equal 'dir', entries1[1].kind - assert_equal 'README', entries1[2].name - assert_equal 'README', entries1[2].path - assert_equal 'file', entries1[2].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 27, readme.size + assert_equal '1', readme.lastrev.revision + assert_equal '9d5b5b004199', readme.lastrev.identifier + # 2007-12-14 10:24:01 +0100 + assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time entries2 = @adapter.entries('sources', r) assert entries2 @@ -119,6 +165,48 @@ end end + def test_entries_tag + entries1 = @adapter.entries(nil, 'tag_test.00') + assert entries1 + assert_equal 3, entries1.size + assert_equal 'sources', entries1[1].name + assert_equal 'sources', entries1[1].path + assert_equal 'dir', entries1[1].kind + readme = entries1[2] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 21, readme.size + assert_equal '0', readme.lastrev.revision + assert_equal '0885933ad4f6', readme.lastrev.identifier + # 2007-12-14 10:22:52 +0100 + assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time + end + + def test_entries_branch + entries1 = @adapter.entries(nil, 'test-branch-00') + assert entries1 + assert_equal 5, entries1.size + assert_equal 'sql_escape', entries1[2].name + assert_equal 'sql_escape', entries1[2].path + assert_equal 'dir', entries1[2].kind + readme = entries1[4] + assert_equal 'README', readme.name + assert_equal 'README', readme.path + assert_equal 'file', readme.kind + assert_equal 365, readme.size + assert_equal '8', readme.lastrev.revision + assert_equal 'c51f5bb613cd', readme.lastrev.identifier + # 2001-02-01 00:00:00 -0900 + assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time + end + + def test_locate_on_outdated_repository + assert_equal 1, @adapter.entries("images", 0).size + assert_equal 2, @adapter.entries("images").size + assert_equal 2, @adapter.entries("images", 2).size + end + def test_access_by_nodeid path = 'sources/welcome_controller.rb' assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109') @@ -130,6 +218,28 @@ assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400') end + def test_tags + assert_equal ['tag_test.00', 'tag-init-revision'], @adapter.tags + end + + def test_tagmap + tm = { 'tag_test.00' => '6987191f453a', + 'tag-init-revision' => '0885933ad4f6' } + assert_equal tm, @adapter.tagmap + end + + def test_branches + assert_equal ['default', 'branch (1)[2]&,%.-3_4', 'test-branch-00'], + @adapter.branches + end + + def test_branchmap + bm = { 'default' => '4cddb4e45f52', + 'branch (1)[2]&,%.-3_4' => '933ca60293d7', + 'test-branch-00' => '3a330eb32958' } + assert_equal bm, @adapter.branchmap + end + private def test_hgversion_for(hgversion, version) @@ -138,7 +248,7 @@ end def test_template_path_for(version, template) - assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", + assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}", @adapter.class.template_path_for(version) assert File.exist?(@adapter.class.template_path_for(version)) end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb --- a/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/scm/adapters/subversion_adapter_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -17,15 +17,47 @@ require File.expand_path('../../../../../../test_helper', __FILE__) -class SubversionAdapterTest < ActiveSupport::TestCase +begin + require 'mocha' + + class SubversionAdapterTest < ActiveSupport::TestCase - if repository_configured?('subversion') - def test_client_version - v = Redmine::Scm::Adapters::SubversionAdapter.client_version - assert v.is_a?(Array) + if repository_configured?('subversion') + def setup + repo_path = "file://#{self.class.repository_path('subversion')}" + @adapter = Redmine::Scm::Adapters::SubversionAdapter.new(repo_path) + end + + def test_client_version + v = Redmine::Scm::Adapters::SubversionAdapter.client_version + assert v.is_a?(Array) + end + + def test_scm_version + to_test = { "svn, version 1.6.13 (r1002816)\n" => [1,6,13], + "svn, versione 1.6.13 (r1002816)\n" => [1,6,13], + "1.6.1\n1.7\n1.8" => [1,6,1], + "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]} + to_test.each do |s, v| + test_scm_version_for(s, v) + end + end + + private + + def test_scm_version_for(scm_version, version) + @adapter.class.expects(:scm_version_from_command_line).returns(scm_version) + assert_equal version, @adapter.class.svn_binary_version + end + + else + puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" + def test_fake; assert true end end - else - puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" - def test_fake; assert true end + end + +rescue LoadError + class SubversionMochaFake < ActiveSupport::TestCase + def test_fake; assert(false, "Requires mocha to run those tests") end end end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/unified_diff_test.rb --- a/test/unit/lib/redmine/unified_diff_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/unified_diff_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -60,8 +60,39 @@ assert_equal 1, diff.size end + def test_one_line_new_files + diff = Redmine::UnifiedDiff.new(<<-DIFF +diff -r 000000000000 -r ea98b14f75f0 README1 +--- /dev/null ++++ b/README1 +@@ -0,0 +1,1 @@ ++test1 +diff -r 000000000000 -r ea98b14f75f0 README2 +--- /dev/null ++++ b/README2 +@@ -0,0 +1,1 @@ ++test2 +diff -r 000000000000 -r ea98b14f75f0 README3 +--- /dev/null ++++ b/README3 +@@ -0,0 +1,3 @@ ++test4 ++test5 ++test6 +diff -r 000000000000 -r ea98b14f75f0 README4 +--- /dev/null ++++ b/README4 +@@ -0,0 +1,3 @@ ++test4 ++test5 ++test6 +DIFF + ) + assert_equal 4, diff.size + end + private - + def read_diff_fixture(filename) File.new(File.join(File.dirname(__FILE__), '/../../../fixtures/diffs', filename)).read end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/views/.svn/entries --- a/test/unit/lib/redmine/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/views/builders/.svn/entries --- a/test/unit/lib/redmine/views/builders/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/views/builders/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/views/builders http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z 0eb241e5c91856b3340cf4d848c39119 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +66,7 @@ -2011-01-13T14:09:08.000000Z +2011-03-03T11:05:08.000000Z aed14e6bc3e5bb08380fe6954d273a6c 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/lib/redmine/wiki_formatting/.svn/entries --- a/test/unit/lib/redmine/wiki_formatting/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/lib/redmine/wiki_formatting/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/test/unit/lib/redmine/wiki_formatting http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2011-01-13T14:09:07.000000Z +2011-03-03T11:05:08.000000Z 5acd95498f8f2e52e8ad2b70961a21ad 2010-12-12T23:24:34.194336Z 4509 @@ -66,7 +66,7 @@ -2011-01-13T14:09:07.000000Z +2011-03-03T11:05:08.000000Z 41000dcb1febd4ce59305bb36a369cf0 2010-12-12T23:24:34.194336Z 4509 diff -r fca2657f4aa5 -r eeebe205a056 test/unit/query_test.rb --- a/test/unit/query_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/query_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -484,7 +484,6 @@ # Users not in a group assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IS NULL OR #{Issue.table_name}.assigned_to_id NOT IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" assert_find_issues_with_query_is_successful @query - end should "search assigned to any group member (all)" do @@ -494,7 +493,22 @@ # Only users in a group assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@user_in_group.id}','#{@second_user_in_group.id}','#{@user_in_group2.id}')" assert_find_issues_with_query_is_successful @query - + end + + should "return an empty set with = empty group" do + @empty_group = Group.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '=', [@empty_group.id.to_s]) + + assert_equal [], find_issues_with_query(@query) + end + + should "return issues with ! empty group" do + @empty_group = Group.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '!', [@empty_group.id.to_s]) + + assert_find_issues_with_query_is_successful @query end end @@ -540,6 +554,22 @@ assert_query_statement_includes @query, "#{Issue.table_name}.assigned_to_id IN ('#{@manager.id}','#{@developer.id}','#{@boss.id}')" assert_find_issues_with_query_is_successful @query end + + should "return an empty set with empty role" do + @empty_role = Role.generate! + @query = Query.new(:name => '_') + @query.add_filter('assigned_to_role', '=', [@empty_role.id.to_s]) + + assert_equal [], find_issues_with_query(@query) + end + + should "return issues with ! empty role" do + @empty_role = Role.generate! + @query = Query.new(:name => '_') + @query.add_filter('member_of_group', '!', [@empty_role.id.to_s]) + + assert_find_issues_with_query_is_successful @query + end end end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_bazaar_test.rb --- a/test/unit/repository_bazaar_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_bazaar_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,16 +19,19 @@ class RepositoryBazaarTest < ActiveSupport::TestCase fixtures :projects - + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/bazaar_repository' REPOSITORY_PATH.gsub!(/\/+/, '/') def setup - @project = Project.find(1) - assert @repository = Repository::Bazaar.create(:project => @project, :url => "file:///#{REPOSITORY_PATH}") + @project = Project.find(3) + @repository = Repository::Bazaar.create( + :project => @project, :url => "file:///#{REPOSITORY_PATH}", + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @@ -38,7 +41,7 @@ assert_equal 9, @repository.changes.count assert_equal 'Initial import', @repository.changesets.find_by_revision('1').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 5 @@ -49,7 +52,7 @@ @repository.fetch_changesets assert_equal 4, @repository.changesets.count end - + def test_entries entries = @repository.entries assert_equal 2, entries.size @@ -68,19 +71,6 @@ assert_equal 'file', entries.last.kind assert_equal 'edit.png', entries.last.name end - - def test_cat - cat = @repository.scm.cat('directory/document.txt') - assert cat =~ /Write the contents of a file as of a given revision to standard output/ - end - - def test_annotate - annotate = @repository.scm.annotate('doc-mkdir.txt') - assert_equal 17, annotate.lines.size - assert_equal '1', annotate.revisions[0].identifier - assert_equal 'jsmith@', annotate.revisions[0].author - assert_equal 'mkdir', annotate.lines[0] - end else puts "Bazaar test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_cvs_test.rb --- a/test/unit/repository_cvs_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_cvs_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -27,34 +27,64 @@ MODULE_NAME = 'test' def setup - @project = Project.find(1) - assert @repository = Repository::Cvs.create(:project => @project, - :root_url => REPOSITORY_PATH, - :url => MODULE_NAME) + @project = Project.find(3) + @repository = Repository::Cvs.create(:project => @project, + :root_url => REPOSITORY_PATH, + :url => MODULE_NAME, + :log_encoding => 'UTF-8') + assert @repository end if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch + assert_equal 0, @repository.changesets.count @repository.fetch_changesets @repository.reload assert_equal 5, @repository.changesets.count assert_equal 14, @repository.changes.count assert_not_nil @repository.changesets.find_by_comments('Two files changed') + + r2 = @repository.changesets.find_by_revision('2') + assert_equal 'v1-20071213-162510', r2.scmid end def test_fetch_changesets_incremental + assert_equal 0, @repository.changesets.count @repository.fetch_changesets - # Remove the 3 latest changesets - @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) + # Remove changesets with revision > 3 + @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 3} @repository.reload - assert_equal 2, @repository.changesets.count - + assert_equal 3, @repository.changesets.count + assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision) + + rev3_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal '3', rev3_commit.revision + # 2007-12-14 01:27:22 +0900 + rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22) + assert_equal 'HEAD-20071213-162722', rev3_commit.scmid + assert_equal rev3_committed_on, rev3_commit.committed_on + latest_rev = @repository.latest_changeset + assert_equal rev3_committed_on, latest_rev.committed_on + @repository.fetch_changesets + @repository.reload assert_equal 5, @repository.changesets.count + + assert_equal %w|5 4 3 2 1|, @repository.changesets.collect(&:revision) + rev5_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal 'HEAD-20071213-163001', rev5_commit.scmid + # 2007-12-14 01:30:01 +0900 + rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1) + assert_equal rev5_committed_on, rev5_commit.committed_on end def test_deleted_files_should_not_be_listed + assert_equal 0, @repository.changesets.count + @repository.fetch_changesets + @repository.reload + assert_equal 5, @repository.changesets.count + entries = @repository.entries('sources') assert entries.detect {|e| e.name == 'watchers_controller.rb'} assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_darcs_test.rb --- a/test/unit/repository_darcs_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_darcs_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -19,25 +19,28 @@ class RepositoryDarcsTest < ActiveSupport::TestCase fixtures :projects - + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/darcs_repository' - + def setup - @project = Project.find(1) - assert @repository = Repository::Darcs.create(:project => @project, :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Darcs.create( + :project => @project, :url => REPOSITORY_PATH, + :log_encoding => 'UTF-8') + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - + assert_equal 6, @repository.changesets.count assert_equal 13, @repository.changes.count assert_equal "Initial commit.", @repository.changesets.find_by_revision('1').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 3 @@ -48,8 +51,10 @@ @repository.fetch_changesets assert_equal 6, @repository.changesets.count end - + def test_deleted_files_should_not_be_listed + @repository.fetch_changesets + @repository.reload entries = @repository.entries('sources') assert entries.detect {|e| e.name == 'watchers_controller.rb'} assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'} diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_git_test.rb --- a/test/unit/repository_git_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_git_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -18,25 +18,29 @@ require File.expand_path('../../test_helper', __FILE__) class RepositoryGitTest < ActiveSupport::TestCase - fixtures :projects, :repositories, :enabled_modules, :users, :roles - + fixtures :projects, :repositories, :enabled_modules, :users, :roles + # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository' REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin? - + + FELIX_HEX = "Felix Sch\xC3\xA4fer" + def setup - @project = Project.find(1) - assert @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH) + Setting.commit_logs_encoding = 'UTF-8' + @project = Project.find(3) + @repository = Repository::Git.create(:project => @project, :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - - assert_equal 15, @repository.changesets.count - assert_equal 24, @repository.changes.count - + + assert_equal 16, @repository.changesets.count + assert_equal 25, @repository.changes.count + commit = @repository.changesets.find(:first, :order => 'committed_on ASC') assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments assert_equal "jsmith ", commit.committer @@ -57,10 +61,20 @@ # Remove the 3 latest changesets @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 3).each(&:destroy) @repository.reload - assert_equal 12, @repository.changesets.count - + cs1 = @repository.changesets + assert_equal 13, cs1.count + + rev_a_commit = @repository.changesets.find(:first, :order => 'committed_on DESC') + assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.revision + # Mon Jul 5 22:34:26 2010 +0200 + rev_a_committed_on = Time.gm(2010, 7, 5, 20, 34, 26) + assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.scmid + assert_equal rev_a_committed_on, rev_a_commit.committed_on + latest_rev = @repository.latest_changeset + assert_equal rev_a_committed_on, latest_rev.committed_on + @repository.fetch_changesets - assert_equal 15, @repository.changesets.count + assert_equal 16, @repository.changesets.count end def test_find_changeset_by_name @@ -103,6 +117,17 @@ assert c.event_title.include?('abc7234c:') assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev] end + + def test_log_utf8 + @repository.fetch_changesets + @repository.reload + str_felix_hex = FELIX_HEX + if str_felix_hex.respond_to?(:force_encoding) + str_felix_hex.force_encoding('UTF-8') + end + c = @repository.changesets.find_by_revision('ed5bb786bbda2dee66a2d50faf51429dbc043a7b') + assert_equal "#{str_felix_hex} ", c.committer + end else puts "Git test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_mercurial_test.rb --- a/test/unit/repository_mercurial_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_mercurial_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -22,23 +22,23 @@ # No '..' in the repository path REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository' - + def setup - @project = Project.find(1) - assert @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) + @project = Project.find(3) + @repository = Repository::Mercurial.create(:project => @project, :url => REPOSITORY_PATH) + assert @repository end - + if File.directory?(REPOSITORY_PATH) def test_fetch_changesets_from_scratch @repository.fetch_changesets @repository.reload - assert_equal 17, @repository.changesets.count assert_equal 25, @repository.changes.count assert_equal "Initial import.\nThe repository contains 3 files.", @repository.changesets.find_by_revision('0').comments end - + def test_fetch_changesets_incremental @repository.fetch_changesets # Remove changesets with revision > 2 @@ -49,19 +49,6 @@ @repository.fetch_changesets assert_equal 17, @repository.changesets.count end - - def test_entries - assert_equal 2, @repository.entries("sources", 2).size - assert_equal 2, @repository.entries("sources", '400bb8672109').size - assert_equal 1, @repository.entries("sources", 3).size - assert_equal 1, @repository.entries("sources", 'b3a615152df8').size - end - - def test_locate_on_outdated_repository - assert_equal 1, @repository.entries("images", 0).size - assert_equal 2, @repository.entries("images").size - assert_equal 2, @repository.entries("images", 2).size - end def test_isodatesec # Template keyword 'isodatesec' supported in Mercurial 1.0 and higher @@ -171,6 +158,43 @@ assert c.event_title.include?('123:abc400bb8672:') assert_equal 'abc400bb8672', c.event_url[:rev] end + + def test_latest_changesets_with_limit + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('', nil, 2) + assert_equal @repository.latest_changesets('', nil)[0, 2], changesets + end + + def test_latest_changesets_with_filepath + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('README', nil) + assert_equal %w|8 6 1 0|, changesets.collect(&:revision) + + path = 'sql_escape/percent%dir/percent%file1.txt' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|11 10 9|, changesets.collect(&:revision) + + path = 'sql_escape/underscore_dir/understrike_file.txt' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|12 9|, changesets.collect(&:revision) + end + + def test_latest_changesets_with_dirpath + @repository.fetch_changesets + @repository.reload + changesets = @repository.latest_changesets('images', nil) + assert_equal %w|1 0|, changesets.collect(&:revision) + + path = 'sql_escape/percent%dir' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|13 11 10 9|, changesets.collect(&:revision) + + path = 'sql_escape/underscore_dir' + changesets = @repository.latest_changesets(path, nil) + assert_equal %w|13 12 9|, changesets.collect(&:revision) + end else puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_subversion_test.rb --- a/test/unit/repository_subversion_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_subversion_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -21,8 +21,9 @@ fixtures :projects, :repositories, :enabled_modules, :users, :roles def setup - @project = Project.find(1) - assert @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}") + @project = Project.find(3) + assert @repository = Repository::Subversion.create(:project => @project, + :url => "file://#{self.class.repository_path('subversion')}") end if repository_configured?('subversion') @@ -74,7 +75,7 @@ end def test_directory_listing_with_square_brackets_in_base - @project = Project.find(1) + @project = Project.find(3) @repository = Repository::Subversion.create(:project => @project, :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]") @repository.fetch_changesets @@ -136,6 +137,56 @@ assert c.event_title.include?('123456789:') assert_equal '123456789', c.event_url[:rev] end + + def test_log_encoding_ignore_setting + with_settings :commit_logs_encoding => 'windows-1252' do + s1 = "\xC2\x80" + s2 = "\xc3\x82\xc2\x80" + if s1.respond_to?(:force_encoding) + s3 = s1 + s4 = s2 + s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') + s3.force_encoding('ISO-8859-1') + s4.force_encoding('UTF-8') + assert_equal s3.encode('UTF-8'), s4 + end + c = Changeset.new(:repository => @repository, + :comments=>s2, + :revision=>'123', + :committed_on => Time.now) + assert c.save + assert_equal s2, c.comments + end + end + + def test_previous + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('3') + assert_equal @repository.find_changeset_by_name('2'), changeset.previous + end + + def test_previous_nil + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('1') + assert_nil changeset.previous + end + + def test_next + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('2') + assert_equal @repository.find_changeset_by_name('3'), changeset.next + end + + def test_next_nil + @repository.fetch_changesets + @repository.reload + changeset = @repository.find_changeset_by_name('11') + assert_nil changeset.next + end else puts "Subversion test repository NOT FOUND. Skipping unit tests !!!" def test_fake; assert true end diff -r fca2657f4aa5 -r eeebe205a056 test/unit/repository_test.rb --- a/test/unit/repository_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/repository_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -125,16 +125,19 @@ assert_not_equal( comment, changeset.comments ) assert_equal( 'This is a loooooooooooooooooooooooooooong comment', changeset.comments ) end - + def test_for_urls_strip - repository = Repository::Cvs.create(:project => Project.find(4), :url => ' :pserver:login:password@host:/path/to/the/repository', - :root_url => 'foo ') + repository = Repository::Cvs.create( + :project => Project.find(4), + :url => ' :pserver:login:password@host:/path/to/the/repository', + :root_url => 'foo ', + :log_encoding => 'UTF-8') assert repository.save repository.reload assert_equal ':pserver:login:password@host:/path/to/the/repository', repository.url assert_equal 'foo', repository.root_url end - + def test_manual_user_mapping assert_no_difference "Changeset.count(:conditions => 'user_id <> 2')" do c = Changeset.create!(:repository => @repository, :committer => 'foo', :committed_on => Time.now, :revision => 100, :comments => 'Committed by foo.') diff -r fca2657f4aa5 -r eeebe205a056 test/unit/user_test.rb --- a/test/unit/user_test.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/test/unit/user_test.rb Thu Mar 03 12:02:03 2011 +0000 @@ -361,7 +361,6 @@ user = User.try_to_login("admin", "hello") assert_kind_of User, user assert_equal "admin", user.login - assert_equal User.hash_password("hello"), user.hashed_password end def test_name_format @@ -383,6 +382,22 @@ assert_equal nil, user end + context ".try_to_login" do + context "with good credentials" do + should "return the user" do + user = User.try_to_login("admin", "admin") + assert_kind_of User, user + assert_equal "admin", user.login + end + end + + context "with wrong credentials" do + should "return nil" do + assert_nil User.try_to_login("admin", "foo") + end + end + end + if ldap_configured? context "#try_to_login using LDAP" do context "with failed connection to the LDAP server" do @@ -672,6 +687,7 @@ should "be false for a user with :only_my_events and isn't an author, creator, or assignee" do @user = User.generate_with_protected!(:mail_notification => 'only_my_events') + Member.create!(:user => @user, :project => @project, :role_ids => [1]) assert ! @user.notify_about?(@issue) end @@ -704,12 +720,45 @@ @assignee.update_attribute(:mail_notification, 'only_owner') assert ! @assignee.notify_about?(@issue) end + + should "be true for a user with :selected and is the author" do + @author.update_attribute(:mail_notification, 'selected') + assert @author.notify_about?(@issue) + end + + should "be true for a user with :selected and is the assignee" do + @assignee.update_attribute(:mail_notification, 'selected') + assert @assignee.notify_about?(@issue) + end + + should "be false for a user with :selected and is not the author or assignee" do + @user = User.generate_with_protected!(:mail_notification => 'selected') + Member.create!(:user => @user, :project => @project, :role_ids => [1]) + assert ! @user.notify_about?(@issue) + end end context "other events" do should 'be added and tested' end end + + def test_salt_unsalted_passwords + # Restore a user with an unsalted password + user = User.find(1) + user.salt = nil + user.hashed_password = User.hash_password("unsalted") + user.save! + + User.salt_unsalted_passwords! + + user.reload + # Salt added + assert !user.salt.blank? + # Password still valid + assert user.check_password?("unsalted") + assert_equal user, User.try_to_login(user.login, "unsalted") + end if Object.const_defined?(:OpenID) diff -r fca2657f4aa5 -r eeebe205a056 tmp/.svn/entries --- a/tmp/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/tmp/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/tmp +4993 +http://redmine.rubyforge.org/svn/trunk/tmp http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 tmp/cache/.svn/entries --- a/tmp/cache/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/tmp/cache/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/tmp/cache +4993 +http://redmine.rubyforge.org/svn/trunk/tmp/cache http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 tmp/sessions/.svn/entries --- a/tmp/sessions/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/tmp/sessions/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/tmp/sessions +4993 +http://redmine.rubyforge.org/svn/trunk/tmp/sessions http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 tmp/sockets/.svn/entries --- a/tmp/sockets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/tmp/sockets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/tmp/sockets +4993 +http://redmine.rubyforge.org/svn/trunk/tmp/sockets http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 tmp/test/.svn/entries --- a/tmp/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/tmp/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/tmp/test +4993 +http://redmine.rubyforge.org/svn/trunk/tmp/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-06-08T02:07:30.275769Z 2784 diff -r fca2657f4aa5 -r eeebe205a056 vendor/.svn/all-wcprops --- a/vendor/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 31 -/svn/!svn/ver/4602/trunk/vendor +/svn/!svn/ver/4891/trunk/vendor END diff -r fca2657f4aa5 -r eeebe205a056 vendor/.svn/entries --- a/vendor/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/vendor http://redmine.rubyforge.org/svn -2011-01-01T11:45:12.617336Z -4602 +2011-02-20T14:26:23.957459Z +4891 jplang has-props diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 36 +/svn/!svn/ver/4739/trunk/vendor/gems +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/.svn/entries --- a/vendor/gems/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/gems/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,15 +1,15 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/gems +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems http://redmine.rubyforge.org/svn -2009-11-25T05:36:44.792571Z -3090 -edavis10 +2011-01-22T13:18:01.557255Z +4739 +jplang @@ -26,6 +26,9 @@ e93f8b46-1217-0410-a6f0-8f06a7374b81 +coderay-0.9.7 +dir + rubytree-0.5.2 dir diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.specification --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.specification Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,155 @@ +--- !ruby/object:Gem::Specification +name: coderay +version: !ruby/object:Gem::Version + hash: 53 + prerelease: false + segments: + - 0 + - 9 + - 7 + version: 0.9.7 +platform: ruby +authors: +- murphy +autorequire: +bindir: bin +cert_chain: [] + +date: 2011-01-15 00:00:00 +01:00 +default_executable: +dependencies: [] + +description: | + Fast and easy syntax highlighting for selected languages, written in Ruby. + Comes with RedCloth integration and LOC counter. + +email: murphy@rubychan.de +executables: +- coderay +- coderay_stylesheet +extensions: [] + +extra_rdoc_files: +- lib/README +- FOLDERS +files: +- ./lib/coderay/duo.rb +- ./lib/coderay/encoder.rb +- ./lib/coderay/encoders/_map.rb +- ./lib/coderay/encoders/comment_filter.rb +- ./lib/coderay/encoders/count.rb +- ./lib/coderay/encoders/debug.rb +- ./lib/coderay/encoders/div.rb +- ./lib/coderay/encoders/filter.rb +- ./lib/coderay/encoders/html/css.rb +- ./lib/coderay/encoders/html/numerization.rb +- ./lib/coderay/encoders/html/output.rb +- ./lib/coderay/encoders/html.rb +- ./lib/coderay/encoders/json.rb +- ./lib/coderay/encoders/lines_of_code.rb +- ./lib/coderay/encoders/null.rb +- ./lib/coderay/encoders/page.rb +- ./lib/coderay/encoders/span.rb +- ./lib/coderay/encoders/statistic.rb +- ./lib/coderay/encoders/term.rb +- ./lib/coderay/encoders/text.rb +- ./lib/coderay/encoders/token_class_filter.rb +- ./lib/coderay/encoders/xml.rb +- ./lib/coderay/encoders/yaml.rb +- ./lib/coderay/for_redcloth.rb +- ./lib/coderay/helpers/file_type.rb +- ./lib/coderay/helpers/gzip_simple.rb +- ./lib/coderay/helpers/plugin.rb +- ./lib/coderay/helpers/word_list.rb +- ./lib/coderay/scanner.rb +- ./lib/coderay/scanners/_map.rb +- ./lib/coderay/scanners/c.rb +- ./lib/coderay/scanners/cpp.rb +- ./lib/coderay/scanners/css.rb +- ./lib/coderay/scanners/debug.rb +- ./lib/coderay/scanners/delphi.rb +- ./lib/coderay/scanners/diff.rb +- ./lib/coderay/scanners/groovy.rb +- ./lib/coderay/scanners/html.rb +- ./lib/coderay/scanners/java/builtin_types.rb +- ./lib/coderay/scanners/java.rb +- ./lib/coderay/scanners/java_script-0.9.6.rb +- ./lib/coderay/scanners/java_script.rb +- ./lib/coderay/scanners/json.rb +- ./lib/coderay/scanners/nitro_xhtml.rb +- ./lib/coderay/scanners/php.rb +- ./lib/coderay/scanners/plaintext.rb +- ./lib/coderay/scanners/python.rb +- ./lib/coderay/scanners/rhtml.rb +- ./lib/coderay/scanners/ruby/patterns.rb +- ./lib/coderay/scanners/ruby.rb +- ./lib/coderay/scanners/scheme.rb +- ./lib/coderay/scanners/sql.rb +- ./lib/coderay/scanners/xml.rb +- ./lib/coderay/scanners/yaml.rb +- ./lib/coderay/style.rb +- ./lib/coderay/styles/_map.rb +- ./lib/coderay/styles/cycnus.rb +- ./lib/coderay/styles/murphy.rb +- ./lib/coderay/token_classes.rb +- ./lib/coderay/tokens.rb +- ./lib/coderay.rb +- ./Rakefile +- ./test/functional/basic.rb +- ./test/functional/basic.rbc +- ./test/functional/for_redcloth.rb +- ./test/functional/for_redcloth.rbc +- ./test/functional/load_plugin_scanner.rb +- ./test/functional/load_plugin_scanner.rbc +- ./test/functional/suite.rb +- ./test/functional/suite.rbc +- ./test/functional/vhdl.rb +- ./test/functional/vhdl.rbc +- ./test/functional/word_list.rb +- ./test/functional/word_list.rbc +- ./lib/README +- ./LICENSE +- lib/README +- FOLDERS +- bin/coderay +- bin/coderay_stylesheet +has_rdoc: true +homepage: http://coderay.rubychan.de +licenses: [] + +post_install_message: +rdoc_options: +- -SNw2 +- -mlib/README +- -t CodeRay Documentation +require_paths: +- lib +required_ruby_version: !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 51 + segments: + - 1 + - 8 + - 2 + version: 1.8.2 +required_rubygems_version: !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" +requirements: [] + +rubyforge_project: coderay +rubygems_version: 1.3.7 +signing_key: +specification_version: 3 +summary: Fast syntax highlighting for selected languages. +test_files: +- ./test/functional/suite.rb diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 50 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7 +END +LICENSE +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/LICENSE +END +Rakefile +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/Rakefile +END +.specification +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/.specification +END +FOLDERS +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/FOLDERS +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,173 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7 +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +test +dir + +LICENSE +file + + + + +2011-03-03T11:05:13.000000Z +071d975e884a936b40eab0b865ea4da1 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +26534 + +Rakefile +file + + + + +2011-03-03T11:05:13.000000Z +18ea6850e44c2180fe121b906b0ce27a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +771 + +lib +dir + +bin +dir + +.specification +file + + + + +2011-03-03T11:05:13.000000Z +a3bbd9c0481e784e38ef28afc8aa3242 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4138 + +FOLDERS +file + + + + +2011-03-03T11:05:13.000000Z +f11c3e40d9b35de767926748e7278f47 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1133 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.svn/text-base/.specification.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.svn/text-base/.specification.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,155 @@ +--- !ruby/object:Gem::Specification +name: coderay +version: !ruby/object:Gem::Version + hash: 53 + prerelease: false + segments: + - 0 + - 9 + - 7 + version: 0.9.7 +platform: ruby +authors: +- murphy +autorequire: +bindir: bin +cert_chain: [] + +date: 2011-01-15 00:00:00 +01:00 +default_executable: +dependencies: [] + +description: | + Fast and easy syntax highlighting for selected languages, written in Ruby. + Comes with RedCloth integration and LOC counter. + +email: murphy@rubychan.de +executables: +- coderay +- coderay_stylesheet +extensions: [] + +extra_rdoc_files: +- lib/README +- FOLDERS +files: +- ./lib/coderay/duo.rb +- ./lib/coderay/encoder.rb +- ./lib/coderay/encoders/_map.rb +- ./lib/coderay/encoders/comment_filter.rb +- ./lib/coderay/encoders/count.rb +- ./lib/coderay/encoders/debug.rb +- ./lib/coderay/encoders/div.rb +- ./lib/coderay/encoders/filter.rb +- ./lib/coderay/encoders/html/css.rb +- ./lib/coderay/encoders/html/numerization.rb +- ./lib/coderay/encoders/html/output.rb +- ./lib/coderay/encoders/html.rb +- ./lib/coderay/encoders/json.rb +- ./lib/coderay/encoders/lines_of_code.rb +- ./lib/coderay/encoders/null.rb +- ./lib/coderay/encoders/page.rb +- ./lib/coderay/encoders/span.rb +- ./lib/coderay/encoders/statistic.rb +- ./lib/coderay/encoders/term.rb +- ./lib/coderay/encoders/text.rb +- ./lib/coderay/encoders/token_class_filter.rb +- ./lib/coderay/encoders/xml.rb +- ./lib/coderay/encoders/yaml.rb +- ./lib/coderay/for_redcloth.rb +- ./lib/coderay/helpers/file_type.rb +- ./lib/coderay/helpers/gzip_simple.rb +- ./lib/coderay/helpers/plugin.rb +- ./lib/coderay/helpers/word_list.rb +- ./lib/coderay/scanner.rb +- ./lib/coderay/scanners/_map.rb +- ./lib/coderay/scanners/c.rb +- ./lib/coderay/scanners/cpp.rb +- ./lib/coderay/scanners/css.rb +- ./lib/coderay/scanners/debug.rb +- ./lib/coderay/scanners/delphi.rb +- ./lib/coderay/scanners/diff.rb +- ./lib/coderay/scanners/groovy.rb +- ./lib/coderay/scanners/html.rb +- ./lib/coderay/scanners/java/builtin_types.rb +- ./lib/coderay/scanners/java.rb +- ./lib/coderay/scanners/java_script-0.9.6.rb +- ./lib/coderay/scanners/java_script.rb +- ./lib/coderay/scanners/json.rb +- ./lib/coderay/scanners/nitro_xhtml.rb +- ./lib/coderay/scanners/php.rb +- ./lib/coderay/scanners/plaintext.rb +- ./lib/coderay/scanners/python.rb +- ./lib/coderay/scanners/rhtml.rb +- ./lib/coderay/scanners/ruby/patterns.rb +- ./lib/coderay/scanners/ruby.rb +- ./lib/coderay/scanners/scheme.rb +- ./lib/coderay/scanners/sql.rb +- ./lib/coderay/scanners/xml.rb +- ./lib/coderay/scanners/yaml.rb +- ./lib/coderay/style.rb +- ./lib/coderay/styles/_map.rb +- ./lib/coderay/styles/cycnus.rb +- ./lib/coderay/styles/murphy.rb +- ./lib/coderay/token_classes.rb +- ./lib/coderay/tokens.rb +- ./lib/coderay.rb +- ./Rakefile +- ./test/functional/basic.rb +- ./test/functional/basic.rbc +- ./test/functional/for_redcloth.rb +- ./test/functional/for_redcloth.rbc +- ./test/functional/load_plugin_scanner.rb +- ./test/functional/load_plugin_scanner.rbc +- ./test/functional/suite.rb +- ./test/functional/suite.rbc +- ./test/functional/vhdl.rb +- ./test/functional/vhdl.rbc +- ./test/functional/word_list.rb +- ./test/functional/word_list.rbc +- ./lib/README +- ./LICENSE +- lib/README +- FOLDERS +- bin/coderay +- bin/coderay_stylesheet +has_rdoc: true +homepage: http://coderay.rubychan.de +licenses: [] + +post_install_message: +rdoc_options: +- -SNw2 +- -mlib/README +- -t CodeRay Documentation +require_paths: +- lib +required_ruby_version: !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 51 + segments: + - 1 + - 8 + - 2 + version: 1.8.2 +required_rubygems_version: !ruby/object:Gem::Requirement + none: false + requirements: + - - ">=" + - !ruby/object:Gem::Version + hash: 3 + segments: + - 0 + version: "0" +requirements: [] + +rubyforge_project: coderay +rubygems_version: 1.3.7 +signing_key: +specification_version: 3 +summary: Fast syntax highlighting for selected languages. +test_files: +- ./test/functional/suite.rb diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.svn/text-base/FOLDERS.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.svn/text-base/FOLDERS.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,53 @@ += CodeRay - Trunk folder structure + +== bench - Benchmarking system + +All benchmarking stuff goes here. + +Test inputs are stored in files named example.. +Test outputs go to bench/test.. + +Run bench/bench.rb to get a usage description. + +Run rake bench to perform an example benchmark. + + +== bin - Scripts + +Executional files for CodeRay. + + +== demo - Demos and functional tests + +Demonstrational scripts to show of CodeRay's features. + +Run them as functional tests with rake test:demos. + + +== etc - Lots of stuff + +Some addidtional files for CodeRay, mainly graphics and Vim scripts. + + +== gem_server - Gem output folder + +For rake gem. + + +== lib - CodeRay library code + +This is the base directory for the CodeRay library. + + +== rake_helpers - Rake helper libraries + +Some files to enhance Rake, including the Autumnal Rdoc template and some scripts. + + +== test - Tests + +Tests for the scanners. + +Each language has its own subfolder and sub-suite. + +Run with rake test. diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.svn/text-base/LICENSE.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.svn/text-base/LICENSE.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/.svn/text-base/Rakefile.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/.svn/text-base/Rakefile.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +require 'rake/rdoctask' + +ROOT = '.' +LIB_ROOT = File.join ROOT, 'lib' +EXTRA_RDOC_FILES = %w(lib/README FOLDERS) + +task :default => :test + +if File.directory? 'rake_tasks' + + # load rake tasks from subfolder + for task_file in Dir['rake_tasks/*.rake'].sort + load task_file + end + +else + + # fallback tasks when rake_tasks folder is not present + desc 'Run CodeRay tests (basic)' + task :test do + ruby './test/functional/suite.rb' + ruby './test/functional/for_redcloth.rb' + end + + desc 'Generate documentation for CodeRay' + Rake::RDocTask.new :doc do |rd| + rd.title = 'CodeRay Documentation' + rd.main = 'lib/README' + rd.rdoc_files.add Dir['lib'] + rd.rdoc_files.add 'lib/README' + rd.rdoc_files.add 'FOLDERS' + rd.rdoc_dir = 'doc' + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/FOLDERS --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/FOLDERS Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,53 @@ += CodeRay - Trunk folder structure + +== bench - Benchmarking system + +All benchmarking stuff goes here. + +Test inputs are stored in files named example.. +Test outputs go to bench/test.. + +Run bench/bench.rb to get a usage description. + +Run rake bench to perform an example benchmark. + + +== bin - Scripts + +Executional files for CodeRay. + + +== demo - Demos and functional tests + +Demonstrational scripts to show of CodeRay's features. + +Run them as functional tests with rake test:demos. + + +== etc - Lots of stuff + +Some addidtional files for CodeRay, mainly graphics and Vim scripts. + + +== gem_server - Gem output folder + +For rake gem. + + +== lib - CodeRay library code + +This is the base directory for the CodeRay library. + + +== rake_helpers - Rake helper libraries + +Some files to enhance Rake, including the Autumnal Rdoc template and some scripts. + + +== test - Tests + +Tests for the scanners. + +Each language has its own subfolder and sub-suite. + +Run with rake test. diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/LICENSE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/LICENSE Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/Rakefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/Rakefile Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +require 'rake/rdoctask' + +ROOT = '.' +LIB_ROOT = File.join ROOT, 'lib' +EXTRA_RDOC_FILES = %w(lib/README FOLDERS) + +task :default => :test + +if File.directory? 'rake_tasks' + + # load rake tasks from subfolder + for task_file in Dir['rake_tasks/*.rake'].sort + load task_file + end + +else + + # fallback tasks when rake_tasks folder is not present + desc 'Run CodeRay tests (basic)' + task :test do + ruby './test/functional/suite.rb' + ruby './test/functional/for_redcloth.rb' + end + + desc 'Generate documentation for CodeRay' + Rake::RDocTask.new :doc do |rd| + rd.title = 'CodeRay Documentation' + rd.main = 'lib/README' + rd.rdoc_files.add Dir['lib'] + rd.rdoc_files.add 'lib/README' + rd.rdoc_files.add 'FOLDERS' + rd.rdoc_dir = 'doc' + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/bin/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/bin/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/bin +END +coderay_stylesheet +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/bin/coderay_stylesheet +END +coderay +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/bin/coderay +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/bin/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/bin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,96 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/bin +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +coderay_stylesheet +file + + + + +2011-03-03T11:05:13.000000Z +b20628204e37bb6fd444b1f1992d2c1a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +93 + +coderay +file + + + + +2011-03-03T11:05:13.000000Z +db4ee9313184e2922a606b55ff92f4f7 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1975 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/bin/.svn/text-base/coderay.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/bin/.svn/text-base/coderay.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,86 @@ +#!/usr/bin/env ruby +# CodeRay Executable +# +# Version: 0.2 +# Author: murphy + +require 'coderay' + +if ARGV.empty? + $stderr.puts <<-USAGE +CodeRay #{CodeRay::VERSION} (http://coderay.rubychan.de) + +Usage: + coderay file [-] + coderay - [-] [< file] [> output] + +Defaults: + lang: based on file extension + format: ANSI colorized output for terminal, HTML page for files + +Examples: + coderay foo.rb # colorized output to terminal, based on file extension + coderay foo.rb -loc # print LOC count, based on file extension and format + coderay foo.rb > foo.html # HTML page output to file, based on extension + coderay -ruby < foo.rb # colorized output to terminal, based on lang + coderay -ruby -loc < foo.rb # print LOC count, based on lang + coderay -ruby -page foo.rb # HTML page output to terminal, based on lang and format + coderay -ruby -page foo.rb > foo.html # HTML page output to file, based on lang and format + USAGE +end + +first, second = ARGV + +def read + file = ARGV.grep(/^(?!-)/).last + if file + if File.exist?(file) + File.read file + else + $stderr.puts "No such file: #{file}" + end + else + $stdin.read + end +end + +if first + if first[/-(\w+)/] == first + lang = $1 + input = read + tokens = :scan + else + file = first + unless File.exist? file + $stderr.puts "No such file: #{file}" + exit 2 + end + tokens = CodeRay.scan_file file + end +else + $stderr.puts 'No lang/file given.' + exit 1 +end + +if second + if second[/-(\w+)/] == second + format = $1.to_sym + else + raise 'invalid format (must be -xxx)' + end +else + if $stdout.tty? + format = :term + else + $stderr.puts 'No format given; setting to default (HTML Page).' + format = :page + end +end + +if tokens == :scan + output = CodeRay::Duo[lang => format].highlight input +else + output = tokens.encode format +end +out = $stdout +out.puts output diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/bin/.svn/text-base/coderay_stylesheet.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/bin/.svn/text-base/coderay_stylesheet.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require 'coderay' + +puts CodeRay::Encoders[:html]::CSS.new.stylesheet diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/bin/coderay --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/bin/coderay Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,86 @@ +#!/usr/bin/env ruby +# CodeRay Executable +# +# Version: 0.2 +# Author: murphy + +require 'coderay' + +if ARGV.empty? + $stderr.puts <<-USAGE +CodeRay #{CodeRay::VERSION} (http://coderay.rubychan.de) + +Usage: + coderay file [-] + coderay - [-] [< file] [> output] + +Defaults: + lang: based on file extension + format: ANSI colorized output for terminal, HTML page for files + +Examples: + coderay foo.rb # colorized output to terminal, based on file extension + coderay foo.rb -loc # print LOC count, based on file extension and format + coderay foo.rb > foo.html # HTML page output to file, based on extension + coderay -ruby < foo.rb # colorized output to terminal, based on lang + coderay -ruby -loc < foo.rb # print LOC count, based on lang + coderay -ruby -page foo.rb # HTML page output to terminal, based on lang and format + coderay -ruby -page foo.rb > foo.html # HTML page output to file, based on lang and format + USAGE +end + +first, second = ARGV + +def read + file = ARGV.grep(/^(?!-)/).last + if file + if File.exist?(file) + File.read file + else + $stderr.puts "No such file: #{file}" + end + else + $stdin.read + end +end + +if first + if first[/-(\w+)/] == first + lang = $1 + input = read + tokens = :scan + else + file = first + unless File.exist? file + $stderr.puts "No such file: #{file}" + exit 2 + end + tokens = CodeRay.scan_file file + end +else + $stderr.puts 'No lang/file given.' + exit 1 +end + +if second + if second[/-(\w+)/] == second + format = $1.to_sym + else + raise 'invalid format (must be -xxx)' + end +else + if $stdout.tty? + format = :term + else + $stderr.puts 'No format given; setting to default (HTML Page).' + format = :page + end +end + +if tokens == :scan + output = CodeRay::Duo[lang => format].highlight input +else + output = tokens.encode format +end +out = $stdout +out.puts output diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/bin/coderay_stylesheet --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/bin/coderay_stylesheet Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require 'coderay' + +puts CodeRay::Encoders[:html]::CSS.new.stylesheet diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib +END +coderay.rb +K 25 +svn:wc:ra_dav:version-url +V 65 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay.rb +END +README +K 25 +svn:wc:ra_dav:version-url +V 61 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/README +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,99 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +coderay +dir + +coderay.rb +file + + + + +2011-03-03T11:05:13.000000Z +30374cf2e229cc996eaba18502af97c5 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +10050 + +README +file + + + + +2011-03-03T11:05:13.000000Z +046bf12ae0bcbb0b55fc3c4c993680d2 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5065 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/.svn/text-base/README.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/.svn/text-base/README.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,134 @@ += CodeRay + +[- Tired of blue'n'gray? Try the original version of this documentation on +coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] + +== About +CodeRay is a Ruby library for syntax highlighting. + +Syntax highlighting means: You put your code in, and you get it back colored; +Keywords, strings, floats, comments - all in different colors. +And with line numbers. + +*Syntax* *Highlighting*... +* makes code easier to read and maintain +* lets you detect syntax errors faster +* helps you to understand the syntax of a language +* looks nice +* is what everybody should have on their website +* solves all your problems and makes the girls run after you + +Version: 0.9.7 +Author:: murphy (Kornelius Kalnbach) +Contact:: murphy rubychan de +Website:: coderay.rubychan.de[http://coderay.rubychan.de] +License:: GNU LGPL; see LICENSE file in the main directory. + +== Installation + +You need RubyGems[http://rubyforge.org/frs/?group_id=126]. + + % gem install coderay + + +=== Dependencies + +CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+. + + +== Example Usage +(Forgive me, but this is not highlighted.) + + require 'coderay' + + tokens = CodeRay.scan "puts 'Hello, world!'", :ruby + page = tokens.html :line_numbers => :inline, :wrap => :page + puts page + + +== Documentation + +See CodeRay. + +Please report errors in this documentation to . + + +== Credits + +=== Special Thanks to + +* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder + project and the input/output plugin system. + CodeRay would not exist without him. +* bovi (Daniel Bovensiepen) for helping me out on various occasions. + +=== Thanks to + +* Caleb Clausen for writing RubyLexer (see + http://rubyforge.org/projects/rubylexer) and lots of very interesting mail + traffic +* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. + You guys rock! +* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) + I got some useful ideas from it. +* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me + coding CodeRay, but also gave me a wonderful target to reach for the Ruby + scanner. +* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de +* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de +* Dethix from ruby-mine.de +* zickzackw +* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de +* Andreas Schwarz for finding out that CaseIgnoringWordList was not case + ignoring! Such things really make you write tests. +* closure for the first version of the Scheme scanner. +* Stefan Walk for the first version of the JavaScript and PHP scanners. +* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. +* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. +* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. +* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. +* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. +* 0xf30fc7 for the FileType patch concerning Delphi file extensions. +* The folks at redmine.org - thank you for using and fixing CodeRay! +* Keith Pitt for his SQL scanners +* Rob Aldred for the terminal encoder +* Trans for pointing out $DEBUG dependencies +* Flameeyes for finding that Term::ANSIColor was obsolete +* Etienne Massip for reporting a serious bug in JavaScript scanner +* matz and all Ruby gods and gurus +* The inventors of: the computer, the internet, the true color display, HTML & + CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, + manga, coke and green ice tea. + +Where would we be without all those people? + +=== Created using + +* Ruby[http://ruby-lang.org/] +* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); + Triella, born Rico (my new MacBook); as well as + Seras and Hikari (my PCs) +* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], + VIM[http://vim.org] and TextMate[http://macromates.com] +* Subversion[http://subversion.tigris.org/] +* Redmine[http://redmine.org/] +* Firefox[http://www.mozilla.org/products/firefox/], + Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and + Thunderbird[http://www.mozilla.org/products/thunderbird/] +* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] +* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via + XAMPP[http://www.apachefriends.org/en/xampp.html] +* RDoc (though I'm quite unsatisfied with it) +* Microsoft Windows (yes, I confess!) and MacOS X +* GNUWin32, MinGW and some other tools to make the shell under windows a bit + less useless +* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] +* PLEAC[http://pleac.sourceforge.net/] code examples + +=== Free + +* As you can see, CodeRay was created under heavy use of *free* software. +* So CodeRay is also *free*. +* If you use CodeRay to create software, think about making this software + *free*, too. +* Thanks :) diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/.svn/text-base/coderay.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/.svn/text-base/coderay.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,322 @@ +# = CodeRay Library +# +# CodeRay is a Ruby library for syntax highlighting. +# +# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete, +# fast and efficient. +# +# See README. +# +# It consists mainly of +# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost +# * the scanners in CodeRay::Scanners +# * the encoders in CodeRay::Encoders +# +# Here's a fancy graphic to light up this gray docu: +# +# http://cycnus.de/raindark/coderay/scheme.png +# +# == Documentation +# +# See CodeRay, Encoders, Scanners, Tokens. +# +# == Usage +# +# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with +# -rubygems option if required. +# +# === Highlight Ruby code in a string as html +# +# require 'coderay' +# print CodeRay.scan('puts "Hello, world!"', :ruby).html +# +# # prints something like this: +# puts "Hello, world!" +# +# +# === Highlight C code from a file in a html div +# +# require 'coderay' +# print CodeRay.scan(File.read('ruby.h'), :c).div +# print CodeRay.scan_file('ruby.h').html.div +# +# You can include this div in your page. The used CSS styles can be printed with +# +# % coderay_stylesheet +# +# === Highlight without typing too much +# +# If you are one of the hasty (or lazy, or extremely curious) people, just run this file: +# +# % ruby -rubygems /path/to/coderay/coderay.rb > example.html +# +# and look at the file it created in your browser. +# +# = CodeRay Module +# +# The CodeRay module provides convenience methods for the engine. +# +# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are +# simply lower-case symbols, like :python or :html. +# * All methods take an optional hash as last parameter, +options+, that is send to +# the Encoder / Scanner. +# * Input and language are always sorted in this order: +code+, +lang+. +# (This is in alphabetical order, if you need a mnemonic ;) +# +# You should be able to highlight everything you want just using these methods; +# so there is no need to dive into CodeRay's deep class hierarchy. +# +# The examples in the demo directory demonstrate common cases using this interface. +# +# = Basic Access Ways +# +# Read this to get a general view what CodeRay provides. +# +# == Scanning +# +# Scanning means analysing an input string, splitting it up into Tokens. +# Each Token knows about what type it is: string, comment, class name, etc. +# +# Each +lang+ (language) has its own Scanner; for example, :ruby code is +# handled by CodeRay::Scanners::Ruby. +# +# CodeRay.scan:: Scan a string in a given language into Tokens. +# This is the most common method to use. +# CodeRay.scan_file:: Scan a file and guess the language using FileType. +# +# The Tokens object you get from these methods can encode itself; see Tokens. +# +# == Encoding +# +# Encoding means compiling Tokens into an output. This can be colored HTML or +# LaTeX, a textual statistic or just the number of non-whitespace tokens. +# +# Each Encoder provides output in a specific +format+, so you select Encoders via +# formats like :html or :statistic. +# +# CodeRay.encode:: Scan and encode a string in a given language. +# CodeRay.encode_tokens:: Encode the given tokens. +# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it. +# +# == Streaming +# +# Streaming saves RAM by running Scanner and Encoder in some sort of +# pipe mode; see TokenStream. +# +# CodeRay.scan_stream:: Scan in stream mode. +# +# == All-in-One Encoding +# +# CodeRay.encode:: Highlight a string with a given input and output format. +# +# == Instanciating +# +# You can use an Encoder instance to highlight multiple inputs. This way, the setup +# for this Encoder must only be done once. +# +# CodeRay.encoder:: Create an Encoder instance with format and options. +# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code. +# +# To make use of CodeRay.scanner, use CodeRay::Scanner::code=. +# +# The scanning methods provide more flexibility; we recommend to use these. +# +# == Reusing Scanners and Encoders +# +# If you want to re-use scanners and encoders (because that is faster), see +# CodeRay::Duo for the most convenient (and recommended) interface. +module CodeRay + + $CODERAY_DEBUG ||= false + + # Version: Major.Minor.Teeny[.Revision] + # Major: 0 for pre-stable, 1 for stable + # Minor: feature milestone + # Teeny: development state, 0 for pre-release + # Revision: Subversion Revision number (generated on rake gem:make) + VERSION = '0.9.7' + + require 'coderay/tokens' + require 'coderay/token_classes' + require 'coderay/scanner' + require 'coderay/encoder' + require 'coderay/duo' + require 'coderay/style' + + + class << self + + # Scans the given +code+ (a String) with the Scanner for +lang+. + # + # This is a simple way to use CodeRay. Example: + # require 'coderay' + # page = CodeRay.scan("puts 'Hello, world!'", :ruby).html + # + # See also demo/demo_simple. + def scan code, lang, options = {}, &block + scanner = Scanners[lang].new code, options, &block + scanner.tokenize + end + + # Scans +filename+ (a path to a code file) with the Scanner for +lang+. + # + # If +lang+ is :auto or omitted, the CodeRay::FileType module is used to + # determine it. If it cannot find out what type it is, it uses + # CodeRay::Scanners::Plaintext. + # + # Calls CodeRay.scan. + # + # Example: + # require 'coderay' + # page = CodeRay.scan_file('some_c_code.c').html + def scan_file filename, lang = :auto, options = {}, &block + file = IO.read filename + if lang == :auto + require 'coderay/helpers/file_type' + lang = FileType.fetch filename, :plaintext, true + end + scan file, lang, options = {}, &block + end + + # Scan the +code+ (a string) with the scanner for +lang+. + # + # Calls scan. + # + # See CodeRay.scan. + def scan_stream code, lang, options = {}, &block + options[:stream] = true + scan code, lang, options, &block + end + + # Encode a string in Streaming mode. + # + # This starts scanning +code+ with the the Scanner for +lang+ + # while encodes the output with the Encoder for +format+. + # +options+ will be passed to the Encoder. + # + # See CodeRay::Encoder.encode_stream + def encode_stream code, lang, format, options = {} + encoder(format, options).encode_stream code, lang, options + end + + # Encode a string. + # + # This scans +code+ with the the Scanner for +lang+ and then + # encodes it with the Encoder for +format+. + # +options+ will be passed to the Encoder. + # + # See CodeRay::Encoder.encode + def encode code, lang, format, options = {} + encoder(format, options).encode code, lang, options + end + + # Highlight a string into a HTML
    . + # + # CSS styles use classes, so you have to include a stylesheet + # in your output. + # + # See encode. + def highlight code, lang, options = { :css => :class }, format = :div + encode code, lang, format, options + end + + # Encode pre-scanned Tokens. + # Use this together with CodeRay.scan: + # + # require 'coderay' + # + # # Highlight a short Ruby code example in a HTML span + # tokens = CodeRay.scan '1 + 2', :ruby + # puts CodeRay.encode_tokens(tokens, :span) + # + def encode_tokens tokens, format, options = {} + encoder(format, options).encode_tokens tokens, options + end + + # Encodes +filename+ (a path to a code file) with the Scanner for +lang+. + # + # See CodeRay.scan_file. + # Notice that the second argument is the output +format+, not the input language. + # + # Example: + # require 'coderay' + # page = CodeRay.encode_file 'some_c_code.c', :html + def encode_file filename, format, options = {} + tokens = scan_file filename, :auto, get_scanner_options(options) + encode_tokens tokens, format, options + end + + # Highlight a file into a HTML
    . + # + # CSS styles use classes, so you have to include a stylesheet + # in your output. + # + # See encode. + def highlight_file filename, options = { :css => :class }, format = :div + encode_file filename, format, options + end + + # Finds the Encoder class for +format+ and creates an instance, passing + # +options+ to it. + # + # Example: + # require 'coderay' + # + # stats = CodeRay.encoder(:statistic) + # stats.encode("puts 17 + 4\n", :ruby) + # + # puts '%d out of %d tokens have the kind :integer.' % [ + # stats.type_stats[:integer].count, + # stats.real_token_count + # ] + # #-> 2 out of 4 tokens have the kind :integer. + def encoder format, options = {} + Encoders[format].new options + end + + # Finds the Scanner class for +lang+ and creates an instance, passing + # +options+ to it. + # + # See Scanner.new. + def scanner lang, options = {} + Scanners[lang].new '', options + end + + # Extract the options for the scanner from the +options+ hash. + # + # Returns an empty Hash if :scanner_options is not set. + # + # This is used if a method like CodeRay.encode has to provide options + # for Encoder _and_ scanner. + def get_scanner_options options + options.fetch :scanner_options, {} + end + + end + + # This Exception is raised when you try to stream with something that is not + # capable of streaming. + class NotStreamableError < Exception + def initialize obj + @obj = obj + end + + def to_s + '%s is not Streamable!' % @obj.class + end + end + + # A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder + # to show that they are able to handle streams. + module Streamable + end + +end + +# Run a test script. +if $0 == __FILE__ + $stderr.print 'Press key to print demo.'; gets + # Just use this file as an example of Ruby code. + code = File.read(__FILE__)[/module CodeRay.*/m] + print CodeRay.scan(code, :ruby).html +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/README --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/README Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,134 @@ += CodeRay + +[- Tired of blue'n'gray? Try the original version of this documentation on +coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] + +== About +CodeRay is a Ruby library for syntax highlighting. + +Syntax highlighting means: You put your code in, and you get it back colored; +Keywords, strings, floats, comments - all in different colors. +And with line numbers. + +*Syntax* *Highlighting*... +* makes code easier to read and maintain +* lets you detect syntax errors faster +* helps you to understand the syntax of a language +* looks nice +* is what everybody should have on their website +* solves all your problems and makes the girls run after you + +Version: 0.9.7 +Author:: murphy (Kornelius Kalnbach) +Contact:: murphy rubychan de +Website:: coderay.rubychan.de[http://coderay.rubychan.de] +License:: GNU LGPL; see LICENSE file in the main directory. + +== Installation + +You need RubyGems[http://rubyforge.org/frs/?group_id=126]. + + % gem install coderay + + +=== Dependencies + +CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+. + + +== Example Usage +(Forgive me, but this is not highlighted.) + + require 'coderay' + + tokens = CodeRay.scan "puts 'Hello, world!'", :ruby + page = tokens.html :line_numbers => :inline, :wrap => :page + puts page + + +== Documentation + +See CodeRay. + +Please report errors in this documentation to . + + +== Credits + +=== Special Thanks to + +* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder + project and the input/output plugin system. + CodeRay would not exist without him. +* bovi (Daniel Bovensiepen) for helping me out on various occasions. + +=== Thanks to + +* Caleb Clausen for writing RubyLexer (see + http://rubyforge.org/projects/rubylexer) and lots of very interesting mail + traffic +* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. + You guys rock! +* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) + I got some useful ideas from it. +* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me + coding CodeRay, but also gave me a wonderful target to reach for the Ruby + scanner. +* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de +* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de +* Dethix from ruby-mine.de +* zickzackw +* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de +* Andreas Schwarz for finding out that CaseIgnoringWordList was not case + ignoring! Such things really make you write tests. +* closure for the first version of the Scheme scanner. +* Stefan Walk for the first version of the JavaScript and PHP scanners. +* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. +* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. +* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. +* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. +* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. +* 0xf30fc7 for the FileType patch concerning Delphi file extensions. +* The folks at redmine.org - thank you for using and fixing CodeRay! +* Keith Pitt for his SQL scanners +* Rob Aldred for the terminal encoder +* Trans for pointing out $DEBUG dependencies +* Flameeyes for finding that Term::ANSIColor was obsolete +* Etienne Massip for reporting a serious bug in JavaScript scanner +* matz and all Ruby gods and gurus +* The inventors of: the computer, the internet, the true color display, HTML & + CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, + manga, coke and green ice tea. + +Where would we be without all those people? + +=== Created using + +* Ruby[http://ruby-lang.org/] +* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); + Triella, born Rico (my new MacBook); as well as + Seras and Hikari (my PCs) +* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], + VIM[http://vim.org] and TextMate[http://macromates.com] +* Subversion[http://subversion.tigris.org/] +* Redmine[http://redmine.org/] +* Firefox[http://www.mozilla.org/products/firefox/], + Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and + Thunderbird[http://www.mozilla.org/products/thunderbird/] +* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] +* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via + XAMPP[http://www.apachefriends.org/en/xampp.html] +* RDoc (though I'm quite unsatisfied with it) +* Microsoft Windows (yes, I confess!) and MacOS X +* GNUWin32, MinGW and some other tools to make the shell under windows a bit + less useless +* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] +* PLEAC[http://pleac.sourceforge.net/] code examples + +=== Free + +* As you can see, CodeRay was created under heavy use of *free* software. +* So CodeRay is also *free*. +* If you use CodeRay to create software, think about making this software + *free*, too. +* Thanks :) diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,322 @@ +# = CodeRay Library +# +# CodeRay is a Ruby library for syntax highlighting. +# +# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete, +# fast and efficient. +# +# See README. +# +# It consists mainly of +# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost +# * the scanners in CodeRay::Scanners +# * the encoders in CodeRay::Encoders +# +# Here's a fancy graphic to light up this gray docu: +# +# http://cycnus.de/raindark/coderay/scheme.png +# +# == Documentation +# +# See CodeRay, Encoders, Scanners, Tokens. +# +# == Usage +# +# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with +# -rubygems option if required. +# +# === Highlight Ruby code in a string as html +# +# require 'coderay' +# print CodeRay.scan('puts "Hello, world!"', :ruby).html +# +# # prints something like this: +# puts "Hello, world!" +# +# +# === Highlight C code from a file in a html div +# +# require 'coderay' +# print CodeRay.scan(File.read('ruby.h'), :c).div +# print CodeRay.scan_file('ruby.h').html.div +# +# You can include this div in your page. The used CSS styles can be printed with +# +# % coderay_stylesheet +# +# === Highlight without typing too much +# +# If you are one of the hasty (or lazy, or extremely curious) people, just run this file: +# +# % ruby -rubygems /path/to/coderay/coderay.rb > example.html +# +# and look at the file it created in your browser. +# +# = CodeRay Module +# +# The CodeRay module provides convenience methods for the engine. +# +# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are +# simply lower-case symbols, like :python or :html. +# * All methods take an optional hash as last parameter, +options+, that is send to +# the Encoder / Scanner. +# * Input and language are always sorted in this order: +code+, +lang+. +# (This is in alphabetical order, if you need a mnemonic ;) +# +# You should be able to highlight everything you want just using these methods; +# so there is no need to dive into CodeRay's deep class hierarchy. +# +# The examples in the demo directory demonstrate common cases using this interface. +# +# = Basic Access Ways +# +# Read this to get a general view what CodeRay provides. +# +# == Scanning +# +# Scanning means analysing an input string, splitting it up into Tokens. +# Each Token knows about what type it is: string, comment, class name, etc. +# +# Each +lang+ (language) has its own Scanner; for example, :ruby code is +# handled by CodeRay::Scanners::Ruby. +# +# CodeRay.scan:: Scan a string in a given language into Tokens. +# This is the most common method to use. +# CodeRay.scan_file:: Scan a file and guess the language using FileType. +# +# The Tokens object you get from these methods can encode itself; see Tokens. +# +# == Encoding +# +# Encoding means compiling Tokens into an output. This can be colored HTML or +# LaTeX, a textual statistic or just the number of non-whitespace tokens. +# +# Each Encoder provides output in a specific +format+, so you select Encoders via +# formats like :html or :statistic. +# +# CodeRay.encode:: Scan and encode a string in a given language. +# CodeRay.encode_tokens:: Encode the given tokens. +# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it. +# +# == Streaming +# +# Streaming saves RAM by running Scanner and Encoder in some sort of +# pipe mode; see TokenStream. +# +# CodeRay.scan_stream:: Scan in stream mode. +# +# == All-in-One Encoding +# +# CodeRay.encode:: Highlight a string with a given input and output format. +# +# == Instanciating +# +# You can use an Encoder instance to highlight multiple inputs. This way, the setup +# for this Encoder must only be done once. +# +# CodeRay.encoder:: Create an Encoder instance with format and options. +# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code. +# +# To make use of CodeRay.scanner, use CodeRay::Scanner::code=. +# +# The scanning methods provide more flexibility; we recommend to use these. +# +# == Reusing Scanners and Encoders +# +# If you want to re-use scanners and encoders (because that is faster), see +# CodeRay::Duo for the most convenient (and recommended) interface. +module CodeRay + + $CODERAY_DEBUG ||= false + + # Version: Major.Minor.Teeny[.Revision] + # Major: 0 for pre-stable, 1 for stable + # Minor: feature milestone + # Teeny: development state, 0 for pre-release + # Revision: Subversion Revision number (generated on rake gem:make) + VERSION = '0.9.7' + + require 'coderay/tokens' + require 'coderay/token_classes' + require 'coderay/scanner' + require 'coderay/encoder' + require 'coderay/duo' + require 'coderay/style' + + + class << self + + # Scans the given +code+ (a String) with the Scanner for +lang+. + # + # This is a simple way to use CodeRay. Example: + # require 'coderay' + # page = CodeRay.scan("puts 'Hello, world!'", :ruby).html + # + # See also demo/demo_simple. + def scan code, lang, options = {}, &block + scanner = Scanners[lang].new code, options, &block + scanner.tokenize + end + + # Scans +filename+ (a path to a code file) with the Scanner for +lang+. + # + # If +lang+ is :auto or omitted, the CodeRay::FileType module is used to + # determine it. If it cannot find out what type it is, it uses + # CodeRay::Scanners::Plaintext. + # + # Calls CodeRay.scan. + # + # Example: + # require 'coderay' + # page = CodeRay.scan_file('some_c_code.c').html + def scan_file filename, lang = :auto, options = {}, &block + file = IO.read filename + if lang == :auto + require 'coderay/helpers/file_type' + lang = FileType.fetch filename, :plaintext, true + end + scan file, lang, options = {}, &block + end + + # Scan the +code+ (a string) with the scanner for +lang+. + # + # Calls scan. + # + # See CodeRay.scan. + def scan_stream code, lang, options = {}, &block + options[:stream] = true + scan code, lang, options, &block + end + + # Encode a string in Streaming mode. + # + # This starts scanning +code+ with the the Scanner for +lang+ + # while encodes the output with the Encoder for +format+. + # +options+ will be passed to the Encoder. + # + # See CodeRay::Encoder.encode_stream + def encode_stream code, lang, format, options = {} + encoder(format, options).encode_stream code, lang, options + end + + # Encode a string. + # + # This scans +code+ with the the Scanner for +lang+ and then + # encodes it with the Encoder for +format+. + # +options+ will be passed to the Encoder. + # + # See CodeRay::Encoder.encode + def encode code, lang, format, options = {} + encoder(format, options).encode code, lang, options + end + + # Highlight a string into a HTML
    . + # + # CSS styles use classes, so you have to include a stylesheet + # in your output. + # + # See encode. + def highlight code, lang, options = { :css => :class }, format = :div + encode code, lang, format, options + end + + # Encode pre-scanned Tokens. + # Use this together with CodeRay.scan: + # + # require 'coderay' + # + # # Highlight a short Ruby code example in a HTML span + # tokens = CodeRay.scan '1 + 2', :ruby + # puts CodeRay.encode_tokens(tokens, :span) + # + def encode_tokens tokens, format, options = {} + encoder(format, options).encode_tokens tokens, options + end + + # Encodes +filename+ (a path to a code file) with the Scanner for +lang+. + # + # See CodeRay.scan_file. + # Notice that the second argument is the output +format+, not the input language. + # + # Example: + # require 'coderay' + # page = CodeRay.encode_file 'some_c_code.c', :html + def encode_file filename, format, options = {} + tokens = scan_file filename, :auto, get_scanner_options(options) + encode_tokens tokens, format, options + end + + # Highlight a file into a HTML
    . + # + # CSS styles use classes, so you have to include a stylesheet + # in your output. + # + # See encode. + def highlight_file filename, options = { :css => :class }, format = :div + encode_file filename, format, options + end + + # Finds the Encoder class for +format+ and creates an instance, passing + # +options+ to it. + # + # Example: + # require 'coderay' + # + # stats = CodeRay.encoder(:statistic) + # stats.encode("puts 17 + 4\n", :ruby) + # + # puts '%d out of %d tokens have the kind :integer.' % [ + # stats.type_stats[:integer].count, + # stats.real_token_count + # ] + # #-> 2 out of 4 tokens have the kind :integer. + def encoder format, options = {} + Encoders[format].new options + end + + # Finds the Scanner class for +lang+ and creates an instance, passing + # +options+ to it. + # + # See Scanner.new. + def scanner lang, options = {} + Scanners[lang].new '', options + end + + # Extract the options for the scanner from the +options+ hash. + # + # Returns an empty Hash if :scanner_options is not set. + # + # This is used if a method like CodeRay.encode has to provide options + # for Encoder _and_ scanner. + def get_scanner_options options + options.fetch :scanner_options, {} + end + + end + + # This Exception is raised when you try to stream with something that is not + # capable of streaming. + class NotStreamableError < Exception + def initialize obj + @obj = obj + end + + def to_s + '%s is not Streamable!' % @obj.class + end + end + + # A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder + # to show that they are able to handle streams. + module Streamable + end + +end + +# Run a test script. +if $0 == __FILE__ + $stderr.print 'Press key to print demo.'; gets + # Just use this file as an example of Ruby code. + code = File.read(__FILE__)[/module CodeRay.*/m] + print CodeRay.scan(code, :ruby).html +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,47 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay +END +token_classes.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/token_classes.rb +END +encoder.rb +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoder.rb +END +style.rb +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/style.rb +END +tokens.rb +K 25 +svn:wc:ra_dav:version-url +V 72 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/tokens.rb +END +duo.rb +K 25 +svn:wc:ra_dav:version-url +V 69 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/duo.rb +END +scanner.rb +K 25 +svn:wc:ra_dav:version-url +V 73 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanner.rb +END +for_redcloth.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/for_redcloth.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,278 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +token_classes.rb +file + + + + +2011-03-03T11:05:13.000000Z +4f17211f3874899049db6111ef282a3b +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2287 + +encoder.rb +file + + + + +2011-03-03T11:05:13.000000Z +f0ead48eaa86c8b4d6a5587e9b5450ca +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6565 + +encoders +dir + +helpers +dir + +style.rb +file + + + + +2011-03-03T11:05:13.000000Z +409fa492a5470a8bed5ae969f270decf +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +293 + +styles +dir + +tokens.rb +file + + + + +2011-03-03T11:05:13.000000Z +d45c9094dd69e538d44b7099955b9fda +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +10325 + +duo.rb +file + + + + +2011-03-03T11:05:13.000000Z +b33e5b83e354c09655f46d37ae662f64 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2549 + +scanner.rb +file + + + + +2011-03-03T11:05:13.000000Z +ec67701318cc8701d0554802f07ee6e1 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +8165 + +scanners +dir + +for_redcloth.rb +file + + + + +2011-03-03T11:05:13.000000Z +d216c2f1c7a84a23ce3feff0b1358d60 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3001 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/duo.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/duo.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,85 @@ +module CodeRay + + # = Duo + # + # A Duo is a convenient way to use CodeRay. You just create a Duo, + # giving it a lang (language of the input code) and a format (desired + # output format), and call Duo#highlight with the code. + # + # Duo makes it easy to re-use both scanner and encoder for a repetitive + # task. It also provides a very easy interface syntax: + # + # require 'coderay' + # CodeRay::Duo[:python, :div].highlight 'import this' + # + # Until you want to do uncommon things with CodeRay, I recommend to use + # this method, since it takes care of everything. + class Duo + + attr_accessor :lang, :format, :options + + # Create a new Duo, holding a lang and a format to highlight code. + # + # simple: + # CodeRay::Duo[:ruby, :page].highlight 'bla 42' + # + # streaming: + # CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true + # + # with options: + # CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??' + # + # alternative syntax without options: + # CodeRay::Duo[:ruby => :statistic].encode 'class << self; end' + # + # alternative syntax with options: + # CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc' + # + # The options are forwarded to scanner and encoder + # (see CodeRay.get_scanner_options). + def initialize lang = nil, format = nil, options = {} + if format == nil and lang.is_a? Hash and lang.size == 1 + @lang = lang.keys.first + @format = lang[@lang] + else + @lang = lang + @format = format + end + @options = options + end + + class << self + # To allow calls like Duo[:ruby, :html].highlight. + alias [] new + end + + # The scanner of the duo. Only created once. + def scanner + @scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options) + end + + # The encoder of the duo. Only created once. + def encoder + @encoder ||= CodeRay.encoder @format, @options + end + + # Tokenize and highlight the code using +scanner+ and +encoder+. + # + # If the :stream option is set, the Duo will go into streaming mode, + # saving memory for the cost of time. + def encode code, options = { :stream => false } + stream = options.delete :stream + options = @options.merge options + if stream + encoder.encode_stream(code, @lang, options) + else + scanner.code = code + encoder.encode_tokens(scanner.tokenize, options) + end + end + alias highlight encode + + end + +end + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/encoder.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/encoder.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,213 @@ +module CodeRay + + # This module holds the Encoder class and its subclasses. + # For example, the HTML encoder is named CodeRay::Encoders::HTML + # can be found in coderay/encoders/html. + # + # Encoders also provides methods and constants for the register + # mechanism and the [] method that returns the Encoder class + # belonging to the given format. + module Encoders + extend PluginHost + plugin_path File.dirname(__FILE__), 'encoders' + + # = Encoder + # + # The Encoder base class. Together with Scanner and + # Tokens, it forms the highlighting triad. + # + # Encoder instances take a Tokens object and do something with it. + # + # The most common Encoder is surely the HTML encoder + # (CodeRay::Encoders::HTML). It highlights the code in a colorful + # html page. + # If you want the highlighted code in a div or a span instead, + # use its subclasses Div and Span. + class Encoder + extend Plugin + plugin_host Encoders + + attr_reader :token_stream + + class << self + + # Returns if the Encoder can be used in streaming mode. + def streamable? + is_a? Streamable + end + + # If FILE_EXTENSION isn't defined, this method returns the + # downcase class name instead. + def const_missing sym + if sym == :FILE_EXTENSION + plugin_id + else + super + end + end + + end + + # Subclasses are to store their default options in this constant. + DEFAULT_OPTIONS = { :stream => false } + + # The options you gave the Encoder at creating. + attr_accessor :options + + # Creates a new Encoder. + # +options+ is saved and used for all encode operations, as long + # as you don't overwrite it there by passing additional options. + # + # Encoder objects provide three encode methods: + # - encode simply takes a +code+ string and a +lang+ + # - encode_tokens expects a +tokens+ object instead + # - encode_stream is like encode, but uses streaming mode. + # + # Each method has an optional +options+ parameter. These are + # added to the options you passed at creation. + def initialize options = {} + @options = self.class::DEFAULT_OPTIONS.merge options + raise "I am only the basic Encoder class. I can't encode "\ + "anything. :( Use my subclasses." if self.class == Encoder + end + + # Encode a Tokens object. + def encode_tokens tokens, options = {} + options = @options.merge options + setup options + compile tokens, options + finish options + end + + # Encode the given +code+ after tokenizing it using the Scanner + # for +lang+. + def encode code, lang, options = {} + options = @options.merge options + scanner_options = CodeRay.get_scanner_options(options) + tokens = CodeRay.scan code, lang, scanner_options + encode_tokens tokens, options + end + + # You can use highlight instead of encode, if that seems + # more clear to you. + alias highlight encode + + # Encode the given +code+ using the Scanner for +lang+ in + # streaming mode. + def encode_stream code, lang, options = {} + raise NotStreamableError, self unless kind_of? Streamable + options = @options.merge options + setup options + scanner_options = CodeRay.get_scanner_options options + @token_stream = + CodeRay.scan_stream code, lang, scanner_options, &self + finish options + end + + # Behave like a proc. The token method is converted to a proc. + def to_proc + method(:token).to_proc + end + + # Return the default file extension for outputs of this encoder. + def file_extension + self.class::FILE_EXTENSION + end + + protected + + # Called with merged options before encoding starts. + # Sets @out to an empty string. + # + # See the HTML Encoder for an example of option caching. + def setup options + @out = '' + end + + # Called with +content+ and +kind+ of the currently scanned token. + # For simple scanners, it's enougth to implement this method. + # + # By default, it calls text_token or block_token, depending on + # whether +content+ is a String. + def token content, kind + encoded_token = + if content.is_a? ::String + text_token content, kind + elsif content.is_a? ::Symbol + block_token content, kind + else + raise 'Unknown token content type: %p' % [content] + end + append_encoded_token_to_output encoded_token + end + + def append_encoded_token_to_output encoded_token + @out << encoded_token if encoded_token && defined?(@out) && @out + end + + # Called for each text token ([text, kind]), where text is a String. + def text_token text, kind + end + + # Called for each block (non-text) token ([action, kind]), + # where +action+ is a Symbol. + # + # Calls open_token, close_token, begin_line, and end_line according to + # the value of +action+. + def block_token action, kind + case action + when :open + open_token kind + when :close + close_token kind + when :begin_line + begin_line kind + when :end_line + end_line kind + else + raise 'unknown block action: %p' % action + end + end + + # Called for each block token at the start of the block ([:open, kind]). + def open_token kind + end + + # Called for each block token end of the block ([:close, kind]). + def close_token kind + end + + # Called for each line token block at the start of the line ([:begin_line, kind]). + def begin_line kind + end + + # Called for each line token block at the end of the line ([:end_line, kind]). + def end_line kind + end + + # Called with merged options after encoding starts. + # The return value is the result of encoding, typically @out. + def finish options + @out + end + + # Do the encoding. + # + # The already created +tokens+ object must be used; it can be a + # TokenStream or a Tokens object. + if RUBY_VERSION >= '1.9' + def compile tokens, options + for text, kind in tokens + token text, kind + end + end + else + def compile tokens, options + tokens.each(&self) + end + end + + end + + end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/for_redcloth.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/for_redcloth.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,95 @@ +module CodeRay + + # A little hack to enable CodeRay highlighting in RedCloth. + # + # Usage: + # require 'coderay' + # require 'coderay/for_redcloth' + # RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + # + # Make sure you have RedCloth 4.0.3 activated, for example by calling + # require 'rubygems' + # before RedCloth is loaded and before calling CodeRay.for_redcloth. + module ForRedCloth + + def self.install + gem 'RedCloth', '>= 4.0.3' if defined? gem + require 'redcloth' + unless RedCloth::VERSION.to_s >= '4.0.3' + if defined? gem + raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later. ' + + "You have #{RedCloth::VERSION}. Please gem install RedCloth." + else + $".delete 'redcloth.rb' # sorry, but it works + require 'rubygems' + return install # retry + end + end + unless RedCloth::VERSION.to_s >= '4.2.2' + warn 'CodeRay.for_redcloth works best with RedCloth version 4.2.2 or later.' + end + RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc + RedCloth::Formatters::HTML.module_eval do + def unescape(html) + replacements = { + '&' => '&', + '"' => '"', + '>' => '>', + '<' => '<', + } + html.gsub(/&(?:amp|quot|[gl]t);/) { |entity| replacements[entity] } + end + undef code, bc_open, bc_close, escape_pre + def code(opts) # :nodoc: + opts[:block] = true + if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' + # simulating pre-4.2 behavior + if opts[:text].sub!(/\A\[(\w+)\]/, '') + if CodeRay::Scanners[$1].plugin_id == 'plaintext' + opts[:text] = $& + opts[:text] + else + opts[:lang] = $1 + end + end + end + if opts[:lang] && !filter_coderay + require 'coderay' + @in_bc ||= nil + format = @in_bc ? :div : :span + opts[:text] = unescape(opts[:text]) unless @in_bc + highlighted_code = CodeRay.encode opts[:text], opts[:lang], format, :stream => true + highlighted_code.sub!(/\A<(span|div)/) { |m| m + pba(@in_bc || opts) } + highlighted_code + else + "#{opts[:text]}" + end + end + def bc_open(opts) # :nodoc: + opts[:block] = true + @in_bc = opts + opts[:lang] ? '' : "" + end + def bc_close(opts) # :nodoc: + opts = @in_bc + @in_bc = nil + opts[:lang] ? '' : "\n" + end + def escape_pre(text) + if @in_bc ||= nil + text + else + html_esc(text, :html_escape_preformatted) + end + end + end + end + + module TextileDoc # :nodoc: + attr_accessor :filter_coderay + end + + end + +end + +CodeRay::ForRedCloth.install \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/scanner.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/scanner.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,298 @@ +module CodeRay + + require 'coderay/helpers/plugin' + + # = Scanners + # + # This module holds the Scanner class and its subclasses. + # For example, the Ruby scanner is named CodeRay::Scanners::Ruby + # can be found in coderay/scanners/ruby. + # + # Scanner also provides methods and constants for the register + # mechanism and the [] method that returns the Scanner class + # belonging to the given lang. + # + # See PluginHost. + module Scanners + extend PluginHost + plugin_path File.dirname(__FILE__), 'scanners' + + require 'strscan' + + # = Scanner + # + # The base class for all Scanners. + # + # It is a subclass of Ruby's great +StringScanner+, which + # makes it easy to access the scanning methods inside. + # + # It is also +Enumerable+, so you can use it like an Array of + # Tokens: + # + # require 'coderay' + # + # c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;" + # + # for text, kind in c_scanner + # puts text if kind == :operator + # end + # + # # prints: (*==)++; + # + # OK, this is a very simple example :) + # You can also use +map+, +any?+, +find+ and even +sort_by+, + # if you want. + class Scanner < StringScanner + + extend Plugin + plugin_host Scanners + + # Raised if a Scanner fails while scanning + ScanError = Class.new(Exception) + + require 'coderay/helpers/word_list' + + # The default options for all scanner classes. + # + # Define @default_options for subclasses. + DEFAULT_OPTIONS = { :stream => false } + + KINDS_NOT_LOC = [:comment, :doctype] + + class << self + + # Returns if the Scanner can be used in streaming mode. + def streamable? + is_a? Streamable + end + + def normify code + code = code.to_s + if code.respond_to?(:encoding) && (code.encoding.name != 'UTF-8' || !code.valid_encoding?) + code = code.dup + original_encoding = code.encoding + code.force_encoding 'Windows-1252' + unless code.valid_encoding? + code.force_encoding original_encoding + if code.encoding.name == 'UTF-8' + code.encode! 'UTF-16BE', :invalid => :replace, :undef => :replace, :replace => '?' + end + code.encode! 'UTF-8', :invalid => :replace, :undef => :replace, :replace => '?' + end + end + code.to_unix + end + + def file_extension extension = nil + if extension + @file_extension = extension.to_s + else + @file_extension ||= plugin_id.to_s + end + end + + end + +=begin +## Excluded for speed reasons; protected seems to make methods slow. + + # Save the StringScanner methods from being called. + # This would not be useful for highlighting. + strscan_public_methods = + StringScanner.instance_methods - + StringScanner.ancestors[1].instance_methods + protected(*strscan_public_methods) +=end + + # Create a new Scanner. + # + # * +code+ is the input String and is handled by the superclass + # StringScanner. + # * +options+ is a Hash with Symbols as keys. + # It is merged with the default options of the class (you can + # overwrite default options here.) + # * +block+ is the callback for streamed highlighting. + # + # If you set :stream to +true+ in the options, the Scanner uses a + # TokenStream with the +block+ as callback to handle the tokens. + # + # Else, a Tokens object is used. + def initialize code='', options = {}, &block + raise "I am only the basic Scanner class. I can't scan "\ + "anything. :( Use my subclasses." if self.class == Scanner + + @options = self.class::DEFAULT_OPTIONS.merge options + + super Scanner.normify(code) + + @tokens = options[:tokens] + if @options[:stream] + warn "warning in CodeRay::Scanner.new: :stream is set, "\ + "but no block was given" unless block_given? + raise NotStreamableError, self unless kind_of? Streamable + @tokens ||= TokenStream.new(&block) + else + warn "warning in CodeRay::Scanner.new: Block given, "\ + "but :stream is #{@options[:stream]}" if block_given? + @tokens ||= Tokens.new + end + @tokens.scanner = self + + setup + end + + def reset + super + reset_instance + end + + def string= code + code = Scanner.normify(code) + if defined?(RUBY_DESCRIPTION) && RUBY_DESCRIPTION['rubinius 1.0.1'] + reset_state + @string = code + else + super code + end + reset_instance + end + + # More mnemonic accessor name for the input string. + alias code string + alias code= string= + + # Returns the Plugin ID for this scanner. + def lang + self.class.plugin_id + end + + # Scans the code and returns all tokens in a Tokens object. + def tokenize new_string=nil, options = {} + options = @options.merge(options) + self.string = new_string if new_string + @cached_tokens = + if @options[:stream] # :stream must have been set already + reset unless new_string + scan_tokens @tokens, options + @tokens + else + scan_tokens @tokens, options + end + end + + def tokens + @cached_tokens ||= tokenize + end + + # Whether the scanner is in streaming mode. + def streaming? + !!@options[:stream] + end + + # Traverses the tokens. + def each &block + raise ArgumentError, + 'Cannot traverse TokenStream.' if @options[:stream] + tokens.each(&block) + end + include Enumerable + + # The current line position of the scanner. + # + # Beware, this is implemented inefficiently. It should be used + # for debugging only. + def line + string[0..pos].count("\n") + 1 + end + + def column pos = self.pos + return 0 if pos <= 0 + string = string() + if string.respond_to?(:bytesize) && (defined?(@bin_string) || string.bytesize != string.size) + @bin_string ||= string.dup.force_encoding('binary') + string = @bin_string + end + pos - (string.rindex(?\n, pos) || 0) + end + + def marshal_dump + @options + end + + def marshal_load options + @options = options + end + + protected + + # Can be implemented by subclasses to do some initialization + # that has to be done once per instance. + # + # Use reset for initialization that has to be done once per + # scan. + def setup + end + + # This is the central method, and commonly the only one a + # subclass implements. + # + # Subclasses must implement this method; it must return +tokens+ + # and must only use Tokens#<< for storing scanned tokens! + def scan_tokens tokens, options + raise NotImplementedError, + "#{self.class}#scan_tokens not implemented." + end + + def reset_instance + @tokens.clear unless @options[:keep_tokens] + @cached_tokens = nil + @bin_string = nil if defined? @bin_string + end + + # Scanner error with additional status information + def raise_inspect msg, tokens, state = 'No state given!', ambit = 30 + raise ScanError, <<-EOE % [ + + +***ERROR in %s: %s (after %d tokens) + +tokens: +%s + +current line: %d column: %d pos: %d +matched: %p state: %p +bol? = %p, eos? = %p + +surrounding code: +%p ~~ %p + + +***ERROR*** + + EOE + File.basename(caller[0]), + msg, + tokens.size, + tokens.last(10).map { |t| t.inspect }.join("\n"), + line, column, pos, + matched, state, bol?, eos?, + string[pos - ambit, ambit], + string[pos, ambit], + ] + end + + end + + end +end + +class String + # I love this hack. It seems to silence all dos/unix/mac newline problems. + def to_unix + if index ?\r + gsub(/\r\n?/, "\n") + else + self + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/style.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/style.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,20 @@ +module CodeRay + + # This module holds the Style class and its subclasses. + # + # See Plugin. + module Styles + extend PluginHost + plugin_path File.dirname(__FILE__), 'styles' + + class Style + extend Plugin + plugin_host Styles + + DEFAULT_OPTIONS = { } + + end + + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/token_classes.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/token_classes.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,86 @@ +module CodeRay + class Tokens + ClassOfKind = Hash.new do |h, k| + h[k] = k.to_s + end + ClassOfKind.update with = { + :annotation => 'at', + :attribute_name => 'an', + :attribute_name_fat => 'af', + :attribute_value => 'av', + :attribute_value_fat => 'aw', + :bin => 'bi', + :char => 'ch', + :class => 'cl', + :class_variable => 'cv', + :color => 'cr', + :comment => 'c', + :complex => 'cm', + :constant => 'co', + :content => 'k', + :decorator => 'de', + :definition => 'df', + :delimiter => 'dl', + :directive => 'di', + :doc => 'do', + :doctype => 'dt', + :doc_string => 'ds', + :entity => 'en', + :error => 'er', + :escape => 'e', + :exception => 'ex', + :float => 'fl', + :function => 'fu', + :global_variable => 'gv', + :hex => 'hx', + :imaginary => 'cm', + :important => 'im', + :include => 'ic', + :inline => 'il', + :inline_delimiter => 'idl', + :instance_variable => 'iv', + :integer => 'i', + :interpreted => 'in', + :keyword => 'kw', + :key => 'ke', + :label => 'la', + :local_variable => 'lv', + :modifier => 'mod', + :oct => 'oc', + :operator_fat => 'of', + :pre_constant => 'pc', + :pre_type => 'pt', + :predefined => 'pd', + :preprocessor => 'pp', + :pseudo_class => 'ps', + :regexp => 'rx', + :reserved => 'r', + :shell => 'sh', + :string => 's', + :symbol => 'sy', + :tag => 'ta', + :tag_fat => 'tf', + :tag_special => 'ts', + :type => 'ty', + :variable => 'v', + :value => 'vl', + :xml_text => 'xt', + + :insert => 'ins', + :delete => 'del', + :change => 'chg', + :head => 'head', + + :ident => :NO_HIGHLIGHT, # 'id' + #:operator => 'op', + :operator => :NO_HIGHLIGHT, # 'op' + :space => :NO_HIGHLIGHT, # 'sp' + :plain => :NO_HIGHLIGHT, + } + ClassOfKind[:method] = ClassOfKind[:function] + ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] + ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] + ClassOfKind[:escape] = ClassOfKind[:delimiter] + #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' + end +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/tokens.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/.svn/text-base/tokens.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,390 @@ +module CodeRay + + # = Tokens + # + # The Tokens class represents a list of tokens returnd from + # a Scanner. + # + # A token is not a special object, just a two-element Array + # consisting of + # * the _token_ _text_ (the original source of the token in a String) or + # a _token_ _action_ (:open, :close, :begin_line, :end_line) + # * the _token_ _kind_ (a Symbol representing the type of the token) + # + # A token looks like this: + # + # ['# It looks like this', :comment] + # ['3.1415926', :float] + # ['$^', :error] + # + # Some scanners also yield sub-tokens, represented by special + # token actions, namely :open and :close. + # + # The Ruby scanner, for example, splits "a string" into: + # + # [ + # [:open, :string], + # ['"', :delimiter], + # ['a string', :content], + # ['"', :delimiter], + # [:close, :string] + # ] + # + # Tokens is the interface between Scanners and Encoders: + # The input is split and saved into a Tokens object. The Encoder + # then builds the output from this object. + # + # Thus, the syntax below becomes clear: + # + # CodeRay.scan('price = 2.59', :ruby).html + # # the Tokens object is here -------^ + # + # See how small it is? ;) + # + # Tokens gives you the power to handle pre-scanned code very easily: + # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string + # that you put in your DB. + # + # It also allows you to generate tokens directly (without using a scanner), + # to load them from a file, and still use any Encoder that CodeRay provides. + # + # Tokens' subclass TokenStream allows streaming to save memory. + class Tokens < Array + + # The Scanner instance that created the tokens. + attr_accessor :scanner + + # Whether the object is a TokenStream. + # + # Returns false. + def stream? + false + end + + # Iterates over all tokens. + # + # If a filter is given, only tokens of that kind are yielded. + def each kind_filter = nil, &block + unless kind_filter + super(&block) + else + super() do |text, kind| + next unless kind == kind_filter + yield text, kind + end + end + end + + # Iterates over all text tokens. + # Range tokens like [:open, :string] are left out. + # + # Example: + # tokens.each_text_token { |text, kind| text.replace html_escape(text) } + def each_text_token + each do |text, kind| + next unless text.is_a? ::String + yield text, kind + end + end + + # Encode the tokens using encoder. + # + # encoder can be + # * a symbol like :html oder :statistic + # * an Encoder class + # * an Encoder object + # + # options are passed to the encoder. + def encode encoder, options = {} + unless encoder.is_a? Encoders::Encoder + unless encoder.is_a? Class + encoder_class = Encoders[encoder] + end + encoder = encoder_class.new options + end + encoder.encode_tokens self, options + end + + + # Turn into a string using Encoders::Text. + # + # +options+ are passed to the encoder if given. + def to_s options = {} + encode :text, options + end + + # Redirects unknown methods to encoder calls. + # + # For example, if you call +tokens.html+, the HTML encoder + # is used to highlight the tokens. + def method_missing meth, options = {} + Encoders[meth].new(options).encode_tokens self + end + + # Returns the tokens compressed by joining consecutive + # tokens of the same kind. + # + # This can not be undone, but should yield the same output + # in most Encoders. It basically makes the output smaller. + # + # Combined with dump, it saves space for the cost of time. + # + # If the scanner is written carefully, this is not required - + # for example, consecutive //-comment lines could already be + # joined in one comment token by the Scanner. + def optimize + last_kind = last_text = nil + new = self.class.new + for text, kind in self + if text.is_a? String + if kind == last_kind + last_text << text + else + new << [last_text, last_kind] if last_kind + last_text = text + last_kind = kind + end + else + new << [last_text, last_kind] if last_kind + last_kind = last_text = nil + new << [text, kind] + end + end + new << [last_text, last_kind] if last_kind + new + end + + # Compact the object itself; see optimize. + def optimize! + replace optimize + end + + # Ensure that all :open tokens have a correspondent :close one. + # + # TODO: Test this! + def fix + tokens = self.class.new + # Check token nesting using a stack of kinds. + opened = [] + for type, kind in self + case type + when :open + opened.push [:close, kind] + when :begin_line + opened.push [:end_line, kind] + when :close, :end_line + expected = opened.pop + if [type, kind] != expected + # Unexpected :close; decide what to do based on the kind: + # - token was never opened: delete the :close (just skip it) + next unless opened.rindex expected + # - token was opened earlier: also close tokens in between + tokens << token until (token = opened.pop) == expected + end + end + tokens << [type, kind] + end + # Close remaining opened tokens + tokens << token while token = opened.pop + tokens + end + + def fix! + replace fix + end + + # TODO: Scanner#split_into_lines + # + # Makes sure that: + # - newlines are single tokens + # (which means all other token are single-line) + # - there are no open tokens at the end the line + # + # This makes it simple for encoders that work line-oriented, + # like HTML with list-style numeration. + def split_into_lines + raise NotImplementedError + end + + def split_into_lines! + replace split_into_lines + end + + # Dumps the object into a String that can be saved + # in files or databases. + # + # The dump is created with Marshal.dump; + # In addition, it is gzipped using GZip.gzip. + # + # The returned String object includes Undumping + # so it has an #undump method. See Tokens.load. + # + # You can configure the level of compression, + # but the default value 7 should be what you want + # in most cases as it is a good compromise between + # speed and compression rate. + # + # See GZip module. + def dump gzip_level = 7 + require 'coderay/helpers/gzip_simple' + dump = Marshal.dump self + dump = dump.gzip gzip_level + dump.extend Undumping + end + + # The total size of the tokens. + # Should be equal to the input size before + # scanning. + def text_size + size = 0 + each_text_token do |t, k| + size + t.size + end + size + end + + # Return all text tokens joined into a single string. + def text + map { |t, k| t if t.is_a? ::String }.join + end + + # Include this module to give an object an #undump + # method. + # + # The string returned by Tokens.dump includes Undumping. + module Undumping + # Calls Tokens.load with itself. + def undump + Tokens.load self + end + end + + # Undump the object using Marshal.load, then + # unzip it using GZip.gunzip. + # + # The result is commonly a Tokens object, but + # this is not guaranteed. + def Tokens.load dump + require 'coderay/helpers/gzip_simple' + dump = dump.gunzip + @dump = Marshal.load dump + end + + end + + + # = TokenStream + # + # The TokenStream class is a fake Array without elements. + # + # It redirects the method << to a block given at creation. + # + # This allows scanners and Encoders to use streaming (no + # tokens are saved, the input is highlighted the same time it + # is scanned) with the same code. + # + # See CodeRay.encode_stream and CodeRay.scan_stream + class TokenStream < Tokens + + # Whether the object is a TokenStream. + # + # Returns true. + def stream? + true + end + + # The Array is empty, but size counts the tokens given by <<. + attr_reader :size + + # Creates a new TokenStream that calls +block+ whenever + # its << method is called. + # + # Example: + # + # require 'coderay' + # + # token_stream = CodeRay::TokenStream.new do |text, kind| + # puts 'kind: %s, text size: %d.' % [kind, text.size] + # end + # + # token_stream << ['/\d+/', :regexp] + # #-> kind: rexpexp, text size: 5. + # + def initialize &block + raise ArgumentError, 'Block expected for streaming.' unless block + @callback = block + @size = 0 + end + + # Calls +block+ with +token+ and increments size. + # + # Returns self. + def << token + @callback.call(*token) + @size += 1 + self + end + + # This method is not implemented due to speed reasons. Use Tokens. + def text_size + raise NotImplementedError, + 'This method is not implemented due to speed reasons.' + end + + # A TokenStream cannot be dumped. Use Tokens. + def dump + raise NotImplementedError, 'A TokenStream cannot be dumped.' + end + + # A TokenStream cannot be optimized. Use Tokens. + def optimize + raise NotImplementedError, 'A TokenStream cannot be optimized.' + end + + end + +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class TokensTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Tokens < Array + tokens = nil + assert_nothing_raised do + tokens = CodeRay::Tokens.new + end + assert_kind_of Array, tokens + end + + def test_adding_tokens + tokens = CodeRay::Tokens.new + assert_nothing_raised do + tokens << ['string', :type] + tokens << ['()', :operator] + end + assert_equal tokens.size, 2 + end + + def test_dump_undump + tokens = CodeRay::Tokens.new + assert_nothing_raised do + tokens << ['string', :type] + tokens << ['()', :operator] + end + tokens2 = nil + assert_nothing_raised do + tokens2 = tokens.dump.undump + end + assert_equal tokens, tokens2 + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/duo.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/duo.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,85 @@ +module CodeRay + + # = Duo + # + # A Duo is a convenient way to use CodeRay. You just create a Duo, + # giving it a lang (language of the input code) and a format (desired + # output format), and call Duo#highlight with the code. + # + # Duo makes it easy to re-use both scanner and encoder for a repetitive + # task. It also provides a very easy interface syntax: + # + # require 'coderay' + # CodeRay::Duo[:python, :div].highlight 'import this' + # + # Until you want to do uncommon things with CodeRay, I recommend to use + # this method, since it takes care of everything. + class Duo + + attr_accessor :lang, :format, :options + + # Create a new Duo, holding a lang and a format to highlight code. + # + # simple: + # CodeRay::Duo[:ruby, :page].highlight 'bla 42' + # + # streaming: + # CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true + # + # with options: + # CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??' + # + # alternative syntax without options: + # CodeRay::Duo[:ruby => :statistic].encode 'class << self; end' + # + # alternative syntax with options: + # CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc' + # + # The options are forwarded to scanner and encoder + # (see CodeRay.get_scanner_options). + def initialize lang = nil, format = nil, options = {} + if format == nil and lang.is_a? Hash and lang.size == 1 + @lang = lang.keys.first + @format = lang[@lang] + else + @lang = lang + @format = format + end + @options = options + end + + class << self + # To allow calls like Duo[:ruby, :html].highlight. + alias [] new + end + + # The scanner of the duo. Only created once. + def scanner + @scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options) + end + + # The encoder of the duo. Only created once. + def encoder + @encoder ||= CodeRay.encoder @format, @options + end + + # Tokenize and highlight the code using +scanner+ and +encoder+. + # + # If the :stream option is set, the Duo will go into streaming mode, + # saving memory for the cost of time. + def encode code, options = { :stream => false } + stream = options.delete :stream + options = @options.merge options + if stream + encoder.encode_stream(code, @lang, options) + else + scanner.code = code + encoder.encode_tokens(scanner.tokenize, options) + end + end + alias highlight encode + + end + +end + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoder.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoder.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,213 @@ +module CodeRay + + # This module holds the Encoder class and its subclasses. + # For example, the HTML encoder is named CodeRay::Encoders::HTML + # can be found in coderay/encoders/html. + # + # Encoders also provides methods and constants for the register + # mechanism and the [] method that returns the Encoder class + # belonging to the given format. + module Encoders + extend PluginHost + plugin_path File.dirname(__FILE__), 'encoders' + + # = Encoder + # + # The Encoder base class. Together with Scanner and + # Tokens, it forms the highlighting triad. + # + # Encoder instances take a Tokens object and do something with it. + # + # The most common Encoder is surely the HTML encoder + # (CodeRay::Encoders::HTML). It highlights the code in a colorful + # html page. + # If you want the highlighted code in a div or a span instead, + # use its subclasses Div and Span. + class Encoder + extend Plugin + plugin_host Encoders + + attr_reader :token_stream + + class << self + + # Returns if the Encoder can be used in streaming mode. + def streamable? + is_a? Streamable + end + + # If FILE_EXTENSION isn't defined, this method returns the + # downcase class name instead. + def const_missing sym + if sym == :FILE_EXTENSION + plugin_id + else + super + end + end + + end + + # Subclasses are to store their default options in this constant. + DEFAULT_OPTIONS = { :stream => false } + + # The options you gave the Encoder at creating. + attr_accessor :options + + # Creates a new Encoder. + # +options+ is saved and used for all encode operations, as long + # as you don't overwrite it there by passing additional options. + # + # Encoder objects provide three encode methods: + # - encode simply takes a +code+ string and a +lang+ + # - encode_tokens expects a +tokens+ object instead + # - encode_stream is like encode, but uses streaming mode. + # + # Each method has an optional +options+ parameter. These are + # added to the options you passed at creation. + def initialize options = {} + @options = self.class::DEFAULT_OPTIONS.merge options + raise "I am only the basic Encoder class. I can't encode "\ + "anything. :( Use my subclasses." if self.class == Encoder + end + + # Encode a Tokens object. + def encode_tokens tokens, options = {} + options = @options.merge options + setup options + compile tokens, options + finish options + end + + # Encode the given +code+ after tokenizing it using the Scanner + # for +lang+. + def encode code, lang, options = {} + options = @options.merge options + scanner_options = CodeRay.get_scanner_options(options) + tokens = CodeRay.scan code, lang, scanner_options + encode_tokens tokens, options + end + + # You can use highlight instead of encode, if that seems + # more clear to you. + alias highlight encode + + # Encode the given +code+ using the Scanner for +lang+ in + # streaming mode. + def encode_stream code, lang, options = {} + raise NotStreamableError, self unless kind_of? Streamable + options = @options.merge options + setup options + scanner_options = CodeRay.get_scanner_options options + @token_stream = + CodeRay.scan_stream code, lang, scanner_options, &self + finish options + end + + # Behave like a proc. The token method is converted to a proc. + def to_proc + method(:token).to_proc + end + + # Return the default file extension for outputs of this encoder. + def file_extension + self.class::FILE_EXTENSION + end + + protected + + # Called with merged options before encoding starts. + # Sets @out to an empty string. + # + # See the HTML Encoder for an example of option caching. + def setup options + @out = '' + end + + # Called with +content+ and +kind+ of the currently scanned token. + # For simple scanners, it's enougth to implement this method. + # + # By default, it calls text_token or block_token, depending on + # whether +content+ is a String. + def token content, kind + encoded_token = + if content.is_a? ::String + text_token content, kind + elsif content.is_a? ::Symbol + block_token content, kind + else + raise 'Unknown token content type: %p' % [content] + end + append_encoded_token_to_output encoded_token + end + + def append_encoded_token_to_output encoded_token + @out << encoded_token if encoded_token && defined?(@out) && @out + end + + # Called for each text token ([text, kind]), where text is a String. + def text_token text, kind + end + + # Called for each block (non-text) token ([action, kind]), + # where +action+ is a Symbol. + # + # Calls open_token, close_token, begin_line, and end_line according to + # the value of +action+. + def block_token action, kind + case action + when :open + open_token kind + when :close + close_token kind + when :begin_line + begin_line kind + when :end_line + end_line kind + else + raise 'unknown block action: %p' % action + end + end + + # Called for each block token at the start of the block ([:open, kind]). + def open_token kind + end + + # Called for each block token end of the block ([:close, kind]). + def close_token kind + end + + # Called for each line token block at the start of the line ([:begin_line, kind]). + def begin_line kind + end + + # Called for each line token block at the end of the line ([:end_line, kind]). + def end_line kind + end + + # Called with merged options after encoding starts. + # The return value is the result of encoding, typically @out. + def finish options + @out + end + + # Do the encoding. + # + # The already created +tokens+ object must be used; it can be a + # TokenStream or a Tokens object. + if RUBY_VERSION >= '1.9' + def compile tokens, options + for text, kind in tokens + token text, kind + end + end + else + def compile tokens, options + tokens.each(&self) + end + end + + end + + end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,113 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders +END +div.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/div.rb +END +text.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/text.rb +END +filter.rb +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/filter.rb +END +debug.rb +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/debug.rb +END +lines_of_code.rb +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/lines_of_code.rb +END +count.rb +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/count.rb +END +xml.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/xml.rb +END +span.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/span.rb +END +yaml.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/yaml.rb +END +html.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html.rb +END +term.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/term.rb +END +statistic.rb +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/statistic.rb +END +comment_filter.rb +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/comment_filter.rb +END +json.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/json.rb +END +token_class_filter.rb +K 25 +svn:wc:ra_dav:version-url +V 93 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/token_class_filter.rb +END +null.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/null.rb +END +page.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/page.rb +END +_map.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/_map.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,643 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +div.rb +file + + + + +2011-03-03T11:05:13.000000Z +f0c5be15265facadc46889fbbc2613f1 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +232 + +text.rb +file + + + + +2011-03-03T11:05:13.000000Z +2914ed90921556a01a79f3fb6d549b09 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +400 + +filter.rb +file + + + + +2011-03-03T11:05:13.000000Z +08591bbd1f20dc7dce67030a294d1636 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1595 + +debug.rb +file + + + + +2011-03-03T11:05:13.000000Z +9e878089035fe9ad88c808bd1a15cf7a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +835 + +lines_of_code.rb +file + + + + +2011-03-03T11:05:13.000000Z +966e154458fb6c665b6d62aa90d07e18 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2395 + +count.rb +file + + + + +2011-03-03T11:05:13.000000Z +c262d84ddbdf37e99ff6bcf6dd6a66c2 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +230 + +xml.rb +file + + + + +2011-03-03T11:05:13.000000Z +ada7effba81bbc28f41efeaef69dcc51 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1367 + +span.rb +file + + + + +2011-03-03T11:05:13.000000Z +e4228be45ad0f818a0e125caee838d56 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +236 + +yaml.rb +file + + + + +2011-03-03T11:05:13.000000Z +04c428b240ef44de896ad15827cf51df +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +264 + +html +dir + +html.rb +file + + + + +2011-03-03T11:05:13.000000Z +e672d4f425422c57f935f24df3df9a0d +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7995 + +term.rb +file + + + + +2011-03-03T11:05:13.000000Z +422a51cd181de3cc0a55aba7f9915c18 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4324 + +statistic.rb +file + + + + +2011-03-03T11:05:13.000000Z +49017735ef679f73dd65795e30d8e5c7 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1800 + +comment_filter.rb +file + + + + +2011-03-03T11:05:13.000000Z +32f2d1a9db6f58636d3946a43b5a60f0 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +808 + +json.rb +file + + + + +2011-03-03T11:05:13.000000Z +86a2dcae2ef0a971f70386c3b794469f +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1570 + +null.rb +file + + + + +2011-03-03T11:05:13.000000Z +9c9dcf3ba3f2effa5ebd4cd37417db36 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +320 + +token_class_filter.rb +file + + + + +2011-03-03T11:05:13.000000Z +e59791dbcdce328f09240e7e5c8b3d0e +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2546 + +page.rb +file + + + + +2011-03-03T11:05:13.000000Z +26da5aef43dc8731fbd63dcffea259bf +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +262 + +_map.rb +file + + + + +2011-03-03T11:05:13.000000Z +964d7ee16d213ab2e41418257f1eb8aa +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +167 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/_map.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/_map.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,12 @@ +module CodeRay +module Encoders + + map \ + :loc => :lines_of_code, + :plain => :text, + :stats => :statistic, + :terminal => :term, + :tex => :latex + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/comment_filter.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/comment_filter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,43 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + load :token_class_filter + + class CommentFilter < TokenClassFilter + + register_for :comment_filter + + DEFAULT_OPTIONS = superclass::DEFAULT_OPTIONS.merge \ + :exclude => [:comment] + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class CommentFilterTest < Test::Unit::TestCase + + def test_filtering_comments + tokens = CodeRay.scan <<-RUBY, :ruby +#!/usr/bin/env ruby +# a minimal Ruby program +puts "Hello world!" + RUBY + assert_equal <<-RUBY_FILTERED, tokens.comment_filter.text +#!/usr/bin/env ruby + +puts "Hello world!" + RUBY_FILTERED + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/count.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/count.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,21 @@ +module CodeRay +module Encoders + + class Count < Encoder + + include Streamable + register_for :count + + protected + + def setup options + @out = 0 + end + + def token text, kind + @out += 1 + end + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/debug.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/debug.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,49 @@ +module CodeRay +module Encoders + + # = Debug Encoder + # + # Fast encoder producing simple debug output. + # + # It is readable and diff-able and is used for testing. + # + # You cannot fully restore the tokens information from the + # output, because consecutive :space tokens are merged. + # Use Tokens#dump for caching purposes. + class Debug < Encoder + + include Streamable + register_for :debug + + FILE_EXTENSION = 'raydebug' + + protected + def text_token text, kind + if kind == :space + text + else + text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ + "#{kind}(#{text})" + end + end + + def open_token kind + "#{kind}<" + end + + def close_token kind + ">" + end + + def begin_line kind + "#{kind}[" + end + + def end_line kind + "]" + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/div.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/div.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,19 @@ +module CodeRay +module Encoders + + load :html + + class Div < HTML + + FILE_EXTENSION = 'div.html' + + register_for :div + + DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ + :css => :style, + :wrap => :div + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/filter.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/filter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,75 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + class Filter < Encoder + + register_for :filter + + protected + def setup options + @out = Tokens.new + end + + def text_token text, kind + [text, kind] if include_text_token? text, kind + end + + def include_text_token? text, kind + true + end + + def block_token action, kind + [action, kind] if include_block_token? action, kind + end + + def include_block_token? action, kind + true + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class FilterTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::Filter < CodeRay::Encoders::Encoder + filter = nil + assert_nothing_raised do + filter = CodeRay.encoder :filter + end + assert_kind_of CodeRay::Encoders::Encoder, filter + end + + def test_filtering_text_tokens + tokens = CodeRay::Tokens.new + 10.times do |i| + tokens << [i.to_s, :index] + end + assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) + assert_equal tokens, tokens.filter + end + + def test_filtering_block_tokens + tokens = CodeRay::Tokens.new + 10.times do |i| + tokens << [:open, :index] + tokens << [i.to_s, :content] + tokens << [:close, :index] + end + assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) + assert_equal tokens, tokens.filter + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/html.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/html.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,309 @@ +require 'set' + +module CodeRay +module Encoders + + # = HTML Encoder + # + # This is CodeRay's most important highlighter: + # It provides save, fast XHTML generation and CSS support. + # + # == Usage + # + # require 'coderay' + # puts CodeRay.scan('Some /code/', :ruby).html #-> a HTML page + # puts CodeRay.scan('Some /code/', :ruby).html(:wrap => :span) + # #-> Some /code/ + # puts CodeRay.scan('Some /code/', :ruby).span #-> the same + # + # puts CodeRay.scan('Some code', :ruby).html( + # :wrap => nil, + # :line_numbers => :inline, + # :css => :style + # ) + # #-> 1 Some code + # + # == Options + # + # === :tab_width + # Convert \t characters to +n+ spaces (a number.) + # Default: 8 + # + # === :css + # How to include the styles; can be :class or :style. + # + # Default: :class + # + # === :wrap + # Wrap in :page, :div, :span or nil. + # + # You can also use Encoders::Div and Encoders::Span. + # + # Default: nil + # + # === :title + # + # The title of the HTML page (works only when :wrap is set to :page.) + # + # Default: 'CodeRay output' + # + # === :line_numbers + # Include line numbers in :table, :inline, :list or nil (no line numbers) + # + # Default: nil + # + # === :line_number_start + # Where to start with line number counting. + # + # Default: 1 + # + # === :bold_every + # Make every +n+-th number appear bold. + # + # Default: 10 + # + # === :highlight_lines + # + # Highlights certain line numbers. + # Can be any Enumerable, typically just an Array or Range, of numbers. + # + # Bolding is deactivated when :highlight_lines is set. It only makes sense + # in combination with :line_numbers. + # + # Default: nil + # + # === :hint + # Include some information into the output using the title attribute. + # Can be :info (show token type on mouse-over), :info_long (with full path) + # or :debug (via inspect). + # + # Default: false + class HTML < Encoder + + include Streamable + register_for :html + + FILE_EXTENSION = 'html' + + DEFAULT_OPTIONS = { + :tab_width => 8, + + :css => :class, + + :style => :cycnus, + :wrap => nil, + :title => 'CodeRay output', + + :line_numbers => nil, + :line_number_start => 1, + :bold_every => 10, + :highlight_lines => nil, + + :hint => false, + } + + helper :output, :css + + attr_reader :css + + protected + + HTML_ESCAPE = { #:nodoc: + '&' => '&', + '"' => '"', + '>' => '>', + '<' => '<', + } + + # This was to prevent illegal HTML. + # Strange chars should still be avoided in codes. + evil_chars = Array(0x00...0x20) - [?\n, ?\t, ?\s] + evil_chars.each { |i| HTML_ESCAPE[i.chr] = ' ' } + #ansi_chars = Array(0x7f..0xff) + #ansi_chars.each { |i| HTML_ESCAPE[i.chr] = '&#%d;' % i } + # \x9 (\t) and \xA (\n) not included + #HTML_ESCAPE_PATTERN = /[\t&"><\0-\x8\xB-\x1f\x7f-\xff]/ + HTML_ESCAPE_PATTERN = /[\t"&><\0-\x8\xB-\x1f]/ + + TOKEN_KIND_TO_INFO = Hash.new { |h, kind| + h[kind] = + case kind + when :pre_constant + 'Predefined constant' + else + kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } + end + } + + TRANSPARENT_TOKEN_KINDS = [ + :delimiter, :modifier, :content, :escape, :inline_delimiter, + ].to_set + + # Generate a hint about the given +classes+ in a +hint+ style. + # + # +hint+ may be :info, :info_long or :debug. + def self.token_path_to_hint hint, classes + title = + case hint + when :info + TOKEN_KIND_TO_INFO[classes.first] + when :info_long + classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') + when :debug + classes.inspect + end + title ? " title=\"#{title}\"" : '' + end + + def setup options + super + + @HTML_ESCAPE = HTML_ESCAPE.dup + @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] + + @opened = [nil] + @css = CSS.new options[:style] + + hint = options[:hint] + if hint and not [:debug, :info, :info_long].include? hint + raise ArgumentError, "Unknown value %p for :hint; \ + expected :info, :debug, false, or nil." % hint + end + + case options[:css] + + when :class + @css_style = Hash.new do |h, k| + c = CodeRay::Tokens::ClassOfKind[k.first] + if c == :NO_HIGHLIGHT and not hint + h[k.dup] = false + else + title = if hint + HTML.token_path_to_hint(hint, k[1..-1] << k.first) + else + '' + end + if c == :NO_HIGHLIGHT + h[k.dup] = '' % [title] + else + h[k.dup] = '' % [title, c] + end + end + end + + when :style + @css_style = Hash.new do |h, k| + if k.is_a? ::Array + styles = k.dup + else + styles = [k] + end + type = styles.first + classes = styles.map { |c| Tokens::ClassOfKind[c] } + if classes.first == :NO_HIGHLIGHT and not hint + h[k] = false + else + styles.shift if TRANSPARENT_TOKEN_KINDS.include? styles.first + title = HTML.token_path_to_hint hint, styles + style = @css[*classes] + h[k] = + if style + '' % [title, style] + else + false + end + end + end + + else + raise ArgumentError, "Unknown value %p for :css." % options[:css] + + end + end + + def finish options + not_needed = @opened.shift + @out << '' * @opened.size + unless @opened.empty? + warn '%d tokens still open: %p' % [@opened.size, @opened] + end + + @out.extend Output + @out.css = @css + @out.numerize! options[:line_numbers], options + @out.wrap! options[:wrap] + @out.apply_title! options[:title] + + super + end + + def token text, type = :plain + case text + + when nil + # raise 'Token with nil as text was given: %p' % [[text, type]] + + when String + if text =~ /#{HTML_ESCAPE_PATTERN}/o + text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } + end + @opened[0] = type + if text != "\n" && style = @css_style[@opened] + @out << style << text << '' + else + @out << text + end + + + # token groups, eg. strings + when :open + @opened[0] = type + @out << (@css_style[@opened] || '') + @opened << type + when :close + if @opened.empty? + # nothing to close + else + if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) + raise 'Malformed token stream: Trying to close a token (%p) \ + that is not open. Open are: %p.' % [type, @opened[1..-1]] + end + @out << '' + @opened.pop + end + + # whole lines to be highlighted, eg. a deleted line in a diff + when :begin_line + @opened[0] = type + if style = @css_style[@opened] + if style['class="'] + @out << style.sub('class="', 'class="line ') + else + @out << style.sub('>', ' class="line">') + end + else + @out << '' + end + @opened << type + when :end_line + if @opened.empty? + # nothing to close + else + if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) + raise 'Malformed token stream: Trying to close a line (%p) \ + that is not open. Open are: %p.' % [type, @opened[1..-1]] + end + @out << '' + @opened.pop + end + + else + raise 'unknown token kind: %p' % [text] + + end + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/json.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/json.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,69 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + # = JSON Encoder + class JSON < Encoder + + register_for :json + FILE_EXTENSION = 'json' + + protected + def setup options + begin + require 'json' + rescue LoadError + require 'rubygems' + require 'json' + end + @out = [] + end + + def text_token text, kind + { :type => 'text', :text => text, :kind => kind } + end + + def block_token action, kind + { :type => 'block', :action => action, :kind => kind } + end + + def finish options + @out.to_json + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' +$:.delete '.' +require 'rubygems' if RUBY_VERSION < '1.9' + +class JSONEncoderTest < Test::Unit::TestCase + + def test_json_output + tokens = CodeRay.scan <<-RUBY, :ruby +puts "Hello world!" + RUBY + require 'json' + assert_equal [ + {"type"=>"text", "text"=>"puts", "kind"=>"ident"}, + {"type"=>"text", "text"=>" ", "kind"=>"space"}, + {"type"=>"block", "action"=>"open", "kind"=>"string"}, + {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, + {"type"=>"text", "text"=>"Hello world!", "kind"=>"content"}, + {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, + {"type"=>"block", "action"=>"close", "kind"=>"string"}, + {"type"=>"text", "text"=>"\n", "kind"=>"space"} + ], JSON.load(tokens.json) + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/lines_of_code.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/lines_of_code.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,90 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + # Counts the LoC (Lines of Code). Returns an Integer >= 0. + # + # Alias: :loc + # + # Everything that is not comment, markup, doctype/shebang, or an empty line, + # is considered to be code. + # + # For example, + # * HTML files not containing JavaScript have 0 LoC + # * in a Java class without comments, LoC is the number of non-empty lines + # + # A Scanner class should define the token kinds that are not code in the + # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. + class LinesOfCode < Encoder + + register_for :lines_of_code + + NON_EMPTY_LINE = /^\s*\S.*$/ + + def compile tokens, options + if scanner = tokens.scanner + kinds_not_loc = scanner.class::KINDS_NOT_LOC + else + warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE + kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC + end + code = tokens.token_class_filter :exclude => kinds_not_loc + @loc = code.text.scan(NON_EMPTY_LINE).size + end + + def finish options + @loc + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class LinesOfCodeTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder + filter = nil + assert_nothing_raised do + filter = CodeRay.encoder :loc + end + assert_kind_of CodeRay::Encoders::LinesOfCode, filter + assert_nothing_raised do + filter = CodeRay.encoder :lines_of_code + end + assert_kind_of CodeRay::Encoders::LinesOfCode, filter + end + + def test_lines_of_code + tokens = CodeRay.scan <<-RUBY, :ruby +#!/usr/bin/env ruby + +# a minimal Ruby program +puts "Hello world!" + RUBY + assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) + assert_equal 1, tokens.lines_of_code + assert_equal 1, tokens.loc + end + + def test_filtering_block_tokens + tokens = CodeRay::Tokens.new + tokens << ["Hello\n", :world] + tokens << ["Hello\n", :space] + tokens << ["Hello\n", :comment] + assert_equal 2, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) + assert_equal 2, tokens.lines_of_code + assert_equal 2, tokens.loc + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/null.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/null.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,26 @@ +module CodeRay +module Encoders + + # = Null Encoder + # + # Does nothing and returns an empty string. + class Null < Encoder + + include Streamable + register_for :null + + # Defined for faster processing + def to_proc + proc {} + end + + protected + + def token(*) + # do nothing + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/page.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/page.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,20 @@ +module CodeRay +module Encoders + + load :html + + class Page < HTML + + FILE_EXTENSION = 'html' + + register_for :page + + DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ + :css => :class, + :wrap => :page, + :line_numbers => :table + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/span.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/span.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,19 @@ +module CodeRay +module Encoders + + load :html + + class Span < HTML + + FILE_EXTENSION = 'span.html' + + register_for :span + + DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ + :css => :style, + :wrap => :span + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/statistic.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/statistic.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,77 @@ +module CodeRay +module Encoders + + # Makes a statistic for the given tokens. + class Statistic < Encoder + + include Streamable + register_for :stats, :statistic + + attr_reader :type_stats, :real_token_count + + protected + + TypeStats = Struct.new :count, :size + + def setup options + @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } + @real_token_count = 0 + end + + def generate tokens, options + @tokens = tokens + super + end + + def text_token text, kind + @real_token_count += 1 unless kind == :space + @type_stats[kind].count += 1 + @type_stats[kind].size += text.size + @type_stats['TOTAL'].size += text.size + @type_stats['TOTAL'].count += 1 + end + + # TODO Hierarchy handling + def block_token action, kind + @type_stats['TOTAL'].count += 1 + @type_stats['open/close'].count += 1 + end + + STATS = <<-STATS + +Code Statistics + +Tokens %8d + Non-Whitespace %8d +Bytes Total %8d + +Token Types (%d): + type count ratio size (average) +------------------------------------------------------------- +%s + STATS +# space 12007 33.81 % 1.7 + TOKEN_TYPES_ROW = <<-TKR + %-20s %8d %6.2f %% %5.1f + TKR + + def finish options + all = @type_stats['TOTAL'] + all_count, all_size = all.count, all.size + @type_stats.each do |type, stat| + stat.size /= stat.count.to_f + end + types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| + TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] + end.join + STATS % [ + all_count, @real_token_count, all_size, + @type_stats.delete_if { |k, v| k.is_a? String }.size, + types_stats + ] + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/term.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/term.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,158 @@ +# encoders/term.rb +# By Rob Aldred (http://robaldred.co.uk) +# Based on idea by Nathan Weizenbaum (http://nex-3.com) +# MIT License (http://www.opensource.org/licenses/mit-license.php) +# +# A CodeRay encoder that outputs code highlighted for a color terminal. +# Check out http://robaldred.co.uk + +module CodeRay + module Encoders + class Term < Encoder + register_for :term + + TOKEN_COLORS = { + :annotation => '35', + :attribute_name => '33', + :attribute_name_fat => '33', + :attribute_value => '31', + :attribute_value_fat => '31', + :bin => '1;35', + :char => {:self => '36', :delimiter => '34'}, + :class => '1;35', + :class_variable => '36', + :color => '32', + :comment => '37', + :complex => '34', + :constant => ['34', '4'], + :decoration => '35', + :definition => '1;32', + :directive => ['32', '4'], + :doc => '46', + :doctype => '1;30', + :doc_string => ['31', '4'], + :entity => '33', + :error => ['1;33', '41'], + :exception => '1;31', + :float => '1;35', + :function => '1;34', + :global_variable => '42', + :hex => '1;36', + :important => '1;31', + :include => '33', + :integer => '1;34', + :interpreted => '1;35', + :key => '35', + :label => '1;4', + :local_variable => '33', + :oct => '1;35', + :operator_name => '1;29', + :pre_constant => '1;36', + :pre_type => '1;30', + :predefined => ['4', '1;34'], + :preprocessor => '36', + :pseudo_class => '34', + :regexp => { + :content => '31', + :delimiter => '1;29', + :modifier => '35', + :function => '1;29' + }, + :reserved => '1;31', + :shell => { + :self => '42', + :content => '1;29', + :delimiter => '37', + }, + :string => { + :self => '32', + :modifier => '1;32', + :escape => '1;36', + :delimiter => '1;32', + }, + :symbol => '1;32', + :tag => '34', + :tag_fat => '1;34', + :tag_special => ['34', '4'], + :type => '1;34', + :value => '36', + :variable => '34', + :insert => '42', + :delete => '41', + :change => '44', + :head => '45', + } + TOKEN_COLORS[:keyword] = TOKEN_COLORS[:reserved] + TOKEN_COLORS[:method] = TOKEN_COLORS[:function] + TOKEN_COLORS[:imaginary] = TOKEN_COLORS[:complex] + TOKEN_COLORS[:open] = TOKEN_COLORS[:close] = TOKEN_COLORS[:nesting_delimiter] = TOKEN_COLORS[:escape] = TOKEN_COLORS[:delimiter] + + protected + + def setup(options) + @out = '' + @opened = [nil] + @subcolors = nil + end + + def finish(options) + super + end + + def token text, type = :plain + case text + + when nil + # raise 'Token with nil as text was given: %p' % [[text, type]] + + when String + + if color = (@subcolors || TOKEN_COLORS)[type] + color = color[:self] || return if Hash === color + + @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0) + @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self] + else + @out << text + end + + # token groups, eg. strings + when :open + @opened[0] = type + if color = TOKEN_COLORS[type] + if Hash === color + @subcolors = color + @out << col(color[:self]) if color[:self] + else + @subcolors = {} + @out << col(color) + end + end + @opened << type + when :close + if @opened.empty? + # nothing to close + else + @out << col(0) if (@subcolors || {})[:self] + @subcolors = nil + @opened.pop + end + + # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff + when :begin_line + + when :end_line + + else + raise 'unknown token kind: %p' % [text] + end + end + + private + + def col(color) + Array(color).map { |c| "\e[#{c}m" }.join + end + end + end +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/text.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/text.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,32 @@ +module CodeRay +module Encoders + + class Text < Encoder + + include Streamable + register_for :text + + FILE_EXTENSION = 'txt' + + DEFAULT_OPTIONS = { + :separator => '' + } + + protected + def setup options + super + @sep = options[:separator] + end + + def text_token text, kind + text + @sep + end + + def finish options + super.chomp @sep + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/token_class_filter.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/token_class_filter.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,84 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + load :filter + + class TokenClassFilter < Filter + + include Streamable + register_for :token_class_filter + + DEFAULT_OPTIONS = { + :exclude => [], + :include => :all + } + + protected + def setup options + super + @exclude = options[:exclude] + @exclude = Array(@exclude) unless @exclude == :all + @include = options[:include] + @include = Array(@include) unless @include == :all + end + + def include_text_token? text, kind + (@include == :all || @include.include?(kind)) && + !(@exclude == :all || @exclude.include?(kind)) + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class TokenClassFilterTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Encoder + assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Filter + filter = nil + assert_nothing_raised do + filter = CodeRay.encoder :token_class_filter + end + assert_instance_of CodeRay::Encoders::TokenClassFilter, filter + end + + def test_filtering_text_tokens + tokens = CodeRay::Tokens.new + for i in 1..10 + tokens << [i.to_s, :index] + tokens << [' ', :space] if i < 10 + end + assert_equal 10, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :space).size + assert_equal 10, tokens.token_class_filter(:exclude => :space).size + assert_equal 9, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :space).size + assert_equal 9, tokens.token_class_filter(:include => :space).size + assert_equal 0, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :all).size + assert_equal 0, tokens.token_class_filter(:exclude => :all).size + end + + def test_filtering_block_tokens + tokens = CodeRay::Tokens.new + 10.times do |i| + tokens << [:open, :index] + tokens << [i.to_s, :content] + tokens << [:close, :index] + end + assert_equal 20, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :blubb).size + assert_equal 20, tokens.token_class_filter(:include => :blubb).size + assert_equal 30, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :index).size + assert_equal 30, tokens.token_class_filter(:exclude => :index).size + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/xml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/xml.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,71 @@ +module CodeRay +module Encoders + + # = XML Encoder + # + # Uses REXML. Very slow. + class XML < Encoder + + include Streamable + register_for :xml + + FILE_EXTENSION = 'xml' + + require 'rexml/document' + + DEFAULT_OPTIONS = { + :tab_width => 8, + :pretty => -1, + :transitive => false, + } + + protected + + def setup options + @doc = REXML::Document.new + @doc << REXML::XMLDecl.new + @tab_width = options[:tab_width] + @root = @node = @doc.add_element('coderay-tokens') + end + + def finish options + @out = '' + @doc.write @out, options[:pretty], options[:transitive], true + @out + end + + def text_token text, kind + if kind == :space + token = @node + else + token = @node.add_element kind.to_s + end + text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| + case + when space + token << REXML::Text.new(space, true) + when tab + token << REXML::Text.new(tab, true) + when nl + token << REXML::Text.new(nl, true) + else + token << REXML::Text.new($&) + end + end + end + + def open_token kind + @node = @node.add_element kind.to_s + end + + def close_token kind + if @node == @root + raise 'no token to close!' + end + @node = @node.parent + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/yaml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/.svn/text-base/yaml.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,22 @@ +module CodeRay +module Encoders + + # = YAML Encoder + # + # Slow. + class YAML < Encoder + + register_for :yaml + + FILE_EXTENSION = 'yaml' + + protected + def compile tokens, options + require 'yaml' + @out = tokens.to_a.to_yaml + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/_map.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/_map.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,12 @@ +module CodeRay +module Encoders + + map \ + :loc => :lines_of_code, + :plain => :text, + :stats => :statistic, + :terminal => :term, + :tex => :latex + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/comment_filter.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/comment_filter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,43 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + load :token_class_filter + + class CommentFilter < TokenClassFilter + + register_for :comment_filter + + DEFAULT_OPTIONS = superclass::DEFAULT_OPTIONS.merge \ + :exclude => [:comment] + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class CommentFilterTest < Test::Unit::TestCase + + def test_filtering_comments + tokens = CodeRay.scan <<-RUBY, :ruby +#!/usr/bin/env ruby +# a minimal Ruby program +puts "Hello world!" + RUBY + assert_equal <<-RUBY_FILTERED, tokens.comment_filter.text +#!/usr/bin/env ruby + +puts "Hello world!" + RUBY_FILTERED + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/count.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/count.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,21 @@ +module CodeRay +module Encoders + + class Count < Encoder + + include Streamable + register_for :count + + protected + + def setup options + @out = 0 + end + + def token text, kind + @out += 1 + end + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/debug.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/debug.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,49 @@ +module CodeRay +module Encoders + + # = Debug Encoder + # + # Fast encoder producing simple debug output. + # + # It is readable and diff-able and is used for testing. + # + # You cannot fully restore the tokens information from the + # output, because consecutive :space tokens are merged. + # Use Tokens#dump for caching purposes. + class Debug < Encoder + + include Streamable + register_for :debug + + FILE_EXTENSION = 'raydebug' + + protected + def text_token text, kind + if kind == :space + text + else + text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ + "#{kind}(#{text})" + end + end + + def open_token kind + "#{kind}<" + end + + def close_token kind + ">" + end + + def begin_line kind + "#{kind}[" + end + + def end_line kind + "]" + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/div.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/div.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,19 @@ +module CodeRay +module Encoders + + load :html + + class Div < HTML + + FILE_EXTENSION = 'div.html' + + register_for :div + + DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ + :css => :style, + :wrap => :div + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/filter.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/filter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,75 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + class Filter < Encoder + + register_for :filter + + protected + def setup options + @out = Tokens.new + end + + def text_token text, kind + [text, kind] if include_text_token? text, kind + end + + def include_text_token? text, kind + true + end + + def block_token action, kind + [action, kind] if include_block_token? action, kind + end + + def include_block_token? action, kind + true + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class FilterTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::Filter < CodeRay::Encoders::Encoder + filter = nil + assert_nothing_raised do + filter = CodeRay.encoder :filter + end + assert_kind_of CodeRay::Encoders::Encoder, filter + end + + def test_filtering_text_tokens + tokens = CodeRay::Tokens.new + 10.times do |i| + tokens << [i.to_s, :index] + end + assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) + assert_equal tokens, tokens.filter + end + + def test_filtering_block_tokens + tokens = CodeRay::Tokens.new + 10.times do |i| + tokens << [:open, :index] + tokens << [i.to_s, :content] + tokens << [:close, :index] + end + assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) + assert_equal tokens, tokens.filter + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,309 @@ +require 'set' + +module CodeRay +module Encoders + + # = HTML Encoder + # + # This is CodeRay's most important highlighter: + # It provides save, fast XHTML generation and CSS support. + # + # == Usage + # + # require 'coderay' + # puts CodeRay.scan('Some /code/', :ruby).html #-> a HTML page + # puts CodeRay.scan('Some /code/', :ruby).html(:wrap => :span) + # #-> Some /code/ + # puts CodeRay.scan('Some /code/', :ruby).span #-> the same + # + # puts CodeRay.scan('Some code', :ruby).html( + # :wrap => nil, + # :line_numbers => :inline, + # :css => :style + # ) + # #-> 1 Some code + # + # == Options + # + # === :tab_width + # Convert \t characters to +n+ spaces (a number.) + # Default: 8 + # + # === :css + # How to include the styles; can be :class or :style. + # + # Default: :class + # + # === :wrap + # Wrap in :page, :div, :span or nil. + # + # You can also use Encoders::Div and Encoders::Span. + # + # Default: nil + # + # === :title + # + # The title of the HTML page (works only when :wrap is set to :page.) + # + # Default: 'CodeRay output' + # + # === :line_numbers + # Include line numbers in :table, :inline, :list or nil (no line numbers) + # + # Default: nil + # + # === :line_number_start + # Where to start with line number counting. + # + # Default: 1 + # + # === :bold_every + # Make every +n+-th number appear bold. + # + # Default: 10 + # + # === :highlight_lines + # + # Highlights certain line numbers. + # Can be any Enumerable, typically just an Array or Range, of numbers. + # + # Bolding is deactivated when :highlight_lines is set. It only makes sense + # in combination with :line_numbers. + # + # Default: nil + # + # === :hint + # Include some information into the output using the title attribute. + # Can be :info (show token type on mouse-over), :info_long (with full path) + # or :debug (via inspect). + # + # Default: false + class HTML < Encoder + + include Streamable + register_for :html + + FILE_EXTENSION = 'html' + + DEFAULT_OPTIONS = { + :tab_width => 8, + + :css => :class, + + :style => :cycnus, + :wrap => nil, + :title => 'CodeRay output', + + :line_numbers => nil, + :line_number_start => 1, + :bold_every => 10, + :highlight_lines => nil, + + :hint => false, + } + + helper :output, :css + + attr_reader :css + + protected + + HTML_ESCAPE = { #:nodoc: + '&' => '&', + '"' => '"', + '>' => '>', + '<' => '<', + } + + # This was to prevent illegal HTML. + # Strange chars should still be avoided in codes. + evil_chars = Array(0x00...0x20) - [?\n, ?\t, ?\s] + evil_chars.each { |i| HTML_ESCAPE[i.chr] = ' ' } + #ansi_chars = Array(0x7f..0xff) + #ansi_chars.each { |i| HTML_ESCAPE[i.chr] = '&#%d;' % i } + # \x9 (\t) and \xA (\n) not included + #HTML_ESCAPE_PATTERN = /[\t&"><\0-\x8\xB-\x1f\x7f-\xff]/ + HTML_ESCAPE_PATTERN = /[\t"&><\0-\x8\xB-\x1f]/ + + TOKEN_KIND_TO_INFO = Hash.new { |h, kind| + h[kind] = + case kind + when :pre_constant + 'Predefined constant' + else + kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } + end + } + + TRANSPARENT_TOKEN_KINDS = [ + :delimiter, :modifier, :content, :escape, :inline_delimiter, + ].to_set + + # Generate a hint about the given +classes+ in a +hint+ style. + # + # +hint+ may be :info, :info_long or :debug. + def self.token_path_to_hint hint, classes + title = + case hint + when :info + TOKEN_KIND_TO_INFO[classes.first] + when :info_long + classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') + when :debug + classes.inspect + end + title ? " title=\"#{title}\"" : '' + end + + def setup options + super + + @HTML_ESCAPE = HTML_ESCAPE.dup + @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] + + @opened = [nil] + @css = CSS.new options[:style] + + hint = options[:hint] + if hint and not [:debug, :info, :info_long].include? hint + raise ArgumentError, "Unknown value %p for :hint; \ + expected :info, :debug, false, or nil." % hint + end + + case options[:css] + + when :class + @css_style = Hash.new do |h, k| + c = CodeRay::Tokens::ClassOfKind[k.first] + if c == :NO_HIGHLIGHT and not hint + h[k.dup] = false + else + title = if hint + HTML.token_path_to_hint(hint, k[1..-1] << k.first) + else + '' + end + if c == :NO_HIGHLIGHT + h[k.dup] = '' % [title] + else + h[k.dup] = '' % [title, c] + end + end + end + + when :style + @css_style = Hash.new do |h, k| + if k.is_a? ::Array + styles = k.dup + else + styles = [k] + end + type = styles.first + classes = styles.map { |c| Tokens::ClassOfKind[c] } + if classes.first == :NO_HIGHLIGHT and not hint + h[k] = false + else + styles.shift if TRANSPARENT_TOKEN_KINDS.include? styles.first + title = HTML.token_path_to_hint hint, styles + style = @css[*classes] + h[k] = + if style + '' % [title, style] + else + false + end + end + end + + else + raise ArgumentError, "Unknown value %p for :css." % options[:css] + + end + end + + def finish options + not_needed = @opened.shift + @out << '' * @opened.size + unless @opened.empty? + warn '%d tokens still open: %p' % [@opened.size, @opened] + end + + @out.extend Output + @out.css = @css + @out.numerize! options[:line_numbers], options + @out.wrap! options[:wrap] + @out.apply_title! options[:title] + + super + end + + def token text, type = :plain + case text + + when nil + # raise 'Token with nil as text was given: %p' % [[text, type]] + + when String + if text =~ /#{HTML_ESCAPE_PATTERN}/o + text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } + end + @opened[0] = type + if text != "\n" && style = @css_style[@opened] + @out << style << text << '' + else + @out << text + end + + + # token groups, eg. strings + when :open + @opened[0] = type + @out << (@css_style[@opened] || '') + @opened << type + when :close + if @opened.empty? + # nothing to close + else + if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) + raise 'Malformed token stream: Trying to close a token (%p) \ + that is not open. Open are: %p.' % [type, @opened[1..-1]] + end + @out << '' + @opened.pop + end + + # whole lines to be highlighted, eg. a deleted line in a diff + when :begin_line + @opened[0] = type + if style = @css_style[@opened] + if style['class="'] + @out << style.sub('class="', 'class="line ') + else + @out << style.sub('>', ' class="line">') + end + else + @out << '' + end + @opened << type + when :end_line + if @opened.empty? + # nothing to close + else + if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) + raise 'Malformed token stream: Trying to close a line (%p) \ + that is not open. Open are: %p.' % [type, @opened[1..-1]] + end + @out << '' + @opened.pop + end + + else + raise 'unknown token kind: %p' % [text] + + end + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html +END +output.rb +K 25 +svn:wc:ra_dav:version-url +V 86 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/output.rb +END +numerization.rb +K 25 +svn:wc:ra_dav:version-url +V 92 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/numerization.rb +END +css.rb +K 25 +svn:wc:ra_dav:version-url +V 83 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/css.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,130 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +output.rb +file + + + + +2011-03-03T11:05:13.000000Z +8d0cea50dc9e6743bd10a8e0c6f1db17 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5271 + +numerization.rb +file + + + + +2011-03-03T11:05:13.000000Z +a5e204ed674c970d0aea6d1d9dbfd18e +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4219 + +css.rb +file + + + + +2011-03-03T11:05:13.000000Z +aa931c09ed5f16abfed3b7c99f0f684d +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1626 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/text-base/css.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/text-base/css.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,70 @@ +module CodeRay +module Encoders + + class HTML + class CSS + + attr :stylesheet + + def CSS.load_stylesheet style = nil + CodeRay::Styles[style] + end + + def initialize style = :default + @classes = Hash.new + style = CSS.load_stylesheet style + @stylesheet = [ + style::CSS_MAIN_STYLES, + style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ') + ].join("\n") + parse style::TOKEN_COLORS + end + + def [] *styles + cl = @classes[styles.first] + return '' unless cl + style = '' + 1.upto(styles.size) do |offset| + break if style = cl[styles[offset .. -1]] + end + # warn 'Style not found: %p' % [styles] if style.empty? + return style + end + + private + + CSS_CLASS_PATTERN = / + ( # $1 = selectors + (?: + (?: \s* \. [-\w]+ )+ + \s* ,? + )+ + ) + \s* \{ \s* + ( [^\}]+ )? # $2 = style + \s* \} \s* + | + ( . ) # $3 = error + /mx + def parse stylesheet + stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error| + raise "CSS parse error: '#{error.inspect}' not recognized" if error + for selector in selectors.split(',') + classes = selector.scan(/[-\w]+/) + cl = classes.pop + @classes[cl] ||= Hash.new + @classes[cl][classes] = style.to_s.strip.delete(' ').chomp(';') + end + end + end + + end + end + +end +end + +if $0 == __FILE__ + require 'pp' + pp CodeRay::Encoders::HTML::CSS.new +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/text-base/numerization.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/text-base/numerization.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,133 @@ +module CodeRay +module Encoders + + class HTML + + module Output + + def numerize *args + clone.numerize!(*args) + end + +=begin NUMERIZABLE_WRAPPINGS = { + :table => [:div, :page, nil], + :inline => :all, + :list => [:div, :page, nil] + } + NUMERIZABLE_WRAPPINGS.default = :all +=end + def numerize! mode = :table, options = {} + return self unless mode + + options = DEFAULT_OPTIONS.merge options + + start = options[:line_number_start] + unless start.is_a? Integer + raise ArgumentError, "Invalid value %p for :line_number_start; Integer expected." % start + end + + #allowed_wrappings = NUMERIZABLE_WRAPPINGS[mode] + #unless allowed_wrappings == :all or allowed_wrappings.include? options[:wrap] + # raise ArgumentError, "Can't numerize, :wrap must be in %p, but is %p" % [NUMERIZABLE_WRAPPINGS, options[:wrap]] + #end + + bold_every = options[:bold_every] + highlight_lines = options[:highlight_lines] + bolding = + if bold_every == false && highlight_lines == nil + proc { |line| line.to_s } + elsif highlight_lines.is_a? Enumerable + highlight_lines = highlight_lines.to_set + proc do |line| + if highlight_lines.include? line + "#{line}" # highlighted line numbers in bold + else + line.to_s + end + end + elsif bold_every.is_a? Integer + raise ArgumentError, ":bolding can't be 0." if bold_every == 0 + proc do |line| + if line % bold_every == 0 + "#{line}" # every bold_every-th number in bold + else + line.to_s + end + end + else + raise ArgumentError, 'Invalid value %p for :bolding; false or Integer expected.' % bold_every + end + + case mode + when :inline + max_width = (start + line_count).to_s.size + line_number = start + gsub!(/^/) do + line_number_text = bolding.call line_number + indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x) + res = "#{indent}#{line_number_text} " + line_number += 1 + res + end + + when :table + # This is really ugly. + # Because even monospace fonts seem to have different heights when bold, + # I make the newline bold, both in the code and the line numbers. + # FIXME Still not working perfect for Mr. Internet Exploder + line_numbers = (start ... start + line_count).to_a.map(&bolding).join("\n") + line_numbers << "\n" # also for Mr. MS Internet Exploder :-/ + line_numbers.gsub!(/\n/) { "\n" } + + line_numbers_table_tpl = TABLE.apply('LINE_NUMBERS', line_numbers) + gsub!("
    \n", '
    ') + gsub!("\n", "\n") + wrap_in! line_numbers_table_tpl + @wrapped_in = :div + + when :list + opened_tags = [] + gsub!(/^.*$\n?/) do |line| + line.chomp! + + open = opened_tags.join + line.scan(%r!<(/)?span[^>]*>?!) do |close,| + if close + opened_tags.pop + else + opened_tags << $& + end + end + close = '' * opened_tags.size + + "
  • #{open}#{line}#{close}
  • \n" + end + chomp!("\n") + wrap_in! LIST + @wrapped_in = :div + + else + raise ArgumentError, 'Unknown value %p for mode: expected one of %p' % + [mode, [:table, :list, :inline]] + end + + self + end + + def line_count + line_count = count("\n") + position_of_last_newline = rindex(?\n) + if position_of_last_newline + after_last_newline = self[position_of_last_newline + 1 .. -1] + ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] + line_count += 1 if not ends_with_newline + end + line_count + end + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/text-base/output.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/.svn/text-base/output.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,206 @@ +module CodeRay +module Encoders + + class HTML + + # This module is included in the output String from thew HTML Encoder. + # + # It provides methods like wrap, div, page etc. + # + # Remember to use #clone instead of #dup to keep the modules the object was + # extended with. + # + # TODO: more doc. + module Output + + require 'coderay/encoders/html/numerization.rb' + + attr_accessor :css + + class << self + + # This makes Output look like a class. + # + # Example: + # + # a = Output.new 'Code' + # a.wrap! :page + def new string, css = CSS.new, element = nil + output = string.clone.extend self + output.wrapped_in = element + output.css = css + output + end + + # Raises an exception if an object that doesn't respond to to_str is extended by Output, + # to prevent users from misuse. Use Module#remove_method to disable. + def extended o + warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str + end + + def make_stylesheet css, in_tag = false + sheet = css.stylesheet + sheet = <<-CSS if in_tag + + CSS + sheet + end + + def page_template_for_css css + sheet = make_stylesheet css + PAGE.apply 'CSS', sheet + end + + # Define a new wrapper. This is meta programming. + def wrapper *wrappers + wrappers.each do |wrapper| + define_method wrapper do |*args| + wrap wrapper, *args + end + define_method "#{wrapper}!".to_sym do |*args| + wrap! wrapper, *args + end + end + end + + end + + wrapper :div, :span, :page + + def wrapped_in? element + wrapped_in == element + end + + def wrapped_in + @wrapped_in ||= nil + end + attr_writer :wrapped_in + + def wrap_in template + clone.wrap_in! template + end + + def wrap_in! template + Template.wrap! self, template, 'CONTENT' + self + end + + def apply_title! title + self.sub!(/()(<\/title>)/) { $1 + title + $2 } + self + end + + def wrap! element, *args + return self if not element or element == wrapped_in + case element + when :div + raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil + wrap_in! DIV + when :span + raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil + wrap_in! SPAN + when :page + wrap! :div if wrapped_in? nil + raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div + wrap_in! Output.page_template_for_css(@css) + if args.first.is_a?(Hash) && title = args.first[:title] + apply_title! title + end + self + when nil + return self + else + raise "Unknown value %p for :wrap" % element + end + @wrapped_in = element + self + end + + def wrap *args + clone.wrap!(*args) + end + + def stylesheet in_tag = false + Output.make_stylesheet @css, in_tag + end + + class Template < String + + def self.wrap! str, template, target + target = Regexp.new(Regexp.escape("<%#{target}%>")) + if template =~ target + str[0,0] = $` + str << $' + else + raise "Template target <%%%p%%> not found" % target + end + end + + def apply target, replacement + target = Regexp.new(Regexp.escape("<%#{target}%>")) + if self =~ target + Template.new($` + replacement + $') + else + raise "Template target <%%%p%%> not found" % target + end + end + + module Simple + def ` str #` <-- for stupid editors + Template.new str + end + end + end + + extend Template::Simple + +#-- don't include the templates in docu + + SPAN = `<span class="CodeRay"><%CONTENT%></span>` + + DIV = <<-`DIV` +<div class="CodeRay"> + <div class="code"><pre><%CONTENT%></pre></div> +</div> + DIV + + TABLE = <<-`TABLE` +<table class="CodeRay"><tr> + <td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre><%LINE_NUMBERS%></pre></td> + <td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><%CONTENT%></pre></td> +</tr></table> + TABLE + # title="double click to expand" + + LIST = <<-`LIST` +<ol class="CodeRay"> +<%CONTENT%> +</ol> + LIST + + PAGE = <<-`PAGE` +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de"> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <title> + + + + +<%CONTENT%> + + + PAGE + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/css.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/css.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,70 @@ +module CodeRay +module Encoders + + class HTML + class CSS + + attr :stylesheet + + def CSS.load_stylesheet style = nil + CodeRay::Styles[style] + end + + def initialize style = :default + @classes = Hash.new + style = CSS.load_stylesheet style + @stylesheet = [ + style::CSS_MAIN_STYLES, + style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ') + ].join("\n") + parse style::TOKEN_COLORS + end + + def [] *styles + cl = @classes[styles.first] + return '' unless cl + style = '' + 1.upto(styles.size) do |offset| + break if style = cl[styles[offset .. -1]] + end + # warn 'Style not found: %p' % [styles] if style.empty? + return style + end + + private + + CSS_CLASS_PATTERN = / + ( # $1 = selectors + (?: + (?: \s* \. [-\w]+ )+ + \s* ,? + )+ + ) + \s* \{ \s* + ( [^\}]+ )? # $2 = style + \s* \} \s* + | + ( . ) # $3 = error + /mx + def parse stylesheet + stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error| + raise "CSS parse error: '#{error.inspect}' not recognized" if error + for selector in selectors.split(',') + classes = selector.scan(/[-\w]+/) + cl = classes.pop + @classes[cl] ||= Hash.new + @classes[cl][classes] = style.to_s.strip.delete(' ').chomp(';') + end + end + end + + end + end + +end +end + +if $0 == __FILE__ + require 'pp' + pp CodeRay::Encoders::HTML::CSS.new +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/numerization.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/numerization.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,133 @@ +module CodeRay +module Encoders + + class HTML + + module Output + + def numerize *args + clone.numerize!(*args) + end + +=begin NUMERIZABLE_WRAPPINGS = { + :table => [:div, :page, nil], + :inline => :all, + :list => [:div, :page, nil] + } + NUMERIZABLE_WRAPPINGS.default = :all +=end + def numerize! mode = :table, options = {} + return self unless mode + + options = DEFAULT_OPTIONS.merge options + + start = options[:line_number_start] + unless start.is_a? Integer + raise ArgumentError, "Invalid value %p for :line_number_start; Integer expected." % start + end + + #allowed_wrappings = NUMERIZABLE_WRAPPINGS[mode] + #unless allowed_wrappings == :all or allowed_wrappings.include? options[:wrap] + # raise ArgumentError, "Can't numerize, :wrap must be in %p, but is %p" % [NUMERIZABLE_WRAPPINGS, options[:wrap]] + #end + + bold_every = options[:bold_every] + highlight_lines = options[:highlight_lines] + bolding = + if bold_every == false && highlight_lines == nil + proc { |line| line.to_s } + elsif highlight_lines.is_a? Enumerable + highlight_lines = highlight_lines.to_set + proc do |line| + if highlight_lines.include? line + "#{line}" # highlighted line numbers in bold + else + line.to_s + end + end + elsif bold_every.is_a? Integer + raise ArgumentError, ":bolding can't be 0." if bold_every == 0 + proc do |line| + if line % bold_every == 0 + "#{line}" # every bold_every-th number in bold + else + line.to_s + end + end + else + raise ArgumentError, 'Invalid value %p for :bolding; false or Integer expected.' % bold_every + end + + case mode + when :inline + max_width = (start + line_count).to_s.size + line_number = start + gsub!(/^/) do + line_number_text = bolding.call line_number + indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x) + res = "#{indent}#{line_number_text} " + line_number += 1 + res + end + + when :table + # This is really ugly. + # Because even monospace fonts seem to have different heights when bold, + # I make the newline bold, both in the code and the line numbers. + # FIXME Still not working perfect for Mr. Internet Exploder + line_numbers = (start ... start + line_count).to_a.map(&bolding).join("\n") + line_numbers << "\n" # also for Mr. MS Internet Exploder :-/ + line_numbers.gsub!(/\n/) { "\n" } + + line_numbers_table_tpl = TABLE.apply('LINE_NUMBERS', line_numbers) + gsub!("
    \n", '
    ') + gsub!("\n", "\n") + wrap_in! line_numbers_table_tpl + @wrapped_in = :div + + when :list + opened_tags = [] + gsub!(/^.*$\n?/) do |line| + line.chomp! + + open = opened_tags.join + line.scan(%r!<(/)?span[^>]*>?!) do |close,| + if close + opened_tags.pop + else + opened_tags << $& + end + end + close = '' * opened_tags.size + + "
  • #{open}#{line}#{close}
  • \n" + end + chomp!("\n") + wrap_in! LIST + @wrapped_in = :div + + else + raise ArgumentError, 'Unknown value %p for mode: expected one of %p' % + [mode, [:table, :list, :inline]] + end + + self + end + + def line_count + line_count = count("\n") + position_of_last_newline = rindex(?\n) + if position_of_last_newline + after_last_newline = self[position_of_last_newline + 1 .. -1] + ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] + line_count += 1 if not ends_with_newline + end + line_count + end + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/output.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/html/output.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,206 @@ +module CodeRay +module Encoders + + class HTML + + # This module is included in the output String from thew HTML Encoder. + # + # It provides methods like wrap, div, page etc. + # + # Remember to use #clone instead of #dup to keep the modules the object was + # extended with. + # + # TODO: more doc. + module Output + + require 'coderay/encoders/html/numerization.rb' + + attr_accessor :css + + class << self + + # This makes Output look like a class. + # + # Example: + # + # a = Output.new 'Code' + # a.wrap! :page + def new string, css = CSS.new, element = nil + output = string.clone.extend self + output.wrapped_in = element + output.css = css + output + end + + # Raises an exception if an object that doesn't respond to to_str is extended by Output, + # to prevent users from misuse. Use Module#remove_method to disable. + def extended o + warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str + end + + def make_stylesheet css, in_tag = false + sheet = css.stylesheet + sheet = <<-CSS if in_tag + + CSS + sheet + end + + def page_template_for_css css + sheet = make_stylesheet css + PAGE.apply 'CSS', sheet + end + + # Define a new wrapper. This is meta programming. + def wrapper *wrappers + wrappers.each do |wrapper| + define_method wrapper do |*args| + wrap wrapper, *args + end + define_method "#{wrapper}!".to_sym do |*args| + wrap! wrapper, *args + end + end + end + + end + + wrapper :div, :span, :page + + def wrapped_in? element + wrapped_in == element + end + + def wrapped_in + @wrapped_in ||= nil + end + attr_writer :wrapped_in + + def wrap_in template + clone.wrap_in! template + end + + def wrap_in! template + Template.wrap! self, template, 'CONTENT' + self + end + + def apply_title! title + self.sub!(/()(<\/title>)/) { $1 + title + $2 } + self + end + + def wrap! element, *args + return self if not element or element == wrapped_in + case element + when :div + raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil + wrap_in! DIV + when :span + raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil + wrap_in! SPAN + when :page + wrap! :div if wrapped_in? nil + raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div + wrap_in! Output.page_template_for_css(@css) + if args.first.is_a?(Hash) && title = args.first[:title] + apply_title! title + end + self + when nil + return self + else + raise "Unknown value %p for :wrap" % element + end + @wrapped_in = element + self + end + + def wrap *args + clone.wrap!(*args) + end + + def stylesheet in_tag = false + Output.make_stylesheet @css, in_tag + end + + class Template < String + + def self.wrap! str, template, target + target = Regexp.new(Regexp.escape("<%#{target}%>")) + if template =~ target + str[0,0] = $` + str << $' + else + raise "Template target <%%%p%%> not found" % target + end + end + + def apply target, replacement + target = Regexp.new(Regexp.escape("<%#{target}%>")) + if self =~ target + Template.new($` + replacement + $') + else + raise "Template target <%%%p%%> not found" % target + end + end + + module Simple + def ` str #` <-- for stupid editors + Template.new str + end + end + end + + extend Template::Simple + +#-- don't include the templates in docu + + SPAN = `<span class="CodeRay"><%CONTENT%></span>` + + DIV = <<-`DIV` +<div class="CodeRay"> + <div class="code"><pre><%CONTENT%></pre></div> +</div> + DIV + + TABLE = <<-`TABLE` +<table class="CodeRay"><tr> + <td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre><%LINE_NUMBERS%></pre></td> + <td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><%CONTENT%></pre></td> +</tr></table> + TABLE + # title="double click to expand" + + LIST = <<-`LIST` +<ol class="CodeRay"> +<%CONTENT%> +</ol> + LIST + + PAGE = <<-`PAGE` +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de"> +<head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + <title> + + + + +<%CONTENT%> + + + PAGE + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/json.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/json.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,69 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + # = JSON Encoder + class JSON < Encoder + + register_for :json + FILE_EXTENSION = 'json' + + protected + def setup options + begin + require 'json' + rescue LoadError + require 'rubygems' + require 'json' + end + @out = [] + end + + def text_token text, kind + { :type => 'text', :text => text, :kind => kind } + end + + def block_token action, kind + { :type => 'block', :action => action, :kind => kind } + end + + def finish options + @out.to_json + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' +$:.delete '.' +require 'rubygems' if RUBY_VERSION < '1.9' + +class JSONEncoderTest < Test::Unit::TestCase + + def test_json_output + tokens = CodeRay.scan <<-RUBY, :ruby +puts "Hello world!" + RUBY + require 'json' + assert_equal [ + {"type"=>"text", "text"=>"puts", "kind"=>"ident"}, + {"type"=>"text", "text"=>" ", "kind"=>"space"}, + {"type"=>"block", "action"=>"open", "kind"=>"string"}, + {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, + {"type"=>"text", "text"=>"Hello world!", "kind"=>"content"}, + {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, + {"type"=>"block", "action"=>"close", "kind"=>"string"}, + {"type"=>"text", "text"=>"\n", "kind"=>"space"} + ], JSON.load(tokens.json) + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/lines_of_code.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/lines_of_code.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,90 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + # Counts the LoC (Lines of Code). Returns an Integer >= 0. + # + # Alias: :loc + # + # Everything that is not comment, markup, doctype/shebang, or an empty line, + # is considered to be code. + # + # For example, + # * HTML files not containing JavaScript have 0 LoC + # * in a Java class without comments, LoC is the number of non-empty lines + # + # A Scanner class should define the token kinds that are not code in the + # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. + class LinesOfCode < Encoder + + register_for :lines_of_code + + NON_EMPTY_LINE = /^\s*\S.*$/ + + def compile tokens, options + if scanner = tokens.scanner + kinds_not_loc = scanner.class::KINDS_NOT_LOC + else + warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE + kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC + end + code = tokens.token_class_filter :exclude => kinds_not_loc + @loc = code.text.scan(NON_EMPTY_LINE).size + end + + def finish options + @loc + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class LinesOfCodeTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder + filter = nil + assert_nothing_raised do + filter = CodeRay.encoder :loc + end + assert_kind_of CodeRay::Encoders::LinesOfCode, filter + assert_nothing_raised do + filter = CodeRay.encoder :lines_of_code + end + assert_kind_of CodeRay::Encoders::LinesOfCode, filter + end + + def test_lines_of_code + tokens = CodeRay.scan <<-RUBY, :ruby +#!/usr/bin/env ruby + +# a minimal Ruby program +puts "Hello world!" + RUBY + assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) + assert_equal 1, tokens.lines_of_code + assert_equal 1, tokens.loc + end + + def test_filtering_block_tokens + tokens = CodeRay::Tokens.new + tokens << ["Hello\n", :world] + tokens << ["Hello\n", :space] + tokens << ["Hello\n", :comment] + assert_equal 2, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) + assert_equal 2, tokens.lines_of_code + assert_equal 2, tokens.loc + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/null.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/null.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,26 @@ +module CodeRay +module Encoders + + # = Null Encoder + # + # Does nothing and returns an empty string. + class Null < Encoder + + include Streamable + register_for :null + + # Defined for faster processing + def to_proc + proc {} + end + + protected + + def token(*) + # do nothing + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/page.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/page.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,20 @@ +module CodeRay +module Encoders + + load :html + + class Page < HTML + + FILE_EXTENSION = 'html' + + register_for :page + + DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ + :css => :class, + :wrap => :page, + :line_numbers => :table + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/span.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/span.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,19 @@ +module CodeRay +module Encoders + + load :html + + class Span < HTML + + FILE_EXTENSION = 'span.html' + + register_for :span + + DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ + :css => :style, + :wrap => :span + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/statistic.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/statistic.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,77 @@ +module CodeRay +module Encoders + + # Makes a statistic for the given tokens. + class Statistic < Encoder + + include Streamable + register_for :stats, :statistic + + attr_reader :type_stats, :real_token_count + + protected + + TypeStats = Struct.new :count, :size + + def setup options + @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } + @real_token_count = 0 + end + + def generate tokens, options + @tokens = tokens + super + end + + def text_token text, kind + @real_token_count += 1 unless kind == :space + @type_stats[kind].count += 1 + @type_stats[kind].size += text.size + @type_stats['TOTAL'].size += text.size + @type_stats['TOTAL'].count += 1 + end + + # TODO Hierarchy handling + def block_token action, kind + @type_stats['TOTAL'].count += 1 + @type_stats['open/close'].count += 1 + end + + STATS = <<-STATS + +Code Statistics + +Tokens %8d + Non-Whitespace %8d +Bytes Total %8d + +Token Types (%d): + type count ratio size (average) +------------------------------------------------------------- +%s + STATS +# space 12007 33.81 % 1.7 + TOKEN_TYPES_ROW = <<-TKR + %-20s %8d %6.2f %% %5.1f + TKR + + def finish options + all = @type_stats['TOTAL'] + all_count, all_size = all.count, all.size + @type_stats.each do |type, stat| + stat.size /= stat.count.to_f + end + types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| + TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] + end.join + STATS % [ + all_count, @real_token_count, all_size, + @type_stats.delete_if { |k, v| k.is_a? String }.size, + types_stats + ] + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/term.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/term.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,158 @@ +# encoders/term.rb +# By Rob Aldred (http://robaldred.co.uk) +# Based on idea by Nathan Weizenbaum (http://nex-3.com) +# MIT License (http://www.opensource.org/licenses/mit-license.php) +# +# A CodeRay encoder that outputs code highlighted for a color terminal. +# Check out http://robaldred.co.uk + +module CodeRay + module Encoders + class Term < Encoder + register_for :term + + TOKEN_COLORS = { + :annotation => '35', + :attribute_name => '33', + :attribute_name_fat => '33', + :attribute_value => '31', + :attribute_value_fat => '31', + :bin => '1;35', + :char => {:self => '36', :delimiter => '34'}, + :class => '1;35', + :class_variable => '36', + :color => '32', + :comment => '37', + :complex => '34', + :constant => ['34', '4'], + :decoration => '35', + :definition => '1;32', + :directive => ['32', '4'], + :doc => '46', + :doctype => '1;30', + :doc_string => ['31', '4'], + :entity => '33', + :error => ['1;33', '41'], + :exception => '1;31', + :float => '1;35', + :function => '1;34', + :global_variable => '42', + :hex => '1;36', + :important => '1;31', + :include => '33', + :integer => '1;34', + :interpreted => '1;35', + :key => '35', + :label => '1;4', + :local_variable => '33', + :oct => '1;35', + :operator_name => '1;29', + :pre_constant => '1;36', + :pre_type => '1;30', + :predefined => ['4', '1;34'], + :preprocessor => '36', + :pseudo_class => '34', + :regexp => { + :content => '31', + :delimiter => '1;29', + :modifier => '35', + :function => '1;29' + }, + :reserved => '1;31', + :shell => { + :self => '42', + :content => '1;29', + :delimiter => '37', + }, + :string => { + :self => '32', + :modifier => '1;32', + :escape => '1;36', + :delimiter => '1;32', + }, + :symbol => '1;32', + :tag => '34', + :tag_fat => '1;34', + :tag_special => ['34', '4'], + :type => '1;34', + :value => '36', + :variable => '34', + :insert => '42', + :delete => '41', + :change => '44', + :head => '45', + } + TOKEN_COLORS[:keyword] = TOKEN_COLORS[:reserved] + TOKEN_COLORS[:method] = TOKEN_COLORS[:function] + TOKEN_COLORS[:imaginary] = TOKEN_COLORS[:complex] + TOKEN_COLORS[:open] = TOKEN_COLORS[:close] = TOKEN_COLORS[:nesting_delimiter] = TOKEN_COLORS[:escape] = TOKEN_COLORS[:delimiter] + + protected + + def setup(options) + @out = '' + @opened = [nil] + @subcolors = nil + end + + def finish(options) + super + end + + def token text, type = :plain + case text + + when nil + # raise 'Token with nil as text was given: %p' % [[text, type]] + + when String + + if color = (@subcolors || TOKEN_COLORS)[type] + color = color[:self] || return if Hash === color + + @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0) + @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self] + else + @out << text + end + + # token groups, eg. strings + when :open + @opened[0] = type + if color = TOKEN_COLORS[type] + if Hash === color + @subcolors = color + @out << col(color[:self]) if color[:self] + else + @subcolors = {} + @out << col(color) + end + end + @opened << type + when :close + if @opened.empty? + # nothing to close + else + @out << col(0) if (@subcolors || {})[:self] + @subcolors = nil + @opened.pop + end + + # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff + when :begin_line + + when :end_line + + else + raise 'unknown token kind: %p' % [text] + end + end + + private + + def col(color) + Array(color).map { |c| "\e[#{c}m" }.join + end + end + end +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/text.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/text.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,32 @@ +module CodeRay +module Encoders + + class Text < Encoder + + include Streamable + register_for :text + + FILE_EXTENSION = 'txt' + + DEFAULT_OPTIONS = { + :separator => '' + } + + protected + def setup options + super + @sep = options[:separator] + end + + def text_token text, kind + text + @sep + end + + def finish options + super.chomp @sep + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/token_class_filter.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/token_class_filter.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,84 @@ +($:.unshift '../..'; require 'coderay') unless defined? CodeRay +module CodeRay +module Encoders + + load :filter + + class TokenClassFilter < Filter + + include Streamable + register_for :token_class_filter + + DEFAULT_OPTIONS = { + :exclude => [], + :include => :all + } + + protected + def setup options + super + @exclude = options[:exclude] + @exclude = Array(@exclude) unless @exclude == :all + @include = options[:include] + @include = Array(@include) unless @include == :all + end + + def include_text_token? text, kind + (@include == :all || @include.include?(kind)) && + !(@exclude == :all || @exclude.include?(kind)) + end + + end + +end +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class TokenClassFilterTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Encoder + assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Filter + filter = nil + assert_nothing_raised do + filter = CodeRay.encoder :token_class_filter + end + assert_instance_of CodeRay::Encoders::TokenClassFilter, filter + end + + def test_filtering_text_tokens + tokens = CodeRay::Tokens.new + for i in 1..10 + tokens << [i.to_s, :index] + tokens << [' ', :space] if i < 10 + end + assert_equal 10, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :space).size + assert_equal 10, tokens.token_class_filter(:exclude => :space).size + assert_equal 9, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :space).size + assert_equal 9, tokens.token_class_filter(:include => :space).size + assert_equal 0, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :all).size + assert_equal 0, tokens.token_class_filter(:exclude => :all).size + end + + def test_filtering_block_tokens + tokens = CodeRay::Tokens.new + 10.times do |i| + tokens << [:open, :index] + tokens << [i.to_s, :content] + tokens << [:close, :index] + end + assert_equal 20, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :blubb).size + assert_equal 20, tokens.token_class_filter(:include => :blubb).size + assert_equal 30, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :index).size + assert_equal 30, tokens.token_class_filter(:exclude => :index).size + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/xml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/xml.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,71 @@ +module CodeRay +module Encoders + + # = XML Encoder + # + # Uses REXML. Very slow. + class XML < Encoder + + include Streamable + register_for :xml + + FILE_EXTENSION = 'xml' + + require 'rexml/document' + + DEFAULT_OPTIONS = { + :tab_width => 8, + :pretty => -1, + :transitive => false, + } + + protected + + def setup options + @doc = REXML::Document.new + @doc << REXML::XMLDecl.new + @tab_width = options[:tab_width] + @root = @node = @doc.add_element('coderay-tokens') + end + + def finish options + @out = '' + @doc.write @out, options[:pretty], options[:transitive], true + @out + end + + def text_token text, kind + if kind == :space + token = @node + else + token = @node.add_element kind.to_s + end + text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| + case + when space + token << REXML::Text.new(space, true) + when tab + token << REXML::Text.new(tab, true) + when nl + token << REXML::Text.new(nl, true) + else + token << REXML::Text.new($&) + end + end + end + + def open_token kind + @node = @node.add_element kind.to_s + end + + def close_token kind + if @node == @root + raise 'no token to close!' + end + @node = @node.parent + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/encoders/yaml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/encoders/yaml.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,22 @@ +module CodeRay +module Encoders + + # = YAML Encoder + # + # Slow. + class YAML < Encoder + + register_for :yaml + + FILE_EXTENSION = 'yaml' + + protected + def compile tokens, options + require 'yaml' + @out = tokens.to_a.to_yaml + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/for_redcloth.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/for_redcloth.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,95 @@ +module CodeRay + + # A little hack to enable CodeRay highlighting in RedCloth. + # + # Usage: + # require 'coderay' + # require 'coderay/for_redcloth' + # RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + # + # Make sure you have RedCloth 4.0.3 activated, for example by calling + # require 'rubygems' + # before RedCloth is loaded and before calling CodeRay.for_redcloth. + module ForRedCloth + + def self.install + gem 'RedCloth', '>= 4.0.3' if defined? gem + require 'redcloth' + unless RedCloth::VERSION.to_s >= '4.0.3' + if defined? gem + raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later. ' + + "You have #{RedCloth::VERSION}. Please gem install RedCloth." + else + $".delete 'redcloth.rb' # sorry, but it works + require 'rubygems' + return install # retry + end + end + unless RedCloth::VERSION.to_s >= '4.2.2' + warn 'CodeRay.for_redcloth works best with RedCloth version 4.2.2 or later.' + end + RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc + RedCloth::Formatters::HTML.module_eval do + def unescape(html) + replacements = { + '&' => '&', + '"' => '"', + '>' => '>', + '<' => '<', + } + html.gsub(/&(?:amp|quot|[gl]t);/) { |entity| replacements[entity] } + end + undef code, bc_open, bc_close, escape_pre + def code(opts) # :nodoc: + opts[:block] = true + if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' + # simulating pre-4.2 behavior + if opts[:text].sub!(/\A\[(\w+)\]/, '') + if CodeRay::Scanners[$1].plugin_id == 'plaintext' + opts[:text] = $& + opts[:text] + else + opts[:lang] = $1 + end + end + end + if opts[:lang] && !filter_coderay + require 'coderay' + @in_bc ||= nil + format = @in_bc ? :div : :span + opts[:text] = unescape(opts[:text]) unless @in_bc + highlighted_code = CodeRay.encode opts[:text], opts[:lang], format, :stream => true + highlighted_code.sub!(/\A<(span|div)/) { |m| m + pba(@in_bc || opts) } + highlighted_code + else + "#{opts[:text]}
    " + end + end + def bc_open(opts) # :nodoc: + opts[:block] = true + @in_bc = opts + opts[:lang] ? '' : "" + end + def bc_close(opts) # :nodoc: + opts = @in_bc + @in_bc = nil + opts[:lang] ? '' : "\n" + end + def escape_pre(text) + if @in_bc ||= nil + text + else + html_esc(text, :html_escape_preformatted) + end + end + end + end + + module TextileDoc # :nodoc: + attr_accessor :filter_coderay + end + + end + +end + +CodeRay::ForRedCloth.install \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,29 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers +END +plugin.rb +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers/plugin.rb +END +file_type.rb +K 25 +svn:wc:ra_dav:version-url +V 83 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers/file_type.rb +END +gzip_simple.rb +K 25 +svn:wc:ra_dav:version-url +V 85 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers/gzip_simple.rb +END +word_list.rb +K 25 +svn:wc:ra_dav:version-url +V 83 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers/word_list.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,164 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/helpers +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +plugin.rb +file + + + + +2011-03-03T11:05:13.000000Z +a8ef4aea22392cc4012ee679fc1d15ba +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7926 + +file_type.rb +file + + + + +2011-03-03T11:05:13.000000Z +107e3d46dc60830e87b1a4ce4d467ce8 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6494 + +gzip_simple.rb +file + + + + +2011-03-03T11:05:13.000000Z +ffacc98651f60a6fe698427bbc3c3c86 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2701 + +word_list.rb +file + + + + +2011-03-03T11:05:13.000000Z +86d05af27cbe342789f28ed543956aa5 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3229 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/file_type.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/file_type.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,255 @@ +#!/usr/bin/env ruby +module CodeRay + +# = FileType +# +# A simple filetype recognizer. +# +# Copyright (c) 2006 by murphy (Kornelius Kalnbach) +# +# License:: LGPL / ask the author +# Version:: 0.1 (2005-09-01) +# +# == Documentation +# +# # determine the type of the given +# lang = FileType[ARGV.first] +# +# # return :plaintext if the file type is unknown +# lang = FileType.fetch ARGV.first, :plaintext +# +# # try the shebang line, too +# lang = FileType.fetch ARGV.first, :plaintext, true +module FileType + + UnknownFileType = Class.new Exception + + class << self + + # Try to determine the file type of the file. + # + # +filename+ is a relative or absolute path to a file. + # + # The file itself is only accessed when +read_shebang+ is set to true. + # That means you can get filetypes from files that don't exist. + def [] filename, read_shebang = false + name = File.basename filename + ext = File.extname(name).sub(/^\./, '') # from last dot, delete the leading dot + ext2 = filename.to_s[/\.(.*)/, 1] # from first dot + + type = + TypeFromExt[ext] || + TypeFromExt[ext.downcase] || + (TypeFromExt[ext2] if ext2) || + (TypeFromExt[ext2.downcase] if ext2) || + TypeFromName[name] || + TypeFromName[name.downcase] + type ||= shebang(filename) if read_shebang + + type + end + + def shebang filename + begin + File.open filename, 'r' do |f| + if first_line = f.gets + if type = first_line[TypeFromShebang] + type.to_sym + end + end + end + rescue IOError + nil + end + end + + # This works like Hash#fetch. + # + # If the filetype cannot be found, the +default+ value + # is returned. + def fetch filename, default = nil, read_shebang = false + if default and block_given? + warn 'block supersedes default value argument' + end + + unless type = self[filename, read_shebang] + return yield if block_given? + return default if default + raise UnknownFileType, 'Could not determine type of %p.' % filename + end + type + end + + end + + TypeFromExt = { + 'c' => :c, + 'css' => :css, + 'diff' => :diff, + 'dpr' => :delphi, + 'groovy' => :groovy, + 'gvy' => :groovy, + 'h' => :c, + 'htm' => :html, + 'html' => :html, + 'html.erb' => :rhtml, + 'java' => :java, + 'js' => :java_script, + 'json' => :json, + 'mab' => :ruby, + 'pas' => :delphi, + 'patch' => :diff, + 'php' => :php, + 'php3' => :php, + 'php4' => :php, + 'php5' => :php, + 'py' => :python, + 'py3' => :python, + 'pyw' => :python, + 'rake' => :ruby, + 'raydebug' => :debug, + 'rb' => :ruby, + 'rbw' => :ruby, + 'rhtml' => :rhtml, + 'rxml' => :ruby, + 'sch' => :scheme, + 'sql' => :sql, + 'ss' => :scheme, + 'xhtml' => :xhtml, + 'xml' => :xml, + 'yaml' => :yaml, + 'yml' => :yaml, + } + for cpp_alias in %w[cc cpp cp cxx c++ C hh hpp h++ cu] + TypeFromExt[cpp_alias] = :cpp + end + + TypeFromShebang = /\b(?:ruby|perl|python|sh)\b/ + + TypeFromName = { + 'Rakefile' => :ruby, + 'Rantfile' => :ruby, + } + +end + +end + +if $0 == __FILE__ + $VERBOSE = true + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class FileTypeTests < Test::Unit::TestCase + + include CodeRay + + def test_fetch + assert_raise FileType::UnknownFileType do + FileType.fetch '' + end + + assert_throws :not_found do + FileType.fetch '.' do + throw :not_found + end + end + + assert_equal :default, FileType.fetch('c', :default) + + stderr, fake_stderr = $stderr, Object.new + $err = '' + def fake_stderr.write x + $err << x + end + $stderr = fake_stderr + FileType.fetch('c', :default) { } + assert_equal "block supersedes default value argument\n", $err + $stderr = stderr + end + + def test_ruby + assert_equal :ruby, FileType['test.rb'] + assert_equal :ruby, FileType['test.java.rb'] + assert_equal :java, FileType['test.rb.java'] + assert_equal :ruby, FileType['C:\\Program Files\\x\\y\\c\\test.rbw'] + assert_equal :ruby, FileType['/usr/bin/something/Rakefile'] + assert_equal :ruby, FileType['~/myapp/gem/Rantfile'] + assert_equal :ruby, FileType['./lib/tasks\repository.rake'] + assert_not_equal :ruby, FileType['test_rb'] + assert_not_equal :ruby, FileType['Makefile'] + assert_not_equal :ruby, FileType['set.rb/set'] + assert_not_equal :ruby, FileType['~/projects/blabla/rb'] + end + + def test_c + assert_equal :c, FileType['test.c'] + assert_equal :c, FileType['C:\\Program Files\\x\\y\\c\\test.h'] + assert_not_equal :c, FileType['test_c'] + assert_not_equal :c, FileType['Makefile'] + assert_not_equal :c, FileType['set.h/set'] + assert_not_equal :c, FileType['~/projects/blabla/c'] + end + + def test_cpp + assert_equal :cpp, FileType['test.c++'] + assert_equal :cpp, FileType['test.cxx'] + assert_equal :cpp, FileType['test.hh'] + assert_equal :cpp, FileType['test.hpp'] + assert_equal :cpp, FileType['test.cu'] + assert_equal :cpp, FileType['test.C'] + assert_not_equal :cpp, FileType['test.c'] + assert_not_equal :cpp, FileType['test.h'] + end + + def test_html + assert_equal :html, FileType['test.htm'] + assert_equal :xhtml, FileType['test.xhtml'] + assert_equal :xhtml, FileType['test.html.xhtml'] + assert_equal :rhtml, FileType['_form.rhtml'] + assert_equal :rhtml, FileType['_form.html.erb'] + end + + def test_yaml + assert_equal :yaml, FileType['test.yml'] + assert_equal :yaml, FileType['test.yaml'] + assert_equal :yaml, FileType['my.html.yaml'] + assert_not_equal :yaml, FileType['YAML'] + end + + def test_pathname + require 'pathname' + pn = Pathname.new 'test.rb' + assert_equal :ruby, FileType[pn] + dir = Pathname.new '/etc/var/blubb' + assert_equal :ruby, FileType[dir + pn] + assert_equal :cpp, FileType[dir + 'test.cpp'] + end + + def test_no_shebang + dir = './test' + if File.directory? dir + Dir.chdir dir do + assert_equal :c, FileType['test.c'] + end + end + end + + def test_shebang_empty_file + require 'tmpdir' + tmpfile = File.join(Dir.tmpdir, 'bla') + File.open(tmpfile, 'w') { } # touch + assert_equal nil, FileType[tmpfile] + end + + def test_shebang + require 'tmpdir' + tmpfile = File.join(Dir.tmpdir, 'bla') + File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } + assert_equal :ruby, FileType[tmpfile, true] + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/gzip_simple.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/gzip_simple.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,123 @@ +# =GZip Simple +# +# A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) +# +# Author: murphy (mail to murphy rubychan de) +# +# Version: 0.2 (2005.may.28) +# +# ==Documentation +# +# See +GZip+ module and the +String+ extensions. +# +module GZip + + require 'zlib' + + # The default zipping level. 7 zips good and fast. + DEFAULT_GZIP_LEVEL = 7 + + # Unzips the given string +s+. + # + # Example: + # require 'gzip_simple' + # print GZip.gunzip(File.read('adresses.gz')) + def GZip.gunzip s + Zlib::Inflate.inflate s + end + + # Zips the given string +s+. + # + # Example: + # require 'gzip_simple' + # File.open('adresses.gz', 'w') do |file + # file.write GZip.gzip('Mum: 0123 456 789', 9) + # end + # + # If you provide a +level+, you can control how strong + # the string is compressed: + # - 0: no compression, only convert to gzip format + # - 1: compress fast + # - 7: compress more, but still fast (default) + # - 8: compress more, slower + # - 9: compress best, very slow + def GZip.gzip s, level = DEFAULT_GZIP_LEVEL + Zlib::Deflate.new(level).deflate s, Zlib::FINISH + end +end + + +# String extensions to use the GZip module. +# +# The methods gzip and gunzip provide an even more simple +# interface to the ZLib: +# +# # create a big string +# x = 'a' * 1000 +# +# # zip it +# x_gz = x.gzip +# +# # test the result +# puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] +# #-> Zipped 1000 bytes to 19 bytes. +# +# # unzipping works +# p x_gz.gunzip == x #-> true +class String + # Returns the string, unzipped. + # See GZip.gunzip + def gunzip + GZip.gunzip self + end + # Replaces the string with its unzipped value. + # See GZip.gunzip + def gunzip! + replace gunzip + end + + # Returns the string, zipped. + # +level+ is the gzip compression level, see GZip.gzip. + def gzip level = GZip::DEFAULT_GZIP_LEVEL + GZip.gzip self, level + end + # Replaces the string with its zipped value. + # See GZip.gzip. + def gzip!(*args) + replace gzip(*args) + end +end + +if $0 == __FILE__ + eval DATA.read, nil, $0, __LINE__+4 +end + +__END__ +#CODE + +# Testing / Benchmark +x = 'a' * 1000 +x_gz = x.gzip +puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] #-> Zipped 1000 bytes to 19 bytes. +p x_gz.gunzip == x #-> true + +require 'benchmark' + +INFO = 'packed to %0.3f%%' # :nodoc: + +x = Array.new(100000) { rand(255).chr + 'aaaaaaaaa' + rand(255).chr }.join +Benchmark.bm(10) do |bm| + for level in 0..9 + bm.report "zip #{level}" do + $x = x.gzip level + end + puts INFO % [100.0 * $x.size / x.size] + end + bm.report 'zip' do + $x = x.gzip + end + puts INFO % [100.0 * $x.size / x.size] + bm.report 'unzip' do + $x.gunzip + end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/plugin.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/plugin.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,349 @@ +module CodeRay + +# = PluginHost +# +# A simple subclass plugin system. +# +# Example: +# class Generators < PluginHost +# plugin_path 'app/generators' +# end +# +# class Generator +# extend Plugin +# PLUGIN_HOST = Generators +# end +# +# class FancyGenerator < Generator +# register_for :fancy +# end +# +# Generators[:fancy] #-> FancyGenerator +# # or +# CodeRay.require_plugin 'Generators/fancy' +module PluginHost + + # Raised if Encoders::[] fails because: + # * a file could not be found + # * the requested Encoder is not registered + PluginNotFound = Class.new Exception + HostNotFound = Class.new Exception + + PLUGIN_HOSTS = [] + PLUGIN_HOSTS_BY_ID = {} # dummy hash + + # Loads all plugins using list and load. + def load_all + for plugin in list + load plugin + end + end + + # Returns the Plugin for +id+. + # + # Example: + # yaml_plugin = MyPluginHost[:yaml] + def [] id, *args, &blk + plugin = validate_id(id) + begin + plugin = plugin_hash.[] plugin, *args, &blk + end while plugin.is_a? Symbol + plugin + end + + # Alias for +[]+. + alias load [] + + def require_helper plugin_id, helper_name + path = path_to File.join(plugin_id, helper_name) + require path + end + + class << self + + # Adds the module/class to the PLUGIN_HOSTS list. + def extended mod + PLUGIN_HOSTS << mod + end + + # Warns you that you should not #include this module. + def included mod + warn "#{name} should not be included. Use extend." + end + + # Find the PluginHost for host_id. + def host_by_id host_id + unless PLUGIN_HOSTS_BY_ID.default_proc + ph = Hash.new do |h, a_host_id| + for host in PLUGIN_HOSTS + h[host.host_id] = host + end + h.fetch a_host_id, nil + end + PLUGIN_HOSTS_BY_ID.replace ph + end + PLUGIN_HOSTS_BY_ID[host_id] + end + + end + + # The path where the plugins can be found. + def plugin_path *args + unless args.empty? + @plugin_path = File.expand_path File.join(*args) + load_map + end + @plugin_path + end + + # The host's ID. + # + # If PLUGIN_HOST_ID is not set, it is simply the class name. + def host_id + if self.const_defined? :PLUGIN_HOST_ID + self::PLUGIN_HOST_ID + else + name + end + end + + # Map a plugin_id to another. + # + # Usage: Put this in a file plugin_path/_map.rb. + # + # class MyColorHost < PluginHost + # map :navy => :dark_blue, + # :maroon => :brown, + # :luna => :moon + # end + def map hash + for from, to in hash + from = validate_id from + to = validate_id to + plugin_hash[from] = to unless plugin_hash.has_key? from + end + end + + # Define the default plugin to use when no plugin is found + # for a given id. + # + # See also map. + # + # class MyColorHost < PluginHost + # map :navy => :dark_blue + # default :gray + # end + def default id = nil + if id + id = validate_id id + plugin_hash[nil] = id + else + plugin_hash[nil] + end + end + + # Every plugin must register itself for one or more + # +ids+ by calling register_for, which calls this method. + # + # See Plugin#register_for. + def register plugin, *ids + for id in ids + unless id.is_a? Symbol + raise ArgumentError, + "id must be a Symbol, but it was a #{id.class}" + end + plugin_hash[validate_id(id)] = plugin + end + end + + # A Hash of plugion_id => Plugin pairs. + def plugin_hash + @plugin_hash ||= create_plugin_hash + end + + # Returns an array of all .rb files in the plugin path. + # + # The extension .rb is not included. + def list + Dir[path_to('*')].select do |file| + File.basename(file)[/^(?!_)\w+\.rb$/] + end.map do |file| + File.basename file, '.rb' + end + end + + # Makes a map of all loaded plugins. + def inspect + map = plugin_hash.dup + map.each do |id, plugin| + map[id] = plugin.to_s[/(?>\w+)$/] + end + "#{name}[#{host_id}]#{map.inspect}" + end + +protected + # Created a new plugin list and stores it to @plugin_hash. + def create_plugin_hash + @plugin_hash = + Hash.new do |h, plugin_id| + id = validate_id(plugin_id) + path = path_to id + begin + require path + rescue LoadError => boom + if h.has_key? nil # default plugin + h[id] = h[nil] + else + raise PluginNotFound, 'Could not load plugin %p: %s' % [id, boom] + end + else + # Plugin should have registered by now + unless h.has_key? id + raise PluginNotFound, + "No #{self.name} plugin for #{id.inspect} found in #{path}." + end + end + h[id] + end + end + + # Loads the map file (see map). + # + # This is done automatically when plugin_path is called. + def load_map + mapfile = path_to '_map' + if File.exist? mapfile + require mapfile + elsif $VERBOSE + warn 'no _map.rb found for %s' % name + end + end + + # Returns the Plugin for +id+. + # Use it like Hash#fetch. + # + # Example: + # yaml_plugin = MyPluginHost[:yaml, :default] + def fetch id, *args, &blk + plugin_hash.fetch validate_id(id), *args, &blk + end + + # Returns the expected path to the plugin file for the given id. + def path_to plugin_id + File.join plugin_path, "#{plugin_id}.rb" + end + + # Converts +id+ to a Symbol if it is a String, + # or returns +id+ if it already is a Symbol. + # + # Raises +ArgumentError+ for all other objects, or if the + # given String includes non-alphanumeric characters (\W). + def validate_id id + if id.is_a? Symbol or id.nil? + id + elsif id.is_a? String + if id[/\w+/] == id + id.downcase.to_sym + else + raise ArgumentError, "Invalid id: '#{id}' given." + end + else + raise ArgumentError, + "String or Symbol expected, but #{id.class} given." + end + end + +end + + +# = Plugin +# +# Plugins have to include this module. +# +# IMPORTANT: use extend for this module. +# +# Example: see PluginHost. +module Plugin + + def included mod + warn "#{name} should not be included. Use extend." + end + + # Register this class for the given langs. + # Example: + # class MyPlugin < PluginHost::BaseClass + # register_for :my_id + # ... + # end + # + # See PluginHost.register. + def register_for *ids + plugin_host.register self, *ids + end + + # Returns the title of the plugin, or sets it to the + # optional argument +title+. + def title title = nil + if title + @title = title.to_s + else + @title ||= name[/([^:]+)$/, 1] + end + end + + # The host for this Plugin class. + def plugin_host host = nil + if host and not host.is_a? PluginHost + raise ArgumentError, + "PluginHost expected, but #{host.class} given." + end + self.const_set :PLUGIN_HOST, host if host + self::PLUGIN_HOST + end + + # Require some helper files. + # + # Example: + # + # class MyPlugin < PluginHost::BaseClass + # register_for :my_id + # helper :my_helper + # + # The above example loads the file myplugin/my_helper.rb relative to the + # file in which MyPlugin was defined. + # + # You can also load a helper from a different plugin: + # + # helper 'other_plugin/helper_name' + def helper *helpers + for helper in helpers + if helper.is_a?(String) && helper[/\//] + self::PLUGIN_HOST.require_helper $`, $' + else + self::PLUGIN_HOST.require_helper plugin_id, helper.to_s + end + end + end + + # Returns the pulgin id used by the engine. + def plugin_id + name[/\w+$/].downcase + end + +end + +# Convenience method for plugin loading. +# The syntax used is: +# +# CodeRay.require_plugin '/' +# +# Returns the loaded plugin. +def self.require_plugin path + host_id, plugin_id = path.split '/', 2 + host = PluginHost.host_by_id(host_id) + raise PluginHost::HostNotFound, + "No host for #{host_id.inspect} found." unless host + host.load plugin_id +end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/word_list.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/.svn/text-base/word_list.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,138 @@ +module CodeRay + +# = WordList +# +# A Hash subclass designed for mapping word lists to token types. +# +# Copyright (c) 2006 by murphy (Kornelius Kalnbach) +# +# License:: LGPL / ask the author +# Version:: 1.1 (2006-Oct-19) +# +# A WordList is a Hash with some additional features. +# It is intended to be used for keyword recognition. +# +# WordList is highly optimized to be used in Scanners, +# typically to decide whether a given ident is a special token. +# +# For case insensitive words use CaseIgnoringWordList. +# +# Example: +# +# # define word arrays +# RESERVED_WORDS = %w[ +# asm break case continue default do else +# ... +# ] +# +# PREDEFINED_TYPES = %w[ +# int long short char void +# ... +# ] +# +# PREDEFINED_CONSTANTS = %w[ +# EOF NULL ... +# ] +# +# # make a WordList +# IDENT_KIND = WordList.new(:ident). +# add(RESERVED_WORDS, :reserved). +# add(PREDEFINED_TYPES, :pre_type). +# add(PREDEFINED_CONSTANTS, :pre_constant) +# +# ... +# +# def scan_tokens tokens, options +# ... +# +# elsif scan(/[A-Za-z_][A-Za-z_0-9]*/) +# # use it +# kind = IDENT_KIND[match] +# ... +class WordList < Hash + + # Creates a new WordList with +default+ as default value. + # + # You can activate +caching+ to store the results for every [] request. + # + # With caching, methods like +include?+ or +delete+ may no longer behave + # as you expect. Therefore, it is recommended to use the [] method only. + def initialize default = false, caching = false, &block + if block + raise ArgumentError, 'Can\'t combine block with caching.' if caching + super(&block) + else + if caching + super() do |h, k| + h[k] = h.fetch k, default + end + else + super default + end + end + end + + # Add words to the list and associate them with +kind+. + # + # Returns +self+, so you can concat add calls. + def add words, kind = true + words.each do |word| + self[word] = kind + end + self + end + +end + + +# A CaseIgnoringWordList is like a WordList, only that +# keys are compared case-insensitively. +# +# Ignoring the text case is realized by sending the +downcase+ message to +# all keys. +# +# Caching usually makes a CaseIgnoringWordList faster, but it has to be +# activated explicitely. +class CaseIgnoringWordList < WordList + + # Creates a new case-insensitive WordList with +default+ as default value. + # + # You can activate caching to store the results for every [] request. + # This speeds up subsequent lookups for the same word, but also + # uses memory. + def initialize default = false, caching = false + if caching + super(default, false) do |h, k| + h[k] = h.fetch k.downcase, default + end + else + super(default, false) + extend Uncached + end + end + + module Uncached # :nodoc: + def [] key + super(key.downcase) + end + end + + # Add +words+ to the list and associate them with +kind+. + def add words, kind = true + words.each do |word| + self[word.downcase] = kind + end + self + end + +end + +end + +__END__ +# check memory consumption +END { + ObjectSpace.each_object(CodeRay::CaseIgnoringWordList) do |wl| + p wl.inject(0) { |memo, key, value| memo + key.size + 24 } + end +} \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/file_type.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/file_type.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,255 @@ +#!/usr/bin/env ruby +module CodeRay + +# = FileType +# +# A simple filetype recognizer. +# +# Copyright (c) 2006 by murphy (Kornelius Kalnbach) +# +# License:: LGPL / ask the author +# Version:: 0.1 (2005-09-01) +# +# == Documentation +# +# # determine the type of the given +# lang = FileType[ARGV.first] +# +# # return :plaintext if the file type is unknown +# lang = FileType.fetch ARGV.first, :plaintext +# +# # try the shebang line, too +# lang = FileType.fetch ARGV.first, :plaintext, true +module FileType + + UnknownFileType = Class.new Exception + + class << self + + # Try to determine the file type of the file. + # + # +filename+ is a relative or absolute path to a file. + # + # The file itself is only accessed when +read_shebang+ is set to true. + # That means you can get filetypes from files that don't exist. + def [] filename, read_shebang = false + name = File.basename filename + ext = File.extname(name).sub(/^\./, '') # from last dot, delete the leading dot + ext2 = filename.to_s[/\.(.*)/, 1] # from first dot + + type = + TypeFromExt[ext] || + TypeFromExt[ext.downcase] || + (TypeFromExt[ext2] if ext2) || + (TypeFromExt[ext2.downcase] if ext2) || + TypeFromName[name] || + TypeFromName[name.downcase] + type ||= shebang(filename) if read_shebang + + type + end + + def shebang filename + begin + File.open filename, 'r' do |f| + if first_line = f.gets + if type = first_line[TypeFromShebang] + type.to_sym + end + end + end + rescue IOError + nil + end + end + + # This works like Hash#fetch. + # + # If the filetype cannot be found, the +default+ value + # is returned. + def fetch filename, default = nil, read_shebang = false + if default and block_given? + warn 'block supersedes default value argument' + end + + unless type = self[filename, read_shebang] + return yield if block_given? + return default if default + raise UnknownFileType, 'Could not determine type of %p.' % filename + end + type + end + + end + + TypeFromExt = { + 'c' => :c, + 'css' => :css, + 'diff' => :diff, + 'dpr' => :delphi, + 'groovy' => :groovy, + 'gvy' => :groovy, + 'h' => :c, + 'htm' => :html, + 'html' => :html, + 'html.erb' => :rhtml, + 'java' => :java, + 'js' => :java_script, + 'json' => :json, + 'mab' => :ruby, + 'pas' => :delphi, + 'patch' => :diff, + 'php' => :php, + 'php3' => :php, + 'php4' => :php, + 'php5' => :php, + 'py' => :python, + 'py3' => :python, + 'pyw' => :python, + 'rake' => :ruby, + 'raydebug' => :debug, + 'rb' => :ruby, + 'rbw' => :ruby, + 'rhtml' => :rhtml, + 'rxml' => :ruby, + 'sch' => :scheme, + 'sql' => :sql, + 'ss' => :scheme, + 'xhtml' => :xhtml, + 'xml' => :xml, + 'yaml' => :yaml, + 'yml' => :yaml, + } + for cpp_alias in %w[cc cpp cp cxx c++ C hh hpp h++ cu] + TypeFromExt[cpp_alias] = :cpp + end + + TypeFromShebang = /\b(?:ruby|perl|python|sh)\b/ + + TypeFromName = { + 'Rakefile' => :ruby, + 'Rantfile' => :ruby, + } + +end + +end + +if $0 == __FILE__ + $VERBOSE = true + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class FileTypeTests < Test::Unit::TestCase + + include CodeRay + + def test_fetch + assert_raise FileType::UnknownFileType do + FileType.fetch '' + end + + assert_throws :not_found do + FileType.fetch '.' do + throw :not_found + end + end + + assert_equal :default, FileType.fetch('c', :default) + + stderr, fake_stderr = $stderr, Object.new + $err = '' + def fake_stderr.write x + $err << x + end + $stderr = fake_stderr + FileType.fetch('c', :default) { } + assert_equal "block supersedes default value argument\n", $err + $stderr = stderr + end + + def test_ruby + assert_equal :ruby, FileType['test.rb'] + assert_equal :ruby, FileType['test.java.rb'] + assert_equal :java, FileType['test.rb.java'] + assert_equal :ruby, FileType['C:\\Program Files\\x\\y\\c\\test.rbw'] + assert_equal :ruby, FileType['/usr/bin/something/Rakefile'] + assert_equal :ruby, FileType['~/myapp/gem/Rantfile'] + assert_equal :ruby, FileType['./lib/tasks\repository.rake'] + assert_not_equal :ruby, FileType['test_rb'] + assert_not_equal :ruby, FileType['Makefile'] + assert_not_equal :ruby, FileType['set.rb/set'] + assert_not_equal :ruby, FileType['~/projects/blabla/rb'] + end + + def test_c + assert_equal :c, FileType['test.c'] + assert_equal :c, FileType['C:\\Program Files\\x\\y\\c\\test.h'] + assert_not_equal :c, FileType['test_c'] + assert_not_equal :c, FileType['Makefile'] + assert_not_equal :c, FileType['set.h/set'] + assert_not_equal :c, FileType['~/projects/blabla/c'] + end + + def test_cpp + assert_equal :cpp, FileType['test.c++'] + assert_equal :cpp, FileType['test.cxx'] + assert_equal :cpp, FileType['test.hh'] + assert_equal :cpp, FileType['test.hpp'] + assert_equal :cpp, FileType['test.cu'] + assert_equal :cpp, FileType['test.C'] + assert_not_equal :cpp, FileType['test.c'] + assert_not_equal :cpp, FileType['test.h'] + end + + def test_html + assert_equal :html, FileType['test.htm'] + assert_equal :xhtml, FileType['test.xhtml'] + assert_equal :xhtml, FileType['test.html.xhtml'] + assert_equal :rhtml, FileType['_form.rhtml'] + assert_equal :rhtml, FileType['_form.html.erb'] + end + + def test_yaml + assert_equal :yaml, FileType['test.yml'] + assert_equal :yaml, FileType['test.yaml'] + assert_equal :yaml, FileType['my.html.yaml'] + assert_not_equal :yaml, FileType['YAML'] + end + + def test_pathname + require 'pathname' + pn = Pathname.new 'test.rb' + assert_equal :ruby, FileType[pn] + dir = Pathname.new '/etc/var/blubb' + assert_equal :ruby, FileType[dir + pn] + assert_equal :cpp, FileType[dir + 'test.cpp'] + end + + def test_no_shebang + dir = './test' + if File.directory? dir + Dir.chdir dir do + assert_equal :c, FileType['test.c'] + end + end + end + + def test_shebang_empty_file + require 'tmpdir' + tmpfile = File.join(Dir.tmpdir, 'bla') + File.open(tmpfile, 'w') { } # touch + assert_equal nil, FileType[tmpfile] + end + + def test_shebang + require 'tmpdir' + tmpfile = File.join(Dir.tmpdir, 'bla') + File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } + assert_equal :ruby, FileType[tmpfile, true] + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/gzip_simple.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/gzip_simple.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,123 @@ +# =GZip Simple +# +# A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) +# +# Author: murphy (mail to murphy rubychan de) +# +# Version: 0.2 (2005.may.28) +# +# ==Documentation +# +# See +GZip+ module and the +String+ extensions. +# +module GZip + + require 'zlib' + + # The default zipping level. 7 zips good and fast. + DEFAULT_GZIP_LEVEL = 7 + + # Unzips the given string +s+. + # + # Example: + # require 'gzip_simple' + # print GZip.gunzip(File.read('adresses.gz')) + def GZip.gunzip s + Zlib::Inflate.inflate s + end + + # Zips the given string +s+. + # + # Example: + # require 'gzip_simple' + # File.open('adresses.gz', 'w') do |file + # file.write GZip.gzip('Mum: 0123 456 789', 9) + # end + # + # If you provide a +level+, you can control how strong + # the string is compressed: + # - 0: no compression, only convert to gzip format + # - 1: compress fast + # - 7: compress more, but still fast (default) + # - 8: compress more, slower + # - 9: compress best, very slow + def GZip.gzip s, level = DEFAULT_GZIP_LEVEL + Zlib::Deflate.new(level).deflate s, Zlib::FINISH + end +end + + +# String extensions to use the GZip module. +# +# The methods gzip and gunzip provide an even more simple +# interface to the ZLib: +# +# # create a big string +# x = 'a' * 1000 +# +# # zip it +# x_gz = x.gzip +# +# # test the result +# puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] +# #-> Zipped 1000 bytes to 19 bytes. +# +# # unzipping works +# p x_gz.gunzip == x #-> true +class String + # Returns the string, unzipped. + # See GZip.gunzip + def gunzip + GZip.gunzip self + end + # Replaces the string with its unzipped value. + # See GZip.gunzip + def gunzip! + replace gunzip + end + + # Returns the string, zipped. + # +level+ is the gzip compression level, see GZip.gzip. + def gzip level = GZip::DEFAULT_GZIP_LEVEL + GZip.gzip self, level + end + # Replaces the string with its zipped value. + # See GZip.gzip. + def gzip!(*args) + replace gzip(*args) + end +end + +if $0 == __FILE__ + eval DATA.read, nil, $0, __LINE__+4 +end + +__END__ +#CODE + +# Testing / Benchmark +x = 'a' * 1000 +x_gz = x.gzip +puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] #-> Zipped 1000 bytes to 19 bytes. +p x_gz.gunzip == x #-> true + +require 'benchmark' + +INFO = 'packed to %0.3f%%' # :nodoc: + +x = Array.new(100000) { rand(255).chr + 'aaaaaaaaa' + rand(255).chr }.join +Benchmark.bm(10) do |bm| + for level in 0..9 + bm.report "zip #{level}" do + $x = x.gzip level + end + puts INFO % [100.0 * $x.size / x.size] + end + bm.report 'zip' do + $x = x.gzip + end + puts INFO % [100.0 * $x.size / x.size] + bm.report 'unzip' do + $x.gunzip + end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/plugin.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/plugin.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,349 @@ +module CodeRay + +# = PluginHost +# +# A simple subclass plugin system. +# +# Example: +# class Generators < PluginHost +# plugin_path 'app/generators' +# end +# +# class Generator +# extend Plugin +# PLUGIN_HOST = Generators +# end +# +# class FancyGenerator < Generator +# register_for :fancy +# end +# +# Generators[:fancy] #-> FancyGenerator +# # or +# CodeRay.require_plugin 'Generators/fancy' +module PluginHost + + # Raised if Encoders::[] fails because: + # * a file could not be found + # * the requested Encoder is not registered + PluginNotFound = Class.new Exception + HostNotFound = Class.new Exception + + PLUGIN_HOSTS = [] + PLUGIN_HOSTS_BY_ID = {} # dummy hash + + # Loads all plugins using list and load. + def load_all + for plugin in list + load plugin + end + end + + # Returns the Plugin for +id+. + # + # Example: + # yaml_plugin = MyPluginHost[:yaml] + def [] id, *args, &blk + plugin = validate_id(id) + begin + plugin = plugin_hash.[] plugin, *args, &blk + end while plugin.is_a? Symbol + plugin + end + + # Alias for +[]+. + alias load [] + + def require_helper plugin_id, helper_name + path = path_to File.join(plugin_id, helper_name) + require path + end + + class << self + + # Adds the module/class to the PLUGIN_HOSTS list. + def extended mod + PLUGIN_HOSTS << mod + end + + # Warns you that you should not #include this module. + def included mod + warn "#{name} should not be included. Use extend." + end + + # Find the PluginHost for host_id. + def host_by_id host_id + unless PLUGIN_HOSTS_BY_ID.default_proc + ph = Hash.new do |h, a_host_id| + for host in PLUGIN_HOSTS + h[host.host_id] = host + end + h.fetch a_host_id, nil + end + PLUGIN_HOSTS_BY_ID.replace ph + end + PLUGIN_HOSTS_BY_ID[host_id] + end + + end + + # The path where the plugins can be found. + def plugin_path *args + unless args.empty? + @plugin_path = File.expand_path File.join(*args) + load_map + end + @plugin_path + end + + # The host's ID. + # + # If PLUGIN_HOST_ID is not set, it is simply the class name. + def host_id + if self.const_defined? :PLUGIN_HOST_ID + self::PLUGIN_HOST_ID + else + name + end + end + + # Map a plugin_id to another. + # + # Usage: Put this in a file plugin_path/_map.rb. + # + # class MyColorHost < PluginHost + # map :navy => :dark_blue, + # :maroon => :brown, + # :luna => :moon + # end + def map hash + for from, to in hash + from = validate_id from + to = validate_id to + plugin_hash[from] = to unless plugin_hash.has_key? from + end + end + + # Define the default plugin to use when no plugin is found + # for a given id. + # + # See also map. + # + # class MyColorHost < PluginHost + # map :navy => :dark_blue + # default :gray + # end + def default id = nil + if id + id = validate_id id + plugin_hash[nil] = id + else + plugin_hash[nil] + end + end + + # Every plugin must register itself for one or more + # +ids+ by calling register_for, which calls this method. + # + # See Plugin#register_for. + def register plugin, *ids + for id in ids + unless id.is_a? Symbol + raise ArgumentError, + "id must be a Symbol, but it was a #{id.class}" + end + plugin_hash[validate_id(id)] = plugin + end + end + + # A Hash of plugion_id => Plugin pairs. + def plugin_hash + @plugin_hash ||= create_plugin_hash + end + + # Returns an array of all .rb files in the plugin path. + # + # The extension .rb is not included. + def list + Dir[path_to('*')].select do |file| + File.basename(file)[/^(?!_)\w+\.rb$/] + end.map do |file| + File.basename file, '.rb' + end + end + + # Makes a map of all loaded plugins. + def inspect + map = plugin_hash.dup + map.each do |id, plugin| + map[id] = plugin.to_s[/(?>\w+)$/] + end + "#{name}[#{host_id}]#{map.inspect}" + end + +protected + # Created a new plugin list and stores it to @plugin_hash. + def create_plugin_hash + @plugin_hash = + Hash.new do |h, plugin_id| + id = validate_id(plugin_id) + path = path_to id + begin + require path + rescue LoadError => boom + if h.has_key? nil # default plugin + h[id] = h[nil] + else + raise PluginNotFound, 'Could not load plugin %p: %s' % [id, boom] + end + else + # Plugin should have registered by now + unless h.has_key? id + raise PluginNotFound, + "No #{self.name} plugin for #{id.inspect} found in #{path}." + end + end + h[id] + end + end + + # Loads the map file (see map). + # + # This is done automatically when plugin_path is called. + def load_map + mapfile = path_to '_map' + if File.exist? mapfile + require mapfile + elsif $VERBOSE + warn 'no _map.rb found for %s' % name + end + end + + # Returns the Plugin for +id+. + # Use it like Hash#fetch. + # + # Example: + # yaml_plugin = MyPluginHost[:yaml, :default] + def fetch id, *args, &blk + plugin_hash.fetch validate_id(id), *args, &blk + end + + # Returns the expected path to the plugin file for the given id. + def path_to plugin_id + File.join plugin_path, "#{plugin_id}.rb" + end + + # Converts +id+ to a Symbol if it is a String, + # or returns +id+ if it already is a Symbol. + # + # Raises +ArgumentError+ for all other objects, or if the + # given String includes non-alphanumeric characters (\W). + def validate_id id + if id.is_a? Symbol or id.nil? + id + elsif id.is_a? String + if id[/\w+/] == id + id.downcase.to_sym + else + raise ArgumentError, "Invalid id: '#{id}' given." + end + else + raise ArgumentError, + "String or Symbol expected, but #{id.class} given." + end + end + +end + + +# = Plugin +# +# Plugins have to include this module. +# +# IMPORTANT: use extend for this module. +# +# Example: see PluginHost. +module Plugin + + def included mod + warn "#{name} should not be included. Use extend." + end + + # Register this class for the given langs. + # Example: + # class MyPlugin < PluginHost::BaseClass + # register_for :my_id + # ... + # end + # + # See PluginHost.register. + def register_for *ids + plugin_host.register self, *ids + end + + # Returns the title of the plugin, or sets it to the + # optional argument +title+. + def title title = nil + if title + @title = title.to_s + else + @title ||= name[/([^:]+)$/, 1] + end + end + + # The host for this Plugin class. + def plugin_host host = nil + if host and not host.is_a? PluginHost + raise ArgumentError, + "PluginHost expected, but #{host.class} given." + end + self.const_set :PLUGIN_HOST, host if host + self::PLUGIN_HOST + end + + # Require some helper files. + # + # Example: + # + # class MyPlugin < PluginHost::BaseClass + # register_for :my_id + # helper :my_helper + # + # The above example loads the file myplugin/my_helper.rb relative to the + # file in which MyPlugin was defined. + # + # You can also load a helper from a different plugin: + # + # helper 'other_plugin/helper_name' + def helper *helpers + for helper in helpers + if helper.is_a?(String) && helper[/\//] + self::PLUGIN_HOST.require_helper $`, $' + else + self::PLUGIN_HOST.require_helper plugin_id, helper.to_s + end + end + end + + # Returns the pulgin id used by the engine. + def plugin_id + name[/\w+$/].downcase + end + +end + +# Convenience method for plugin loading. +# The syntax used is: +# +# CodeRay.require_plugin '/' +# +# Returns the loaded plugin. +def self.require_plugin path + host_id, plugin_id = path.split '/', 2 + host = PluginHost.host_by_id(host_id) + raise PluginHost::HostNotFound, + "No host for #{host_id.inspect} found." unless host + host.load plugin_id +end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/helpers/word_list.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/helpers/word_list.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,138 @@ +module CodeRay + +# = WordList +# +# A Hash subclass designed for mapping word lists to token types. +# +# Copyright (c) 2006 by murphy (Kornelius Kalnbach) +# +# License:: LGPL / ask the author +# Version:: 1.1 (2006-Oct-19) +# +# A WordList is a Hash with some additional features. +# It is intended to be used for keyword recognition. +# +# WordList is highly optimized to be used in Scanners, +# typically to decide whether a given ident is a special token. +# +# For case insensitive words use CaseIgnoringWordList. +# +# Example: +# +# # define word arrays +# RESERVED_WORDS = %w[ +# asm break case continue default do else +# ... +# ] +# +# PREDEFINED_TYPES = %w[ +# int long short char void +# ... +# ] +# +# PREDEFINED_CONSTANTS = %w[ +# EOF NULL ... +# ] +# +# # make a WordList +# IDENT_KIND = WordList.new(:ident). +# add(RESERVED_WORDS, :reserved). +# add(PREDEFINED_TYPES, :pre_type). +# add(PREDEFINED_CONSTANTS, :pre_constant) +# +# ... +# +# def scan_tokens tokens, options +# ... +# +# elsif scan(/[A-Za-z_][A-Za-z_0-9]*/) +# # use it +# kind = IDENT_KIND[match] +# ... +class WordList < Hash + + # Creates a new WordList with +default+ as default value. + # + # You can activate +caching+ to store the results for every [] request. + # + # With caching, methods like +include?+ or +delete+ may no longer behave + # as you expect. Therefore, it is recommended to use the [] method only. + def initialize default = false, caching = false, &block + if block + raise ArgumentError, 'Can\'t combine block with caching.' if caching + super(&block) + else + if caching + super() do |h, k| + h[k] = h.fetch k, default + end + else + super default + end + end + end + + # Add words to the list and associate them with +kind+. + # + # Returns +self+, so you can concat add calls. + def add words, kind = true + words.each do |word| + self[word] = kind + end + self + end + +end + + +# A CaseIgnoringWordList is like a WordList, only that +# keys are compared case-insensitively. +# +# Ignoring the text case is realized by sending the +downcase+ message to +# all keys. +# +# Caching usually makes a CaseIgnoringWordList faster, but it has to be +# activated explicitely. +class CaseIgnoringWordList < WordList + + # Creates a new case-insensitive WordList with +default+ as default value. + # + # You can activate caching to store the results for every [] request. + # This speeds up subsequent lookups for the same word, but also + # uses memory. + def initialize default = false, caching = false + if caching + super(default, false) do |h, k| + h[k] = h.fetch k.downcase, default + end + else + super(default, false) + extend Uncached + end + end + + module Uncached # :nodoc: + def [] key + super(key.downcase) + end + end + + # Add +words+ to the list and associate them with +kind+. + def add words, kind = true + words.each do |word| + self[word.downcase] = kind + end + self + end + +end + +end + +__END__ +# check memory consumption +END { + ObjectSpace.each_object(CodeRay::CaseIgnoringWordList) do |wl| + p wl.inject(0) { |memo, key, value| memo + key.size + 24 } + end +} \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanner.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanner.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,298 @@ +module CodeRay + + require 'coderay/helpers/plugin' + + # = Scanners + # + # This module holds the Scanner class and its subclasses. + # For example, the Ruby scanner is named CodeRay::Scanners::Ruby + # can be found in coderay/scanners/ruby. + # + # Scanner also provides methods and constants for the register + # mechanism and the [] method that returns the Scanner class + # belonging to the given lang. + # + # See PluginHost. + module Scanners + extend PluginHost + plugin_path File.dirname(__FILE__), 'scanners' + + require 'strscan' + + # = Scanner + # + # The base class for all Scanners. + # + # It is a subclass of Ruby's great +StringScanner+, which + # makes it easy to access the scanning methods inside. + # + # It is also +Enumerable+, so you can use it like an Array of + # Tokens: + # + # require 'coderay' + # + # c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;" + # + # for text, kind in c_scanner + # puts text if kind == :operator + # end + # + # # prints: (*==)++; + # + # OK, this is a very simple example :) + # You can also use +map+, +any?+, +find+ and even +sort_by+, + # if you want. + class Scanner < StringScanner + + extend Plugin + plugin_host Scanners + + # Raised if a Scanner fails while scanning + ScanError = Class.new(Exception) + + require 'coderay/helpers/word_list' + + # The default options for all scanner classes. + # + # Define @default_options for subclasses. + DEFAULT_OPTIONS = { :stream => false } + + KINDS_NOT_LOC = [:comment, :doctype] + + class << self + + # Returns if the Scanner can be used in streaming mode. + def streamable? + is_a? Streamable + end + + def normify code + code = code.to_s + if code.respond_to?(:encoding) && (code.encoding.name != 'UTF-8' || !code.valid_encoding?) + code = code.dup + original_encoding = code.encoding + code.force_encoding 'Windows-1252' + unless code.valid_encoding? + code.force_encoding original_encoding + if code.encoding.name == 'UTF-8' + code.encode! 'UTF-16BE', :invalid => :replace, :undef => :replace, :replace => '?' + end + code.encode! 'UTF-8', :invalid => :replace, :undef => :replace, :replace => '?' + end + end + code.to_unix + end + + def file_extension extension = nil + if extension + @file_extension = extension.to_s + else + @file_extension ||= plugin_id.to_s + end + end + + end + +=begin +## Excluded for speed reasons; protected seems to make methods slow. + + # Save the StringScanner methods from being called. + # This would not be useful for highlighting. + strscan_public_methods = + StringScanner.instance_methods - + StringScanner.ancestors[1].instance_methods + protected(*strscan_public_methods) +=end + + # Create a new Scanner. + # + # * +code+ is the input String and is handled by the superclass + # StringScanner. + # * +options+ is a Hash with Symbols as keys. + # It is merged with the default options of the class (you can + # overwrite default options here.) + # * +block+ is the callback for streamed highlighting. + # + # If you set :stream to +true+ in the options, the Scanner uses a + # TokenStream with the +block+ as callback to handle the tokens. + # + # Else, a Tokens object is used. + def initialize code='', options = {}, &block + raise "I am only the basic Scanner class. I can't scan "\ + "anything. :( Use my subclasses." if self.class == Scanner + + @options = self.class::DEFAULT_OPTIONS.merge options + + super Scanner.normify(code) + + @tokens = options[:tokens] + if @options[:stream] + warn "warning in CodeRay::Scanner.new: :stream is set, "\ + "but no block was given" unless block_given? + raise NotStreamableError, self unless kind_of? Streamable + @tokens ||= TokenStream.new(&block) + else + warn "warning in CodeRay::Scanner.new: Block given, "\ + "but :stream is #{@options[:stream]}" if block_given? + @tokens ||= Tokens.new + end + @tokens.scanner = self + + setup + end + + def reset + super + reset_instance + end + + def string= code + code = Scanner.normify(code) + if defined?(RUBY_DESCRIPTION) && RUBY_DESCRIPTION['rubinius 1.0.1'] + reset_state + @string = code + else + super code + end + reset_instance + end + + # More mnemonic accessor name for the input string. + alias code string + alias code= string= + + # Returns the Plugin ID for this scanner. + def lang + self.class.plugin_id + end + + # Scans the code and returns all tokens in a Tokens object. + def tokenize new_string=nil, options = {} + options = @options.merge(options) + self.string = new_string if new_string + @cached_tokens = + if @options[:stream] # :stream must have been set already + reset unless new_string + scan_tokens @tokens, options + @tokens + else + scan_tokens @tokens, options + end + end + + def tokens + @cached_tokens ||= tokenize + end + + # Whether the scanner is in streaming mode. + def streaming? + !!@options[:stream] + end + + # Traverses the tokens. + def each &block + raise ArgumentError, + 'Cannot traverse TokenStream.' if @options[:stream] + tokens.each(&block) + end + include Enumerable + + # The current line position of the scanner. + # + # Beware, this is implemented inefficiently. It should be used + # for debugging only. + def line + string[0..pos].count("\n") + 1 + end + + def column pos = self.pos + return 0 if pos <= 0 + string = string() + if string.respond_to?(:bytesize) && (defined?(@bin_string) || string.bytesize != string.size) + @bin_string ||= string.dup.force_encoding('binary') + string = @bin_string + end + pos - (string.rindex(?\n, pos) || 0) + end + + def marshal_dump + @options + end + + def marshal_load options + @options = options + end + + protected + + # Can be implemented by subclasses to do some initialization + # that has to be done once per instance. + # + # Use reset for initialization that has to be done once per + # scan. + def setup + end + + # This is the central method, and commonly the only one a + # subclass implements. + # + # Subclasses must implement this method; it must return +tokens+ + # and must only use Tokens#<< for storing scanned tokens! + def scan_tokens tokens, options + raise NotImplementedError, + "#{self.class}#scan_tokens not implemented." + end + + def reset_instance + @tokens.clear unless @options[:keep_tokens] + @cached_tokens = nil + @bin_string = nil if defined? @bin_string + end + + # Scanner error with additional status information + def raise_inspect msg, tokens, state = 'No state given!', ambit = 30 + raise ScanError, <<-EOE % [ + + +***ERROR in %s: %s (after %d tokens) + +tokens: +%s + +current line: %d column: %d pos: %d +matched: %p state: %p +bol? = %p, eos? = %p + +surrounding code: +%p ~~ %p + + +***ERROR*** + + EOE + File.basename(caller[0]), + msg, + tokens.size, + tokens.last(10).map { |t| t.inspect }.join("\n"), + line, column, pos, + matched, state, bol?, eos?, + string[pos - ambit, ambit], + string[pos, ambit], + ] + end + + end + + end +end + +class String + # I love this hack. It seems to silence all dos/unix/mac newline problems. + def to_unix + if index ?\r + gsub(/\r\n?/, "\n") + else + self + end + end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,143 @@ +K 25 +svn:wc:ra_dav:version-url +V 71 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners +END +java_script-0.9.6.rb +K 25 +svn:wc:ra_dav:version-url +V 92 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script-0.9.6.rb +END +java.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java.rb +END +python.rb +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/python.rb +END +ruby.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby.rb +END +cpp.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/cpp.rb +END +c.rb +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/c.rb +END +groovy.rb +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/groovy.rb +END +debug.rb +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/debug.rb +END +rhtml.rb +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/rhtml.rb +END +php.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/php.rb +END +css.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/css.rb +END +sql.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/sql.rb +END +xml.rb +K 25 +svn:wc:ra_dav:version-url +V 78 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/xml.rb +END +yaml.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/yaml.rb +END +scheme.rb +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/scheme.rb +END +html.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/html.rb +END +java_script.rb +K 25 +svn:wc:ra_dav:version-url +V 86 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script.rb +END +delphi.rb +K 25 +svn:wc:ra_dav:version-url +V 81 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/delphi.rb +END +nitro_xhtml.rb +K 25 +svn:wc:ra_dav:version-url +V 86 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/nitro_xhtml.rb +END +diff.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/diff.rb +END +plaintext.rb +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/plaintext.rb +END +json.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/json.rb +END +_map.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/_map.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,816 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +java_script-0.9.6.rb +file + + + + +2011-03-03T11:05:13.000000Z +a10b4406847a27622a61c041420dab5a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6723 + +java +dir + +ruby +dir + +java.rb +file + + + + +2011-03-03T11:05:13.000000Z +35c0803e396fa14a42c6b8645ca7d557 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5041 + +python.rb +file + + + + +2011-03-03T11:05:13.000000Z +939e009d9b197cb6437646be82c02982 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +9190 + +ruby.rb +file + + + + +2011-03-03T11:05:13.000000Z +cb032992b032fd9cbc93500496d0b038 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +15309 + +cpp.rb +file + + + + +2011-03-03T11:05:13.000000Z +afc4a4b0842e5efdafe98f6c5a10810e +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6286 + +c.rb +file + + + + +2011-03-03T11:05:13.000000Z +299db2bdce8368d0bc6d90f5839c87ee +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5408 + +groovy.rb +file + + + + +2011-03-03T11:05:13.000000Z +7fc1acca7ff04fa00160349b3a1b543e +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +8521 + +debug.rb +file + + + + +2011-03-03T11:05:13.000000Z +94bdd6c948cb9c3d21ef94a5cec19e05 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1281 + +rhtml.rb +file + + + + +2011-03-03T11:05:13.000000Z +ff2e0cad09ef6ba12b2da44e90a25367 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1629 + +php.rb +file + + + + +2011-03-03T11:05:13.000000Z +2de3bd0694a6b52343618c14654c5366 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +23747 + +css.rb +file + + + + +2011-03-03T11:05:13.000000Z +d3c931a5468c723bd8458b4a73d44943 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5493 + +sql.rb +file + + + + +2011-03-03T11:05:13.000000Z +917467cab834f202a455ec0e8be68508 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4726 + +xml.rb +file + + + + +2011-03-03T11:05:13.000000Z +798309ac45aa9d4ccc159242f3a6f150 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +211 + +yaml.rb +file + + + + +2011-03-03T11:05:13.000000Z +f62eab25adbef42e92cad3f5463f91ac +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4261 + +html.rb +file + + + + +2011-03-03T11:05:13.000000Z +1f93d8c4375c7e7b740c42210e0c6edb +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4248 + +scheme.rb +file + + + + +2011-03-03T11:05:13.000000Z +f6c296bbb33704ec2a03725b01e06719 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4939 + +java_script.rb +file + + + + +2011-03-03T11:05:13.000000Z +31360b9ad9e408df15eb2abf84d17c8a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6733 + +delphi.rb +file + + + + +2011-03-03T11:05:13.000000Z +182116a4525447d4faed874dfb790277 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +4504 + +nitro_xhtml.rb +file + + + + +2011-03-03T11:05:13.000000Z +f7d82e60f68fe6c9d46b63e63f6ec9f6 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2858 + +diff.rb +file + + + + +2011-03-03T11:05:13.000000Z +c5932e739b44b0e92f093dfb70cf9de4 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3204 + +plaintext.rb +file + + + + +2011-03-03T11:05:13.000000Z +ae16e40b3db78a5d8c793165085f5db9 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +316 + +json.rb +file + + + + +2011-03-03T11:05:13.000000Z +c34c4d83c7c8cb15bc7209bd36da654e +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2793 + +_map.rb +file + + + + +2011-03-03T11:05:13.000000Z +b3eadcc78242cf25ba0ab3205d6a2b61 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +413 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/_map.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/_map.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,23 @@ +module CodeRay +module Scanners + + map \ + :h => :c, + :cplusplus => :cpp, + :'c++' => :cpp, + :ecma => :java_script, + :ecmascript => :java_script, + :ecma_script => :java_script, + :irb => :ruby, + :javascript => :java_script, + :js => :java_script, + :nitro => :nitro_xhtml, + :pascal => :delphi, + :plain => :plaintext, + :xhtml => :html, + :yml => :yaml + + default :plain + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/c.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/c.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,203 @@ +module CodeRay +module Scanners + + class C < Scanner + + include Streamable + + register_for :c + file_extension 'c' + + RESERVED_WORDS = [ + 'asm', 'break', 'case', 'continue', 'default', 'do', + 'else', 'enum', 'for', 'goto', 'if', 'return', + 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', + 'restrict', # added in C99 + ] + + PREDEFINED_TYPES = [ + 'int', 'long', 'short', 'char', + 'signed', 'unsigned', 'float', 'double', + 'bool', 'complex', # added in C99 + ] + + PREDEFINED_CONSTANTS = [ + 'EOF', 'NULL', + 'true', 'false', # added in C99 + ] + DIRECTIVES = [ + 'auto', 'extern', 'register', 'static', 'void', + 'const', 'volatile', # added in C89 + 'inline', # added in C99 + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(DIRECTIVES, :directive). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + label_expected = true + case_expected = false + label_expected_before_preproc_line = nil + in_preproc_line = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + if in_preproc_line && match != "\\\n" && match.index(?\n) + in_preproc_line = false + label_expected = label_expected_before_preproc_line + end + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif match = scan(/ \# \s* if \s* 0 /x) + match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? + kind = :comment + + elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) + label_expected = match =~ /[;\{\}]/ + if case_expected + label_expected = true if match == ':' + case_expected = false + end + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match] + if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) + kind = :label + match << matched + else + label_expected = false + if kind == :reserved + case match + when 'case', 'default' + case_expected = true + end + end + end + + elsif scan(/\$/) + kind = :ident + + elsif match = scan(/L?"/) + tokens << [:open, :string] + if match[0] == ?L + tokens << ['L', :modifier] + match = '"' + end + state = :string + kind = :delimiter + + elsif scan(/#[ \t]*(\w*)/) + kind = :preprocessor + in_preproc_line = true + label_expected_before_preproc_line = label_expected + state = :include_expected if self[1] == 'include' + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + label_expected = false + kind = :char + + elsif scan(/0[xX][0-9A-Fa-f]+/) + label_expected = false + kind = :hex + + elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) + label_expected = false + kind = :oct + + elsif scan(/(?:\d+)(?![.eEfF])L?L?/) + label_expected = false + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + label_expected = false + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + label_expected = false + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + label_expected = false + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + when :include_expected + if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) + kind = :include + state = :initial + + elsif match = scan(/\s+/) + kind = :space + state = :initial if match.index ?\n + + else + state = :initial + next + + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/cpp.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/cpp.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,228 @@ +module CodeRay +module Scanners + + class CPlusPlus < Scanner + + include Streamable + + register_for :cpp + file_extension 'cpp' + title 'C++' + + # http://www.cppreference.com/wiki/keywords/start + RESERVED_WORDS = [ + 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', + 'case', 'catch', 'class', 'compl', 'const_cast', + 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', + 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', + 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', + 'sizeof', 'static_cast', 'struct', 'switch', 'template', + 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', + 'while', 'xor', 'xor_eq' + ] + + PREDEFINED_TYPES = [ + 'bool', 'char', 'double', 'float', 'int', 'long', + 'short', 'signed', 'unsigned', 'wchar_t', 'string' + ] + PREDEFINED_CONSTANTS = [ + 'false', 'true', + 'EOF', 'NULL', + ] + PREDEFINED_VARIABLES = [ + 'this' + ] + DIRECTIVES = [ + 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', + 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', + 'volatile' + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_VARIABLES, :local_variable). + add(DIRECTIVES, :directive). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + label_expected = true + case_expected = false + label_expected_before_preproc_line = nil + in_preproc_line = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + if in_preproc_line && match != "\\\n" && match.index(?\n) + in_preproc_line = false + label_expected = label_expected_before_preproc_line + end + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif match = scan(/ \# \s* if \s* 0 /x) + match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? + kind = :comment + + elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) + label_expected = match =~ /[;\{\}]/ + if case_expected + label_expected = true if match == ':' + case_expected = false + end + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match] + if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) + kind = :label + match << matched + else + label_expected = false + if kind == :reserved + case match + when 'class' + state = :class_name_expected + when 'case', 'default' + case_expected = true + end + end + end + + elsif scan(/\$/) + kind = :ident + + elsif match = scan(/L?"/) + tokens << [:open, :string] + if match[0] == ?L + tokens << ['L', :modifier] + match = '"' + end + state = :string + kind = :delimiter + + elsif scan(/#[ \t]*(\w*)/) + kind = :preprocessor + in_preproc_line = true + label_expected_before_preproc_line = label_expected + state = :include_expected if self[1] == 'include' + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + label_expected = false + kind = :char + + elsif scan(/0[xX][0-9A-Fa-f]+/) + label_expected = false + kind = :hex + + elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) + label_expected = false + kind = :oct + + elsif scan(/(?:\d+)(?![.eEfF])L?L?/) + label_expected = false + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + label_expected = false + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + label_expected = false + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + label_expected = false + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + when :include_expected + if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) + kind = :include + state = :initial + + elsif match = scan(/\s+/) + kind = :space + state = :initial if match.index ?\n + + else + state = :initial + next + + end + + when :class_name_expected + if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = :class + state = :initial + + elsif match = scan(/\s+/) + kind = :space + + else + getch + kind = :error + state = :initial + + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/css.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/css.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,209 @@ +module CodeRay +module Scanners + + class CSS < Scanner + + register_for :css + + KINDS_NOT_LOC = [ + :comment, + :class, :pseudo_class, :type, + :constant, :directive, + :key, :value, :operator, :color, :float, + :error, :important, + ] + + module RE + Hex = /[0-9a-fA-F]/ + Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too + Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ + NMChar = /[-_a-zA-Z0-9]|#{Escape}/ + NMStart = /[_a-zA-Z]|#{Escape}/ + NL = /\r\n|\r|\n|\f/ + String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp + String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp + String = /#{String1}|#{String2}/ + + HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ + Color = /#{HexColor}/ + + Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ + Name = /#{NMChar}+/ + Ident = /-?#{NMStart}#{NMChar}*/ + AtKeyword = /@#{Ident}/ + Percentage = /#{Num}%/ + + reldimensions = %w[em ex px] + absdimensions = %w[in cm mm pt pc] + Unit = Regexp.union(*(reldimensions + absdimensions)) + + Dimension = /#{Num}#{Unit}/ + + Comment = %r! /\* (?: .*? \*/ | .* ) !mx + Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ + + Id = /##{Name}/ + Class = /\.#{Name}/ + PseudoClass = /:#{Name}/ + AttributeSelector = /\[[^\]]*\]?/ + + end + + def scan_tokens tokens, options + + value_expected = nil + states = [:initial] + + until eos? + + kind = nil + match = nil + + if scan(/\s+/) + kind = :space + + elsif case states.last + when :initial, :media + if scan(/(?>#{RE::Ident})(?!\()|\*/ox) + kind = :type + elsif scan RE::Class + kind = :class + elsif scan RE::Id + kind = :constant + elsif scan RE::PseudoClass + kind = :pseudo_class + elsif match = scan(RE::AttributeSelector) + # TODO: Improve highlighting inside of attribute selectors. + tokens << [:open, :string] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] if match.size > 2 + tokens << [match[-1,1], :delimiter] if match[-1] == ?] + tokens << [:close, :string] + next + elsif match = scan(/@media/) + kind = :directive + states.push :media_before_name + end + + when :block + if scan(/(?>#{RE::Ident})(?!\()/ox) + if value_expected + kind = :value + else + kind = :key + end + end + + when :media_before_name + if scan RE::Ident + kind = :type + states[-1] = :media_after_name + end + + when :media_after_name + if scan(/\{/) + kind = :operator + states[-1] = :media + end + + when :comment + if scan(/(?:[^*\s]|\*(?!\/))+/) + kind = :comment + elsif scan(/\*\//) + kind = :comment + states.pop + elsif scan(/\s+/) + kind = :space + end + + else + raise_inspect 'Unknown state', tokens + + end + + elsif scan(/\/\*/) + kind = :comment + states.push :comment + + elsif scan(/\{/) + value_expected = false + kind = :operator + states.push :block + + elsif scan(/\}/) + value_expected = false + if states.last == :block || states.last == :media + kind = :operator + states.pop + else + kind = :error + end + + elsif match = scan(/#{RE::String}/o) + tokens << [:open, :string] + tokens << [match[0, 1], :delimiter] + tokens << [match[1..-2], :content] if match.size > 2 + tokens << [match[-1, 1], :delimiter] if match.size >= 2 + tokens << [:close, :string] + next + + elsif match = scan(/#{RE::Function}/o) + tokens << [:open, :string] + start = match[/^\w+\(/] + tokens << [start, :delimiter] + if match[-1] == ?) + tokens << [match[start.size..-2], :content] + tokens << [')', :delimiter] + else + tokens << [match[start.size..-1], :content] + end + tokens << [:close, :string] + next + + elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) + kind = :float + + elsif scan(/#{RE::Color}/o) + kind = :color + + elsif scan(/! *important/) + kind = :important + + elsif scan(/rgb\([^()\n]*\)?/) + kind = :color + + elsif scan(/#{RE::AtKeyword}/o) + kind = :directive + + elsif match = scan(/ [+>:;,.=()\/] /x) + if match == ':' + value_expected = true + elsif match == ';' + value_expected = false + end + kind = :operator + + else + getch + kind = :error + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/debug.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/debug.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,62 @@ +module CodeRay +module Scanners + + # = Debug Scanner + class Debug < Scanner + + include Streamable + register_for :debug + file_extension 'raydebug' + title 'CodeRay Token Dump' + + protected + def scan_tokens tokens, options + + opened_tokens = [] + + until eos? + + kind = nil + match = nil + + if scan(/\s+/) + tokens << [matched, :space] + next + + elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) + kind = self[1].to_sym + match = self[2].gsub(/\\(.)/, '\1') + + elsif scan(/ (\w+) < /x) + kind = self[1].to_sym + opened_tokens << kind + match = :open + + elsif !opened_tokens.empty? && scan(/ > /x) + kind = opened_tokens.pop || :error + match = :close + + else + kind = :error + getch + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/delphi.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/delphi.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,150 @@ +module CodeRay +module Scanners + + class Delphi < Scanner + + register_for :delphi + file_extension 'pas' + + RESERVED_WORDS = [ + 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', + 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', + 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', + 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', + 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', + 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', + 'procedure', 'program', 'property', 'raise', 'record', 'repeat', + 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', + 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', + 'xor', 'on' + ] + + DIRECTIVES = [ + 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', + 'contains', 'deprecated', 'dispid', 'dynamic', 'export', + 'external', 'far', 'forward', 'implements', 'local', + 'near', 'nodefault', 'on', 'overload', 'override', + 'package', 'pascal', 'platform', 'private', 'protected', 'public', + 'published', 'read', 'readonly', 'register', 'reintroduce', + 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', + 'virtual', 'write', 'writeonly' + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(DIRECTIVES, :directive) + + NAME_FOLLOWS = CaseIgnoringWordList.new(false). + add(%w(procedure function .)) + + private + def scan_tokens tokens, options + + state = :initial + last_token = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ /x) + tokens << [matched, :space] + next + + elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) + tokens << [matched, :preprocessor] + next + + elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) + tokens << [matched, :comment] + next + + elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) + kind = :operator + + elsif match = scan(/\./) + kind = :operator + if last_token == 'end' + tokens << [match, kind] + next + end + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] + + elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) + tokens << [:open, :char] + tokens << ["'", :delimiter] + tokens << [self[1], :content] + tokens << ["'", :delimiter] + tokens << [:close, :char] + next + + elsif match = scan(/ ' /x) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) + kind = :char + + elsif scan(/ \$ [0-9A-Fa-f]+ /x) + kind = :hex + + elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) + kind = :integer + + elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) + kind = :float + + else + kind = :error + getch + + end + + elsif state == :string + if scan(/[^\n']+/) + kind = :content + elsif scan(/''/) + kind = :char + elsif scan(/'/) + tokens << ["'", :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/\n/) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise "else case \' reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + last_token = match + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/diff.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/diff.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,110 @@ +module CodeRay +module Scanners + + class Diff < Scanner + + register_for :diff + title 'diff output' + + def scan_tokens tokens, options + + line_kind = nil + state = :initial + + until eos? + kind = match = nil + + if match = scan(/\n/) + if line_kind + tokens << [:end_line, line_kind] + line_kind = nil + end + tokens << [match, :space] + next + end + + case state + + when :initial + if match = scan(/--- |\+\+\+ |=+|_+/) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/Index: |Property changes on: /) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/Added: /) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + state = :added + elsif match = scan(/\\ /) + tokens << [:begin_line, line_kind = :change] + tokens << [match, :change] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/@@(?>[^@\n]*)@@/) + if check(/\n|$/) + tokens << [:begin_line, line_kind = :change] + else + tokens << [:open, :change] + end + tokens << [match[0,2], :change] + tokens << [match[2...-2], :plain] + tokens << [match[-2,2], :change] + tokens << [:close, :change] unless line_kind + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/\+/) + tokens << [:begin_line, line_kind = :insert] + tokens << [match, :insert] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/-/) + tokens << [:begin_line, line_kind = :delete] + tokens << [match, :delete] + next unless match = scan(/.+/) + kind = :plain + elsif scan(/ .*/) + kind = :comment + elsif scan(/.+/) + tokens << [:begin_line, line_kind = :comment] + kind = :plain + else + raise_inspect 'else case rached' + end + + when :added + if match = scan(/ \+/) + tokens << [:begin_line, line_kind = :insert] + tokens << [match, :insert] + next unless match = scan(/.+/) + kind = :plain + else + state = :initial + next + end + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + tokens << [:end_line, line_kind] if line_kind + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/groovy.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/groovy.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,264 @@ +module CodeRay +module Scanners + + load :java + + class Groovy < Java + + include Streamable + register_for :groovy + + # TODO: Check this! + GROOVY_KEYWORDS = %w[ + as assert def in + ] + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case instanceof new return throw typeof while as assert in + ] + GROOVY_MAGIC_VARIABLES = %w[ it ] + + IDENT_KIND = Java::IDENT_KIND.dup. + add(GROOVY_KEYWORDS, :keyword). + add(GROOVY_MAGIC_VARIABLES, :local_variable) + + ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} + REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x + + # TODO: interpretation inside ', ", / + STRING_CONTENT_PATTERN = { + "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, + '"' => /[^\\$"\n]+/, + "'''" => /(?>[^\\']+|'(?!''))+/, + '"""' => /(?>[^\\$"]+|"(?!""))+/, + '/' => /[^\\$\/\n]+/, + } + + def scan_tokens tokens, options + + state = :initial + inline_block_stack = [] + inline_block_paren_depth = nil + string_delimiter = nil + import_clause = class_name_follows = last_token = after_def = false + value_expected = true + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + if match.index ?\n + import_clause = after_def = false + value_expected = true unless value_expected + end + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + after_def = false + kind = :comment + + elsif bol? && scan(/ \#!.* /x) + kind = :doctype + + elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) + after_def = value_expected = false + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + if last_token == '.' + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + elsif after_def && check(/\s*[({]/) + kind = :method + after_def = false + elsif kind == :ident && last_token != '?' && check(/:/) + kind = :key + else + class_name_follows = true if match == 'class' || (import_clause && match == 'as') + import_clause = match == 'import' + after_def = true if match == 'def' + end + + elsif scan(/;/) + import_clause = after_def = false + value_expected = true + kind = :operator + + elsif scan(/\{/) + class_name_follows = after_def = false + value_expected = true + kind = :operator + if !inline_block_stack.empty? + inline_block_paren_depth += 1 + end + + # TODO: ~'...', ~"..." and ~/.../ style regexps + elsif match = scan(/ \.\.] | \+\+ | + && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) + value_expected = true + value_expected = :regexp if match == '~' + after_def = false + kind = :operator + + elsif match = scan(/ [)\]}] /x) + value_expected = after_def = false + if !inline_block_stack.empty? && match == '}' + inline_block_paren_depth -= 1 + if inline_block_paren_depth == 0 # closing brace of inline block reached + tokens << [match, :inline_delimiter] + tokens << [:close, :inline] + state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop + next + end + end + kind = :operator + + elsif check(/[\d.]/) + after_def = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lLgG]?/) + kind = :integer + end + + elsif match = scan(/'''|"""/) + after_def = value_expected = false + state = :multiline_string + tokens << [:open, :string] + string_delimiter = match + kind = :delimiter + + # TODO: record.'name' + elsif match = scan(/["']/) + after_def = value_expected = false + state = match == '/' ? :regexp : :string + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\//)) + after_def = value_expected = false + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + after_def = value_expected = false + kind = :annotation + + elsif scan(/\//) + after_def = false + value_expected = true + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :multiline_string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + + elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + # TODO: regexp modifiers? s, m, x, i? + modifiers = scan(/[ix]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + state = :string if state == :multiline_string + tokens << [:close, state] + string_delimiter = nil + after_def = value_expected = false + state = :initial + next + + elsif (state == :string || state == :multiline_string) && + (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + + elsif match = scan(/ \$ #{IDENT} /mox) + tokens << [:open, :inline] + tokens << ['$', :inline_delimiter] + match = match[1..-1] + tokens << [match, IDENT_KIND[match]] + tokens << [:close, :inline] + next + elsif match = scan(/ \$ \{ /x) + tokens << [:open, :inline] + tokens << ['${', :inline_delimiter] + inline_block_stack << [state, string_delimiter, inline_block_paren_depth] + inline_block_paren_depth = 1 + state = :initial + next + + elsif scan(/ \$ /mx) + kind = :content + + elsif scan(/ \\. /mx) + kind = :content + + elsif scan(/ \\ | \n /x) + tokens << [:close, state] + kind = :error + after_def = value_expected = false + state = :initial + + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token = match unless [:space, :comment, :doctype].include? kind + + tokens << [match, kind] + + end + + if [:multiline_string, :string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/html.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/html.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,182 @@ +module CodeRay +module Scanners + + # HTML Scanner + class HTML < Scanner + + include Streamable + register_for :html + + KINDS_NOT_LOC = [ + :comment, :doctype, :preprocessor, + :tag, :attribute_name, :operator, + :attribute_value, :delimiter, :content, + :plain, :entity, :error + ] + + ATTR_NAME = /[\w.:-]+/ + ATTR_VALUE_UNQUOTED = ATTR_NAME + TAG_END = /\/?>/ + HEX = /[0-9a-fA-F]/ + ENTITY = / + & + (?: + \w+ + | + \# + (?: + \d+ + | + x#{HEX}+ + ) + ) + ; + /ox + + PLAIN_STRING_CONTENT = { + "'" => /[^&'>\n]+/, + '"' => /[^&">\n]+/, + } + + def reset + super + @state = :initial + end + + private + def setup + @state = :initial + @plain_string_content = nil + end + + def scan_tokens tokens, options + + state = @state + plain_string_content = @plain_string_content + + until eos? + + kind = nil + match = nil + + if scan(/\s+/m) + kind = :space + + else + + case state + + when :initial + if scan(//m) + kind = :comment + elsif scan(//m) + kind = :doctype + elsif scan(/<\?xml.*?\?>/m) + kind = :preprocessor + elsif scan(/<\?.*?\?>|<%.*?%>/m) + kind = :comment + elsif scan(/<\/[-\w.:]*>/m) + kind = :tag + elsif match = scan(/<[-\w.:]+>?/m) + kind = :tag + state = :attribute unless match[-1] == ?> + elsif scan(/[^<>&]+/) + kind = :plain + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/[<>&]/) + kind = :error + else + raise_inspect '[BUG] else-case reached with state %p' % [state], tokens + end + + when :attribute + if scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + state = :attribute_equal + else + kind = :error + getch + end + + when :attribute_equal + if scan(/=/) + kind = :operator + state = :attribute_value + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/./) + kind = :error + state = :attribute + end + + when :attribute_value + if scan(/#{ATTR_VALUE_UNQUOTED}/o) + kind = :attribute_value + state = :attribute + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :attribute_value_string + plain_string_content = PLAIN_STRING_CONTENT[match] + kind = :delimiter + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + else + kind = :error + getch + end + + when :attribute_value_string + if scan(plain_string_content) + kind = :content + elsif scan(/['"]/) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :attribute + next + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/&/) + kind = :content + elsif scan(/[\n>]/) + tokens << [:close, :string] + kind = :error + state = :initial + end + + else + raise_inspect 'Unknown state: %p' % [state], tokens + + end + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + if options[:keep_state] + @state = state + @plain_string_content = plain_string_content + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,176 @@ +module CodeRay +module Scanners + + class Java < Scanner + + include Streamable + register_for :java + helper :builtin_types + + # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html + KEYWORDS = %w[ + assert break case catch continue default do else + finally for if instanceof import new package + return switch throw try typeof while + debugger export + ] + RESERVED = %w[ const goto ] + CONSTANTS = %w[ false null true ] + MAGIC_VARIABLES = %w[ this super ] + TYPES = %w[ + boolean byte char class double enum float int interface long + short void + ] << '[]' # because int[] should be highlighted as a type + DIRECTIVES = %w[ + abstract extends final implements native private protected public + static strictfp synchronized throws transient volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(RESERVED, :reserved). + add(CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(TYPES, :type). + add(BuiltinTypes::List, :pre_type). + add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). + add(DIRECTIVES, :directive) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + import_clause = class_name_follows = last_token_dot = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + tokens << [match, :comment] + next + + elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + if last_token_dot + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + else + import_clause = true if match == 'import' + class_name_follows = true if match == 'class' || match == 'interface' + end + + elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) + kind = :operator + + elsif scan(/;/) + import_clause = false + kind = :operator + + elsif scan(/\{/) + class_name_follows = false + kind = :operator + + elsif check(/[\d.]/) + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lL]?/) + kind = :integer + end + + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :string + string_delimiter = match + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + kind = :annotation + + else + getch + kind = :error + + end + + when :string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + tokens << [:close, state] + string_delimiter = nil + state = :initial + next + elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script-0.9.6.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script-0.9.6.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, + '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / (?> [^\\']* (?: \\. [^\\']* )* ) ' \s* : /mx, + '"' => / (?> [^\\"]* (?: \\. [^\\"]* )* ) " \s* : /mx, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/json.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/json.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,108 @@ +module CodeRay +module Scanners + + class JSON < Scanner + + include Streamable + + register_for :json + file_extension 'json' + + KINDS_NOT_LOC = [ + :float, :char, :content, :delimiter, + :error, :integer, :operator, :value, + ] + + ESCAPE = / [bfnrt\\"\/] /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x + + def scan_tokens tokens, options + + state = :initial + stack = [] + key_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + elsif match = scan(/ [:,\[{\]}] /x) + kind = :operator + case match + when '{' then stack << :object; key_expected = true + when '[' then stack << :array + when ':' then key_expected = false + when ',' then key_expected = true if stack.last == :object + when '}', ']' then stack.pop # no error recovery, but works for valid JSON + end + elsif match = scan(/ true | false | null /x) + kind = :value + elsif match = scan(/-?(?:0|[1-9]\d*)/) + kind = :integer + if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) + match << matched + kind = :float + end + elsif match = scan(/"/) + state = key_expected ? :key : :string + tokens << [:open, state] + kind = :delimiter + else + getch + kind = :error + end + + when :string, :key + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, state] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :key].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,136 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # Nitro XHTML Scanner + class NitroXHTML < Scanner + + include Streamable + register_for :nitro_xhtml + file_extension :xhtml + title 'Nitro XHTML' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + NITRO_RUBY_BLOCK = / + <\?r + (?> + [^\?]* + (?> \?(?!>) [^\?]* )* + ) + (?: \?> )? + | + + (?> + [^<]* + (?> <(?!\/ruby>) [^<]* )* + ) + (?: <\/ruby> )? + | + <% + (?> + [^%]* + (?> %(?!>) [^%]* )* + ) + (?: %> )? + /mx + + NITRO_VALUE_BLOCK = / + \# + (?: + \{ + [^{}]* + (?> + \{ [^}]* \} + (?> [^{}]* ) + )* + \}? + | \| [^|]* \|? + | \( [^)]* \)? + | \[ [^\]]* \]? + | \\ [^\\]* \\? + ) + /x + + NITRO_ENTITY = / + % (?: \#\d+ | \w+ ) ; + / + + START_OF_RUBY = / + (?=[<\#%]) + < (?: \?r | % | ruby> ) + | \# [{(|] + | % (?: \#\d+ | \w+ ) ; + /x + + CLOSING_PAREN = Hash.new do |h, p| + h[p] = p + end.update( { + '(' => ')', + '[' => ']', + '{' => '}', + } ) + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) + start_tag = match[0,2] + delimiter = CLOSING_PAREN[start_tag[1,1]] + end_tag = match[-1,1] == delimiter ? delimiter : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) + start_tag = '' ? '?>' : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -(end_tag.size)-1] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif entity = scan(/#{NITRO_ENTITY}/o) + tokens << [entity, :entity] + + elsif scan(/%/) + tokens << [matched, :error] + + else + raise_inspect 'else-case reached!', tokens + + end + + end + + tokens + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/php.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/php.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,533 @@ +module CodeRay +module Scanners + + load :html + + # Original by Stefan Walk. + class PHP < Scanner + + register_for :php + file_extension 'php' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + def setup + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + module Words + + # according to http://www.php.net/manual/en/reserved.keywords.php + KEYWORDS = %w[ + abstract and array as break case catch class clone const continue declare default do else elseif + enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global + goto if implements interface instanceof namespace new or private protected public static switch + throw try use var while xor + cfunction old_function + ] + + TYPES = %w[ int integer float double bool boolean string array object resource ] + + LANGUAGE_CONSTRUCTS = %w[ + die echo empty exit eval include include_once isset list + require require_once return print unset + ] + + CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] + + # according to http://php.net/quickref.php on 2009-04-21; + # all functions with _ excluded (module functions) and selected additional functions + BUILTIN_FUNCTIONS = %w[ + abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 + atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec + bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite + calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog + compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex + decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each + ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract + fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner + fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv + fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate + getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid + getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext + gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate + gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell + gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate + implode include intval ip2long iptcembed iptcparse isset + jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp + juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log + log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort + natsort next ngettext nl2br nthmac octdec opendir openlog + ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow + prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile + readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir + serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget + snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat + strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen + strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn + strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam + textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack + unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap + array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc + array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip + array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey + array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad + array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift + array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect + array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk + array_walk_recursive + assert_options base_convert base64_decode base64_encode + chunk_split class_exists class_implements class_parents + count_chars debug_backtrace debug_print_backtrace debug_zval_dump + error_get_last error_log error_reporting extension_loaded + file_exists file_get_contents file_put_contents load_file + func_get_arg func_get_args func_num_args function_exists + get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars + get_current_user get_declared_classes get_declared_interfaces get_defined_constants + get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table + get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime + get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type + gc_collect_cycles gc_disable gc_enable gc_enabled + halt_compiler headers_list headers_sent highlight_file highlight_string + html_entity_decode htmlspecialchars_decode + in_array include_once inclued_get_data + is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite + is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable + is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file + is_writable is_writeable + locale_get_default locale_set_default + number_format override_function parse_str parse_url + php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name + php_strip_whitespace php_uname + preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace + preg_replace_callback preg_split print_r + require_once register_shutdown_function register_tick_function + set_error_handler set_exception_handler set_file_buffer set_include_path + set_magic_quotes_runtime set_time_limit shell_exec + str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count + strip_tags substr_compare substr_count substr_replace + time_nanosleep time_sleep_until + token_get_all token_name trigger_error + unregister_tick_function use_soap_error_handler user_error + utf8_decode utf8_encode var_dump var_export + version_compare + zend_logo_guid zend_thread_id zend_version + create_function call_user_func_array + posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid + posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups + posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid + posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid + posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod + posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid + posix_setuid posix_strerror posix_times posix_ttyname posix_uname + pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority + pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait + pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited + pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig + ] + # TODO: more built-in PHP functions? + + EXCEPTIONS = %w[ + E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING + E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT + ] + + CONSTANTS = %w[ + null true false self parent + __LINE__ __DIR__ __FILE__ __LINE__ + __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ + PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS + PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH + PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR + PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX + PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END + __COMPILER_HALT_OFFSET__ + EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS + EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL + COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED + CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 + M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES + CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB + HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS + INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP + CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT + STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX + LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 + ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 + ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 + MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT + ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING + POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES + N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR + YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN + LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 + LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY + LOG_NDELAY LOG_NOWAIT LOG_PERROR + ] + + PREDEFINED = %w[ + $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV + $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header + $argc $argv + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(KEYWORDS, :reserved). + add(TYPES, :pre_type). + add(LANGUAGE_CONSTRUCTS, :reserved). + add(BUILTIN_FUNCTIONS, :predefined). + add(CLASSES, :pre_constant). + add(EXCEPTIONS, :exception). + add(CONSTANTS, :pre_constant) + + VARIABLE_KIND = WordList.new(:local_variable). + add(PREDEFINED, :predefined) + end + + module RE + + PHP_START = / + ]*?language\s*=\s*"php"[^>]*?> | + ]*?language\s*=\s*'php'[^>]*?> | + <\?php\d? | + <\?(?!xml) + /xi + + PHP_END = %r! + | + \?> + !xi + + HTML_INDICATOR = / ]/i + + IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i + VARIABLE = /\$#{IDENTIFIER}/ + + OPERATOR = / + \.(?!\d)=? | # dot that is not decimal point, string concatenation + && | \|\| | # logic + :: | -> | => | # scope, member, dictionary + \\(?!\n) | # namespace + \+\+ | -- | # increment, decrement + [,;?:()\[\]{}] | # simple delimiters + [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts + [~$] | # whatever + =& | # reference assignment + [=!]=?=? | <> | # comparison and assignment + <<=? | >>=? | [<>]=? # comparison and shift + /x + + end + + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::ASCII_8BIT + self.string = string.encode Encoding::ASCII_8BIT, + :invalid => :replace, :undef => :replace, :replace => '?' + end + end + + if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) + tokens << [:open, :inline] + tokens << [match, :local_variable] + tokens << [scan(/->/), :operator] + tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] + tokens << [:close, :inline] + next + elsif check(/->/) + match << scan(/->/) + kind = :error + end + elsif match = scan(/\{/) + if check(/\$/) + kind = :delimiter + states[-1] = [states.last, delimiter] + delimiter = nil + states.push :php + tokens << [:open, :inline] + else + kind = :string + end + elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) + kind = :local_variable + elsif scan(/\$/) + kind = :content + end + + when :class_expected + if scan(/\s+/) + kind = :space + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :class + states.pop + else + states.pop + next + end + + when :function_expected + if scan(/\s+/) + kind = :space + elsif scan(/&/) + kind = :operator + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :function + states.pop + else + states.pop + next + end + + else + raise_inspect 'Unknown state!', tokens, states + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, states + end + raise_inspect 'Empty token', tokens, states unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,21 @@ +module CodeRay +module Scanners + + class Plaintext < Scanner + + register_for :plaintext, :plain + title 'Plain text' + + include Streamable + + KINDS_NOT_LOC = [:plain] + + def scan_tokens tokens, options + text = (scan_until(/\z/) || '') + tokens << [text, :plain] + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/python.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/python.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,285 @@ +module CodeRay +module Scanners + + # Bases on pygments' PythonLexer, see + # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. + class Python < Scanner + + include Streamable + + register_for :python + file_extension 'py' + + KEYWORDS = [ + 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', + 'del', 'elif', 'else', 'except', 'finally', 'for', + 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', + 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', + 'nonlocal', # new in Python 3 + ] + + OLD_KEYWORDS = [ + 'exec', 'print', # gone in Python 3 + ] + + PREDEFINED_METHODS_AND_TYPES = %w[ + __import__ abs all any apply basestring bin bool buffer + bytearray bytes callable chr classmethod cmp coerce compile + complex delattr dict dir divmod enumerate eval execfile exit + file filter float frozenset getattr globals hasattr hash hex id + input int intern isinstance issubclass iter len list locals + long map max min next object oct open ord pow property range + raw_input reduce reload repr reversed round set setattr slice + sorted staticmethod str sum super tuple type unichr unicode + vars xrange zip + ] + + PREDEFINED_EXCEPTIONS = %w[ + ArithmeticError AssertionError AttributeError + BaseException DeprecationWarning EOFError EnvironmentError + Exception FloatingPointError FutureWarning GeneratorExit IOError + ImportError ImportWarning IndentationError IndexError KeyError + KeyboardInterrupt LookupError MemoryError NameError + NotImplemented NotImplementedError OSError OverflowError + OverflowWarning PendingDeprecationWarning ReferenceError + RuntimeError RuntimeWarning StandardError StopIteration + SyntaxError SyntaxWarning SystemError SystemExit TabError + TypeError UnboundLocalError UnicodeDecodeError + UnicodeEncodeError UnicodeError UnicodeTranslateError + UnicodeWarning UserWarning ValueError Warning ZeroDivisionError + ] + + PREDEFINED_VARIABLES_AND_CONSTANTS = [ + 'False', 'True', 'None', # "keywords" since Python 3 + 'self', 'Ellipsis', 'NotImplemented', + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(OLD_KEYWORDS, :old_keyword). + add(PREDEFINED_METHODS_AND_TYPES, :predefined). + add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). + add(PREDEFINED_EXCEPTIONS, :exception) + + NAME = / [^\W\d] \w* /x + ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x + + OPERATOR = / + \.\.\. | # ellipsis + \.(?!\d) | # dot but not decimal point + [,;:()\[\]{}] | # simple delimiters + \/\/=? | \*\*=? | # special math + [-+*\/%&|^]=? | # ordinary math and binary logic + [~`] | # binary complement and inspection + <<=? | >>=? | [<>=]=? | != # comparison and assignment + /x + + STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = Regexp.union delimiter + end + + STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x + end + + DEF_NEW_STATE = WordList.new(:initial). + add(%w(def), :def_expected). + add(%w(import from), :include_expected). + add(%w(class), :class_expected) + + DESCRIPTOR = / + #{NAME} + (?: \. #{NAME} )* + | \* + /x + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + string_raw = false + import_clause = class_name_follows = last_token_dot = false + unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' + from_import_state = [] + + until eos? + + kind = nil + match = nil + + if state == :string + if scan(STRING_DELIMITER_REGEXP[string_delimiter]) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif string_delimiter.size == 3 && scan(/\n/) + kind = :content + elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) + kind = :content + elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) + kind = :char + elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) + kind = :char + elsif scan(/ \\ . /x) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state + end + + elsif match = scan(/ [ \t]+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(/\n/) + tokens << [match, :space] + state = :initial if state == :include_expected + next + + elsif match = scan(/ \# [^\n]* /mx) + tokens << [match, :comment] + next + + elsif state == :initial + + if scan(/#{OPERATOR}/o) + kind = :operator + + elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) + tokens << [:open, :string] + string_delimiter = self[2] + string_raw = false + modifiers = self[1] + unless modifiers.empty? + string_raw = !!modifiers.index(?r) + tokens << [modifiers, :modifier] + match = string_delimiter + end + state = :string + kind = :delimiter + + # TODO: backticks + + elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = IDENT_KIND[match] + # TODO: keyword arguments + kind = :ident if last_token_dot + if kind == :old_keyword + kind = check(/\(/) ? :ident : :keyword + elsif kind == :predefined && check(/ *=/) + kind = :ident + elsif kind == :keyword + state = DEF_NEW_STATE[match] + from_import_state << match.to_sym if state == :include_expected + end + + elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) + kind = :decorator + + elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) + kind = :hex + + elsif scan(/0[bB][01]+[lL]?/) + kind = :bin + + elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + if scan(/[jJ]/) + match << matched + kind = :imaginary + end + + elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) + kind = :oct + + elsif match = scan(/\d+([lL])?/) + kind = :integer + if self[1] == nil && scan(/[jJ]/) + match << matched + kind = :imaginary + end + + else + getch + kind = :error + + end + + elsif state == :def_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :method + else + next + end + + elsif state == :class_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :class + else + next + end + + elsif state == :include_expected + if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) + kind = :include + if match == 'as' + kind = :keyword + from_import_state << :as + elsif from_import_state.first == :from && match == 'import' + kind = :keyword + from_import_state << :import + elsif from_import_state.last == :as + # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method + kind = :ident + from_import_state.pop + elsif IDENT_KIND[match] == :keyword + unscan + match = nil + state = :initial + next + end + elsif match = scan(/,/) + from_import_state.pop if from_import_state.last == :as + kind = :operator + else + from_import_state = [] + state = :initial + next + end + + else + raise_inspect 'Unknown state', tokens, state + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens, state unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,78 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # RHTML Scanner + class RHTML < Scanner + + include Streamable + register_for :rhtml + title 'HTML ERB Template' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + ERB_RUBY_BLOCK = / + <%(?!%)[=-]? + (?> + [^\-%]* # normal* + (?> # special + (?: %(?!>) | -(?!%>) ) + [^\-%]* # normal* + )* + ) + (?: -?%> )? + /x + + START_OF_ERB = / + <%(?!%) + /x + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{ERB_RUBY_BLOCK}/o) + start_tag = match[/\A<%[-=#]?/] + end_tag = match[/-?%?>?\z/] + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + if start_tag == '<%#' + tokens << [code, :comment] + else + @ruby_scanner.tokenize code + end + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + else + raise_inspect 'else-case reached!', tokens + end + + end + + tokens + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,444 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + # This scanner is really complex, since Ruby _is_ a complex language! + # + # It tries to highlight 100% of all common code, + # and 90% of strange codes. + # + # It is optimized for HTML highlighting, and is not very useful for + # parsing or pretty printing. + # + # For now, I think it's better than the scanners in VIM or Syntax, or + # any highlighter I was able to find, except Caleb's RubyLexer. + # + # I hope it's also better than the rdoc/irb lexer. + class Ruby < Scanner + + include Streamable + + register_for :ruby + file_extension 'rb' + + helper :patterns + + if not defined? EncodingError + EncodingError = Class.new Exception + end + + private + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::UTF_8 + self.string = string.encode Encoding::UTF_8, + :invalid => :replace, :undef => :replace, :replace => '?' + end + unicode = false + else + unicode = exist?(/[^\x00-\x7f]/) + end + + last_token_dot = false + value_expected = true + heredocs = nil + last_state = nil + state = :initial + depth = nil + inline_block_stack = [] + + + patterns = Patterns # avoid constant lookup + + until eos? + match = nil + kind = nil + + if state.instance_of? patterns::StringState +# {{{ + match = scan_until(state.pattern) || scan_until(/\z/) + tokens << [match, :content] unless match.empty? + break if eos? + + if state.heredoc and self[1] # end of heredoc + match = getch.to_s + match << scan_until(/$/) unless eos? + tokens << [match, :delimiter] + tokens << [:close, state.type] + state = state.next_state + next + end + + case match = getch + + when state.delim + if state.paren + state.paren_depth -= 1 + if state.paren_depth > 0 + tokens << [match, :nesting_delimiter] + next + end + end + tokens << [match, :delimiter] + if state.type == :regexp and not eos? + modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) + tokens << [modifiers, :modifier] unless modifiers.empty? + end + tokens << [:close, state.type] + value_expected = false + state = state.next_state + + when '\\' + if state.interpreted + if esc = scan(/ #{patterns::ESCAPE} /ox) + tokens << [match + esc, :char] + else + tokens << [match, :error] + end + else + case m = getch + when state.delim, '\\' + tokens << [match + m, :char] + when nil + tokens << [match, :error] + else + tokens << [match + m, :content] + end + end + + when '#' + case peek(1) + when '{' + inline_block_stack << [state, depth, heredocs] + value_expected = true + state = :initial + depth = 1 + tokens << [:open, :inline] + tokens << [match + getch, :inline_delimiter] + when '$', '@' + tokens << [match, :escape] + last_state = state # scan one token as normal code, then return here + state = :initial + else + raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens + end + + when state.paren + state.paren_depth += 1 + tokens << [match, :nesting_delimiter] + + when /#{patterns::REGEXP_SYMBOLS}/ox + tokens << [match, :function] + + else + raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens + + end + next +# }}} + else +# {{{ + if match = scan(/[ \t\f]+/) + kind = :space + match << scan(/\s*/) unless eos? || heredocs + value_expected = true if match.index(?\n) + tokens << [match, kind] + next + + elsif match = scan(/\\?\n/) + kind = :space + if match == "\n" + value_expected = true + state = :initial if state == :undef_comma_expected + end + if heredocs + unscan # heredoc scanning needs \n at start + state = heredocs.shift + tokens << [:open, state.type] + heredocs = nil if heredocs.empty? + next + else + match << scan(/\s*/) unless eos? + end + tokens << [match, kind] + next + + elsif bol? && match = scan(/\#!.*/) + tokens << [match, :doctype] + next + + elsif match = scan(/\#.*/) or + ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) + kind = :comment + tokens << [match, kind] + next + + elsif state == :initial + + # IDENTS # + if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : + /#{patterns::METHOD_NAME}/o) + if last_token_dot + kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end + else + if value_expected != :expect_colon && scan(/:(?= )/) + tokens << [match, :key] + match = ':' + kind = :operator + else + kind = patterns::IDENT_KIND[match] + if kind == :ident + if match[/\A[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) + kind = :constant + end + elsif kind == :reserved + state = patterns::DEF_NEW_STATE[match] + value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] + end + end + end + value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) + + elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) + kind = :ident + value_expected = :set if check(unicode ? /#{patterns::VALUE_FOLLOWS}/uo : + /#{patterns::VALUE_FOLLOWS}/o) + + # OPERATORS # + elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) + if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ + value_expected = :set + end + last_token_dot = :set if self[1] + kind = :operator + unless inline_block_stack.empty? + case match + when '{' + depth += 1 + when '}' + depth -= 1 + if depth == 0 # closing brace of inline block reached + state, depth, heredocs = inline_block_stack.pop + heredocs = nil if heredocs && heredocs.empty? + tokens << [match, :inline_delimiter] + kind = :inline + match = :close + end + end + end + + elsif match = scan(/ ['"] /mx) + tokens << [:open, :string] + kind = :delimiter + state = patterns::StringState.new :string, match == '"', match # important for streaming + + elsif match = scan(unicode ? /#{patterns::INSTANCE_VARIABLE}/uo : + /#{patterns::INSTANCE_VARIABLE}/o) + kind = :instance_variable + + elsif value_expected and match = scan(/\//) + tokens << [:open, :regexp] + kind = :delimiter + interpreted = true + state = patterns::StringState.new :regexp, interpreted, match + + # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) + elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) + kind = self[1] ? :float : :integer + + elsif match = scan(unicode ? /#{patterns::SYMBOL}/uo : + /#{patterns::SYMBOL}/o) + case delim = match[1] + when ?', ?" + tokens << [:open, :symbol] + tokens << [':', :symbol] + match = delim.chr + kind = :delimiter + state = patterns::StringState.new :symbol, delim == ?", match + else + kind = :symbol + end + + elsif match = scan(/ -[>=]? | [+!~^]=? | [*|&]{1,2}=? | >>? /x) + value_expected = :set + kind = :operator + + elsif value_expected and match = scan(unicode ? /#{patterns::HEREDOC_OPEN}/uo : + /#{patterns::HEREDOC_OPEN}/o) + indented = self[1] == '-' + quote = self[3] + delim = self[quote ? 4 : 2] + kind = patterns::QUOTE_TO_TYPE[quote] + tokens << [:open, kind] + tokens << [match, :delimiter] + match = :close + heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) + heredocs ||= [] # create heredocs if empty + heredocs << heredoc + + elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) + kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do + raise_inspect 'Unknown fancy string: %%%p' % k, tokens + end + tokens << [:open, kind] + state = patterns::StringState.new kind, interpreted, self[2] + kind = :delimiter + + elsif value_expected and match = scan(unicode ? /#{patterns::CHARACTER}/uo : + /#{patterns::CHARACTER}/o) + kind = :integer + + elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) + value_expected = :set + kind = :operator + + elsif match = scan(/`/) + if last_token_dot + kind = :operator + else + tokens << [:open, :shell] + kind = :delimiter + state = patterns::StringState.new :shell, true, match + end + + elsif match = scan(unicode ? /#{patterns::GLOBAL_VARIABLE}/uo : + /#{patterns::GLOBAL_VARIABLE}/o) + kind = :global_variable + + elsif match = scan(unicode ? /#{patterns::CLASS_VARIABLE}/uo : + /#{patterns::CLASS_VARIABLE}/o) + kind = :class_variable + + else + if !unicode && !string.respond_to?(:encoding) + # check for unicode + debug, $DEBUG = $DEBUG, false + begin + if check(/./mu).size > 1 + # seems like we should try again with unicode + unicode = true + end + rescue + # bad unicode char; use getch + ensure + $DEBUG = debug + end + next if unicode + end + kind = :error + match = scan(unicode ? /./mu : /./m) + + end + + elsif state == :def_expected + state = :initial + if scan(/self\./) + tokens << ['self', :pre_constant] + tokens << ['.', :operator] + end + if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : + /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) + kind = :method + else + next + end + + elsif state == :module_expected + if match = scan(/< 1 + state = this_block.first + tokens << [:close, state.type] + end + + tokens + end + + end + +end +end + +# vim:fdm=marker diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,145 @@ +module CodeRay + module Scanners + + # Scheme scanner for CodeRay (by closure). + # Thanks to murphy for putting CodeRay into public. + class Scheme < Scanner + + # TODO: function defs + # TODO: built-in functions + + register_for :scheme + file_extension 'scm' + + CORE_FORMS = %w[ + lambda let let* letrec syntax-case define-syntax let-syntax + letrec-syntax begin define quote if or and cond case do delay + quasiquote set! cons force call-with-current-continuation call/cc + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(CORE_FORMS, :reserved) + + #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i + #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ + #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ + IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ + DIGIT = /\d/ + DIGIT10 = DIGIT + DIGIT16 = /[0-9a-f]/i + DIGIT8 = /[0-7]/ + DIGIT2 = /[01]/ + RADIX16 = /\#x/i + RADIX8 = /\#o/i + RADIX2 = /\#b/i + RADIX10 = /\#d/i + EXACTNESS = /#i|#e/i + SIGN = /[\+-]?/ + EXP_MARK = /[esfdl]/i + EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ + SUFFIX = /#{EXP}?/ + PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ + PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ + PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ + PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ + UINT10 = /#{DIGIT10}+#*/ + UINT16 = /#{DIGIT16}+#*/ + UINT8 = /#{DIGIT8}+#*/ + UINT2 = /#{DIGIT2}+#*/ + DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ + UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ + UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ + UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ + UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ + REAL10 = /#{SIGN}#{UREAL10}/ + REAL16 = /#{SIGN}#{UREAL16}/ + REAL8 = /#{SIGN}#{UREAL8}/ + REAL2 = /#{SIGN}#{UREAL2}/ + IMAG10 = /i|#{UREAL10}i/ + IMAG16 = /i|#{UREAL16}i/ + IMAG8 = /i|#{UREAL8}i/ + IMAG2 = /i|#{UREAL2}i/ + COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ + COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ + COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ + COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ + NUM10 = /#{PREFIX10}?#{COMPLEX10}/ + NUM16 = /#{PREFIX16}#{COMPLEX16}/ + NUM8 = /#{PREFIX8}#{COMPLEX8}/ + NUM2 = /#{PREFIX2}#{COMPLEX2}/ + NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ + + private + def scan_tokens tokens,options + + state = :initial + ident_kind = IDENT_KIND + + until eos? + kind = match = nil + + case state + when :initial + if scan(/ \s+ | \\\n /x) + kind = :space + elsif scan(/['\(\[\)\]]|#\(/) + kind = :operator_fat + elsif scan(/;.*/) + kind = :comment + elsif scan(/#\\(?:newline|space|.?)/) + kind = :char + elsif scan(/#[ft]/) + kind = :pre_constant + elsif scan(/#{IDENTIFIER}/o) + kind = ident_kind[matched] + elsif scan(/\./) + kind = :operator + elsif scan(/"/) + tokens << [:open, :string] + state = :string + tokens << ['"', :delimiter] + next + elsif scan(/#{NUM}/o) and not matched.empty? + kind = :integer + elsif getch + kind = :error + end + + when :string + if scan(/[^"\\]+/) or scan(/\\.?/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + else + raise_inspect "else case \" reached; %p not handled." % peek(1), + tokens, state + end + + else + raise "else case reached" + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens, state unless match + + tokens << [match, kind] + + end # until eos + + if state == :string + tokens << [:close, :string] + end + + tokens + + end #scan_tokens + end #class + end #module scanners +end #module coderay \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,162 @@ +module CodeRay module Scanners + + # by Josh Goebel + class SQL < Scanner + + register_for :sql + + RESERVED_WORDS = %w( + create database table index trigger drop primary key set select + insert update delete replace into + on from values before and or if exists case when + then else as group order by avg where + join inner outer union engine not + like end using collate show columns begin + ) + + PREDEFINED_TYPES = %w( + char varchar enum binary text tinytext mediumtext + longtext blob tinyblob mediumblob longblob timestamp + date time datetime year double decimal float int + integer tinyint mediumint bigint smallint unsigned bit + bool boolean hex bin oct + ) + + PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) + + DIRECTIVES = %w( auto_increment unique default charset ) + + PREDEFINED_CONSTANTS = %w( null true false ) + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(PREDEFINED_FUNCTIONS, :predefined). + add(DIRECTIVES, :directive) + + ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + STRING_PREFIXES = /[xnb]|_\w+/i + + def scan_tokens tokens, options + + state = :initial + string_type = nil + string_content = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/(?:--\s?|#).*/) + kind = :comment + + elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) + kind = :operator + + elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) + prefix = self[1] + string_type = self[2] + tokens << [:open, :string] + tokens << [prefix, :modifier] if prefix + match = string_type + state = :string + kind = :delimiter + + elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) + kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] + + elsif scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + + elsif scan(/0[0-7]+(?![89.eEfF])/) + kind = :oct + + elsif scan(/(?>\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + + else + getch + kind = :error + + end + + elsif state == :string + if match = scan(/[^\\"'`]+/) + string_content << match + next + elsif match = scan(/["'`]/) + if string_type == match + if peek(1) == string_type # doubling means escape + string_content << string_type << getch + next + end + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + string_type = nil + next + else + string_content << match + end + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :char + elsif match = scan(/ \\ . /mox) + string_content << match + next + elsif scan(/ \\ | $ /x) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :error + state = :initial + else + raise "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + unless kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + tokens + + end + + end + +end end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +module CodeRay +module Scanners + + load :html + + # XML Scanner + # + # Currently this is the same scanner as Scanners::HTML. + class XML < HTML + + register_for :xml + file_extension 'xml' + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,140 @@ +module CodeRay +module Scanners + + # YAML Scanner + # + # Based on the YAML scanner from Syntax by Jamis Buck. + class YAML < Scanner + + register_for :yaml + file_extension 'yml' + + KINDS_NOT_LOC = :all + + def scan_tokens tokens, options + + value_expected = nil + state = :initial + key_indent = indent = 0 + + until eos? + + kind = nil + match = nil + key_indent = nil if bol? + + if match = scan(/ +[\t ]*/) + kind = :space + + elsif match = scan(/\n+/) + kind = :space + state = :initial if match.index(?\n) + + elsif match = scan(/#.*/) + kind = :comment + + elsif bol? and case + when match = scan(/---|\.\.\./) + tokens << [:open, :head] + tokens << [match, :head] + tokens << [:close, :head] + next + when match = scan(/%.*/) + tokens << [match, :doctype] + next + end + + elsif state == :value and case + when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) + tokens << [:open, :string] + tokens << [matched, :delimiter] + tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) + tokens << [matched, :delimiter] if scan(/"/) + tokens << [:close, :string] + next + when match = scan(/[|>][-+]?/) + tokens << [:open, :string] + tokens << [match, :delimiter] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + tokens << [:close, :string] + next + when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) + tokens << [match, :string] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + next + end + + elsif case + when match = scan(/[-:](?= |$)/) + state = :value if state == :colon && (match == ':' || match == '-') + state = :value if state == :initial && match == '-' + kind = :operator + when match = scan(/[,{}\[\]]/) + kind = :operator + when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) + kind = :key + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) + tokens << [:open, :key] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] + tokens << [match[-1,1], :delimiter] + tokens << [:close, :key] + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + next + when scan(/(![\w\/]+)(:([\w:]+))?/) + tokens << [self[1], :type] + if self[2] + tokens << [':', :operator] + tokens << [self[3], :class] + end + next + when scan(/&\S+/) + kind = :variable + when scan(/\*\w+/) + kind = :global_variable + when scan(/< :c, + :cplusplus => :cpp, + :'c++' => :cpp, + :ecma => :java_script, + :ecmascript => :java_script, + :ecma_script => :java_script, + :irb => :ruby, + :javascript => :java_script, + :js => :java_script, + :nitro => :nitro_xhtml, + :pascal => :delphi, + :plain => :plaintext, + :xhtml => :html, + :yml => :yaml + + default :plain + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/c.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/c.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,203 @@ +module CodeRay +module Scanners + + class C < Scanner + + include Streamable + + register_for :c + file_extension 'c' + + RESERVED_WORDS = [ + 'asm', 'break', 'case', 'continue', 'default', 'do', + 'else', 'enum', 'for', 'goto', 'if', 'return', + 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', + 'restrict', # added in C99 + ] + + PREDEFINED_TYPES = [ + 'int', 'long', 'short', 'char', + 'signed', 'unsigned', 'float', 'double', + 'bool', 'complex', # added in C99 + ] + + PREDEFINED_CONSTANTS = [ + 'EOF', 'NULL', + 'true', 'false', # added in C99 + ] + DIRECTIVES = [ + 'auto', 'extern', 'register', 'static', 'void', + 'const', 'volatile', # added in C89 + 'inline', # added in C99 + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(DIRECTIVES, :directive). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + label_expected = true + case_expected = false + label_expected_before_preproc_line = nil + in_preproc_line = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + if in_preproc_line && match != "\\\n" && match.index(?\n) + in_preproc_line = false + label_expected = label_expected_before_preproc_line + end + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif match = scan(/ \# \s* if \s* 0 /x) + match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? + kind = :comment + + elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) + label_expected = match =~ /[;\{\}]/ + if case_expected + label_expected = true if match == ':' + case_expected = false + end + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match] + if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) + kind = :label + match << matched + else + label_expected = false + if kind == :reserved + case match + when 'case', 'default' + case_expected = true + end + end + end + + elsif scan(/\$/) + kind = :ident + + elsif match = scan(/L?"/) + tokens << [:open, :string] + if match[0] == ?L + tokens << ['L', :modifier] + match = '"' + end + state = :string + kind = :delimiter + + elsif scan(/#[ \t]*(\w*)/) + kind = :preprocessor + in_preproc_line = true + label_expected_before_preproc_line = label_expected + state = :include_expected if self[1] == 'include' + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + label_expected = false + kind = :char + + elsif scan(/0[xX][0-9A-Fa-f]+/) + label_expected = false + kind = :hex + + elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) + label_expected = false + kind = :oct + + elsif scan(/(?:\d+)(?![.eEfF])L?L?/) + label_expected = false + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + label_expected = false + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + label_expected = false + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + label_expected = false + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + when :include_expected + if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) + kind = :include + state = :initial + + elsif match = scan(/\s+/) + kind = :space + state = :initial if match.index ?\n + + else + state = :initial + next + + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/cpp.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/cpp.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,228 @@ +module CodeRay +module Scanners + + class CPlusPlus < Scanner + + include Streamable + + register_for :cpp + file_extension 'cpp' + title 'C++' + + # http://www.cppreference.com/wiki/keywords/start + RESERVED_WORDS = [ + 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', + 'case', 'catch', 'class', 'compl', 'const_cast', + 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', + 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', + 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', + 'sizeof', 'static_cast', 'struct', 'switch', 'template', + 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', + 'while', 'xor', 'xor_eq' + ] + + PREDEFINED_TYPES = [ + 'bool', 'char', 'double', 'float', 'int', 'long', + 'short', 'signed', 'unsigned', 'wchar_t', 'string' + ] + PREDEFINED_CONSTANTS = [ + 'false', 'true', + 'EOF', 'NULL', + ] + PREDEFINED_VARIABLES = [ + 'this' + ] + DIRECTIVES = [ + 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', + 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', + 'volatile' + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_VARIABLES, :local_variable). + add(DIRECTIVES, :directive). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + label_expected = true + case_expected = false + label_expected_before_preproc_line = nil + in_preproc_line = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + if in_preproc_line && match != "\\\n" && match.index(?\n) + in_preproc_line = false + label_expected = label_expected_before_preproc_line + end + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif match = scan(/ \# \s* if \s* 0 /x) + match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? + kind = :comment + + elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) + label_expected = match =~ /[;\{\}]/ + if case_expected + label_expected = true if match == ':' + case_expected = false + end + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match] + if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) + kind = :label + match << matched + else + label_expected = false + if kind == :reserved + case match + when 'class' + state = :class_name_expected + when 'case', 'default' + case_expected = true + end + end + end + + elsif scan(/\$/) + kind = :ident + + elsif match = scan(/L?"/) + tokens << [:open, :string] + if match[0] == ?L + tokens << ['L', :modifier] + match = '"' + end + state = :string + kind = :delimiter + + elsif scan(/#[ \t]*(\w*)/) + kind = :preprocessor + in_preproc_line = true + label_expected_before_preproc_line = label_expected + state = :include_expected if self[1] == 'include' + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + label_expected = false + kind = :char + + elsif scan(/0[xX][0-9A-Fa-f]+/) + label_expected = false + kind = :hex + + elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) + label_expected = false + kind = :oct + + elsif scan(/(?:\d+)(?![.eEfF])L?L?/) + label_expected = false + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + label_expected = false + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + label_expected = false + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + label_expected = false + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + when :include_expected + if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) + kind = :include + state = :initial + + elsif match = scan(/\s+/) + kind = :space + state = :initial if match.index ?\n + + else + state = :initial + next + + end + + when :class_name_expected + if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = :class + state = :initial + + elsif match = scan(/\s+/) + kind = :space + + else + getch + kind = :error + state = :initial + + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/css.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/css.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,209 @@ +module CodeRay +module Scanners + + class CSS < Scanner + + register_for :css + + KINDS_NOT_LOC = [ + :comment, + :class, :pseudo_class, :type, + :constant, :directive, + :key, :value, :operator, :color, :float, + :error, :important, + ] + + module RE + Hex = /[0-9a-fA-F]/ + Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too + Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ + NMChar = /[-_a-zA-Z0-9]|#{Escape}/ + NMStart = /[_a-zA-Z]|#{Escape}/ + NL = /\r\n|\r|\n|\f/ + String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp + String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp + String = /#{String1}|#{String2}/ + + HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ + Color = /#{HexColor}/ + + Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ + Name = /#{NMChar}+/ + Ident = /-?#{NMStart}#{NMChar}*/ + AtKeyword = /@#{Ident}/ + Percentage = /#{Num}%/ + + reldimensions = %w[em ex px] + absdimensions = %w[in cm mm pt pc] + Unit = Regexp.union(*(reldimensions + absdimensions)) + + Dimension = /#{Num}#{Unit}/ + + Comment = %r! /\* (?: .*? \*/ | .* ) !mx + Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ + + Id = /##{Name}/ + Class = /\.#{Name}/ + PseudoClass = /:#{Name}/ + AttributeSelector = /\[[^\]]*\]?/ + + end + + def scan_tokens tokens, options + + value_expected = nil + states = [:initial] + + until eos? + + kind = nil + match = nil + + if scan(/\s+/) + kind = :space + + elsif case states.last + when :initial, :media + if scan(/(?>#{RE::Ident})(?!\()|\*/ox) + kind = :type + elsif scan RE::Class + kind = :class + elsif scan RE::Id + kind = :constant + elsif scan RE::PseudoClass + kind = :pseudo_class + elsif match = scan(RE::AttributeSelector) + # TODO: Improve highlighting inside of attribute selectors. + tokens << [:open, :string] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] if match.size > 2 + tokens << [match[-1,1], :delimiter] if match[-1] == ?] + tokens << [:close, :string] + next + elsif match = scan(/@media/) + kind = :directive + states.push :media_before_name + end + + when :block + if scan(/(?>#{RE::Ident})(?!\()/ox) + if value_expected + kind = :value + else + kind = :key + end + end + + when :media_before_name + if scan RE::Ident + kind = :type + states[-1] = :media_after_name + end + + when :media_after_name + if scan(/\{/) + kind = :operator + states[-1] = :media + end + + when :comment + if scan(/(?:[^*\s]|\*(?!\/))+/) + kind = :comment + elsif scan(/\*\//) + kind = :comment + states.pop + elsif scan(/\s+/) + kind = :space + end + + else + raise_inspect 'Unknown state', tokens + + end + + elsif scan(/\/\*/) + kind = :comment + states.push :comment + + elsif scan(/\{/) + value_expected = false + kind = :operator + states.push :block + + elsif scan(/\}/) + value_expected = false + if states.last == :block || states.last == :media + kind = :operator + states.pop + else + kind = :error + end + + elsif match = scan(/#{RE::String}/o) + tokens << [:open, :string] + tokens << [match[0, 1], :delimiter] + tokens << [match[1..-2], :content] if match.size > 2 + tokens << [match[-1, 1], :delimiter] if match.size >= 2 + tokens << [:close, :string] + next + + elsif match = scan(/#{RE::Function}/o) + tokens << [:open, :string] + start = match[/^\w+\(/] + tokens << [start, :delimiter] + if match[-1] == ?) + tokens << [match[start.size..-2], :content] + tokens << [')', :delimiter] + else + tokens << [match[start.size..-1], :content] + end + tokens << [:close, :string] + next + + elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) + kind = :float + + elsif scan(/#{RE::Color}/o) + kind = :color + + elsif scan(/! *important/) + kind = :important + + elsif scan(/rgb\([^()\n]*\)?/) + kind = :color + + elsif scan(/#{RE::AtKeyword}/o) + kind = :directive + + elsif match = scan(/ [+>:;,.=()\/] /x) + if match == ':' + value_expected = true + elsif match == ';' + value_expected = false + end + kind = :operator + + else + getch + kind = :error + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/debug.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/debug.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,62 @@ +module CodeRay +module Scanners + + # = Debug Scanner + class Debug < Scanner + + include Streamable + register_for :debug + file_extension 'raydebug' + title 'CodeRay Token Dump' + + protected + def scan_tokens tokens, options + + opened_tokens = [] + + until eos? + + kind = nil + match = nil + + if scan(/\s+/) + tokens << [matched, :space] + next + + elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) + kind = self[1].to_sym + match = self[2].gsub(/\\(.)/, '\1') + + elsif scan(/ (\w+) < /x) + kind = self[1].to_sym + opened_tokens << kind + match = :open + + elsif !opened_tokens.empty? && scan(/ > /x) + kind = opened_tokens.pop || :error + match = :close + + else + kind = :error + getch + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/delphi.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/delphi.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,150 @@ +module CodeRay +module Scanners + + class Delphi < Scanner + + register_for :delphi + file_extension 'pas' + + RESERVED_WORDS = [ + 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', + 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', + 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', + 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', + 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', + 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', + 'procedure', 'program', 'property', 'raise', 'record', 'repeat', + 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', + 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', + 'xor', 'on' + ] + + DIRECTIVES = [ + 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', + 'contains', 'deprecated', 'dispid', 'dynamic', 'export', + 'external', 'far', 'forward', 'implements', 'local', + 'near', 'nodefault', 'on', 'overload', 'override', + 'package', 'pascal', 'platform', 'private', 'protected', 'public', + 'published', 'read', 'readonly', 'register', 'reintroduce', + 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', + 'virtual', 'write', 'writeonly' + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(DIRECTIVES, :directive) + + NAME_FOLLOWS = CaseIgnoringWordList.new(false). + add(%w(procedure function .)) + + private + def scan_tokens tokens, options + + state = :initial + last_token = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ /x) + tokens << [matched, :space] + next + + elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) + tokens << [matched, :preprocessor] + next + + elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) + tokens << [matched, :comment] + next + + elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) + kind = :operator + + elsif match = scan(/\./) + kind = :operator + if last_token == 'end' + tokens << [match, kind] + next + end + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] + + elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) + tokens << [:open, :char] + tokens << ["'", :delimiter] + tokens << [self[1], :content] + tokens << ["'", :delimiter] + tokens << [:close, :char] + next + + elsif match = scan(/ ' /x) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) + kind = :char + + elsif scan(/ \$ [0-9A-Fa-f]+ /x) + kind = :hex + + elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) + kind = :integer + + elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) + kind = :float + + else + kind = :error + getch + + end + + elsif state == :string + if scan(/[^\n']+/) + kind = :content + elsif scan(/''/) + kind = :char + elsif scan(/'/) + tokens << ["'", :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/\n/) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise "else case \' reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + last_token = match + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/diff.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/diff.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,110 @@ +module CodeRay +module Scanners + + class Diff < Scanner + + register_for :diff + title 'diff output' + + def scan_tokens tokens, options + + line_kind = nil + state = :initial + + until eos? + kind = match = nil + + if match = scan(/\n/) + if line_kind + tokens << [:end_line, line_kind] + line_kind = nil + end + tokens << [match, :space] + next + end + + case state + + when :initial + if match = scan(/--- |\+\+\+ |=+|_+/) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/Index: |Property changes on: /) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/Added: /) + tokens << [:begin_line, line_kind = :head] + tokens << [match, :head] + next unless match = scan(/.+/) + kind = :plain + state = :added + elsif match = scan(/\\ /) + tokens << [:begin_line, line_kind = :change] + tokens << [match, :change] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/@@(?>[^@\n]*)@@/) + if check(/\n|$/) + tokens << [:begin_line, line_kind = :change] + else + tokens << [:open, :change] + end + tokens << [match[0,2], :change] + tokens << [match[2...-2], :plain] + tokens << [match[-2,2], :change] + tokens << [:close, :change] unless line_kind + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/\+/) + tokens << [:begin_line, line_kind = :insert] + tokens << [match, :insert] + next unless match = scan(/.+/) + kind = :plain + elsif match = scan(/-/) + tokens << [:begin_line, line_kind = :delete] + tokens << [match, :delete] + next unless match = scan(/.+/) + kind = :plain + elsif scan(/ .*/) + kind = :comment + elsif scan(/.+/) + tokens << [:begin_line, line_kind = :comment] + kind = :plain + else + raise_inspect 'else case rached' + end + + when :added + if match = scan(/ \+/) + tokens << [:begin_line, line_kind = :insert] + tokens << [match, :insert] + next unless match = scan(/.+/) + kind = :plain + else + state = :initial + next + end + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + tokens << [:end_line, line_kind] if line_kind + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/groovy.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/groovy.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,264 @@ +module CodeRay +module Scanners + + load :java + + class Groovy < Java + + include Streamable + register_for :groovy + + # TODO: Check this! + GROOVY_KEYWORDS = %w[ + as assert def in + ] + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case instanceof new return throw typeof while as assert in + ] + GROOVY_MAGIC_VARIABLES = %w[ it ] + + IDENT_KIND = Java::IDENT_KIND.dup. + add(GROOVY_KEYWORDS, :keyword). + add(GROOVY_MAGIC_VARIABLES, :local_variable) + + ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} + REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x + + # TODO: interpretation inside ', ", / + STRING_CONTENT_PATTERN = { + "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, + '"' => /[^\\$"\n]+/, + "'''" => /(?>[^\\']+|'(?!''))+/, + '"""' => /(?>[^\\$"]+|"(?!""))+/, + '/' => /[^\\$\/\n]+/, + } + + def scan_tokens tokens, options + + state = :initial + inline_block_stack = [] + inline_block_paren_depth = nil + string_delimiter = nil + import_clause = class_name_follows = last_token = after_def = false + value_expected = true + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + if match.index ?\n + import_clause = after_def = false + value_expected = true unless value_expected + end + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + after_def = false + kind = :comment + + elsif bol? && scan(/ \#!.* /x) + kind = :doctype + + elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) + after_def = value_expected = false + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + if last_token == '.' + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + elsif after_def && check(/\s*[({]/) + kind = :method + after_def = false + elsif kind == :ident && last_token != '?' && check(/:/) + kind = :key + else + class_name_follows = true if match == 'class' || (import_clause && match == 'as') + import_clause = match == 'import' + after_def = true if match == 'def' + end + + elsif scan(/;/) + import_clause = after_def = false + value_expected = true + kind = :operator + + elsif scan(/\{/) + class_name_follows = after_def = false + value_expected = true + kind = :operator + if !inline_block_stack.empty? + inline_block_paren_depth += 1 + end + + # TODO: ~'...', ~"..." and ~/.../ style regexps + elsif match = scan(/ \.\.] | \+\+ | + && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) + value_expected = true + value_expected = :regexp if match == '~' + after_def = false + kind = :operator + + elsif match = scan(/ [)\]}] /x) + value_expected = after_def = false + if !inline_block_stack.empty? && match == '}' + inline_block_paren_depth -= 1 + if inline_block_paren_depth == 0 # closing brace of inline block reached + tokens << [match, :inline_delimiter] + tokens << [:close, :inline] + state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop + next + end + end + kind = :operator + + elsif check(/[\d.]/) + after_def = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lLgG]?/) + kind = :integer + end + + elsif match = scan(/'''|"""/) + after_def = value_expected = false + state = :multiline_string + tokens << [:open, :string] + string_delimiter = match + kind = :delimiter + + # TODO: record.'name' + elsif match = scan(/["']/) + after_def = value_expected = false + state = match == '/' ? :regexp : :string + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\//)) + after_def = value_expected = false + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + after_def = value_expected = false + kind = :annotation + + elsif scan(/\//) + after_def = false + value_expected = true + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :multiline_string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + + elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + # TODO: regexp modifiers? s, m, x, i? + modifiers = scan(/[ix]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + state = :string if state == :multiline_string + tokens << [:close, state] + string_delimiter = nil + after_def = value_expected = false + state = :initial + next + + elsif (state == :string || state == :multiline_string) && + (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + + elsif match = scan(/ \$ #{IDENT} /mox) + tokens << [:open, :inline] + tokens << ['$', :inline_delimiter] + match = match[1..-1] + tokens << [match, IDENT_KIND[match]] + tokens << [:close, :inline] + next + elsif match = scan(/ \$ \{ /x) + tokens << [:open, :inline] + tokens << ['${', :inline_delimiter] + inline_block_stack << [state, string_delimiter, inline_block_paren_depth] + inline_block_paren_depth = 1 + state = :initial + next + + elsif scan(/ \$ /mx) + kind = :content + + elsif scan(/ \\. /mx) + kind = :content + + elsif scan(/ \\ | \n /x) + tokens << [:close, state] + kind = :error + after_def = value_expected = false + state = :initial + + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token = match unless [:space, :comment, :doctype].include? kind + + tokens << [match, kind] + + end + + if [:multiline_string, :string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/html.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/html.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,182 @@ +module CodeRay +module Scanners + + # HTML Scanner + class HTML < Scanner + + include Streamable + register_for :html + + KINDS_NOT_LOC = [ + :comment, :doctype, :preprocessor, + :tag, :attribute_name, :operator, + :attribute_value, :delimiter, :content, + :plain, :entity, :error + ] + + ATTR_NAME = /[\w.:-]+/ + ATTR_VALUE_UNQUOTED = ATTR_NAME + TAG_END = /\/?>/ + HEX = /[0-9a-fA-F]/ + ENTITY = / + & + (?: + \w+ + | + \# + (?: + \d+ + | + x#{HEX}+ + ) + ) + ; + /ox + + PLAIN_STRING_CONTENT = { + "'" => /[^&'>\n]+/, + '"' => /[^&">\n]+/, + } + + def reset + super + @state = :initial + end + + private + def setup + @state = :initial + @plain_string_content = nil + end + + def scan_tokens tokens, options + + state = @state + plain_string_content = @plain_string_content + + until eos? + + kind = nil + match = nil + + if scan(/\s+/m) + kind = :space + + else + + case state + + when :initial + if scan(//m) + kind = :comment + elsif scan(//m) + kind = :doctype + elsif scan(/<\?xml.*?\?>/m) + kind = :preprocessor + elsif scan(/<\?.*?\?>|<%.*?%>/m) + kind = :comment + elsif scan(/<\/[-\w.:]*>/m) + kind = :tag + elsif match = scan(/<[-\w.:]+>?/m) + kind = :tag + state = :attribute unless match[-1] == ?> + elsif scan(/[^<>&]+/) + kind = :plain + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/[<>&]/) + kind = :error + else + raise_inspect '[BUG] else-case reached with state %p' % [state], tokens + end + + when :attribute + if scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + state = :attribute_equal + else + kind = :error + getch + end + + when :attribute_equal + if scan(/=/) + kind = :operator + state = :attribute_value + elsif scan(/#{ATTR_NAME}/o) + kind = :attribute_name + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + elsif scan(/./) + kind = :error + state = :attribute + end + + when :attribute_value + if scan(/#{ATTR_VALUE_UNQUOTED}/o) + kind = :attribute_value + state = :attribute + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :attribute_value_string + plain_string_content = PLAIN_STRING_CONTENT[match] + kind = :delimiter + elsif scan(/#{TAG_END}/o) + kind = :tag + state = :initial + else + kind = :error + getch + end + + when :attribute_value_string + if scan(plain_string_content) + kind = :content + elsif scan(/['"]/) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :attribute + next + elsif scan(/#{ENTITY}/ox) + kind = :entity + elsif scan(/&/) + kind = :content + elsif scan(/[\n>]/) + tokens << [:close, :string] + kind = :error + state = :initial + end + + else + raise_inspect 'Unknown state: %p' % [state], tokens + + end + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + end + + if options[:keep_state] + @state = state + @plain_string_content = plain_string_content + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,176 @@ +module CodeRay +module Scanners + + class Java < Scanner + + include Streamable + register_for :java + helper :builtin_types + + # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html + KEYWORDS = %w[ + assert break case catch continue default do else + finally for if instanceof import new package + return switch throw try typeof while + debugger export + ] + RESERVED = %w[ const goto ] + CONSTANTS = %w[ false null true ] + MAGIC_VARIABLES = %w[ this super ] + TYPES = %w[ + boolean byte char class double enum float int interface long + short void + ] << '[]' # because int[] should be highlighted as a type + DIRECTIVES = %w[ + abstract extends final implements native private protected public + static strictfp synchronized throws transient volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(RESERVED, :reserved). + add(CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(TYPES, :type). + add(BuiltinTypes::List, :pre_type). + add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). + add(DIRECTIVES, :directive) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + import_clause = class_name_follows = last_token_dot = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + tokens << [match, :comment] + next + + elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) + kind = :include + + elsif match = scan(/ #{IDENT} | \[\] /ox) + kind = IDENT_KIND[match] + if last_token_dot + kind = :ident + elsif class_name_follows + kind = :class + class_name_follows = false + else + import_clause = true if match == 'import' + class_name_follows = true if match == 'class' || match == 'interface' + end + + elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) + kind = :operator + + elsif scan(/;/) + import_clause = false + kind = :operator + + elsif scan(/\{/) + class_name_follows = false + kind = :operator + + elsif check(/[\d.]/) + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) + kind = :float + elsif scan(/\d+[lL]?/) + kind = :integer + end + + elsif match = scan(/["']/) + tokens << [:open, :string] + state = :string + string_delimiter = match + kind = :delimiter + + elsif scan(/ @ #{IDENT} /ox) + kind = :annotation + + else + getch + kind = :error + + end + + when :string + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + tokens << [:close, state] + string_delimiter = nil + state = :initial + next + elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java +END +builtin_types.rb +K 25 +svn:wc:ra_dav:version-url +V 93 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/builtin_types.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,62 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +builtin_types.rb +file + + + + +2011-03-03T11:05:13.000000Z +2522414597cbbef27fad175c20c8a556 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +41768 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,419 @@ +module CodeRay +module Scanners + + module Java::BuiltinTypes # :nodoc: + + List = %w[ + AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection + AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel + AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences + AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector + AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit + AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible + AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext + AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText + AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject + AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection + AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange + AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException + AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent + ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc + ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub + ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent + ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener + Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi + AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite + AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement + Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet + AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array + ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType + AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray + AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference + AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute + AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator + AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException + AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip + AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem + AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback + AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy + AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException + BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException + BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute + BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI + BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup + BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI + BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory + BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel + BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI + BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI + BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI + BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI + BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI + BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException + BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport + BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener + BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider + BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener + BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport + BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding + BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory + BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator + BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp + BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException + BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte + ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet + CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler + CancelablePrintJob CancellationException CancelledKeyException CannotProceedException + CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor + CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException + CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException + CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult + CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator + CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore + CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener + Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter + CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider + Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice + ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class + ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError + ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard + ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException + ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner + CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection + CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI + ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource + ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator + CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel + ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation + ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData + CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl + CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap + ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback + ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener + ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container + ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler + ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory + Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported + CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 + CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector + CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer + DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort + DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl + DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource + DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat + DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing + DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel + DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel + DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter + DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer + DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme + DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument + DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor + DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed + DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec + DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable + DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec + DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream + Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory + DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document + DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener + DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer + DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter + DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener + DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter + DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey + DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey + DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m + ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey + ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder + EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum + EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error + ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener + EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception + ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor + ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException + ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse + Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field + FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel + FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream + FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap + FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter + Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter + Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener + FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter + FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics + FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException + Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future + FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean + GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError + GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics + Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter + GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream + GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet + HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet + HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter + HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument + HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection + HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon + IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage + IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl + IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener + IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener + IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException + IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException + IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException + IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException + IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException + IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities + ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl + ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi + ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder + ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi + ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel + IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address + InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited + InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext + InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext + InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests + InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource + InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException + Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError + InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener + InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException + InterruptedNamingException InterruptibleChannel IntrospectionException Introspector + InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException + InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException + InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException + InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException + InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException + InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException + InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException + InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException + InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler + InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator + IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection + JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog + JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu + JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification + JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory + JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException + JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted + JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets + JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName + JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet + JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable + JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator + JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField + JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal + KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException + KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory + KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager + KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep + KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI + LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy + LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName + LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer + LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException + LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException + LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator + ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView + LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext + LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp + LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException + MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission + ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException + MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo + MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo + MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer + MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory + MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter + MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName + MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler + MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType + MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener + MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager + MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI + MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon + MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane + MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI + MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton + MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI + MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method + MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat + MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException + MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException + Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo + ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo + ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification + MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter + MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent + MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI + MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI + MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI + MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster + MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI + MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI + MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet + MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair + NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration + NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException + NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError + NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException + NoninvertibleTransformException NonReadableChannelException NonWritableChannelException + NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException + NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException + NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException + NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster + NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport + NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException + NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException + NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper + OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput + ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream + ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID + Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport + OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport + OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo + OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException + OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError + OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException + OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes + PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor + Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor + ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException + ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch + PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported + Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe + PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel + PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker + PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy + PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent + PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate + PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences + PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException + PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob + PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo + PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason + PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter + PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent + PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService + PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet + PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader + PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException + PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor + ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener + PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor + PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle + PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector + PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval + QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp + RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException + ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape + ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue + ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable + RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException + RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification + RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport + RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall + RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub + RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage + RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName + RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result + ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader + RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub + RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl + RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub + RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList + RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer + RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener + RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec + RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey + RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit + RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException + RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory + SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource + SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture + ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable + Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI + SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec + SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException + SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider + Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob + SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef + SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef + ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException + ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set + SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer + ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi + SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter + SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax + SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException + SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory + SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException + SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet + SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource + Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel + SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput + SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException + SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException + SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession + SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack + StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit + StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService + StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer + StringBufferInputStream StringBuilder StringCharacterIterator StringContent + StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr + StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate + StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet + Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings + SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException + SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants + SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory + SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor + TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener + TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData + TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates + TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo + TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint + Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor + Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer + TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone + TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track + TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable + TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException + TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency + TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel + TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener + TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory + TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults + UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener + UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError + UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException + UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException + UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException + UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission + UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent + UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException + UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError + UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException + UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL + URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory + UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler + ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener + VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI + VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet + WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener + WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage + WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector + X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension + X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants + XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath + XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory + XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver + XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView + ] + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/builtin_types.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java/builtin_types.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,419 @@ +module CodeRay +module Scanners + + module Java::BuiltinTypes # :nodoc: + + List = %w[ + AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection + AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel + AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences + AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector + AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit + AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible + AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext + AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText + AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject + AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection + AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange + AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException + AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent + ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc + ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub + ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent + ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener + Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi + AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite + AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement + Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet + AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array + ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType + AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray + AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference + AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute + AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator + AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException + AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip + AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem + AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback + AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy + AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException + BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException + BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute + BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI + BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup + BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI + BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory + BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel + BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI + BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI + BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI + BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI + BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI + BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException + BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport + BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener + BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider + BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener + BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport + BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding + BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory + BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator + BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp + BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException + BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte + ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet + CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler + CancelablePrintJob CancellationException CancelledKeyException CannotProceedException + CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor + CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException + CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException + CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult + CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator + CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore + CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener + Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter + CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider + Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice + ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class + ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError + ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard + ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException + ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner + CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection + CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI + ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource + ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator + CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel + ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation + ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData + CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl + CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap + ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback + ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener + ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container + ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler + ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory + Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported + CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 + CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector + CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer + DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort + DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl + DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource + DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat + DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing + DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel + DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel + DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter + DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer + DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme + DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument + DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor + DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed + DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec + DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable + DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec + DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream + Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory + DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document + DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener + DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer + DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter + DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener + DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter + DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey + DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey + DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m + ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey + ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder + EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum + EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error + ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener + EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception + ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor + ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException + ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse + Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field + FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel + FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream + FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap + FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter + Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter + Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener + FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter + FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics + FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException + Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future + FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean + GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError + GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics + Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter + GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream + GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet + HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet + HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter + HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument + HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection + HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon + IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage + IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl + IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener + IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener + IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException + IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException + IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException + IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException + IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException + IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities + ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl + ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi + ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder + ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi + ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel + IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address + InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited + InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext + InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext + InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests + InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource + InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException + Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError + InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener + InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException + InterruptedNamingException InterruptibleChannel IntrospectionException Introspector + InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException + InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException + InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException + InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException + InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException + InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException + InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException + InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException + InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler + InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator + IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection + JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog + JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu + JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification + JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory + JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException + JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted + JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets + JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName + JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet + JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable + JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator + JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField + JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal + KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException + KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory + KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager + KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep + KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI + LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy + LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName + LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer + LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException + LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException + LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator + ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView + LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext + LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp + LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException + MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission + ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException + MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo + MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo + MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer + MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory + MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter + MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName + MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler + MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType + MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener + MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager + MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI + MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon + MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane + MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI + MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton + MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI + MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method + MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat + MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException + MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException + Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo + ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo + ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification + MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter + MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent + MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI + MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI + MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI + MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster + MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI + MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI + MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet + MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair + NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration + NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException + NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError + NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException + NoninvertibleTransformException NonReadableChannelException NonWritableChannelException + NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException + NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException + NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException + NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster + NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport + NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException + NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException + NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper + OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput + ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream + ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID + Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport + OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport + OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo + OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException + OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError + OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException + OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes + PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor + Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor + ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException + ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch + PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported + Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe + PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel + PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker + PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy + PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent + PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate + PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences + PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException + PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob + PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo + PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason + PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter + PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent + PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService + PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet + PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader + PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException + PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor + ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener + PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor + PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle + PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector + PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval + QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp + RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException + ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape + ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue + ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable + RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException + RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification + RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport + RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall + RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub + RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage + RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName + RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result + ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader + RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub + RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl + RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub + RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList + RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer + RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener + RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec + RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey + RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit + RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException + RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory + SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource + SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture + ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable + Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI + SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec + SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException + SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider + Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob + SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef + SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef + ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException + ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set + SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer + ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi + SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter + SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax + SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException + SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory + SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException + SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet + SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource + Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel + SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput + SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException + SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException + SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession + SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack + StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit + StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService + StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer + StringBufferInputStream StringBuilder StringCharacterIterator StringContent + StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr + StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate + StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet + Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings + SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException + SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants + SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory + SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor + TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener + TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData + TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates + TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo + TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint + Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor + Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer + TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone + TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track + TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable + TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException + TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency + TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel + TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener + TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory + TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults + UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener + UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError + UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException + UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException + UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException + UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission + UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent + UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException + UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError + UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException + UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL + URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory + UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler + ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener + VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI + VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet + WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener + WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage + WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector + X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension + X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants + XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath + XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory + XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver + XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView + ] + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script-0.9.6.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script-0.9.6.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, + '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/java_script.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,224 @@ +module CodeRay +module Scanners + + class JavaScript < Scanner + + include Streamable + + register_for :java_script + file_extension 'js' + + # The actual JavaScript keywords. + KEYWORDS = %w[ + break case catch continue default delete do else + finally for function if in instanceof new + return switch throw try typeof var void while with + ] + PREDEFINED_CONSTANTS = %w[ + false null true undefined + ] + + MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 + + KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ + case delete in instanceof new return throw typeof with + ] + + # Reserved for future use. + RESERVED_WORDS = %w[ + abstract boolean byte char class debugger double enum export extends + final float goto implements import int interface long native package + private protected public short static super synchronized throws transient + volatile + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(MAGIC_VARIABLES, :local_variable). + add(KEYWORDS, :keyword) + + ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + REGEXP_ESCAPE = / [bBdDsSwW] /x + STRING_CONTENT_PATTERN = { + "'" => /[^\\']+/, + '"' => /[^\\"]+/, + '/' => /[^\\\/]+/, + } + KEY_CHECK_PATTERN = { + "'" => / (?> [^\\']* (?: \\. [^\\']* )* ) ' \s* : /mx, + '"' => / (?> [^\\"]* (?: \\. [^\\"]* )* ) " \s* : /mx, + } + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + value_expected = true + key_expected = false + function_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if match = scan(/ \s+ | \\\n /x) + value_expected = true if !value_expected && match.index(?\n) + tokens << [match, :space] + next + + elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) + value_expected = true + kind = :comment + + elsif check(/\.?\d/) + key_expected = value_expected = false + if scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) + kind = :oct + elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + elsif scan(/\d+/) + kind = :integer + end + + elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) + # FIXME: scan over nested tags + xml_scanner.tokenize match + value_expected = false + next + + elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) + value_expected = true + last_operator = match[-1] + key_expected = (last_operator == ?{) || (last_operator == ?,) + function_expected = false + kind = :operator + + elsif scan(/ [)\]}]+ /x) + function_expected = key_expected = value_expected = false + kind = :operator + + elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) + kind = IDENT_KIND[match] + value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] + # TODO: labels + if kind == :ident + if match.index(?$) # $ allowed inside an identifier + kind = :predefined + elsif function_expected + kind = :function + elsif check(/\s*[=:]\s*function\b/) + kind = :function + elsif key_expected && check(/\s*:/) + kind = :key + end + end + function_expected = (kind == :keyword) && (match == 'function') + key_expected = false + + elsif match = scan(/["']/) + if key_expected && check(KEY_CHECK_PATTERN[match]) + state = :key + else + state = :string + end + tokens << [:open, state] + string_delimiter = match + kind = :delimiter + + elsif value_expected && (match = scan(/\/(?=\S)/)) + tokens << [:open, :regexp] + state = :regexp + string_delimiter = '/' + kind = :delimiter + + elsif scan(/ \/ /x) + value_expected = true + key_expected = false + kind = :operator + + else + getch + kind = :error + + end + + when :string, :regexp, :key + if scan(STRING_CONTENT_PATTERN[string_delimiter]) + kind = :content + elsif match = scan(/["'\/]/) + tokens << [match, :delimiter] + if state == :regexp + modifiers = scan(/[gim]+/) + tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? + end + tokens << [:close, state] + string_delimiter = nil + key_expected = value_expected = false + state = :initial + next + elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) + if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") + kind = :content + else + kind = :char + end + elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + key_expected = value_expected = false + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :regexp].include? state + tokens << [:close, state] + end + + tokens + end + + protected + + def reset_instance + super + @xml_scanner.reset if defined? @xml_scanner + end + + def xml_scanner + @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => false + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/json.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/json.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,108 @@ +module CodeRay +module Scanners + + class JSON < Scanner + + include Streamable + + register_for :json + file_extension 'json' + + KINDS_NOT_LOC = [ + :float, :char, :content, :delimiter, + :error, :integer, :operator, :value, + ] + + ESCAPE = / [bfnrt\\"\/] /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x + + def scan_tokens tokens, options + + state = :initial + stack = [] + key_expected = false + + until eos? + + kind = nil + match = nil + + case state + + when :initial + if match = scan(/ \s+ | \\\n /x) + tokens << [match, :space] + next + elsif match = scan(/ [:,\[{\]}] /x) + kind = :operator + case match + when '{' then stack << :object; key_expected = true + when '[' then stack << :array + when ':' then key_expected = false + when ',' then key_expected = true if stack.last == :object + when '}', ']' then stack.pop # no error recovery, but works for valid JSON + end + elsif match = scan(/ true | false | null /x) + kind = :value + elsif match = scan(/-?(?:0|[1-9]\d*)/) + kind = :integer + if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) + match << matched + kind = :float + end + elsif match = scan(/"/) + state = key_expected ? :key : :string + tokens << [:open, state] + kind = :delimiter + else + getch + kind = :error + end + + when :string, :key + if scan(/[^\\"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, state] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/\\./m) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, state] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if [:string, :key].include? state + tokens << [:close, state] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/nitro_xhtml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/nitro_xhtml.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,136 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # Nitro XHTML Scanner + class NitroXHTML < Scanner + + include Streamable + register_for :nitro_xhtml + file_extension :xhtml + title 'Nitro XHTML' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + NITRO_RUBY_BLOCK = / + <\?r + (?> + [^\?]* + (?> \?(?!>) [^\?]* )* + ) + (?: \?> )? + | + + (?> + [^<]* + (?> <(?!\/ruby>) [^<]* )* + ) + (?: <\/ruby> )? + | + <% + (?> + [^%]* + (?> %(?!>) [^%]* )* + ) + (?: %> )? + /mx + + NITRO_VALUE_BLOCK = / + \# + (?: + \{ + [^{}]* + (?> + \{ [^}]* \} + (?> [^{}]* ) + )* + \}? + | \| [^|]* \|? + | \( [^)]* \)? + | \[ [^\]]* \]? + | \\ [^\\]* \\? + ) + /x + + NITRO_ENTITY = / + % (?: \#\d+ | \w+ ) ; + / + + START_OF_RUBY = / + (?=[<\#%]) + < (?: \?r | % | ruby> ) + | \# [{(|] + | % (?: \#\d+ | \w+ ) ; + /x + + CLOSING_PAREN = Hash.new do |h, p| + h[p] = p + end.update( { + '(' => ')', + '[' => ']', + '{' => '}', + } ) + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) + start_tag = match[0,2] + delimiter = CLOSING_PAREN[start_tag[1,1]] + end_tag = match[-1,1] == delimiter ? delimiter : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) + start_tag = '' ? '?>' : '' + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -(end_tag.size)-1] + @ruby_scanner.tokenize code + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + elsif entity = scan(/#{NITRO_ENTITY}/o) + tokens << [entity, :entity] + + elsif scan(/%/) + tokens << [matched, :error] + + else + raise_inspect 'else-case reached!', tokens + + end + + end + + tokens + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/php.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/php.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,533 @@ +module CodeRay +module Scanners + + load :html + + # Original by Stefan Walk. + class PHP < Scanner + + register_for :php + file_extension 'php' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + def setup + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + module Words + + # according to http://www.php.net/manual/en/reserved.keywords.php + KEYWORDS = %w[ + abstract and array as break case catch class clone const continue declare default do else elseif + enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global + goto if implements interface instanceof namespace new or private protected public static switch + throw try use var while xor + cfunction old_function + ] + + TYPES = %w[ int integer float double bool boolean string array object resource ] + + LANGUAGE_CONSTRUCTS = %w[ + die echo empty exit eval include include_once isset list + require require_once return print unset + ] + + CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] + + # according to http://php.net/quickref.php on 2009-04-21; + # all functions with _ excluded (module functions) and selected additional functions + BUILTIN_FUNCTIONS = %w[ + abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 + atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec + bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite + calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog + compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex + decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each + ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract + fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner + fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv + fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate + getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid + getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext + gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate + gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell + gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate + implode include intval ip2long iptcembed iptcparse isset + jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp + juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log + log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort + natsort next ngettext nl2br nthmac octdec opendir openlog + ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow + prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile + readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir + serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget + snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat + strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen + strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn + strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam + textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack + unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap + array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc + array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip + array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey + array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad + array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift + array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect + array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk + array_walk_recursive + assert_options base_convert base64_decode base64_encode + chunk_split class_exists class_implements class_parents + count_chars debug_backtrace debug_print_backtrace debug_zval_dump + error_get_last error_log error_reporting extension_loaded + file_exists file_get_contents file_put_contents load_file + func_get_arg func_get_args func_num_args function_exists + get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars + get_current_user get_declared_classes get_declared_interfaces get_defined_constants + get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table + get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime + get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type + gc_collect_cycles gc_disable gc_enable gc_enabled + halt_compiler headers_list headers_sent highlight_file highlight_string + html_entity_decode htmlspecialchars_decode + in_array include_once inclued_get_data + is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite + is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable + is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file + is_writable is_writeable + locale_get_default locale_set_default + number_format override_function parse_str parse_url + php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name + php_strip_whitespace php_uname + preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace + preg_replace_callback preg_split print_r + require_once register_shutdown_function register_tick_function + set_error_handler set_exception_handler set_file_buffer set_include_path + set_magic_quotes_runtime set_time_limit shell_exec + str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count + strip_tags substr_compare substr_count substr_replace + time_nanosleep time_sleep_until + token_get_all token_name trigger_error + unregister_tick_function use_soap_error_handler user_error + utf8_decode utf8_encode var_dump var_export + version_compare + zend_logo_guid zend_thread_id zend_version + create_function call_user_func_array + posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid + posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups + posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid + posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid + posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod + posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid + posix_setuid posix_strerror posix_times posix_ttyname posix_uname + pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority + pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait + pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited + pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig + ] + # TODO: more built-in PHP functions? + + EXCEPTIONS = %w[ + E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING + E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT + ] + + CONSTANTS = %w[ + null true false self parent + __LINE__ __DIR__ __FILE__ __LINE__ + __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ + PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS + PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH + PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR + PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX + PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END + __COMPILER_HALT_OFFSET__ + EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS + EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL + COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED + CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 + M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES + CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB + HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS + INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP + CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT + STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX + LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 + ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 + ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 + MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT + ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING + POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES + N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR + YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN + LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 + LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY + LOG_NDELAY LOG_NOWAIT LOG_PERROR + ] + + PREDEFINED = %w[ + $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV + $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header + $argc $argv + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(KEYWORDS, :reserved). + add(TYPES, :pre_type). + add(LANGUAGE_CONSTRUCTS, :reserved). + add(BUILTIN_FUNCTIONS, :predefined). + add(CLASSES, :pre_constant). + add(EXCEPTIONS, :exception). + add(CONSTANTS, :pre_constant) + + VARIABLE_KIND = WordList.new(:local_variable). + add(PREDEFINED, :predefined) + end + + module RE + + PHP_START = / + ]*?language\s*=\s*"php"[^>]*?> | + ]*?language\s*=\s*'php'[^>]*?> | + <\?php\d? | + <\?(?!xml) + /xi + + PHP_END = %r! + | + \?> + !xi + + HTML_INDICATOR = / ]/i + + IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i + VARIABLE = /\$#{IDENTIFIER}/ + + OPERATOR = / + \.(?!\d)=? | # dot that is not decimal point, string concatenation + && | \|\| | # logic + :: | -> | => | # scope, member, dictionary + \\(?!\n) | # namespace + \+\+ | -- | # increment, decrement + [,;?:()\[\]{}] | # simple delimiters + [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts + [~$] | # whatever + =& | # reference assignment + [=!]=?=? | <> | # comparison and assignment + <<=? | >>=? | [<>]=? # comparison and shift + /x + + end + + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::ASCII_8BIT + self.string = string.encode Encoding::ASCII_8BIT, + :invalid => :replace, :undef => :replace, :replace => '?' + end + end + + if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) + tokens << [:open, :inline] + tokens << [match, :local_variable] + tokens << [scan(/->/), :operator] + tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] + tokens << [:close, :inline] + next + elsif check(/->/) + match << scan(/->/) + kind = :error + end + elsif match = scan(/\{/) + if check(/\$/) + kind = :delimiter + states[-1] = [states.last, delimiter] + delimiter = nil + states.push :php + tokens << [:open, :inline] + else + kind = :string + end + elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) + kind = :local_variable + elsif scan(/\$/) + kind = :content + end + + when :class_expected + if scan(/\s+/) + kind = :space + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :class + states.pop + else + states.pop + next + end + + when :function_expected + if scan(/\s+/) + kind = :space + elsif scan(/&/) + kind = :operator + elsif match = scan(/#{RE::IDENTIFIER}/o) + kind = :function + states.pop + else + states.pop + next + end + + else + raise_inspect 'Unknown state!', tokens, states + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, states + end + raise_inspect 'Empty token', tokens, states unless match + + tokens << [match, kind] + + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/plaintext.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/plaintext.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,21 @@ +module CodeRay +module Scanners + + class Plaintext < Scanner + + register_for :plaintext, :plain + title 'Plain text' + + include Streamable + + KINDS_NOT_LOC = [:plain] + + def scan_tokens tokens, options + text = (scan_until(/\z/) || '') + tokens << [text, :plain] + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/python.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/python.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,285 @@ +module CodeRay +module Scanners + + # Bases on pygments' PythonLexer, see + # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. + class Python < Scanner + + include Streamable + + register_for :python + file_extension 'py' + + KEYWORDS = [ + 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', + 'del', 'elif', 'else', 'except', 'finally', 'for', + 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', + 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', + 'nonlocal', # new in Python 3 + ] + + OLD_KEYWORDS = [ + 'exec', 'print', # gone in Python 3 + ] + + PREDEFINED_METHODS_AND_TYPES = %w[ + __import__ abs all any apply basestring bin bool buffer + bytearray bytes callable chr classmethod cmp coerce compile + complex delattr dict dir divmod enumerate eval execfile exit + file filter float frozenset getattr globals hasattr hash hex id + input int intern isinstance issubclass iter len list locals + long map max min next object oct open ord pow property range + raw_input reduce reload repr reversed round set setattr slice + sorted staticmethod str sum super tuple type unichr unicode + vars xrange zip + ] + + PREDEFINED_EXCEPTIONS = %w[ + ArithmeticError AssertionError AttributeError + BaseException DeprecationWarning EOFError EnvironmentError + Exception FloatingPointError FutureWarning GeneratorExit IOError + ImportError ImportWarning IndentationError IndexError KeyError + KeyboardInterrupt LookupError MemoryError NameError + NotImplemented NotImplementedError OSError OverflowError + OverflowWarning PendingDeprecationWarning ReferenceError + RuntimeError RuntimeWarning StandardError StopIteration + SyntaxError SyntaxWarning SystemError SystemExit TabError + TypeError UnboundLocalError UnicodeDecodeError + UnicodeEncodeError UnicodeError UnicodeTranslateError + UnicodeWarning UserWarning ValueError Warning ZeroDivisionError + ] + + PREDEFINED_VARIABLES_AND_CONSTANTS = [ + 'False', 'True', 'None', # "keywords" since Python 3 + 'self', 'Ellipsis', 'NotImplemented', + ] + + IDENT_KIND = WordList.new(:ident). + add(KEYWORDS, :keyword). + add(OLD_KEYWORDS, :old_keyword). + add(PREDEFINED_METHODS_AND_TYPES, :predefined). + add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). + add(PREDEFINED_EXCEPTIONS, :exception) + + NAME = / [^\W\d] \w* /x + ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x + + OPERATOR = / + \.\.\. | # ellipsis + \.(?!\d) | # dot but not decimal point + [,;:()\[\]{}] | # simple delimiters + \/\/=? | \*\*=? | # special math + [-+*\/%&|^]=? | # ordinary math and binary logic + [~`] | # binary complement and inspection + <<=? | >>=? | [<>=]=? | != # comparison and assignment + /x + + STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = Regexp.union delimiter + end + + STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| + h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x + end + + DEF_NEW_STATE = WordList.new(:initial). + add(%w(def), :def_expected). + add(%w(import from), :include_expected). + add(%w(class), :class_expected) + + DESCRIPTOR = / + #{NAME} + (?: \. #{NAME} )* + | \* + /x + + def scan_tokens tokens, options + + state = :initial + string_delimiter = nil + string_raw = false + import_clause = class_name_follows = last_token_dot = false + unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' + from_import_state = [] + + until eos? + + kind = nil + match = nil + + if state == :string + if scan(STRING_DELIMITER_REGEXP[string_delimiter]) + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif string_delimiter.size == 3 && scan(/\n/) + kind = :content + elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) + kind = :content + elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) + kind = :char + elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) + kind = :char + elsif scan(/ \\ . /x) + kind = :content + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state + end + + elsif match = scan(/ [ \t]+ | \\\n /x) + tokens << [match, :space] + next + + elsif match = scan(/\n/) + tokens << [match, :space] + state = :initial if state == :include_expected + next + + elsif match = scan(/ \# [^\n]* /mx) + tokens << [match, :comment] + next + + elsif state == :initial + + if scan(/#{OPERATOR}/o) + kind = :operator + + elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) + tokens << [:open, :string] + string_delimiter = self[2] + string_raw = false + modifiers = self[1] + unless modifiers.empty? + string_raw = !!modifiers.index(?r) + tokens << [modifiers, :modifier] + match = string_delimiter + end + state = :string + kind = :delimiter + + # TODO: backticks + + elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = IDENT_KIND[match] + # TODO: keyword arguments + kind = :ident if last_token_dot + if kind == :old_keyword + kind = check(/\(/) ? :ident : :keyword + elsif kind == :predefined && check(/ *=/) + kind = :ident + elsif kind == :keyword + state = DEF_NEW_STATE[match] + from_import_state << match.to_sym if state == :include_expected + end + + elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) + kind = :decorator + + elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) + kind = :hex + + elsif scan(/0[bB][01]+[lL]?/) + kind = :bin + + elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + if scan(/[jJ]/) + match << matched + kind = :imaginary + end + + elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) + kind = :oct + + elsif match = scan(/\d+([lL])?/) + kind = :integer + if self[1] == nil && scan(/[jJ]/) + match << matched + kind = :imaginary + end + + else + getch + kind = :error + + end + + elsif state == :def_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :method + else + next + end + + elsif state == :class_expected + state = :initial + if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) + kind = :class + else + next + end + + elsif state == :include_expected + if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) + kind = :include + if match == 'as' + kind = :keyword + from_import_state << :as + elsif from_import_state.first == :from && match == 'import' + kind = :keyword + from_import_state << :import + elsif from_import_state.last == :as + # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method + kind = :ident + from_import_state.pop + elsif IDENT_KIND[match] == :keyword + unscan + match = nil + state = :initial + next + end + elsif match = scan(/,/) + from_import_state.pop if from_import_state.last == :as + kind = :operator + else + from_import_state = [] + state = :initial + next + end + + else + raise_inspect 'Unknown state', tokens, state + + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens, state unless match + + last_token_dot = match == '.' + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/rhtml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/rhtml.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,78 @@ +module CodeRay +module Scanners + + load :html + load :ruby + + # RHTML Scanner + class RHTML < Scanner + + include Streamable + register_for :rhtml + title 'HTML ERB Template' + + KINDS_NOT_LOC = HTML::KINDS_NOT_LOC + + ERB_RUBY_BLOCK = / + <%(?!%)[=-]? + (?> + [^\-%]* # normal* + (?> # special + (?: %(?!>) | -(?!%>) ) + [^\-%]* # normal* + )* + ) + (?: -?%> )? + /x + + START_OF_ERB = / + <%(?!%) + /x + + private + + def setup + @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true + @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true + end + + def reset_instance + super + @html_scanner.reset + end + + def scan_tokens tokens, options + + until eos? + + if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? + @html_scanner.tokenize match + + elsif match = scan(/#{ERB_RUBY_BLOCK}/o) + start_tag = match[/\A<%[-=#]?/] + end_tag = match[/-?%?>?\z/] + tokens << [:open, :inline] + tokens << [start_tag, :inline_delimiter] + code = match[start_tag.size .. -1 - end_tag.size] + if start_tag == '<%#' + tokens << [code, :comment] + else + @ruby_scanner.tokenize code + end + tokens << [end_tag, :inline_delimiter] unless end_tag.empty? + tokens << [:close, :inline] + + else + raise_inspect 'else-case reached!', tokens + end + + end + + tokens + + end + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,444 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + # This scanner is really complex, since Ruby _is_ a complex language! + # + # It tries to highlight 100% of all common code, + # and 90% of strange codes. + # + # It is optimized for HTML highlighting, and is not very useful for + # parsing or pretty printing. + # + # For now, I think it's better than the scanners in VIM or Syntax, or + # any highlighter I was able to find, except Caleb's RubyLexer. + # + # I hope it's also better than the rdoc/irb lexer. + class Ruby < Scanner + + include Streamable + + register_for :ruby + file_extension 'rb' + + helper :patterns + + if not defined? EncodingError + EncodingError = Class.new Exception + end + + private + def scan_tokens tokens, options + if string.respond_to?(:encoding) + unless string.encoding == Encoding::UTF_8 + self.string = string.encode Encoding::UTF_8, + :invalid => :replace, :undef => :replace, :replace => '?' + end + unicode = false + else + unicode = exist?(/[^\x00-\x7f]/) + end + + last_token_dot = false + value_expected = true + heredocs = nil + last_state = nil + state = :initial + depth = nil + inline_block_stack = [] + + + patterns = Patterns # avoid constant lookup + + until eos? + match = nil + kind = nil + + if state.instance_of? patterns::StringState +# {{{ + match = scan_until(state.pattern) || scan_until(/\z/) + tokens << [match, :content] unless match.empty? + break if eos? + + if state.heredoc and self[1] # end of heredoc + match = getch.to_s + match << scan_until(/$/) unless eos? + tokens << [match, :delimiter] + tokens << [:close, state.type] + state = state.next_state + next + end + + case match = getch + + when state.delim + if state.paren + state.paren_depth -= 1 + if state.paren_depth > 0 + tokens << [match, :nesting_delimiter] + next + end + end + tokens << [match, :delimiter] + if state.type == :regexp and not eos? + modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) + tokens << [modifiers, :modifier] unless modifiers.empty? + end + tokens << [:close, state.type] + value_expected = false + state = state.next_state + + when '\\' + if state.interpreted + if esc = scan(/ #{patterns::ESCAPE} /ox) + tokens << [match + esc, :char] + else + tokens << [match, :error] + end + else + case m = getch + when state.delim, '\\' + tokens << [match + m, :char] + when nil + tokens << [match, :error] + else + tokens << [match + m, :content] + end + end + + when '#' + case peek(1) + when '{' + inline_block_stack << [state, depth, heredocs] + value_expected = true + state = :initial + depth = 1 + tokens << [:open, :inline] + tokens << [match + getch, :inline_delimiter] + when '$', '@' + tokens << [match, :escape] + last_state = state # scan one token as normal code, then return here + state = :initial + else + raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens + end + + when state.paren + state.paren_depth += 1 + tokens << [match, :nesting_delimiter] + + when /#{patterns::REGEXP_SYMBOLS}/ox + tokens << [match, :function] + + else + raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens + + end + next +# }}} + else +# {{{ + if match = scan(/[ \t\f]+/) + kind = :space + match << scan(/\s*/) unless eos? || heredocs + value_expected = true if match.index(?\n) + tokens << [match, kind] + next + + elsif match = scan(/\\?\n/) + kind = :space + if match == "\n" + value_expected = true + state = :initial if state == :undef_comma_expected + end + if heredocs + unscan # heredoc scanning needs \n at start + state = heredocs.shift + tokens << [:open, state.type] + heredocs = nil if heredocs.empty? + next + else + match << scan(/\s*/) unless eos? + end + tokens << [match, kind] + next + + elsif bol? && match = scan(/\#!.*/) + tokens << [match, :doctype] + next + + elsif match = scan(/\#.*/) or + ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) + kind = :comment + tokens << [match, kind] + next + + elsif state == :initial + + # IDENTS # + if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : + /#{patterns::METHOD_NAME}/o) + if last_token_dot + kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end + else + if value_expected != :expect_colon && scan(/:(?= )/) + tokens << [match, :key] + match = ':' + kind = :operator + else + kind = patterns::IDENT_KIND[match] + if kind == :ident + if match[/\A[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) + kind = :constant + end + elsif kind == :reserved + state = patterns::DEF_NEW_STATE[match] + value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] + end + end + end + value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) + + elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) + kind = :ident + value_expected = :set if check(unicode ? /#{patterns::VALUE_FOLLOWS}/uo : + /#{patterns::VALUE_FOLLOWS}/o) + + # OPERATORS # + elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) + if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ + value_expected = :set + end + last_token_dot = :set if self[1] + kind = :operator + unless inline_block_stack.empty? + case match + when '{' + depth += 1 + when '}' + depth -= 1 + if depth == 0 # closing brace of inline block reached + state, depth, heredocs = inline_block_stack.pop + heredocs = nil if heredocs && heredocs.empty? + tokens << [match, :inline_delimiter] + kind = :inline + match = :close + end + end + end + + elsif match = scan(/ ['"] /mx) + tokens << [:open, :string] + kind = :delimiter + state = patterns::StringState.new :string, match == '"', match # important for streaming + + elsif match = scan(unicode ? /#{patterns::INSTANCE_VARIABLE}/uo : + /#{patterns::INSTANCE_VARIABLE}/o) + kind = :instance_variable + + elsif value_expected and match = scan(/\//) + tokens << [:open, :regexp] + kind = :delimiter + interpreted = true + state = patterns::StringState.new :regexp, interpreted, match + + # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) + elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) + kind = self[1] ? :float : :integer + + elsif match = scan(unicode ? /#{patterns::SYMBOL}/uo : + /#{patterns::SYMBOL}/o) + case delim = match[1] + when ?', ?" + tokens << [:open, :symbol] + tokens << [':', :symbol] + match = delim.chr + kind = :delimiter + state = patterns::StringState.new :symbol, delim == ?", match + else + kind = :symbol + end + + elsif match = scan(/ -[>=]? | [+!~^]=? | [*|&]{1,2}=? | >>? /x) + value_expected = :set + kind = :operator + + elsif value_expected and match = scan(unicode ? /#{patterns::HEREDOC_OPEN}/uo : + /#{patterns::HEREDOC_OPEN}/o) + indented = self[1] == '-' + quote = self[3] + delim = self[quote ? 4 : 2] + kind = patterns::QUOTE_TO_TYPE[quote] + tokens << [:open, kind] + tokens << [match, :delimiter] + match = :close + heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) + heredocs ||= [] # create heredocs if empty + heredocs << heredoc + + elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) + kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do + raise_inspect 'Unknown fancy string: %%%p' % k, tokens + end + tokens << [:open, kind] + state = patterns::StringState.new kind, interpreted, self[2] + kind = :delimiter + + elsif value_expected and match = scan(unicode ? /#{patterns::CHARACTER}/uo : + /#{patterns::CHARACTER}/o) + kind = :integer + + elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) + value_expected = :set + kind = :operator + + elsif match = scan(/`/) + if last_token_dot + kind = :operator + else + tokens << [:open, :shell] + kind = :delimiter + state = patterns::StringState.new :shell, true, match + end + + elsif match = scan(unicode ? /#{patterns::GLOBAL_VARIABLE}/uo : + /#{patterns::GLOBAL_VARIABLE}/o) + kind = :global_variable + + elsif match = scan(unicode ? /#{patterns::CLASS_VARIABLE}/uo : + /#{patterns::CLASS_VARIABLE}/o) + kind = :class_variable + + else + if !unicode && !string.respond_to?(:encoding) + # check for unicode + debug, $DEBUG = $DEBUG, false + begin + if check(/./mu).size > 1 + # seems like we should try again with unicode + unicode = true + end + rescue + # bad unicode char; use getch + ensure + $DEBUG = debug + end + next if unicode + end + kind = :error + match = scan(unicode ? /./mu : /./m) + + end + + elsif state == :def_expected + state = :initial + if scan(/self\./) + tokens << ['self', :pre_constant] + tokens << ['.', :operator] + end + if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : + /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) + kind = :method + else + next + end + + elsif state == :module_expected + if match = scan(/< 1 + state = this_block.first + tokens << [:close, state.type] + end + + tokens + end + + end + +end +end + +# vim:fdm=marker diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby +END +patterns.rb +K 25 +svn:wc:ra_dav:version-url +V 88 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/patterns.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,62 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +patterns.rb +file + + + + +2011-03-03T11:05:13.000000Z +e9ee13edf8cacf235b977434e09649dc +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7416 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,252 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + module Ruby::Patterns # :nodoc: + + RESERVED_WORDS = %w[ + and def end in or unless begin + defined? ensure module redo super until + BEGIN break do next rescue then + when END case else for retry + while alias class elsif if not return + undef yield + ] + + DEF_KEYWORDS = %w[ def ] + UNDEF_KEYWORDS = %w[ undef ] + ALIAS_KEYWORDS = %w[ alias ] + MODULE_KEYWORDS = %w[ class module ] + DEF_NEW_STATE = WordList.new(:initial). + add(DEF_KEYWORDS, :def_expected). + add(UNDEF_KEYWORDS, :undef_expected). + add(ALIAS_KEYWORDS, :alias_expected). + add(MODULE_KEYWORDS, :module_expected) + + PREDEFINED_CONSTANTS = %w[ + nil true false self + DATA ARGV ARGF + __FILE__ __LINE__ __ENCODING__ + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant) + + if /\w/u === '∑' + # MRI 1.8.6, 1.8.7 + IDENT = /[^\W\d]\w*/ + else + if //.respond_to? :encoding + # MRI 1.9.1, 1.9.2 + IDENT = Regexp.new '[\p{L}\p{M}\p{Pc}\p{Sm}&&[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f]][\p{L}\p{M}\p{N}\p{Pc}\p{Sm}&&[^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]]*' + else + # JRuby, Rubinius + IDENT = /[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f][^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]*/ + end + end + + METHOD_NAME = / #{IDENT} [?!]? /ox + METHOD_NAME_OPERATOR = / + \*\*? # multiplication and power + | [-+~]@? # plus, minus, tilde with and without at sign + | [\/%&|^`] # division, modulo or format strings, and, or, xor, system + | \[\]=? # array getter and setter + | << | >> # append or shift left, shift right + | <=?>? | >=? # comparison, rocket operator + | ===? | =~ # simple equality, case equality, match + | ![~=@]? # negation with and without at sign, not-equal and not-match + /ox + METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox + INSTANCE_VARIABLE = / @ #{IDENT} /ox + CLASS_VARIABLE = / @@ #{IDENT} /ox + OBJECT_VARIABLE = / @@? #{IDENT} /ox + GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox + PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox + VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox + + QUOTE_TO_TYPE = { + '`' => :shell, + '/'=> :regexp, + } + QUOTE_TO_TYPE.default = :string + + REGEXP_MODIFIERS = /[mixounse]*/ + REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ + + DECIMAL = /\d+(?:_\d+)*/ + OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ + HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ + BINARY = /0b[01]+(?:_[01]+)*/ + + EXPONENT = / [eE] [+-]? #{DECIMAL} /ox + FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox + FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox + NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox + + SYMBOL = / + : + (?: + #{METHOD_NAME_EX} + | #{PREFIX_VARIABLE} + | ['"] + ) + /ox + METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox + + SIMPLE_ESCAPE = / + [abefnrstv] + | [0-7]{1,3} + | x[0-9A-Fa-f]{1,2} + | .? + /mx + + CONTROL_META_ESCAPE = / + (?: M-|C-|c ) + (?: \\ (?: M-|C-|c ) )* + (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? + /mox + + ESCAPE = / + #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} + /mox + + CHARACTER = / + \? + (?: + [^\s\\] + | \\ #{ESCAPE} + ) + /mox + + # NOTE: This is not completely correct, but + # nobody needs heredoc delimiters ending with \n. + # Also, delimiters starting with numbers are allowed. + # but they are more often than not a false positive. + HEREDOC_OPEN = / + << (-)? # $1 = float + (?: + ( #{IDENT} ) # $2 = delim + | + ( ["'`\/] ) # $3 = quote, type + ( [^\n]*? ) \3 # $4 = delim + ) + /mx + + RUBYDOC = / + =begin (?!\S) + .*? + (?: \Z | ^=end (?!\S) [^\n]* ) + /mx + + DATA = / + __END__$ + .*? + (?: \Z | (?=^\#CODE) ) + /mx + + # Checks for a valid value to follow. This enables + # value_expected in method calls without parentheses. + VALUE_FOLLOWS = / + (?>[ \t\f\v]+) + (?: + [%\/][^\s=] + | <<-?\S + | [-+] \d + | #{CHARACTER} + ) + /x + KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ + and end in or unless begin + defined? ensure redo super until + break do next rescue then + when case else for retry + while elsif if not return + yield + ]) + + RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo + + RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x + + FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx + + FancyStringType = { + 'q' => [:string, false], + 'Q' => [:string, true], + 'r' => [:regexp, true], + 's' => [:symbol, false], + 'x' => [:shell, true] + } + FancyStringType['w'] = FancyStringType['q'] + FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] + + class StringState < Struct.new :type, :interpreted, :delim, :heredoc, + :paren, :paren_depth, :pattern, :next_state + + CLOSING_PAREN = Hash[ *%w[ + ( ) + [ ] + < > + { } + ] ] + + CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << + OPENING_PAREN = CLOSING_PAREN.invert + + STRING_PATTERN = Hash.new do |h, k| + delim, interpreted = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + if closing_paren = CLOSING_PAREN[delim] + delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix + delim_pattern << Regexp.escape(closing_paren) + end + delim_pattern << '\\\\' unless delim == '\\' + + special_escapes = + case interpreted + when :regexp_symbols + '| ' + REGEXP_SYMBOLS.source + when :words + '| \s' + end + + h[k] = + if interpreted and not delim == '#' + / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx + else + / (?= [#{delim_pattern}] #{special_escapes} ) /mx + end + end + + HEREDOC_PATTERN = Hash.new do |h, k| + delim, interpreted, indented = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x + h[k] = + if interpreted + / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc + else + / (?= #{delim_pattern}() | \\ ) /mx + end + end + + def initialize kind, interpreted, delim, heredoc = false + if heredoc + pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] + delim = nil + else + pattern = STRING_PATTERN[ [delim, interpreted] ] + if paren = CLOSING_PAREN[delim] + delim, paren = paren, delim + paren_depth = 1 + end + end + super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial + end + end unless defined? StringState + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/patterns.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/ruby/patterns.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,252 @@ +# encoding: utf-8 +module CodeRay +module Scanners + + module Ruby::Patterns # :nodoc: + + RESERVED_WORDS = %w[ + and def end in or unless begin + defined? ensure module redo super until + BEGIN break do next rescue then + when END case else for retry + while alias class elsif if not return + undef yield + ] + + DEF_KEYWORDS = %w[ def ] + UNDEF_KEYWORDS = %w[ undef ] + ALIAS_KEYWORDS = %w[ alias ] + MODULE_KEYWORDS = %w[ class module ] + DEF_NEW_STATE = WordList.new(:initial). + add(DEF_KEYWORDS, :def_expected). + add(UNDEF_KEYWORDS, :undef_expected). + add(ALIAS_KEYWORDS, :alias_expected). + add(MODULE_KEYWORDS, :module_expected) + + PREDEFINED_CONSTANTS = %w[ + nil true false self + DATA ARGV ARGF + __FILE__ __LINE__ __ENCODING__ + ] + + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_CONSTANTS, :pre_constant) + + if /\w/u === '∑' + # MRI 1.8.6, 1.8.7 + IDENT = /[^\W\d]\w*/ + else + if //.respond_to? :encoding + # MRI 1.9.1, 1.9.2 + IDENT = Regexp.new '[\p{L}\p{M}\p{Pc}\p{Sm}&&[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f]][\p{L}\p{M}\p{N}\p{Pc}\p{Sm}&&[^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]]*' + else + # JRuby, Rubinius + IDENT = /[^\x00-\x40\x5b-\x5e\x60\x7b-\x7f][^\x00-\x2f\x3a-\x40\x5b-\x5e\x60\x7b-\x7f]*/ + end + end + + METHOD_NAME = / #{IDENT} [?!]? /ox + METHOD_NAME_OPERATOR = / + \*\*? # multiplication and power + | [-+~]@? # plus, minus, tilde with and without at sign + | [\/%&|^`] # division, modulo or format strings, and, or, xor, system + | \[\]=? # array getter and setter + | << | >> # append or shift left, shift right + | <=?>? | >=? # comparison, rocket operator + | ===? | =~ # simple equality, case equality, match + | ![~=@]? # negation with and without at sign, not-equal and not-match + /ox + METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox + INSTANCE_VARIABLE = / @ #{IDENT} /ox + CLASS_VARIABLE = / @@ #{IDENT} /ox + OBJECT_VARIABLE = / @@? #{IDENT} /ox + GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox + PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox + VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox + + QUOTE_TO_TYPE = { + '`' => :shell, + '/'=> :regexp, + } + QUOTE_TO_TYPE.default = :string + + REGEXP_MODIFIERS = /[mixounse]*/ + REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ + + DECIMAL = /\d+(?:_\d+)*/ + OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ + HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ + BINARY = /0b[01]+(?:_[01]+)*/ + + EXPONENT = / [eE] [+-]? #{DECIMAL} /ox + FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox + FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox + NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox + + SYMBOL = / + : + (?: + #{METHOD_NAME_EX} + | #{PREFIX_VARIABLE} + | ['"] + ) + /ox + METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox + + SIMPLE_ESCAPE = / + [abefnrstv] + | [0-7]{1,3} + | x[0-9A-Fa-f]{1,2} + | .? + /mx + + CONTROL_META_ESCAPE = / + (?: M-|C-|c ) + (?: \\ (?: M-|C-|c ) )* + (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? + /mox + + ESCAPE = / + #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} + /mox + + CHARACTER = / + \? + (?: + [^\s\\] + | \\ #{ESCAPE} + ) + /mox + + # NOTE: This is not completely correct, but + # nobody needs heredoc delimiters ending with \n. + # Also, delimiters starting with numbers are allowed. + # but they are more often than not a false positive. + HEREDOC_OPEN = / + << (-)? # $1 = float + (?: + ( #{IDENT} ) # $2 = delim + | + ( ["'`\/] ) # $3 = quote, type + ( [^\n]*? ) \3 # $4 = delim + ) + /mx + + RUBYDOC = / + =begin (?!\S) + .*? + (?: \Z | ^=end (?!\S) [^\n]* ) + /mx + + DATA = / + __END__$ + .*? + (?: \Z | (?=^\#CODE) ) + /mx + + # Checks for a valid value to follow. This enables + # value_expected in method calls without parentheses. + VALUE_FOLLOWS = / + (?>[ \t\f\v]+) + (?: + [%\/][^\s=] + | <<-?\S + | [-+] \d + | #{CHARACTER} + ) + /x + KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ + and end in or unless begin + defined? ensure redo super until + break do next rescue then + when case else for retry + while elsif if not return + yield + ]) + + RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo + + RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x + + FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx + + FancyStringType = { + 'q' => [:string, false], + 'Q' => [:string, true], + 'r' => [:regexp, true], + 's' => [:symbol, false], + 'x' => [:shell, true] + } + FancyStringType['w'] = FancyStringType['q'] + FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] + + class StringState < Struct.new :type, :interpreted, :delim, :heredoc, + :paren, :paren_depth, :pattern, :next_state + + CLOSING_PAREN = Hash[ *%w[ + ( ) + [ ] + < > + { } + ] ] + + CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << + OPENING_PAREN = CLOSING_PAREN.invert + + STRING_PATTERN = Hash.new do |h, k| + delim, interpreted = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + if closing_paren = CLOSING_PAREN[delim] + delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix + delim_pattern << Regexp.escape(closing_paren) + end + delim_pattern << '\\\\' unless delim == '\\' + + special_escapes = + case interpreted + when :regexp_symbols + '| ' + REGEXP_SYMBOLS.source + when :words + '| \s' + end + + h[k] = + if interpreted and not delim == '#' + / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx + else + / (?= [#{delim_pattern}] #{special_escapes} ) /mx + end + end + + HEREDOC_PATTERN = Hash.new do |h, k| + delim, interpreted, indented = *k + delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby + delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x + h[k] = + if interpreted + / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc + else + / (?= #{delim_pattern}() | \\ ) /mx + end + end + + def initialize kind, interpreted, delim, heredoc = false + if heredoc + pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] + delim = nil + else + pattern = STRING_PATTERN[ [delim, interpreted] ] + if paren = CLOSING_PAREN[delim] + delim, paren = paren, delim + paren_depth = 1 + end + end + super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial + end + end unless defined? StringState + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/scheme.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/scheme.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,145 @@ +module CodeRay + module Scanners + + # Scheme scanner for CodeRay (by closure). + # Thanks to murphy for putting CodeRay into public. + class Scheme < Scanner + + # TODO: function defs + # TODO: built-in functions + + register_for :scheme + file_extension 'scm' + + CORE_FORMS = %w[ + lambda let let* letrec syntax-case define-syntax let-syntax + letrec-syntax begin define quote if or and cond case do delay + quasiquote set! cons force call-with-current-continuation call/cc + ] + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(CORE_FORMS, :reserved) + + #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i + #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ + #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ + IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ + DIGIT = /\d/ + DIGIT10 = DIGIT + DIGIT16 = /[0-9a-f]/i + DIGIT8 = /[0-7]/ + DIGIT2 = /[01]/ + RADIX16 = /\#x/i + RADIX8 = /\#o/i + RADIX2 = /\#b/i + RADIX10 = /\#d/i + EXACTNESS = /#i|#e/i + SIGN = /[\+-]?/ + EXP_MARK = /[esfdl]/i + EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ + SUFFIX = /#{EXP}?/ + PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ + PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ + PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ + PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ + UINT10 = /#{DIGIT10}+#*/ + UINT16 = /#{DIGIT16}+#*/ + UINT8 = /#{DIGIT8}+#*/ + UINT2 = /#{DIGIT2}+#*/ + DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ + UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ + UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ + UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ + UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ + REAL10 = /#{SIGN}#{UREAL10}/ + REAL16 = /#{SIGN}#{UREAL16}/ + REAL8 = /#{SIGN}#{UREAL8}/ + REAL2 = /#{SIGN}#{UREAL2}/ + IMAG10 = /i|#{UREAL10}i/ + IMAG16 = /i|#{UREAL16}i/ + IMAG8 = /i|#{UREAL8}i/ + IMAG2 = /i|#{UREAL2}i/ + COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ + COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ + COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ + COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ + NUM10 = /#{PREFIX10}?#{COMPLEX10}/ + NUM16 = /#{PREFIX16}#{COMPLEX16}/ + NUM8 = /#{PREFIX8}#{COMPLEX8}/ + NUM2 = /#{PREFIX2}#{COMPLEX2}/ + NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ + + private + def scan_tokens tokens,options + + state = :initial + ident_kind = IDENT_KIND + + until eos? + kind = match = nil + + case state + when :initial + if scan(/ \s+ | \\\n /x) + kind = :space + elsif scan(/['\(\[\)\]]|#\(/) + kind = :operator_fat + elsif scan(/;.*/) + kind = :comment + elsif scan(/#\\(?:newline|space|.?)/) + kind = :char + elsif scan(/#[ft]/) + kind = :pre_constant + elsif scan(/#{IDENTIFIER}/o) + kind = ident_kind[matched] + elsif scan(/\./) + kind = :operator + elsif scan(/"/) + tokens << [:open, :string] + state = :string + tokens << ['"', :delimiter] + next + elsif scan(/#{NUM}/o) and not matched.empty? + kind = :integer + elsif getch + kind = :error + end + + when :string + if scan(/[^"\\]+/) or scan(/\\.?/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + else + raise_inspect "else case \" reached; %p not handled." % peek(1), + tokens, state + end + + else + raise "else case reached" + end + + match ||= matched + if $CODERAY_DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens, state unless match + + tokens << [match, kind] + + end # until eos + + if state == :string + tokens << [:close, :string] + end + + tokens + + end #scan_tokens + end #class + end #module scanners +end #module coderay \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/sql.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/sql.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,162 @@ +module CodeRay module Scanners + + # by Josh Goebel + class SQL < Scanner + + register_for :sql + + RESERVED_WORDS = %w( + create database table index trigger drop primary key set select + insert update delete replace into + on from values before and or if exists case when + then else as group order by avg where + join inner outer union engine not + like end using collate show columns begin + ) + + PREDEFINED_TYPES = %w( + char varchar enum binary text tinytext mediumtext + longtext blob tinyblob mediumblob longblob timestamp + date time datetime year double decimal float int + integer tinyint mediumint bigint smallint unsigned bit + bool boolean hex bin oct + ) + + PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) + + DIRECTIVES = %w( auto_increment unique default charset ) + + PREDEFINED_CONSTANTS = %w( null true false ) + + IDENT_KIND = CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant). + add(PREDEFINED_FUNCTIONS, :predefined). + add(DIRECTIVES, :directive) + + ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + STRING_PREFIXES = /[xnb]|_\w+/i + + def scan_tokens tokens, options + + state = :initial + string_type = nil + string_content = '' + + until eos? + + kind = nil + match = nil + + if state == :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/(?:--\s?|#).*/) + kind = :comment + + elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) + kind = :comment + + elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) + kind = :operator + + elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) + prefix = self[1] + string_type = self[2] + tokens << [:open, :string] + tokens << [prefix, :modifier] if prefix + match = string_type + state = :string + kind = :delimiter + + elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) + kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] + + elsif scan(/0[xX][0-9A-Fa-f]+/) + kind = :hex + + elsif scan(/0[0-7]+(?![89.eEfF])/) + kind = :oct + + elsif scan(/(?>\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) + kind = :float + + else + getch + kind = :error + + end + + elsif state == :string + if match = scan(/[^\\"'`]+/) + string_content << match + next + elsif match = scan(/["'`]/) + if string_type == match + if peek(1) == string_type # doubling means escape + string_content << string_type << getch + next + end + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + tokens << [matched, :delimiter] + tokens << [:close, :string] + state = :initial + string_type = nil + next + else + string_content << match + end + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :char + elsif match = scan(/ \\ . /mox) + string_content << match + next + elsif scan(/ \\ | $ /x) + unless string_content.empty? + tokens << [string_content, :content] + string_content = '' + end + kind = :error + state = :initial + else + raise "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise 'else-case reached', tokens + + end + + match ||= matched + unless kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens, state + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + tokens + + end + + end + +end end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/xml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/xml.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,17 @@ +module CodeRay +module Scanners + + load :html + + # XML Scanner + # + # Currently this is the same scanner as Scanners::HTML. + class XML < HTML + + register_for :xml + file_extension 'xml' + + end + +end +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/scanners/yaml.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/scanners/yaml.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,140 @@ +module CodeRay +module Scanners + + # YAML Scanner + # + # Based on the YAML scanner from Syntax by Jamis Buck. + class YAML < Scanner + + register_for :yaml + file_extension 'yml' + + KINDS_NOT_LOC = :all + + def scan_tokens tokens, options + + value_expected = nil + state = :initial + key_indent = indent = 0 + + until eos? + + kind = nil + match = nil + key_indent = nil if bol? + + if match = scan(/ +[\t ]*/) + kind = :space + + elsif match = scan(/\n+/) + kind = :space + state = :initial if match.index(?\n) + + elsif match = scan(/#.*/) + kind = :comment + + elsif bol? and case + when match = scan(/---|\.\.\./) + tokens << [:open, :head] + tokens << [match, :head] + tokens << [:close, :head] + next + when match = scan(/%.*/) + tokens << [match, :doctype] + next + end + + elsif state == :value and case + when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) + tokens << [:open, :string] + tokens << [matched, :delimiter] + tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) + tokens << [matched, :delimiter] if scan(/"/) + tokens << [:close, :string] + next + when match = scan(/[|>][-+]?/) + tokens << [:open, :string] + tokens << [match, :delimiter] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + tokens << [:close, :string] + next + when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) + tokens << [match, :string] + string_indent = key_indent || column(pos - match.size - 1) + tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) + next + end + + elsif case + when match = scan(/[-:](?= |$)/) + state = :value if state == :colon && (match == ':' || match == '-') + state = :value if state == :initial && match == '-' + kind = :operator + when match = scan(/[,{}\[\]]/) + kind = :operator + when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) + kind = :key + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) + tokens << [:open, :key] + tokens << [match[0,1], :delimiter] + tokens << [match[1..-2], :content] + tokens << [match[-1,1], :delimiter] + tokens << [:close, :key] + key_indent = column(pos - match.size - 1) + # tokens << [key_indent.inspect, :debug] + state = :colon + next + when scan(/(![\w\/]+)(:([\w:]+))?/) + tokens << [self[1], :type] + if self[2] + tokens << [':', :operator] + tokens << [self[3], :class] + end + next + when scan(/&\S+/) + kind = :variable + when scan(/\*\w+/) + kind = :global_variable + when scan(/< 'at', + :attribute_name => 'an', + :attribute_name_fat => 'af', + :attribute_value => 'av', + :attribute_value_fat => 'aw', + :bin => 'bi', + :char => 'ch', + :class => 'cl', + :class_variable => 'cv', + :color => 'cr', + :comment => 'c', + :complex => 'cm', + :constant => 'co', + :content => 'k', + :decorator => 'de', + :definition => 'df', + :delimiter => 'dl', + :directive => 'di', + :doc => 'do', + :doctype => 'dt', + :doc_string => 'ds', + :entity => 'en', + :error => 'er', + :escape => 'e', + :exception => 'ex', + :float => 'fl', + :function => 'fu', + :global_variable => 'gv', + :hex => 'hx', + :imaginary => 'cm', + :important => 'im', + :include => 'ic', + :inline => 'il', + :inline_delimiter => 'idl', + :instance_variable => 'iv', + :integer => 'i', + :interpreted => 'in', + :keyword => 'kw', + :key => 'ke', + :label => 'la', + :local_variable => 'lv', + :modifier => 'mod', + :oct => 'oc', + :operator_fat => 'of', + :pre_constant => 'pc', + :pre_type => 'pt', + :predefined => 'pd', + :preprocessor => 'pp', + :pseudo_class => 'ps', + :regexp => 'rx', + :reserved => 'r', + :shell => 'sh', + :string => 's', + :symbol => 'sy', + :tag => 'ta', + :tag_fat => 'tf', + :tag_special => 'ts', + :type => 'ty', + :variable => 'v', + :value => 'vl', + :xml_text => 'xt', + + :insert => 'ins', + :delete => 'del', + :change => 'chg', + :head => 'head', + + :ident => :NO_HIGHLIGHT, # 'id' + #:operator => 'op', + :operator => :NO_HIGHLIGHT, # 'op' + :space => :NO_HIGHLIGHT, # 'sp' + :plain => :NO_HIGHLIGHT, + } + ClassOfKind[:method] = ClassOfKind[:function] + ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] + ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] + ClassOfKind[:escape] = ClassOfKind[:delimiter] + #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' + end +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/lib/coderay/tokens.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/lib/coderay/tokens.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,390 @@ +module CodeRay + + # = Tokens + # + # The Tokens class represents a list of tokens returnd from + # a Scanner. + # + # A token is not a special object, just a two-element Array + # consisting of + # * the _token_ _text_ (the original source of the token in a String) or + # a _token_ _action_ (:open, :close, :begin_line, :end_line) + # * the _token_ _kind_ (a Symbol representing the type of the token) + # + # A token looks like this: + # + # ['# It looks like this', :comment] + # ['3.1415926', :float] + # ['$^', :error] + # + # Some scanners also yield sub-tokens, represented by special + # token actions, namely :open and :close. + # + # The Ruby scanner, for example, splits "a string" into: + # + # [ + # [:open, :string], + # ['"', :delimiter], + # ['a string', :content], + # ['"', :delimiter], + # [:close, :string] + # ] + # + # Tokens is the interface between Scanners and Encoders: + # The input is split and saved into a Tokens object. The Encoder + # then builds the output from this object. + # + # Thus, the syntax below becomes clear: + # + # CodeRay.scan('price = 2.59', :ruby).html + # # the Tokens object is here -------^ + # + # See how small it is? ;) + # + # Tokens gives you the power to handle pre-scanned code very easily: + # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string + # that you put in your DB. + # + # It also allows you to generate tokens directly (without using a scanner), + # to load them from a file, and still use any Encoder that CodeRay provides. + # + # Tokens' subclass TokenStream allows streaming to save memory. + class Tokens < Array + + # The Scanner instance that created the tokens. + attr_accessor :scanner + + # Whether the object is a TokenStream. + # + # Returns false. + def stream? + false + end + + # Iterates over all tokens. + # + # If a filter is given, only tokens of that kind are yielded. + def each kind_filter = nil, &block + unless kind_filter + super(&block) + else + super() do |text, kind| + next unless kind == kind_filter + yield text, kind + end + end + end + + # Iterates over all text tokens. + # Range tokens like [:open, :string] are left out. + # + # Example: + # tokens.each_text_token { |text, kind| text.replace html_escape(text) } + def each_text_token + each do |text, kind| + next unless text.is_a? ::String + yield text, kind + end + end + + # Encode the tokens using encoder. + # + # encoder can be + # * a symbol like :html oder :statistic + # * an Encoder class + # * an Encoder object + # + # options are passed to the encoder. + def encode encoder, options = {} + unless encoder.is_a? Encoders::Encoder + unless encoder.is_a? Class + encoder_class = Encoders[encoder] + end + encoder = encoder_class.new options + end + encoder.encode_tokens self, options + end + + + # Turn into a string using Encoders::Text. + # + # +options+ are passed to the encoder if given. + def to_s options = {} + encode :text, options + end + + # Redirects unknown methods to encoder calls. + # + # For example, if you call +tokens.html+, the HTML encoder + # is used to highlight the tokens. + def method_missing meth, options = {} + Encoders[meth].new(options).encode_tokens self + end + + # Returns the tokens compressed by joining consecutive + # tokens of the same kind. + # + # This can not be undone, but should yield the same output + # in most Encoders. It basically makes the output smaller. + # + # Combined with dump, it saves space for the cost of time. + # + # If the scanner is written carefully, this is not required - + # for example, consecutive //-comment lines could already be + # joined in one comment token by the Scanner. + def optimize + last_kind = last_text = nil + new = self.class.new + for text, kind in self + if text.is_a? String + if kind == last_kind + last_text << text + else + new << [last_text, last_kind] if last_kind + last_text = text + last_kind = kind + end + else + new << [last_text, last_kind] if last_kind + last_kind = last_text = nil + new << [text, kind] + end + end + new << [last_text, last_kind] if last_kind + new + end + + # Compact the object itself; see optimize. + def optimize! + replace optimize + end + + # Ensure that all :open tokens have a correspondent :close one. + # + # TODO: Test this! + def fix + tokens = self.class.new + # Check token nesting using a stack of kinds. + opened = [] + for type, kind in self + case type + when :open + opened.push [:close, kind] + when :begin_line + opened.push [:end_line, kind] + when :close, :end_line + expected = opened.pop + if [type, kind] != expected + # Unexpected :close; decide what to do based on the kind: + # - token was never opened: delete the :close (just skip it) + next unless opened.rindex expected + # - token was opened earlier: also close tokens in between + tokens << token until (token = opened.pop) == expected + end + end + tokens << [type, kind] + end + # Close remaining opened tokens + tokens << token while token = opened.pop + tokens + end + + def fix! + replace fix + end + + # TODO: Scanner#split_into_lines + # + # Makes sure that: + # - newlines are single tokens + # (which means all other token are single-line) + # - there are no open tokens at the end the line + # + # This makes it simple for encoders that work line-oriented, + # like HTML with list-style numeration. + def split_into_lines + raise NotImplementedError + end + + def split_into_lines! + replace split_into_lines + end + + # Dumps the object into a String that can be saved + # in files or databases. + # + # The dump is created with Marshal.dump; + # In addition, it is gzipped using GZip.gzip. + # + # The returned String object includes Undumping + # so it has an #undump method. See Tokens.load. + # + # You can configure the level of compression, + # but the default value 7 should be what you want + # in most cases as it is a good compromise between + # speed and compression rate. + # + # See GZip module. + def dump gzip_level = 7 + require 'coderay/helpers/gzip_simple' + dump = Marshal.dump self + dump = dump.gzip gzip_level + dump.extend Undumping + end + + # The total size of the tokens. + # Should be equal to the input size before + # scanning. + def text_size + size = 0 + each_text_token do |t, k| + size + t.size + end + size + end + + # Return all text tokens joined into a single string. + def text + map { |t, k| t if t.is_a? ::String }.join + end + + # Include this module to give an object an #undump + # method. + # + # The string returned by Tokens.dump includes Undumping. + module Undumping + # Calls Tokens.load with itself. + def undump + Tokens.load self + end + end + + # Undump the object using Marshal.load, then + # unzip it using GZip.gunzip. + # + # The result is commonly a Tokens object, but + # this is not guaranteed. + def Tokens.load dump + require 'coderay/helpers/gzip_simple' + dump = dump.gunzip + @dump = Marshal.load dump + end + + end + + + # = TokenStream + # + # The TokenStream class is a fake Array without elements. + # + # It redirects the method << to a block given at creation. + # + # This allows scanners and Encoders to use streaming (no + # tokens are saved, the input is highlighted the same time it + # is scanned) with the same code. + # + # See CodeRay.encode_stream and CodeRay.scan_stream + class TokenStream < Tokens + + # Whether the object is a TokenStream. + # + # Returns true. + def stream? + true + end + + # The Array is empty, but size counts the tokens given by <<. + attr_reader :size + + # Creates a new TokenStream that calls +block+ whenever + # its << method is called. + # + # Example: + # + # require 'coderay' + # + # token_stream = CodeRay::TokenStream.new do |text, kind| + # puts 'kind: %s, text size: %d.' % [kind, text.size] + # end + # + # token_stream << ['/\d+/', :regexp] + # #-> kind: rexpexp, text size: 5. + # + def initialize &block + raise ArgumentError, 'Block expected for streaming.' unless block + @callback = block + @size = 0 + end + + # Calls +block+ with +token+ and increments size. + # + # Returns self. + def << token + @callback.call(*token) + @size += 1 + self + end + + # This method is not implemented due to speed reasons. Use Tokens. + def text_size + raise NotImplementedError, + 'This method is not implemented due to speed reasons.' + end + + # A TokenStream cannot be dumped. Use Tokens. + def dump + raise NotImplementedError, 'A TokenStream cannot be dumped.' + end + + # A TokenStream cannot be optimized. Use Tokens. + def optimize + raise NotImplementedError, 'A TokenStream cannot be optimized.' + end + + end + +end + +if $0 == __FILE__ + $VERBOSE = true + $: << File.join(File.dirname(__FILE__), '..') + eval DATA.read, nil, $0, __LINE__ + 4 +end + +__END__ +require 'test/unit' + +class TokensTest < Test::Unit::TestCase + + def test_creation + assert CodeRay::Tokens < Array + tokens = nil + assert_nothing_raised do + tokens = CodeRay::Tokens.new + end + assert_kind_of Array, tokens + end + + def test_adding_tokens + tokens = CodeRay::Tokens.new + assert_nothing_raised do + tokens << ['string', :type] + tokens << ['()', :operator] + end + assert_equal tokens.size, 2 + end + + def test_dump_undump + tokens = CodeRay::Tokens.new + assert_nothing_raised do + tokens << ['string', :type] + tokens << ['()', :operator] + end + tokens2 = nil + assert_nothing_raised do + tokens2 = tokens.dump.undump + end + assert_equal tokens, tokens2 + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,31 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/test +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +functional +dir + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,77 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional +END +for_redcloth.rbc +K 25 +svn:wc:ra_dav:version-url +V 83 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rbc +END +vhdl.rb +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/vhdl.rb +END +vhdl.rbc +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/vhdl.rbc +END +basic.rb +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/basic.rb +END +basic.rbc +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/basic.rbc +END +load_plugin_scanner.rb +K 25 +svn:wc:ra_dav:version-url +V 89 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rb +END +word_list.rb +K 25 +svn:wc:ra_dav:version-url +V 79 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/word_list.rb +END +load_plugin_scanner.rbc +K 25 +svn:wc:ra_dav:version-url +V 90 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rbc +END +suite.rb +K 25 +svn:wc:ra_dav:version-url +V 75 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/suite.rb +END +word_list.rbc +K 25 +svn:wc:ra_dav:version-url +V 80 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/word_list.rbc +END +for_redcloth.rb +K 25 +svn:wc:ra_dav:version-url +V 82 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rb +END +suite.rbc +K 25 +svn:wc:ra_dav:version-url +V 76 +/svn/!svn/ver/4739/trunk/vendor/gems/coderay-0.9.7/test/functional/suite.rbc +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/entries --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,436 @@ +10 + +dir +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/coderay-0.9.7/test/functional +http://redmine.rubyforge.org/svn + + + +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + +e93f8b46-1217-0410-a6f0-8f06a7374b81 + +for_redcloth.rbc +file + + + + +2011-03-03T11:05:13.000000Z +060e0137b69ee9015c13d2a7b52f7ba5 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +6844 + +vhdl.rb +file + + + + +2011-03-03T11:05:13.000000Z +68592e4216555f25218f67641cd04879 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3508 + +vhdl.rbc +file + + + + +2011-03-03T11:05:13.000000Z +756a012d3c51e759ecf3aba421b79d26 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7459 + +basic.rb +file + + + + +2011-03-03T11:05:13.000000Z +4c2c76c7fec083da0817c917495fe273 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3081 + +basic.rbc +file + + + + +2011-03-03T11:05:13.000000Z +2dc7e681d05b65ad084db2cb31db57a4 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +7680 + +load_plugin_scanner.rb +file + + + + +2011-03-03T11:05:13.000000Z +9bb16867dc01035932f0ce2491457d4a +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +231 + +word_list.rb +file + + + + +2011-03-03T11:05:13.000000Z +a1077af2bb080972689e1c7c1b00f5cd +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +2167 + +load_plugin_scanner.rbc +file + + + + +2011-03-03T11:05:13.000000Z +a7da576f27c98ef97a1845982ed43fd8 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1145 + +suite.rb +file + + + + +2011-03-03T11:05:13.000000Z +c5ad97b377df804994bb80e0d903a954 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +265 + +word_list.rbc +file + + + + +2011-03-03T11:05:13.000000Z +bb7279f9b4099e57f551ae9992e03128 +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +5584 + +for_redcloth.rb +file + + + + +2011-03-03T11:05:13.000000Z +dc96a8219c522571f990cfe3702a428f +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +3001 + +suite.rbc +file + + + + +2011-03-03T11:05:13.000000Z +534ae63cbcff177038141b589f7fd0fa +2011-01-22T13:18:01.557255Z +4739 +jplang + + + + + + + + + + + + + + + + + + + + + +1035 + diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,122 @@ +require 'test/unit' +require 'coderay' + +class BasicTest < Test::Unit::TestCase + + def test_version + assert_nothing_raised do + assert_match(/\A\d\.\d\.\d\z/, CodeRay::VERSION) + end + end + + RUBY_TEST_CODE = 'puts "Hello, World!"' + + RUBY_TEST_TOKENS = [ + ['puts', :ident], + [' ', :space], + [:open, :string], + ['"', :delimiter], + ['Hello, World!', :content], + ['"', :delimiter], + [:close, :string] + ] + def test_simple_scan + assert_nothing_raised do + assert_equal RUBY_TEST_TOKENS, CodeRay.scan(RUBY_TEST_CODE, :ruby).to_ary + end + end + + RUBY_TEST_HTML = 'puts "' + + 'Hello, World!"' + def test_simple_highlight + assert_nothing_raised do + assert_equal RUBY_TEST_HTML, CodeRay.scan(RUBY_TEST_CODE, :ruby).html + end + end + + def test_duo + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE)) + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain => :plain].highlight(RUBY_TEST_CODE)) + end + + def test_duo_stream + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE, :stream => true)) + end + + def test_comment_filter + assert_equal <<-EXPECTED, CodeRay.scan(<<-INPUT, :ruby).comment_filter.text +#!/usr/bin/env ruby + +code + +more code + EXPECTED +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + end + + def test_lines_of_code + assert_equal 2, CodeRay.scan(<<-INPUT, :ruby).lines_of_code +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + rHTML = <<-RHTML + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + RHTML + assert_equal 0, CodeRay.scan(rHTML, :html).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :php).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :yaml).lines_of_code + assert_equal 4, CodeRay.scan(rHTML, :rhtml).lines_of_code + end + + def test_rubygems_not_loaded + assert_equal nil, defined? Gem + end if ENV['check_rubygems'] && RUBY_VERSION < '1.9' + + def test_list_of_encoders + assert_kind_of(Array, CodeRay::Encoders.list) + assert CodeRay::Encoders.list.include?('count') + end + + def test_list_of_scanners + assert_kind_of(Array, CodeRay::Scanners.list) + assert CodeRay::Scanners.list.include?('plaintext') + end + + def test_scan_a_frozen_string + CodeRay.scan RUBY_VERSION, :ruby + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/basic.rbc.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,2022 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +263 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +4 +7 +5 +64 +49 +6 +2 +15 +65 +7 +7 +7 +8 +64 +7 +9 +35 +2 +7 +10 +64 +7 +11 +35 +2 +7 +12 +7 +13 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +16 +64 +7 +17 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +18 +7 +13 +35 +2 +35 +7 +49 +6 +2 +15 +99 +7 +19 +7 +20 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +21 +7 +22 +64 +7 +23 +64 +81 +24 +49 +6 +2 +15 +99 +7 +25 +7 +26 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +27 +7 +28 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +29 +7 +30 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +31 +7 +32 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +33 +7 +34 +65 +67 +49 +2 +0 +49 +3 +4 +15 +45 +35 +36 +7 +37 +64 +49 +38 +1 +13 +9 +202 +15 +45 +39 +40 +7 +41 +64 +84 +42 +9 +219 +99 +7 +43 +7 +44 +65 +67 +49 +2 +0 +49 +3 +4 +8 +220 +1 +15 +99 +7 +45 +7 +46 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +47 +7 +48 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +49 +7 +50 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +51 +x +12 +test_version +M +1 +n +n +x +12 +test_version +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +12 +test_version +i +29 +5 +7 +0 +13 +70 +9 +19 +15 +44 +43 +1 +7 +2 +78 +49 +3 +2 +6 +0 +45 +4 +5 +43 +6 +47 +49 +7 +2 +11 +I +5 +I +0 +I +0 +I +0 +I +-2 +p +8 +n +x +6 +Regexp +s +14 +\A\d\.\d\.\d\z +x +3 +new +x +7 +CodeRay +n +x +7 +VERSION +x +12 +assert_match +p +5 +I +0 +I +7 +I +0 +I +8 +I +1d +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +6 +I +0 +I +7 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +RUBY_TEST_CODE +s +20 +puts "Hello, World!" +x +9 +const_set +x +16 +RUBY_TEST_TOKENS +s +4 +puts +x +5 +ident +s +1 + +x +5 +space +x +4 +open +x +6 +string +s +1 +" +x +9 +delimiter +s +13 +Hello, World! +x +7 +content +x +5 +close +x +16 +test_simple_scan +M +1 +n +n +x +16 +test_simple_scan +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +16 +test_simple_scan +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +16 +RUBY_TEST_TOKENS +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +6 +to_ary +x +12 +assert_equal +p +5 +I +0 +I +18 +I +0 +I +19 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +17 +I +0 +I +18 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +14 +RUBY_TEST_HTML +s +51 +puts " +s +73 +Hello, World!" +x +1 ++ +x +21 +test_simple_highlight +M +1 +n +n +x +21 +test_simple_highlight +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +21 +test_simple_highlight +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +14 +RUBY_TEST_HTML +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +4 +html +x +12 +assert_equal +p +5 +I +0 +I +20 +I +0 +I +21 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +1f +I +0 +I +20 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +8 +test_duo +M +1 +n +n +x +8 +test_duo +i +66 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +49 +8 +1 +47 +49 +9 +2 +15 +5 +45 +0 +10 +45 +2 +11 +43 +4 +44 +43 +12 +79 +49 +13 +1 +13 +7 +5 +7 +5 +49 +14 +2 +15 +49 +6 +1 +45 +0 +15 +49 +8 +1 +47 +49 +9 +2 +11 +I +7 +I +0 +I +0 +I +0 +n +p +16 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +9 +highlight +x +12 +assert_equal +n +n +x +4 +Hash +x +16 +new_from_literal +x +3 +[]= +n +p +15 +I +0 +I +25 +I +0 +I +26 +I +4 +I +27 +I +16 +I +26 +I +1b +I +28 +I +1f +I +29 +I +3d +I +28 +I +42 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +15 +test_duo_stream +M +1 +n +n +x +15 +test_duo_stream +i +42 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +44 +43 +8 +79 +49 +9 +1 +13 +7 +10 +2 +49 +11 +2 +15 +49 +12 +2 +47 +49 +13 +2 +11 +I +8 +I +0 +I +0 +I +0 +n +p +14 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +4 +Hash +x +16 +new_from_literal +x +6 +stream +x +3 +[]= +x +9 +highlight +x +12 +assert_equal +p +9 +I +0 +I +2c +I +0 +I +2d +I +4 +I +2e +I +25 +I +2d +I +2a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +19 +test_comment_filter +M +1 +n +n +x +19 +test_comment_filter +i +26 +5 +7 +0 +64 +45 +1 +2 +7 +3 +64 +7 +4 +49 +5 +2 +49 +6 +0 +49 +7 +0 +47 +49 +8 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +9 +s +39 +#!/usr/bin/env ruby + +code + +more code + +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +14 +comment_filter +x +4 +text +x +12 +assert_equal +p +5 +I +0 +I +31 +I +0 +I +32 +I +1a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +18 +test_lines_of_code +M +1 +n +n +x +18 +test_lines_of_code +i +108 +5 +80 +45 +0 +1 +7 +2 +64 +7 +3 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +7 +7 +64 +19 +0 +15 +5 +78 +45 +0 +8 +20 +0 +7 +9 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +10 +20 +0 +7 +11 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +12 +20 +0 +7 +13 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +4 +4 +45 +0 +14 +20 +0 +7 +15 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +11 +I +6 +I +1 +I +0 +I +0 +n +p +16 +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +13 +lines_of_code +x +12 +assert_equal +s +514 + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + +n +x +4 +html +n +x +3 +php +n +x +4 +yaml +n +x +5 +rhtml +p +15 +I +0 +I +43 +I +0 +I +44 +I +15 +I +4d +I +1b +I +62 +I +2f +I +63 +I +43 +I +64 +I +57 +I +65 +I +6c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +1 +x +5 +rHTML +x +3 +ENV +n +s +14 +check_rubygems +x +2 +[] +x +12 +RUBY_VERSION +n +s +3 +1.9 +x +1 +< +x +24 +test_rubygems_not_loaded +M +1 +n +n +x +24 +test_rubygems_not_loaded +i +34 +5 +1 +26 +93 +0 +15 +29 +17 +0 +7 +0 +98 +1 +1 +30 +8 +23 +25 +92 +0 +27 +8 +28 +15 +7 +2 +8 +29 +1 +47 +49 +3 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +4 +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +x +12 +assert_equal +p +5 +I +0 +I +68 +I +0 +I +69 +I +22 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_encoders +M +1 +n +n +x +21 +test_list_of_encoders +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Encoders +x +4 +list +x +14 +assert_kind_of +n +s +5 +count +x +8 +include? +x +6 +assert +p +7 +I +0 +I +6c +I +0 +I +6d +I +11 +I +6e +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_scanners +M +1 +n +n +x +21 +test_list_of_scanners +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Scanners +x +4 +list +x +14 +assert_kind_of +n +s +9 +plaintext +x +8 +include? +x +6 +assert +p +7 +I +0 +I +71 +I +0 +I +72 +I +11 +I +73 +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +25 +test_scan_a_frozen_string +M +1 +n +n +x +25 +test_scan_a_frozen_string +i +12 +45 +0 +1 +45 +2 +3 +7 +4 +49 +5 +2 +11 +I +3 +I +0 +I +0 +I +0 +n +p +6 +x +7 +CodeRay +n +x +12 +RUBY_VERSION +n +x +4 +ruby +x +4 +scan +p +5 +I +0 +I +76 +I +0 +I +77 +I +c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +p +51 +I +2 +I +6 +I +10 +I +c +I +1a +I +e +I +1d +I +f +I +24 +I +10 +I +2b +I +11 +I +31 +I +12 +I +38 +I +13 +I +3f +I +14 +I +46 +I +15 +I +52 +I +17 +I +60 +I +1d +I +63 +I +1d +I +66 +I +1e +I +6f +I +1f +I +7d +I +25 +I +8b +I +2c +I +99 +I +31 +I +a7 +I +43 +I +b5 +I +6a +I +cc +I +68 +I +db +I +6a +I +dd +I +6c +I +eb +I +71 +I +f9 +I +76 +I +107 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,77 @@ +require 'test/unit' +$:.unshift 'lib' +require 'coderay' + +begin + require 'rubygems' unless defined? Gem + gem 'RedCloth', '>= 4.0.3' rescue nil + require 'redcloth' +rescue LoadError + warn 'RedCloth not found - skipping for_redcloth tests.' +end + +class BasicTest < Test::Unit::TestCase + + def test_for_redcloth + require 'coderay/for_redcloth' + assert_equal "

    puts "Hello, World!"

    ", + RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    puts "Hello, World!"
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. puts "Hello, World!"').to_html + end + + def test_for_redcloth_no_lang + require 'coderay/for_redcloth' + assert_equal "

    puts \"Hello, World!\"

    ", + RedCloth.new('@puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc. puts "Hello, World!"').to_html + end + + def test_for_redcloth_style + require 'coderay/for_redcloth' + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc{color: red}. puts "Hello, World!"').to_html + end + + def test_for_redcloth_escapes + require 'coderay/for_redcloth' + assert_equal '

    >

    ', + RedCloth.new('@[ruby]>@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    &
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. &').to_html + end + + def test_for_redcloth_escapes2 + require 'coderay/for_redcloth' + assert_equal "

    #include <test.h>

    ", + RedCloth.new('@[c]#include @').to_html + end + + # See http://jgarber.lighthouseapp.com/projects/13054/tickets/124-code-markup-does-not-allow-brackets. + def test_for_redcloth_false_positive + require 'coderay/for_redcloth' + assert_equal '

    [project]_dff.skjd

    ', + RedCloth.new('@[project]_dff.skjd@').to_html + # false positive, but expected behavior / known issue + assert_equal "

    _dff.skjd

    ", + RedCloth.new('@[ruby]_dff.skjd@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    [project]_dff.skjd
    + BLOCKCODE + RedCloth.new('bc. [project]_dff.skjd').to_html + end + +end if defined? RedCloth \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/for_redcloth.rbc.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,1708 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +249 +5 +7 +0 +64 +47 +49 +1 +1 +15 +99 +43 +2 +7 +3 +49 +4 +1 +7 +5 +64 +49 +6 +1 +15 +5 +7 +7 +64 +47 +49 +1 +1 +15 +26 +93 +0 +15 +29 +144 +0 +26 +93 +1 +15 +29 +55 +0 +7 +8 +98 +9 +1 +30 +8 +61 +25 +92 +1 +27 +8 +66 +15 +7 +10 +8 +67 +1 +9 +72 +1 +8 +80 +5 +7 +11 +64 +47 +49 +1 +1 +15 +26 +93 +2 +15 +29 +102 +0 +5 +7 +12 +64 +7 +13 +64 +47 +49 +14 +2 +30 +8 +129 +26 +93 +3 +15 +24 +13 +45 +15 +16 +12 +49 +17 +1 +10 +119 +8 +124 +15 +1 +25 +8 +129 +15 +92 +3 +27 +34 +92 +2 +27 +15 +5 +7 +18 +64 +47 +49 +1 +1 +30 +8 +178 +26 +93 +4 +15 +24 +13 +45 +19 +20 +12 +49 +17 +1 +10 +161 +8 +173 +15 +5 +7 +21 +64 +47 +49 +22 +1 +25 +8 +178 +15 +92 +4 +27 +34 +92 +0 +27 +15 +26 +93 +5 +15 +29 +197 +0 +7 +23 +98 +9 +1 +30 +8 +203 +25 +92 +5 +27 +8 +208 +15 +7 +10 +8 +209 +1 +9 +245 +99 +7 +24 +45 +25 +26 +43 +27 +43 +28 +65 +49 +29 +3 +13 +99 +12 +7 +30 +12 +7 +31 +12 +65 +12 +49 +32 +4 +15 +49 +30 +0 +8 +246 +1 +15 +2 +11 +I +c +I +0 +I +0 +I +0 +n +p +33 +s +9 +test/unit +x +7 +require +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +s +8 +rubygems +s +8 +RedCloth +s +8 +>= 4.0.3 +x +3 +gem +x +13 +StandardError +n +x +3 +=== +s +8 +redcloth +x +9 +LoadError +n +s +49 +RedCloth not found - skipping for_redcloth tests. +x +4 +warn +x +8 +RedCloth +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +86 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +4 +7 +5 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +6 +7 +7 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +8 +7 +9 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +10 +7 +11 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +12 +7 +13 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +14 +x +17 +test_for_redcloth +M +1 +n +n +x +17 +test_for_redcloth +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +221 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +28 +@[ruby]puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +252 +
    +
    puts "Hello, World!"
    +
    + +x +5 +chomp +n +s +30 +bc[ruby]. puts "Hello, World!" +p +17 +I +0 +I +f +I +0 +I +10 +I +9 +I +11 +I +d +I +12 +I +2e +I +11 +I +33 +I +13 +I +3a +I +18 +I +5b +I +13 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +25 +test_for_redcloth_no_lang +M +1 +n +n +x +25 +test_for_redcloth_no_lang +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +40 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +45 +
    puts "Hello, World!"
    + +x +5 +chomp +n +s +24 +bc. puts "Hello, World!" +p +17 +I +0 +I +1b +I +0 +I +1c +I +9 +I +1d +I +d +I +1e +I +2e +I +1d +I +33 +I +1f +I +3a +I +22 +I +5b +I +1f +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +23 +test_for_redcloth_style +M +1 +n +n +x +23 +test_for_redcloth_style +i +54 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +49 +3 +0 +45 +4 +5 +13 +71 +6 +47 +9 +40 +47 +49 +7 +0 +13 +7 +8 +64 +47 +49 +9 +1 +15 +8 +46 +7 +8 +64 +49 +6 +1 +49 +10 +0 +47 +49 +11 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +12 +s +20 +coderay/for_redcloth +x +7 +require +s +85 +
    puts "Hello, World!"
    + +x +5 +chomp +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +36 +bc{color: red}. puts "Hello, World!" +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +25 +I +0 +I +26 +I +9 +I +27 +I +10 +I +2a +I +31 +I +27 +I +36 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +25 +test_for_redcloth_escapes +M +1 +n +n +x +25 +test_for_redcloth_escapes +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +52 +

    >

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +9 +@[ruby]>@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +84 +
    +
    &
    +
    + +x +5 +chomp +n +s +11 +bc[ruby]. & +p +17 +I +0 +I +2d +I +0 +I +2e +I +9 +I +2f +I +d +I +30 +I +2e +I +2f +I +33 +I +31 +I +3a +I +36 +I +5b +I +31 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +26 +test_for_redcloth_escapes2 +M +1 +n +n +x +26 +test_for_redcloth_escapes2 +i +51 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +11 +s +20 +coderay/for_redcloth +x +7 +require +s +149 +

    #include <test.h>

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@[c]#include @ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +39 +I +0 +I +3a +I +9 +I +3b +I +d +I +3c +I +2e +I +3b +I +33 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +32 +test_for_redcloth_false_positive +M +1 +n +n +x +32 +test_for_redcloth_false_positive +i +138 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +45 +3 +12 +13 +71 +5 +47 +9 +79 +47 +49 +6 +0 +13 +7 +13 +64 +47 +49 +8 +1 +15 +8 +85 +7 +13 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +14 +64 +49 +15 +0 +45 +3 +16 +13 +71 +5 +47 +9 +124 +47 +49 +6 +0 +13 +7 +17 +64 +47 +49 +8 +1 +15 +8 +130 +7 +17 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +18 +s +20 +coderay/for_redcloth +x +7 +require +s +38 +

    [project]_dff.skjd

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +20 +@[project]_dff.skjd@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +57 +

    _dff.skjd

    +n +s +17 +@[ruby]_dff.skjd@ +s +43 +
    [project]_dff.skjd
    + +x +5 +chomp +n +s +22 +bc. [project]_dff.skjd +p +23 +I +0 +I +40 +I +0 +I +41 +I +9 +I +42 +I +d +I +43 +I +2e +I +42 +I +33 +I +45 +I +37 +I +46 +I +58 +I +45 +I +5d +I +47 +I +64 +I +4a +I +85 +I +47 +I +8a +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +p +13 +I +2 +I +f +I +10 +I +1b +I +1e +I +25 +I +2c +I +2d +I +3a +I +39 +I +48 +I +40 +I +56 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +13 +attach_method +p +23 +I +0 +I +1 +I +9 +I +2 +I +18 +I +3 +I +21 +I +6 +I +51 +I +7 +I +85 +I +8 +I +95 +I +9 +I +a2 +I +a +I +b6 +I +4d +I +d3 +I +d +I +f5 +I +4d +I +f9 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +require 'test/unit' +require 'coderay' + +class PluginScannerTest < Test::Unit::TestCase + + def test_load + require File.join(File.dirname(__FILE__), 'vhdl') + assert_equal 'VHDL', CodeRay.scanner(:vhdl).class.name + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/load_plugin_scanner.rbc.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,317 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +17 +PluginScannerTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +17 +PluginScannerTest +i +16 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +4 +x +9 +test_load +M +1 +n +n +x +9 +test_load +i +48 +5 +45 +0 +1 +45 +0 +2 +65 +49 +3 +0 +49 +4 +1 +7 +5 +64 +49 +6 +2 +47 +49 +7 +1 +15 +5 +7 +8 +64 +45 +9 +10 +7 +11 +49 +12 +1 +49 +13 +0 +49 +14 +0 +47 +49 +15 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +16 +x +4 +File +n +n +x +11 +active_path +x +7 +dirname +s +4 +vhdl +x +4 +join +x +7 +require +s +4 +VHDL +x +7 +CodeRay +n +x +4 +vhdl +x +7 +scanner +x +5 +class +x +4 +name +x +12 +assert_equal +p +7 +I +0 +I +6 +I +0 +I +7 +I +19 +I +8 +I +30 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +p +3 +I +2 +I +6 +I +10 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,12 @@ +require 'test/unit' + +MYDIR = File.dirname(__FILE__) + +$:.unshift 'lib' +require 'coderay' +puts "Running basic CodeRay #{CodeRay::VERSION} tests..." + +suite = %w(basic load_plugin_scanner word_list) +for test_case in suite + load File.join(MYDIR, test_case + '.rb') +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/suite.rbc.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,322 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +95 +5 +7 +0 +64 +47 +49 +1 +1 +15 +65 +7 +2 +45 +3 +4 +65 +49 +5 +0 +49 +6 +1 +49 +7 +2 +15 +99 +43 +8 +7 +9 +49 +10 +1 +7 +11 +64 +49 +12 +1 +15 +5 +7 +13 +64 +47 +49 +1 +1 +15 +5 +7 +14 +45 +15 +16 +43 +17 +47 +49 +18 +0 +7 +19 +63 +3 +47 +49 +20 +1 +15 +7 +21 +64 +7 +22 +64 +7 +23 +64 +35 +3 +19 +0 +15 +20 +0 +56 +24 +50 +25 +0 +15 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +26 +s +9 +test/unit +x +7 +require +x +5 +MYDIR +x +4 +File +n +x +11 +active_path +x +7 +dirname +x +9 +const_set +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +s +22 +Running basic CodeRay +x +7 +CodeRay +n +x +7 +VERSION +x +4 +to_s +s +9 + tests... +x +4 +puts +s +5 +basic +s +19 +load_plugin_scanner +s +9 +word_list +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +28 +57 +22 +1 +1 +15 +5 +45 +0 +1 +45 +2 +3 +21 +1 +1 +7 +4 +64 +81 +5 +49 +6 +2 +47 +49 +7 +1 +11 +I +6 +I +0 +I +1 +I +1 +n +p +8 +x +4 +File +n +x +5 +MYDIR +n +s +3 +.rb +x +1 ++ +x +4 +join +x +4 +load +p +5 +I +0 +I +a +I +5 +I +b +I +1c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +0 +x +4 +each +p +15 +I +0 +I +1 +I +9 +I +3 +I +1a +I +5 +I +29 +I +6 +I +32 +I +7 +I +47 +I +9 +I +55 +I +a +I +5f +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +2 +x +5 +suite +x +9 +test_case diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,126 @@ +class VHDL < CodeRay::Scanners::Scanner + + register_for :vhdl + + RESERVED_WORDS = [ + 'access','after','alias','all','assert','architecture','begin', + 'block','body','buffer','bus','case','component','configuration','constant', + 'disconnect','downto','else','elsif','end','entity','exit','file','for', + 'function','generate','generic','group','guarded','if','impure','in', + 'inertial','inout','is','label','library','linkage','literal','loop', + 'map','new','next','null','of','on','open','others','out','package', + 'port','postponed','procedure','process','pure','range','record','register', + 'reject','report','return','select','severity','signal','shared','subtype', + 'then','to','transport','type','unaffected','units','until','use','variable', + 'wait','when','while','with','note','warning','error','failure','and', + 'or','xor','not','nor', + 'array' + ] + + PREDEFINED_TYPES = [ + 'bit','bit_vector','character','boolean','integer','real','time','string', + 'severity_level','positive','natural','signed','unsigned','line','text', + 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state', + 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength', + 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector' + ] + + PREDEFINED_CONSTANTS = [ + + ] + + IDENT_KIND = CodeRay::CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/-- .*/x) + kind = :comment + + elsif scan(/ [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) /x) + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match.downcase] + + elsif match = scan(/[a-z]?"/i) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + kind = :char + + elsif scan(/(?:\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/vhdl.rbc.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,2334 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +35 +99 +7 +0 +45 +1 +2 +43 +3 +43 +4 +65 +49 +5 +3 +13 +99 +12 +7 +6 +12 +7 +7 +12 +65 +12 +49 +8 +4 +15 +49 +6 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +9 +x +4 +VHDL +x +7 +CodeRay +n +x +8 +Scanners +x +7 +Scanner +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +4 +VHDL +i +519 +5 +66 +5 +7 +0 +47 +49 +1 +1 +15 +65 +7 +2 +7 +3 +64 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +7 +12 +64 +7 +13 +64 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +19 +64 +7 +20 +64 +7 +21 +64 +7 +22 +64 +7 +23 +64 +7 +24 +64 +7 +25 +64 +7 +26 +64 +7 +27 +64 +7 +28 +64 +7 +29 +64 +7 +30 +64 +7 +31 +64 +7 +32 +64 +7 +33 +64 +7 +34 +64 +7 +35 +64 +7 +36 +64 +7 +37 +64 +7 +38 +64 +7 +39 +64 +7 +40 +64 +7 +41 +64 +7 +42 +64 +7 +43 +64 +7 +44 +64 +7 +45 +64 +7 +46 +64 +7 +47 +64 +7 +48 +64 +7 +49 +64 +7 +50 +64 +7 +51 +64 +7 +52 +64 +7 +53 +64 +7 +54 +64 +7 +55 +64 +7 +56 +64 +7 +57 +64 +7 +58 +64 +7 +59 +64 +7 +60 +64 +7 +61 +64 +7 +62 +64 +7 +63 +64 +7 +64 +64 +7 +65 +64 +7 +66 +64 +7 +67 +64 +7 +68 +64 +7 +69 +64 +7 +70 +64 +7 +71 +64 +7 +72 +64 +7 +73 +64 +7 +74 +64 +7 +75 +64 +7 +76 +64 +7 +77 +64 +7 +78 +64 +7 +79 +64 +7 +80 +64 +7 +81 +64 +7 +82 +64 +7 +83 +64 +7 +84 +64 +7 +85 +64 +7 +86 +64 +7 +87 +64 +7 +88 +64 +7 +89 +64 +7 +90 +64 +7 +91 +64 +35 +89 +49 +92 +2 +15 +65 +7 +93 +7 +94 +64 +7 +95 +64 +7 +96 +64 +7 +97 +64 +7 +98 +64 +7 +99 +64 +7 +100 +64 +7 +101 +64 +7 +102 +64 +7 +103 +64 +7 +104 +64 +7 +105 +64 +7 +106 +64 +7 +107 +64 +7 +108 +64 +7 +109 +64 +7 +110 +64 +7 +111 +64 +7 +112 +64 +7 +113 +64 +7 +114 +64 +7 +115 +64 +7 +116 +64 +7 +117 +64 +7 +118 +64 +7 +119 +64 +7 +120 +64 +7 +121 +64 +7 +122 +64 +7 +123 +64 +35 +30 +49 +92 +2 +15 +65 +7 +124 +35 +0 +49 +92 +2 +15 +65 +7 +125 +45 +126 +127 +43 +128 +13 +71 +129 +47 +9 +422 +47 +49 +130 +0 +13 +7 +131 +47 +49 +132 +1 +15 +8 +427 +7 +131 +49 +129 +1 +45 +2 +133 +7 +134 +49 +135 +2 +45 +93 +136 +7 +137 +49 +135 +2 +45 +124 +138 +7 +139 +49 +135 +2 +49 +92 +2 +15 +65 +7 +140 +7 +141 +13 +70 +9 +476 +15 +44 +43 +142 +7 +143 +80 +49 +129 +2 +6 +141 +49 +92 +2 +15 +65 +7 +144 +7 +145 +13 +70 +9 +501 +15 +44 +43 +142 +7 +146 +80 +49 +129 +2 +6 +145 +49 +92 +2 +15 +99 +7 +147 +7 +148 +65 +67 +49 +149 +0 +49 +150 +4 +11 +I +5b +I +0 +I +0 +I +0 +n +p +151 +x +4 +vhdl +x +12 +register_for +x +14 +RESERVED_WORDS +s +6 +access +s +5 +after +s +5 +alias +s +3 +all +s +6 +assert +s +12 +architecture +s +5 +begin +s +5 +block +s +4 +body +s +6 +buffer +s +3 +bus +s +4 +case +s +9 +component +s +13 +configuration +s +8 +constant +s +10 +disconnect +s +6 +downto +s +4 +else +s +5 +elsif +s +3 +end +s +6 +entity +s +4 +exit +s +4 +file +s +3 +for +s +8 +function +s +8 +generate +s +7 +generic +s +5 +group +s +7 +guarded +s +2 +if +s +6 +impure +s +2 +in +s +8 +inertial +s +5 +inout +s +2 +is +s +5 +label +s +7 +library +s +7 +linkage +s +7 +literal +s +4 +loop +s +3 +map +s +3 +new +s +4 +next +s +4 +null +s +2 +of +s +2 +on +s +4 +open +s +6 +others +s +3 +out +s +7 +package +s +4 +port +s +9 +postponed +s +9 +procedure +s +7 +process +s +4 +pure +s +5 +range +s +6 +record +s +8 +register +s +6 +reject +s +6 +report +s +6 +return +s +6 +select +s +8 +severity +s +6 +signal +s +6 +shared +s +7 +subtype +s +4 +then +s +2 +to +s +9 +transport +s +4 +type +s +10 +unaffected +s +5 +units +s +5 +until +s +3 +use +s +8 +variable +s +4 +wait +s +4 +when +s +5 +while +s +4 +with +s +4 +note +s +7 +warning +s +5 +error +s +7 +failure +s +3 +and +s +2 +or +s +3 +xor +s +3 +not +s +3 +nor +s +5 +array +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +bit +s +10 +bit_vector +s +9 +character +s +7 +boolean +s +7 +integer +s +4 +real +s +4 +time +s +6 +string +s +14 +severity_level +s +8 +positive +s +7 +natural +s +6 +signed +s +8 +unsigned +s +4 +line +s +4 +text +s +9 +std_logic +s +16 +std_logic_vector +s +10 +std_ulogic +s +17 +std_ulogic_vector +s +10 +qsim_state +s +17 +qsim_state_vector +s +12 +qsim_12state +s +19 +qsim_12state_vector +s +13 +qsim_strength +s +7 +mux_bit +s +10 +mux_vector +s +7 +reg_bit +s +10 +reg_vector +s +7 +wor_bit +s +10 +wor_vector +x +20 +PREDEFINED_CONSTANTS +x +10 +IDENT_KIND +x +7 +CodeRay +n +x +20 +CaseIgnoringWordList +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +6 +ESCAPE +n +x +6 +Regexp +s +49 + [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} +x +14 +UNICODE_ESCAPE +n +s +35 + u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} +x +11 +scan_tokens +M +1 +n +n +x +11 +scan_tokens +i +688 +7 +0 +19 +2 +15 +5 +47 +49 +1 +0 +10 +660 +1 +19 +3 +15 +1 +19 +4 +15 +20 +2 +13 +7 +0 +12 +49 +2 +1 +9 +331 +15 +5 +7 +3 +13 +70 +9 +51 +15 +44 +43 +4 +7 +5 +80 +49 +6 +2 +6 +3 +47 +49 +7 +1 +9 +63 +7 +8 +19 +3 +8 +329 +5 +7 +9 +13 +70 +9 +82 +15 +44 +43 +4 +7 +10 +80 +49 +6 +2 +6 +9 +47 +49 +7 +1 +9 +94 +7 +11 +19 +3 +8 +329 +5 +7 +12 +13 +70 +9 +113 +15 +44 +43 +4 +7 +13 +80 +49 +6 +2 +6 +12 +47 +49 +7 +1 +9 +125 +7 +14 +19 +3 +8 +329 +5 +7 +15 +13 +70 +9 +144 +15 +44 +43 +4 +7 +16 +80 +49 +6 +2 +6 +15 +47 +49 +7 +1 +19 +4 +9 +167 +45 +17 +18 +20 +4 +49 +19 +0 +49 +20 +1 +19 +3 +8 +329 +5 +7 +21 +13 +70 +9 +186 +15 +44 +43 +4 +7 +22 +79 +49 +6 +2 +6 +21 +47 +49 +7 +1 +19 +4 +9 +217 +20 +0 +7 +23 +7 +24 +35 +2 +49 +25 +1 +15 +7 +24 +19 +2 +15 +7 +26 +19 +3 +8 +329 +5 +7 +27 +13 +70 +9 +247 +15 +44 +43 +4 +7 +28 +45 +29 +30 +47 +49 +31 +0 +7 +32 +63 +3 +80 +49 +6 +2 +6 +27 +47 +49 +7 +1 +9 +259 +7 +33 +19 +3 +8 +329 +5 +7 +34 +13 +70 +9 +278 +15 +44 +43 +4 +7 +35 +78 +49 +6 +2 +6 +34 +47 +49 +7 +1 +9 +290 +7 +36 +19 +3 +8 +329 +5 +7 +37 +13 +70 +9 +309 +15 +44 +43 +4 +7 +38 +78 +49 +6 +2 +6 +37 +47 +49 +7 +1 +9 +321 +7 +39 +19 +3 +8 +329 +5 +48 +40 +15 +7 +41 +19 +3 +8 +564 +13 +7 +24 +12 +49 +2 +1 +9 +553 +15 +5 +7 +42 +13 +70 +9 +360 +15 +44 +43 +4 +7 +43 +78 +49 +6 +2 +6 +42 +47 +49 +7 +1 +9 +372 +7 +44 +19 +3 +8 +551 +5 +7 +45 +13 +70 +9 +391 +15 +44 +43 +4 +7 +46 +78 +49 +6 +2 +6 +45 +47 +49 +7 +1 +9 +432 +20 +0 +7 +46 +64 +7 +26 +35 +2 +49 +25 +1 +15 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +0 +19 +2 +15 +1 +8 +656 +8 +551 +5 +7 +48 +13 +70 +9 +472 +15 +44 +43 +4 +7 +49 +45 +29 +50 +47 +49 +31 +0 +7 +51 +45 +52 +53 +47 +49 +31 +0 +7 +54 +63 +5 +4 +6 +49 +6 +2 +6 +48 +47 +49 +7 +1 +9 +484 +7 +33 +19 +3 +8 +551 +5 +7 +55 +13 +70 +9 +503 +15 +44 +43 +4 +7 +56 +80 +49 +6 +2 +6 +55 +47 +49 +7 +1 +9 +532 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +41 +19 +3 +15 +7 +0 +19 +2 +8 +551 +5 +7 +57 +64 +5 +79 +47 +49 +58 +1 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +564 +15 +5 +7 +61 +64 +20 +0 +47 +49 +60 +2 +15 +20 +4 +13 +10 +576 +15 +5 +48 +62 +19 +4 +15 +99 +43 +63 +7 +64 +49 +20 +1 +13 +9 +597 +15 +20 +3 +10 +596 +2 +8 +597 +3 +9 +625 +5 +7 +65 +64 +20 +4 +20 +3 +35 +2 +5 +48 +66 +35 +2 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +626 +1 +15 +20 +4 +9 +634 +1 +8 +644 +5 +7 +67 +64 +20 +0 +47 +49 +60 +2 +15 +20 +0 +20 +4 +20 +3 +35 +2 +49 +25 +1 +15 +68 +8 +5 +1 +15 +20 +2 +7 +24 +83 +68 +9 +683 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +8 +684 +1 +15 +20 +0 +11 +I +c +I +5 +I +2 +I +2 +n +p +69 +x +7 +initial +x +4 +eos? +x +3 +=== +n +x +6 +Regexp +s +12 + \s+ | \\\n +x +3 +new +x +4 +scan +x +5 +space +n +s +5 +-- .* +x +7 +comment +n +s +42 + [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) +x +8 +operator +n +s +24 + [A-Za-z_][A-Za-z_0-9]* +x +10 +IDENT_KIND +n +x +8 +downcase +x +2 +[] +n +s +7 +[a-z]?" +x +4 +open +x +6 +string +x +2 +<< +x +9 +delimiter +n +s +24 + L?' (?: [^\'\n\\] | \\ +x +6 +ESCAPE +n +x +4 +to_s +s +7 + )? '? +x +4 +char +n +s +18 +(?:\d+)(?![.eEfF]) +x +7 +integer +n +s +59 +\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]? +x +5 +float +x +5 +getch +x +5 +error +n +s +9 +[^\\\n"]+ +x +7 +content +n +s +1 +" +x +5 +close +n +s +8 + \\ (?: +n +s +3 + | +x +14 +UNICODE_ESCAPE +n +s +3 + ) +n +s +8 + \\ | $ +s +36 +else case " reached; %p not handled. +x +4 +peek +x +1 +% +x +13 +raise_inspect +s +13 +Unknown state +x +7 +matched +x +7 +Globals +x +6 +$DEBUG +s +25 +Error token %p in line %d +x +4 +line +s +11 +Empty token +x +2 +== +p +111 +I +0 +I +28 +I +0 +I +2a +I +5 +I +2c +I +c +I +2e +I +10 +I +2f +I +14 +I +31 +I +17 +I +33 +I +20 +I +35 +I +39 +I +36 +I +3f +I +38 +I +58 +I +39 +I +5e +I +3b +I +77 +I +3c +I +7d +I +3e +I +98 +I +3f +I +a7 +I +41 +I +c2 +I +42 +I +ce +I +43 +I +d3 +I +44 +I +d9 +I +46 +I +fd +I +47 +I +103 +I +49 +I +11c +I +4a +I +122 +I +4c +I +13b +I +4d +I +141 +I +50 +I +145 +I +51 +I +14c +I +55 +I +155 +I +56 +I +16e +I +57 +I +174 +I +58 +I +18d +I +59 +I +19a +I +5a +I +1a6 +I +5b +I +1ab +I +5c +I +1b0 +I +5d +I +1de +I +5e +I +1e4 +I +5f +I +1fd +I +60 +I +209 +I +61 +I +20e +I +62 +I +214 +I +64 +I +22a +I +68 +I +235 +I +6c +I +241 +I +6d +I +257 +I +6f +I +258 +I +6e +I +25b +I +6f +I +271 +I +6d +I +273 +I +71 +I +285 +I +73 +I +296 +I +77 +I +29e +I +78 +I +2ab +I +77 +I +2ad +I +7b +I +2b0 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +5 +x +6 +tokens +x +7 +options +x +5 +state +x +4 +kind +x +5 +match +x +17 +method_visibility +x +15 +add_defn_method +p +65 +I +2 +I +3 +I +a +I +5 +I +d +I +6 +I +22 +I +7 +I +3a +I +8 +I +55 +I +9 +I +6d +I +a +I +85 +I +b +I +a3 +I +c +I +bb +I +d +I +d3 +I +e +I +ee +I +f +I +109 +I +10 +I +115 +I +11 +I +11e +I +14 +I +121 +I +15 +I +139 +I +16 +I +14e +I +17 +I +15d +I +18 +I +169 +I +19 +I +181 +I +1c +I +184 +I +1e +I +18a +I +20 +I +1ab +I +21 +I +1b0 +I +20 +I +1b3 +I +22 +I +1b8 +I +20 +I +1bb +I +23 +I +1c0 +I +20 +I +1c7 +I +25 +I +1e0 +I +26 +I +1f9 +I +28 +I +207 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 +x +13 +attach_method +p +3 +I +0 +I +1 +I +23 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rb.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,79 @@ +require 'test/unit' +require 'coderay' + +class WordListTest < Test::Unit::TestCase + + include CodeRay + + # define word arrays + RESERVED_WORDS = %w[ + asm break case continue default do else + ... + ] + + PREDEFINED_TYPES = %w[ + int long short char void + ... + ] + + PREDEFINED_CONSTANTS = %w[ + EOF NULL ... + ] + + # make a WordList + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + def test_word_list_example + assert_equal :pre_type, IDENT_KIND['void'] + # assert_equal :pre_constant, IDENT_KIND['...'] # not specified + end + + def test_word_list + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_word_list_cached + list = WordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_case_ignoring_word_list + list = CaseIgnoringWordList.new(:ident).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_case_ignoring_word_list_cached + list = CaseIgnoringWordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident, true).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_dup + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + list2 = list.dup + list2.add(%w[foobar], :keyword) + assert_equal :keyword, list2['foobar'] + assert_equal :reserved, list['foobar'] + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rbc.svn-base --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/.svn/text-base/word_list.rbc.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,1763 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +12 +WordListTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +12 +WordListTest +i +232 +5 +66 +5 +45 +0 +1 +47 +49 +2 +1 +15 +65 +7 +3 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +35 +8 +49 +12 +2 +15 +65 +7 +13 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +11 +64 +35 +6 +49 +12 +2 +15 +65 +7 +19 +7 +20 +64 +7 +21 +64 +7 +11 +64 +35 +3 +49 +12 +2 +15 +65 +7 +22 +45 +23 +24 +13 +71 +25 +47 +9 +115 +47 +49 +26 +0 +13 +7 +27 +47 +49 +28 +1 +15 +8 +120 +7 +27 +49 +25 +1 +45 +3 +29 +7 +30 +49 +31 +2 +45 +13 +32 +7 +33 +49 +31 +2 +45 +19 +34 +7 +35 +49 +31 +2 +49 +12 +2 +15 +99 +7 +36 +7 +37 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +40 +7 +41 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +42 +7 +43 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +44 +7 +45 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +46 +7 +47 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +48 +7 +49 +65 +67 +49 +38 +0 +49 +39 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +50 +x +7 +CodeRay +n +x +7 +include +x +14 +RESERVED_WORDS +s +3 +asm +s +5 +break +s +4 +case +s +8 +continue +s +7 +default +s +2 +do +s +4 +else +s +3 +... +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +int +s +4 +long +s +5 +short +s +4 +char +s +4 +void +x +20 +PREDEFINED_CONSTANTS +s +3 +EOF +s +4 +NULL +x +10 +IDENT_KIND +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +22 +test_word_list_example +M +1 +n +n +x +22 +test_word_list_example +i +17 +5 +7 +0 +45 +1 +2 +7 +3 +64 +49 +4 +1 +47 +49 +5 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +6 +x +8 +pre_type +x +10 +IDENT_KIND +n +s +4 +void +x +2 +[] +x +12 +assert_equal +p +5 +I +0 +I +1d +I +0 +I +1e +I +11 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +test_word_list +M +1 +n +n +x +14 +test_word_list +i +73 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +22 +I +0 +I +23 +I +29 +I +24 +I +39 +I +25 +I +49 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +21 +test_word_list_cached +M +1 +n +n +x +21 +test_word_list_cached +i +75 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +28 +I +0 +I +29 +I +2b +I +2a +I +3b +I +2b +I +4b +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +28 +test_case_ignoring_word_list +M +1 +n +n +x +28 +test_case_ignoring_word_list +i +178 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +112 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +117 +7 +4 +49 +2 +1 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +2e +I +0 +I +2f +I +29 +I +30 +I +39 +I +31 +I +49 +I +32 +I +59 +I +34 +I +82 +I +35 +I +92 +I +36 +I +a2 +I +37 +I +b2 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +35 +test_case_ignoring_word_list_cached +M +1 +n +n +x +35 +test_case_ignoring_word_list_cached +i +182 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +115 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +121 +7 +4 +2 +49 +2 +2 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +3a +I +0 +I +3b +I +2b +I +3c +I +3b +I +3d +I +4b +I +3e +I +5b +I +40 +I +86 +I +41 +I +96 +I +42 +I +a6 +I +43 +I +b6 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +8 +test_dup +M +1 +n +n +x +8 +test_dup +i +110 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +20 +0 +49 +11 +0 +19 +1 +15 +20 +1 +7 +6 +64 +35 +1 +7 +12 +49 +8 +2 +15 +5 +7 +12 +20 +1 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +13 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +x +3 +dup +x +7 +keyword +p +15 +I +0 +I +46 +I +0 +I +47 +I +29 +I +48 +I +39 +I +49 +I +41 +I +4a +I +4e +I +4b +I +5e +I +4c +I +6e +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +2 +x +4 +list +x +5 +list2 +p +45 +I +2 +I +6 +I +b +I +9 +I +e +I +a +I +23 +I +b +I +2c +I +e +I +2f +I +f +I +3e +I +10 +I +47 +I +13 +I +4a +I +14 +I +59 +I +18 +I +78 +I +19 +I +7d +I +18 +I +80 +I +1a +I +85 +I +18 +I +88 +I +1b +I +8d +I +18 +I +94 +I +1d +I +a2 +I +22 +I +b0 +I +28 +I +be +I +2e +I +cc +I +3a +I +da +I +46 +I +e8 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/basic.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/basic.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,122 @@ +require 'test/unit' +require 'coderay' + +class BasicTest < Test::Unit::TestCase + + def test_version + assert_nothing_raised do + assert_match(/\A\d\.\d\.\d\z/, CodeRay::VERSION) + end + end + + RUBY_TEST_CODE = 'puts "Hello, World!"' + + RUBY_TEST_TOKENS = [ + ['puts', :ident], + [' ', :space], + [:open, :string], + ['"', :delimiter], + ['Hello, World!', :content], + ['"', :delimiter], + [:close, :string] + ] + def test_simple_scan + assert_nothing_raised do + assert_equal RUBY_TEST_TOKENS, CodeRay.scan(RUBY_TEST_CODE, :ruby).to_ary + end + end + + RUBY_TEST_HTML = 'puts "' + + 'Hello, World!"' + def test_simple_highlight + assert_nothing_raised do + assert_equal RUBY_TEST_HTML, CodeRay.scan(RUBY_TEST_CODE, :ruby).html + end + end + + def test_duo + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE)) + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain => :plain].highlight(RUBY_TEST_CODE)) + end + + def test_duo_stream + assert_equal(RUBY_TEST_CODE, + CodeRay::Duo[:plain, :plain].highlight(RUBY_TEST_CODE, :stream => true)) + end + + def test_comment_filter + assert_equal <<-EXPECTED, CodeRay.scan(<<-INPUT, :ruby).comment_filter.text +#!/usr/bin/env ruby + +code + +more code + EXPECTED +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + end + + def test_lines_of_code + assert_equal 2, CodeRay.scan(<<-INPUT, :ruby).lines_of_code +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + INPUT + rHTML = <<-RHTML + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + RHTML + assert_equal 0, CodeRay.scan(rHTML, :html).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :php).lines_of_code + assert_equal 0, CodeRay.scan(rHTML, :yaml).lines_of_code + assert_equal 4, CodeRay.scan(rHTML, :rhtml).lines_of_code + end + + def test_rubygems_not_loaded + assert_equal nil, defined? Gem + end if ENV['check_rubygems'] && RUBY_VERSION < '1.9' + + def test_list_of_encoders + assert_kind_of(Array, CodeRay::Encoders.list) + assert CodeRay::Encoders.list.include?('count') + end + + def test_list_of_scanners + assert_kind_of(Array, CodeRay::Scanners.list) + assert CodeRay::Scanners.list.include?('plaintext') + end + + def test_scan_a_frozen_string + CodeRay.scan RUBY_VERSION, :ruby + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/basic.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/basic.rbc Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,2022 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +263 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +4 +7 +5 +64 +49 +6 +2 +15 +65 +7 +7 +7 +8 +64 +7 +9 +35 +2 +7 +10 +64 +7 +11 +35 +2 +7 +12 +7 +13 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +16 +64 +7 +17 +35 +2 +7 +14 +64 +7 +15 +35 +2 +7 +18 +7 +13 +35 +2 +35 +7 +49 +6 +2 +15 +99 +7 +19 +7 +20 +65 +67 +49 +2 +0 +49 +3 +4 +15 +65 +7 +21 +7 +22 +64 +7 +23 +64 +81 +24 +49 +6 +2 +15 +99 +7 +25 +7 +26 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +27 +7 +28 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +29 +7 +30 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +31 +7 +32 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +33 +7 +34 +65 +67 +49 +2 +0 +49 +3 +4 +15 +45 +35 +36 +7 +37 +64 +49 +38 +1 +13 +9 +202 +15 +45 +39 +40 +7 +41 +64 +84 +42 +9 +219 +99 +7 +43 +7 +44 +65 +67 +49 +2 +0 +49 +3 +4 +8 +220 +1 +15 +99 +7 +45 +7 +46 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +47 +7 +48 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +49 +7 +50 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +51 +x +12 +test_version +M +1 +n +n +x +12 +test_version +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +12 +test_version +i +29 +5 +7 +0 +13 +70 +9 +19 +15 +44 +43 +1 +7 +2 +78 +49 +3 +2 +6 +0 +45 +4 +5 +43 +6 +47 +49 +7 +2 +11 +I +5 +I +0 +I +0 +I +0 +I +-2 +p +8 +n +x +6 +Regexp +s +14 +\A\d\.\d\.\d\z +x +3 +new +x +7 +CodeRay +n +x +7 +VERSION +x +12 +assert_match +p +5 +I +0 +I +7 +I +0 +I +8 +I +1d +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +6 +I +0 +I +7 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +RUBY_TEST_CODE +s +20 +puts "Hello, World!" +x +9 +const_set +x +16 +RUBY_TEST_TOKENS +s +4 +puts +x +5 +ident +s +1 + +x +5 +space +x +4 +open +x +6 +string +s +1 +" +x +9 +delimiter +s +13 +Hello, World! +x +7 +content +x +5 +close +x +16 +test_simple_scan +M +1 +n +n +x +16 +test_simple_scan +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +16 +test_simple_scan +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +16 +RUBY_TEST_TOKENS +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +6 +to_ary +x +12 +assert_equal +p +5 +I +0 +I +18 +I +0 +I +19 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +17 +I +0 +I +18 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +14 +RUBY_TEST_HTML +s +51 +puts " +s +73 +Hello, World!" +x +1 ++ +x +21 +test_simple_highlight +M +1 +n +n +x +21 +test_simple_highlight +i +8 +5 +56 +0 +47 +50 +1 +0 +11 +I +2 +I +0 +I +0 +I +0 +n +p +2 +M +1 +p +2 +x +9 +for_block +t +n +x +21 +test_simple_highlight +i +23 +5 +45 +0 +1 +45 +2 +3 +45 +4 +5 +7 +6 +49 +7 +2 +49 +8 +0 +47 +49 +9 +2 +11 +I +6 +I +0 +I +0 +I +0 +I +-2 +p +10 +x +14 +RUBY_TEST_HTML +n +x +7 +CodeRay +n +x +14 +RUBY_TEST_CODE +n +x +4 +ruby +x +4 +scan +x +4 +html +x +12 +assert_equal +p +5 +I +0 +I +20 +I +0 +I +21 +I +17 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +assert_nothing_raised +p +5 +I +0 +I +1f +I +0 +I +20 +I +8 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +8 +test_duo +M +1 +n +n +x +8 +test_duo +i +66 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +49 +8 +1 +47 +49 +9 +2 +15 +5 +45 +0 +10 +45 +2 +11 +43 +4 +44 +43 +12 +79 +49 +13 +1 +13 +7 +5 +7 +5 +49 +14 +2 +15 +49 +6 +1 +45 +0 +15 +49 +8 +1 +47 +49 +9 +2 +11 +I +7 +I +0 +I +0 +I +0 +n +p +16 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +9 +highlight +x +12 +assert_equal +n +n +x +4 +Hash +x +16 +new_from_literal +x +3 +[]= +n +p +15 +I +0 +I +25 +I +0 +I +26 +I +4 +I +27 +I +16 +I +26 +I +1b +I +28 +I +1f +I +29 +I +3d +I +28 +I +42 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +15 +test_duo_stream +M +1 +n +n +x +15 +test_duo_stream +i +42 +5 +45 +0 +1 +45 +2 +3 +43 +4 +7 +5 +7 +5 +49 +6 +2 +45 +0 +7 +44 +43 +8 +79 +49 +9 +1 +13 +7 +10 +2 +49 +11 +2 +15 +49 +12 +2 +47 +49 +13 +2 +11 +I +8 +I +0 +I +0 +I +0 +n +p +14 +x +14 +RUBY_TEST_CODE +n +x +7 +CodeRay +n +x +3 +Duo +x +5 +plain +x +2 +[] +n +x +4 +Hash +x +16 +new_from_literal +x +6 +stream +x +3 +[]= +x +9 +highlight +x +12 +assert_equal +p +9 +I +0 +I +2c +I +0 +I +2d +I +4 +I +2e +I +25 +I +2d +I +2a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +19 +test_comment_filter +M +1 +n +n +x +19 +test_comment_filter +i +26 +5 +7 +0 +64 +45 +1 +2 +7 +3 +64 +7 +4 +49 +5 +2 +49 +6 +0 +49 +7 +0 +47 +49 +8 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +9 +s +39 +#!/usr/bin/env ruby + +code + +more code + +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +14 +comment_filter +x +4 +text +x +12 +assert_equal +p +5 +I +0 +I +31 +I +0 +I +32 +I +1a +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +18 +test_lines_of_code +M +1 +n +n +x +18 +test_lines_of_code +i +108 +5 +80 +45 +0 +1 +7 +2 +64 +7 +3 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +7 +7 +64 +19 +0 +15 +5 +78 +45 +0 +8 +20 +0 +7 +9 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +10 +20 +0 +7 +11 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +78 +45 +0 +12 +20 +0 +7 +13 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +15 +5 +4 +4 +45 +0 +14 +20 +0 +7 +15 +49 +4 +2 +49 +5 +0 +47 +49 +6 +2 +11 +I +6 +I +1 +I +0 +I +0 +n +p +16 +x +7 +CodeRay +n +s +127 +#!/usr/bin/env ruby +=begin +A multi-line comment. +=end +code +# A single-line comment. +more code # and another comment, in-line. + +x +4 +ruby +x +4 +scan +x +13 +lines_of_code +x +12 +assert_equal +s +514 + + + + + + <%= controller.controller_name.titleize %>: <%= controller.action_name %> + <%= stylesheet_link_tag 'scaffold' %> + + + +

    <%= flash[:notice] %>

    + +
    + <%= yield %> +
    + + + + +n +x +4 +html +n +x +3 +php +n +x +4 +yaml +n +x +5 +rhtml +p +15 +I +0 +I +43 +I +0 +I +44 +I +15 +I +4d +I +1b +I +62 +I +2f +I +63 +I +43 +I +64 +I +57 +I +65 +I +6c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +1 +x +5 +rHTML +x +3 +ENV +n +s +14 +check_rubygems +x +2 +[] +x +12 +RUBY_VERSION +n +s +3 +1.9 +x +1 +< +x +24 +test_rubygems_not_loaded +M +1 +n +n +x +24 +test_rubygems_not_loaded +i +34 +5 +1 +26 +93 +0 +15 +29 +17 +0 +7 +0 +98 +1 +1 +30 +8 +23 +25 +92 +0 +27 +8 +28 +15 +7 +2 +8 +29 +1 +47 +49 +3 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +4 +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +x +12 +assert_equal +p +5 +I +0 +I +68 +I +0 +I +69 +I +22 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_encoders +M +1 +n +n +x +21 +test_list_of_encoders +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Encoders +x +4 +list +x +14 +assert_kind_of +n +s +5 +count +x +8 +include? +x +6 +assert +p +7 +I +0 +I +6c +I +0 +I +6d +I +11 +I +6e +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +21 +test_list_of_scanners +M +1 +n +n +x +21 +test_list_of_scanners +i +37 +5 +45 +0 +1 +45 +2 +3 +43 +4 +49 +5 +0 +47 +49 +6 +2 +15 +5 +45 +2 +7 +43 +4 +49 +5 +0 +7 +8 +64 +49 +9 +1 +47 +49 +10 +1 +11 +I +3 +I +0 +I +0 +I +0 +n +p +11 +x +5 +Array +n +x +7 +CodeRay +n +x +8 +Scanners +x +4 +list +x +14 +assert_kind_of +n +s +9 +plaintext +x +8 +include? +x +6 +assert +p +7 +I +0 +I +71 +I +0 +I +72 +I +11 +I +73 +I +25 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +25 +test_scan_a_frozen_string +M +1 +n +n +x +25 +test_scan_a_frozen_string +i +12 +45 +0 +1 +45 +2 +3 +7 +4 +49 +5 +2 +11 +I +3 +I +0 +I +0 +I +0 +n +p +6 +x +7 +CodeRay +n +x +12 +RUBY_VERSION +n +x +4 +ruby +x +4 +scan +p +5 +I +0 +I +76 +I +0 +I +77 +I +c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +p +51 +I +2 +I +6 +I +10 +I +c +I +1a +I +e +I +1d +I +f +I +24 +I +10 +I +2b +I +11 +I +31 +I +12 +I +38 +I +13 +I +3f +I +14 +I +46 +I +15 +I +52 +I +17 +I +60 +I +1d +I +63 +I +1d +I +66 +I +1e +I +6f +I +1f +I +7d +I +25 +I +8b +I +2c +I +99 +I +31 +I +a7 +I +43 +I +b5 +I +6a +I +cc +I +68 +I +db +I +6a +I +dd +I +6c +I +eb +I +71 +I +f9 +I +76 +I +107 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/basic.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,77 @@ +require 'test/unit' +$:.unshift 'lib' +require 'coderay' + +begin + require 'rubygems' unless defined? Gem + gem 'RedCloth', '>= 4.0.3' rescue nil + require 'redcloth' +rescue LoadError + warn 'RedCloth not found - skipping for_redcloth tests.' +end + +class BasicTest < Test::Unit::TestCase + + def test_for_redcloth + require 'coderay/for_redcloth' + assert_equal "

    puts "Hello, World!"

    ", + RedCloth.new('@[ruby]puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    puts "Hello, World!"
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. puts "Hello, World!"').to_html + end + + def test_for_redcloth_no_lang + require 'coderay/for_redcloth' + assert_equal "

    puts \"Hello, World!\"

    ", + RedCloth.new('@puts "Hello, World!"@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc. puts "Hello, World!"').to_html + end + + def test_for_redcloth_style + require 'coderay/for_redcloth' + assert_equal <<-BLOCKCODE.chomp, +
    puts \"Hello, World!\"
    + BLOCKCODE + RedCloth.new('bc{color: red}. puts "Hello, World!"').to_html + end + + def test_for_redcloth_escapes + require 'coderay/for_redcloth' + assert_equal '

    >

    ', + RedCloth.new('@[ruby]>@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    +
    &
    +
    + BLOCKCODE + RedCloth.new('bc[ruby]. &').to_html + end + + def test_for_redcloth_escapes2 + require 'coderay/for_redcloth' + assert_equal "

    #include <test.h>

    ", + RedCloth.new('@[c]#include @').to_html + end + + # See http://jgarber.lighthouseapp.com/projects/13054/tickets/124-code-markup-does-not-allow-brackets. + def test_for_redcloth_false_positive + require 'coderay/for_redcloth' + assert_equal '

    [project]_dff.skjd

    ', + RedCloth.new('@[project]_dff.skjd@').to_html + # false positive, but expected behavior / known issue + assert_equal "

    _dff.skjd

    ", + RedCloth.new('@[ruby]_dff.skjd@').to_html + assert_equal <<-BLOCKCODE.chomp, +
    [project]_dff.skjd
    + BLOCKCODE + RedCloth.new('bc. [project]_dff.skjd').to_html + end + +end if defined? RedCloth \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/for_redcloth.rbc Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,1708 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +249 +5 +7 +0 +64 +47 +49 +1 +1 +15 +99 +43 +2 +7 +3 +49 +4 +1 +7 +5 +64 +49 +6 +1 +15 +5 +7 +7 +64 +47 +49 +1 +1 +15 +26 +93 +0 +15 +29 +144 +0 +26 +93 +1 +15 +29 +55 +0 +7 +8 +98 +9 +1 +30 +8 +61 +25 +92 +1 +27 +8 +66 +15 +7 +10 +8 +67 +1 +9 +72 +1 +8 +80 +5 +7 +11 +64 +47 +49 +1 +1 +15 +26 +93 +2 +15 +29 +102 +0 +5 +7 +12 +64 +7 +13 +64 +47 +49 +14 +2 +30 +8 +129 +26 +93 +3 +15 +24 +13 +45 +15 +16 +12 +49 +17 +1 +10 +119 +8 +124 +15 +1 +25 +8 +129 +15 +92 +3 +27 +34 +92 +2 +27 +15 +5 +7 +18 +64 +47 +49 +1 +1 +30 +8 +178 +26 +93 +4 +15 +24 +13 +45 +19 +20 +12 +49 +17 +1 +10 +161 +8 +173 +15 +5 +7 +21 +64 +47 +49 +22 +1 +25 +8 +178 +15 +92 +4 +27 +34 +92 +0 +27 +15 +26 +93 +5 +15 +29 +197 +0 +7 +23 +98 +9 +1 +30 +8 +203 +25 +92 +5 +27 +8 +208 +15 +7 +10 +8 +209 +1 +9 +245 +99 +7 +24 +45 +25 +26 +43 +27 +43 +28 +65 +49 +29 +3 +13 +99 +12 +7 +30 +12 +7 +31 +12 +65 +12 +49 +32 +4 +15 +49 +30 +0 +8 +246 +1 +15 +2 +11 +I +c +I +0 +I +0 +I +0 +n +p +33 +s +9 +test/unit +x +7 +require +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +x +3 +Gem +x +16 +vm_const_defined +s +8 +constant +s +8 +rubygems +s +8 +RedCloth +s +8 +>= 4.0.3 +x +3 +gem +x +13 +StandardError +n +x +3 +=== +s +8 +redcloth +x +9 +LoadError +n +s +49 +RedCloth not found - skipping for_redcloth tests. +x +4 +warn +x +8 +RedCloth +x +9 +BasicTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +9 +BasicTest +i +86 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +4 +7 +5 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +6 +7 +7 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +8 +7 +9 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +10 +7 +11 +65 +67 +49 +2 +0 +49 +3 +4 +15 +99 +7 +12 +7 +13 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +14 +x +17 +test_for_redcloth +M +1 +n +n +x +17 +test_for_redcloth +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +221 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +28 +@[ruby]puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +252 +
    +
    puts "Hello, World!"
    +
    + +x +5 +chomp +n +s +30 +bc[ruby]. puts "Hello, World!" +p +17 +I +0 +I +f +I +0 +I +10 +I +9 +I +11 +I +d +I +12 +I +2e +I +11 +I +33 +I +13 +I +3a +I +18 +I +5b +I +13 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +25 +test_for_redcloth_no_lang +M +1 +n +n +x +25 +test_for_redcloth_no_lang +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +40 +

    puts "Hello, World!"

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@puts "Hello, World!"@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +45 +
    puts "Hello, World!"
    + +x +5 +chomp +n +s +24 +bc. puts "Hello, World!" +p +17 +I +0 +I +1b +I +0 +I +1c +I +9 +I +1d +I +d +I +1e +I +2e +I +1d +I +33 +I +1f +I +3a +I +22 +I +5b +I +1f +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +23 +test_for_redcloth_style +M +1 +n +n +x +23 +test_for_redcloth_style +i +54 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +49 +3 +0 +45 +4 +5 +13 +71 +6 +47 +9 +40 +47 +49 +7 +0 +13 +7 +8 +64 +47 +49 +9 +1 +15 +8 +46 +7 +8 +64 +49 +6 +1 +49 +10 +0 +47 +49 +11 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +12 +s +20 +coderay/for_redcloth +x +7 +require +s +85 +
    puts "Hello, World!"
    + +x +5 +chomp +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +36 +bc{color: red}. puts "Hello, World!" +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +25 +I +0 +I +26 +I +9 +I +27 +I +10 +I +2a +I +31 +I +27 +I +36 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +25 +test_for_redcloth_escapes +M +1 +n +n +x +25 +test_for_redcloth_escapes +i +96 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +49 +12 +0 +45 +3 +13 +13 +71 +5 +47 +9 +82 +47 +49 +6 +0 +13 +7 +14 +64 +47 +49 +8 +1 +15 +8 +88 +7 +14 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +15 +s +20 +coderay/for_redcloth +x +7 +require +s +52 +

    >

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +9 +@[ruby]>@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +84 +
    +
    &
    +
    + +x +5 +chomp +n +s +11 +bc[ruby]. & +p +17 +I +0 +I +2d +I +0 +I +2e +I +9 +I +2f +I +d +I +30 +I +2e +I +2f +I +33 +I +31 +I +3a +I +36 +I +5b +I +31 +I +60 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +26 +test_for_redcloth_escapes2 +M +1 +n +n +x +26 +test_for_redcloth_escapes2 +i +51 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +11 +s +20 +coderay/for_redcloth +x +7 +require +s +149 +

    #include <test.h>

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +22 +@[c]#include @ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +p +11 +I +0 +I +39 +I +0 +I +3a +I +9 +I +3b +I +d +I +3c +I +2e +I +3b +I +33 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +32 +test_for_redcloth_false_positive +M +1 +n +n +x +32 +test_for_redcloth_false_positive +i +138 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +45 +3 +4 +13 +71 +5 +47 +9 +37 +47 +49 +6 +0 +13 +7 +7 +64 +47 +49 +8 +1 +15 +8 +43 +7 +7 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +11 +64 +45 +3 +12 +13 +71 +5 +47 +9 +79 +47 +49 +6 +0 +13 +7 +13 +64 +47 +49 +8 +1 +15 +8 +85 +7 +13 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +15 +5 +7 +14 +64 +49 +15 +0 +45 +3 +16 +13 +71 +5 +47 +9 +124 +47 +49 +6 +0 +13 +7 +17 +64 +47 +49 +8 +1 +15 +8 +130 +7 +17 +64 +49 +5 +1 +49 +9 +0 +47 +49 +10 +2 +11 +I +5 +I +0 +I +0 +I +0 +n +p +18 +s +20 +coderay/for_redcloth +x +7 +require +s +38 +

    [project]_dff.skjd

    +x +8 +RedCloth +n +x +3 +new +x +8 +allocate +s +20 +@[project]_dff.skjd@ +x +10 +initialize +x +7 +to_html +x +12 +assert_equal +s +57 +

    _dff.skjd

    +n +s +17 +@[ruby]_dff.skjd@ +s +43 +
    [project]_dff.skjd
    + +x +5 +chomp +n +s +22 +bc. [project]_dff.skjd +p +23 +I +0 +I +40 +I +0 +I +41 +I +9 +I +42 +I +d +I +43 +I +2e +I +42 +I +33 +I +45 +I +37 +I +46 +I +58 +I +45 +I +5d +I +47 +I +64 +I +4a +I +85 +I +47 +I +8a +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +p +13 +I +2 +I +f +I +10 +I +1b +I +1e +I +25 +I +2c +I +2d +I +3a +I +39 +I +48 +I +40 +I +56 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 +x +13 +attach_method +p +23 +I +0 +I +1 +I +9 +I +2 +I +18 +I +3 +I +21 +I +6 +I +51 +I +7 +I +85 +I +8 +I +95 +I +9 +I +a2 +I +a +I +b6 +I +4d +I +d3 +I +d +I +f5 +I +4d +I +f9 +x +62 +/Users/murphy/ruby/coderay-0.9/test/functional/for_redcloth.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +require 'test/unit' +require 'coderay' + +class PluginScannerTest < Test::Unit::TestCase + + def test_load + require File.join(File.dirname(__FILE__), 'vhdl') + assert_equal 'VHDL', CodeRay.scanner(:vhdl).class.name + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/load_plugin_scanner.rbc Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,317 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +17 +PluginScannerTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +17 +PluginScannerTest +i +16 +5 +66 +99 +7 +0 +7 +1 +65 +67 +49 +2 +0 +49 +3 +4 +11 +I +5 +I +0 +I +0 +I +0 +n +p +4 +x +9 +test_load +M +1 +n +n +x +9 +test_load +i +48 +5 +45 +0 +1 +45 +0 +2 +65 +49 +3 +0 +49 +4 +1 +7 +5 +64 +49 +6 +2 +47 +49 +7 +1 +15 +5 +7 +8 +64 +45 +9 +10 +7 +11 +49 +12 +1 +49 +13 +0 +49 +14 +0 +47 +49 +15 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +16 +x +4 +File +n +n +x +11 +active_path +x +7 +dirname +s +4 +vhdl +x +4 +join +x +7 +require +s +4 +VHDL +x +7 +CodeRay +n +x +4 +vhdl +x +7 +scanner +x +5 +class +x +4 +name +x +12 +assert_equal +p +7 +I +0 +I +6 +I +0 +I +7 +I +19 +I +8 +I +30 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +p +3 +I +2 +I +6 +I +10 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +69 +/Users/murphy/ruby/coderay-0.9/test/functional/load_plugin_scanner.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/suite.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/suite.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,12 @@ +require 'test/unit' + +MYDIR = File.dirname(__FILE__) + +$:.unshift 'lib' +require 'coderay' +puts "Running basic CodeRay #{CodeRay::VERSION} tests..." + +suite = %w(basic load_plugin_scanner word_list) +for test_case in suite + load File.join(MYDIR, test_case + '.rb') +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/suite.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/suite.rbc Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,322 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +95 +5 +7 +0 +64 +47 +49 +1 +1 +15 +65 +7 +2 +45 +3 +4 +65 +49 +5 +0 +49 +6 +1 +49 +7 +2 +15 +99 +43 +8 +7 +9 +49 +10 +1 +7 +11 +64 +49 +12 +1 +15 +5 +7 +13 +64 +47 +49 +1 +1 +15 +5 +7 +14 +45 +15 +16 +43 +17 +47 +49 +18 +0 +7 +19 +63 +3 +47 +49 +20 +1 +15 +7 +21 +64 +7 +22 +64 +7 +23 +64 +35 +3 +19 +0 +15 +20 +0 +56 +24 +50 +25 +0 +15 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +26 +s +9 +test/unit +x +7 +require +x +5 +MYDIR +x +4 +File +n +x +11 +active_path +x +7 +dirname +x +9 +const_set +x +7 +Globals +x +2 +$: +x +2 +[] +s +3 +lib +x +2 +<< +s +7 +coderay +s +22 +Running basic CodeRay +x +7 +CodeRay +n +x +7 +VERSION +x +4 +to_s +s +9 + tests... +x +4 +puts +s +5 +basic +s +19 +load_plugin_scanner +s +9 +word_list +M +1 +p +2 +x +9 +for_block +t +n +x +9 +__block__ +i +28 +57 +22 +1 +1 +15 +5 +45 +0 +1 +45 +2 +3 +21 +1 +1 +7 +4 +64 +81 +5 +49 +6 +2 +47 +49 +7 +1 +11 +I +6 +I +0 +I +1 +I +1 +n +p +8 +x +4 +File +n +x +5 +MYDIR +n +s +3 +.rb +x +1 ++ +x +4 +join +x +4 +load +p +5 +I +0 +I +a +I +5 +I +b +I +1c +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +0 +x +4 +each +p +15 +I +0 +I +1 +I +9 +I +3 +I +1a +I +5 +I +29 +I +6 +I +32 +I +7 +I +47 +I +9 +I +55 +I +a +I +5f +x +55 +/Users/murphy/ruby/coderay-0.9/test/functional/suite.rb +p +2 +x +5 +suite +x +9 +test_case diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/vhdl.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/vhdl.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,126 @@ +class VHDL < CodeRay::Scanners::Scanner + + register_for :vhdl + + RESERVED_WORDS = [ + 'access','after','alias','all','assert','architecture','begin', + 'block','body','buffer','bus','case','component','configuration','constant', + 'disconnect','downto','else','elsif','end','entity','exit','file','for', + 'function','generate','generic','group','guarded','if','impure','in', + 'inertial','inout','is','label','library','linkage','literal','loop', + 'map','new','next','null','of','on','open','others','out','package', + 'port','postponed','procedure','process','pure','range','record','register', + 'reject','report','return','select','severity','signal','shared','subtype', + 'then','to','transport','type','unaffected','units','until','use','variable', + 'wait','when','while','with','note','warning','error','failure','and', + 'or','xor','not','nor', + 'array' + ] + + PREDEFINED_TYPES = [ + 'bit','bit_vector','character','boolean','integer','real','time','string', + 'severity_level','positive','natural','signed','unsigned','line','text', + 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state', + 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength', + 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector' + ] + + PREDEFINED_CONSTANTS = [ + + ] + + IDENT_KIND = CodeRay::CaseIgnoringWordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x + UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x + + def scan_tokens tokens, options + + state = :initial + + until eos? + + kind = nil + match = nil + + case state + + when :initial + + if scan(/ \s+ | \\\n /x) + kind = :space + + elsif scan(/-- .*/x) + kind = :comment + + elsif scan(/ [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) /x) + kind = :operator + + elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) + kind = IDENT_KIND[match.downcase] + + elsif match = scan(/[a-z]?"/i) + tokens << [:open, :string] + state = :string + kind = :delimiter + + elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) + kind = :char + + elsif scan(/(?:\d+)(?![.eEfF])/) + kind = :integer + + elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) + kind = :float + + else + getch + kind = :error + + end + + when :string + if scan(/[^\\\n"]+/) + kind = :content + elsif scan(/"/) + tokens << ['"', :delimiter] + tokens << [:close, :string] + state = :initial + next + elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) + kind = :char + elsif scan(/ \\ | $ /x) + tokens << [:close, :string] + kind = :error + state = :initial + else + raise_inspect "else case \" reached; %p not handled." % peek(1), tokens + end + + else + raise_inspect 'Unknown state', tokens + + end + + match ||= matched + if $DEBUG and not kind + raise_inspect 'Error token %p in line %d' % + [[match, kind], line], tokens + end + raise_inspect 'Empty token', tokens unless match + + tokens << [match, kind] + + end + + if state == :string + tokens << [:close, :string] + end + + tokens + end + +end diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/vhdl.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/vhdl.rbc Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,2334 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +35 +99 +7 +0 +45 +1 +2 +43 +3 +43 +4 +65 +49 +5 +3 +13 +99 +12 +7 +6 +12 +7 +7 +12 +65 +12 +49 +8 +4 +15 +49 +6 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +9 +x +4 +VHDL +x +7 +CodeRay +n +x +8 +Scanners +x +7 +Scanner +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +4 +VHDL +i +519 +5 +66 +5 +7 +0 +47 +49 +1 +1 +15 +65 +7 +2 +7 +3 +64 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +7 +12 +64 +7 +13 +64 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +19 +64 +7 +20 +64 +7 +21 +64 +7 +22 +64 +7 +23 +64 +7 +24 +64 +7 +25 +64 +7 +26 +64 +7 +27 +64 +7 +28 +64 +7 +29 +64 +7 +30 +64 +7 +31 +64 +7 +32 +64 +7 +33 +64 +7 +34 +64 +7 +35 +64 +7 +36 +64 +7 +37 +64 +7 +38 +64 +7 +39 +64 +7 +40 +64 +7 +41 +64 +7 +42 +64 +7 +43 +64 +7 +44 +64 +7 +45 +64 +7 +46 +64 +7 +47 +64 +7 +48 +64 +7 +49 +64 +7 +50 +64 +7 +51 +64 +7 +52 +64 +7 +53 +64 +7 +54 +64 +7 +55 +64 +7 +56 +64 +7 +57 +64 +7 +58 +64 +7 +59 +64 +7 +60 +64 +7 +61 +64 +7 +62 +64 +7 +63 +64 +7 +64 +64 +7 +65 +64 +7 +66 +64 +7 +67 +64 +7 +68 +64 +7 +69 +64 +7 +70 +64 +7 +71 +64 +7 +72 +64 +7 +73 +64 +7 +74 +64 +7 +75 +64 +7 +76 +64 +7 +77 +64 +7 +78 +64 +7 +79 +64 +7 +80 +64 +7 +81 +64 +7 +82 +64 +7 +83 +64 +7 +84 +64 +7 +85 +64 +7 +86 +64 +7 +87 +64 +7 +88 +64 +7 +89 +64 +7 +90 +64 +7 +91 +64 +35 +89 +49 +92 +2 +15 +65 +7 +93 +7 +94 +64 +7 +95 +64 +7 +96 +64 +7 +97 +64 +7 +98 +64 +7 +99 +64 +7 +100 +64 +7 +101 +64 +7 +102 +64 +7 +103 +64 +7 +104 +64 +7 +105 +64 +7 +106 +64 +7 +107 +64 +7 +108 +64 +7 +109 +64 +7 +110 +64 +7 +111 +64 +7 +112 +64 +7 +113 +64 +7 +114 +64 +7 +115 +64 +7 +116 +64 +7 +117 +64 +7 +118 +64 +7 +119 +64 +7 +120 +64 +7 +121 +64 +7 +122 +64 +7 +123 +64 +35 +30 +49 +92 +2 +15 +65 +7 +124 +35 +0 +49 +92 +2 +15 +65 +7 +125 +45 +126 +127 +43 +128 +13 +71 +129 +47 +9 +422 +47 +49 +130 +0 +13 +7 +131 +47 +49 +132 +1 +15 +8 +427 +7 +131 +49 +129 +1 +45 +2 +133 +7 +134 +49 +135 +2 +45 +93 +136 +7 +137 +49 +135 +2 +45 +124 +138 +7 +139 +49 +135 +2 +49 +92 +2 +15 +65 +7 +140 +7 +141 +13 +70 +9 +476 +15 +44 +43 +142 +7 +143 +80 +49 +129 +2 +6 +141 +49 +92 +2 +15 +65 +7 +144 +7 +145 +13 +70 +9 +501 +15 +44 +43 +142 +7 +146 +80 +49 +129 +2 +6 +145 +49 +92 +2 +15 +99 +7 +147 +7 +148 +65 +67 +49 +149 +0 +49 +150 +4 +11 +I +5b +I +0 +I +0 +I +0 +n +p +151 +x +4 +vhdl +x +12 +register_for +x +14 +RESERVED_WORDS +s +6 +access +s +5 +after +s +5 +alias +s +3 +all +s +6 +assert +s +12 +architecture +s +5 +begin +s +5 +block +s +4 +body +s +6 +buffer +s +3 +bus +s +4 +case +s +9 +component +s +13 +configuration +s +8 +constant +s +10 +disconnect +s +6 +downto +s +4 +else +s +5 +elsif +s +3 +end +s +6 +entity +s +4 +exit +s +4 +file +s +3 +for +s +8 +function +s +8 +generate +s +7 +generic +s +5 +group +s +7 +guarded +s +2 +if +s +6 +impure +s +2 +in +s +8 +inertial +s +5 +inout +s +2 +is +s +5 +label +s +7 +library +s +7 +linkage +s +7 +literal +s +4 +loop +s +3 +map +s +3 +new +s +4 +next +s +4 +null +s +2 +of +s +2 +on +s +4 +open +s +6 +others +s +3 +out +s +7 +package +s +4 +port +s +9 +postponed +s +9 +procedure +s +7 +process +s +4 +pure +s +5 +range +s +6 +record +s +8 +register +s +6 +reject +s +6 +report +s +6 +return +s +6 +select +s +8 +severity +s +6 +signal +s +6 +shared +s +7 +subtype +s +4 +then +s +2 +to +s +9 +transport +s +4 +type +s +10 +unaffected +s +5 +units +s +5 +until +s +3 +use +s +8 +variable +s +4 +wait +s +4 +when +s +5 +while +s +4 +with +s +4 +note +s +7 +warning +s +5 +error +s +7 +failure +s +3 +and +s +2 +or +s +3 +xor +s +3 +not +s +3 +nor +s +5 +array +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +bit +s +10 +bit_vector +s +9 +character +s +7 +boolean +s +7 +integer +s +4 +real +s +4 +time +s +6 +string +s +14 +severity_level +s +8 +positive +s +7 +natural +s +6 +signed +s +8 +unsigned +s +4 +line +s +4 +text +s +9 +std_logic +s +16 +std_logic_vector +s +10 +std_ulogic +s +17 +std_ulogic_vector +s +10 +qsim_state +s +17 +qsim_state_vector +s +12 +qsim_12state +s +19 +qsim_12state_vector +s +13 +qsim_strength +s +7 +mux_bit +s +10 +mux_vector +s +7 +reg_bit +s +10 +reg_vector +s +7 +wor_bit +s +10 +wor_vector +x +20 +PREDEFINED_CONSTANTS +x +10 +IDENT_KIND +x +7 +CodeRay +n +x +20 +CaseIgnoringWordList +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +6 +ESCAPE +n +x +6 +Regexp +s +49 + [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} +x +14 +UNICODE_ESCAPE +n +s +35 + u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} +x +11 +scan_tokens +M +1 +n +n +x +11 +scan_tokens +i +688 +7 +0 +19 +2 +15 +5 +47 +49 +1 +0 +10 +660 +1 +19 +3 +15 +1 +19 +4 +15 +20 +2 +13 +7 +0 +12 +49 +2 +1 +9 +331 +15 +5 +7 +3 +13 +70 +9 +51 +15 +44 +43 +4 +7 +5 +80 +49 +6 +2 +6 +3 +47 +49 +7 +1 +9 +63 +7 +8 +19 +3 +8 +329 +5 +7 +9 +13 +70 +9 +82 +15 +44 +43 +4 +7 +10 +80 +49 +6 +2 +6 +9 +47 +49 +7 +1 +9 +94 +7 +11 +19 +3 +8 +329 +5 +7 +12 +13 +70 +9 +113 +15 +44 +43 +4 +7 +13 +80 +49 +6 +2 +6 +12 +47 +49 +7 +1 +9 +125 +7 +14 +19 +3 +8 +329 +5 +7 +15 +13 +70 +9 +144 +15 +44 +43 +4 +7 +16 +80 +49 +6 +2 +6 +15 +47 +49 +7 +1 +19 +4 +9 +167 +45 +17 +18 +20 +4 +49 +19 +0 +49 +20 +1 +19 +3 +8 +329 +5 +7 +21 +13 +70 +9 +186 +15 +44 +43 +4 +7 +22 +79 +49 +6 +2 +6 +21 +47 +49 +7 +1 +19 +4 +9 +217 +20 +0 +7 +23 +7 +24 +35 +2 +49 +25 +1 +15 +7 +24 +19 +2 +15 +7 +26 +19 +3 +8 +329 +5 +7 +27 +13 +70 +9 +247 +15 +44 +43 +4 +7 +28 +45 +29 +30 +47 +49 +31 +0 +7 +32 +63 +3 +80 +49 +6 +2 +6 +27 +47 +49 +7 +1 +9 +259 +7 +33 +19 +3 +8 +329 +5 +7 +34 +13 +70 +9 +278 +15 +44 +43 +4 +7 +35 +78 +49 +6 +2 +6 +34 +47 +49 +7 +1 +9 +290 +7 +36 +19 +3 +8 +329 +5 +7 +37 +13 +70 +9 +309 +15 +44 +43 +4 +7 +38 +78 +49 +6 +2 +6 +37 +47 +49 +7 +1 +9 +321 +7 +39 +19 +3 +8 +329 +5 +48 +40 +15 +7 +41 +19 +3 +8 +564 +13 +7 +24 +12 +49 +2 +1 +9 +553 +15 +5 +7 +42 +13 +70 +9 +360 +15 +44 +43 +4 +7 +43 +78 +49 +6 +2 +6 +42 +47 +49 +7 +1 +9 +372 +7 +44 +19 +3 +8 +551 +5 +7 +45 +13 +70 +9 +391 +15 +44 +43 +4 +7 +46 +78 +49 +6 +2 +6 +45 +47 +49 +7 +1 +9 +432 +20 +0 +7 +46 +64 +7 +26 +35 +2 +49 +25 +1 +15 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +0 +19 +2 +15 +1 +8 +656 +8 +551 +5 +7 +48 +13 +70 +9 +472 +15 +44 +43 +4 +7 +49 +45 +29 +50 +47 +49 +31 +0 +7 +51 +45 +52 +53 +47 +49 +31 +0 +7 +54 +63 +5 +4 +6 +49 +6 +2 +6 +48 +47 +49 +7 +1 +9 +484 +7 +33 +19 +3 +8 +551 +5 +7 +55 +13 +70 +9 +503 +15 +44 +43 +4 +7 +56 +80 +49 +6 +2 +6 +55 +47 +49 +7 +1 +9 +532 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +15 +7 +41 +19 +3 +15 +7 +0 +19 +2 +8 +551 +5 +7 +57 +64 +5 +79 +47 +49 +58 +1 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +564 +15 +5 +7 +61 +64 +20 +0 +47 +49 +60 +2 +15 +20 +4 +13 +10 +576 +15 +5 +48 +62 +19 +4 +15 +99 +43 +63 +7 +64 +49 +20 +1 +13 +9 +597 +15 +20 +3 +10 +596 +2 +8 +597 +3 +9 +625 +5 +7 +65 +64 +20 +4 +20 +3 +35 +2 +5 +48 +66 +35 +2 +49 +59 +1 +20 +0 +47 +49 +60 +2 +8 +626 +1 +15 +20 +4 +9 +634 +1 +8 +644 +5 +7 +67 +64 +20 +0 +47 +49 +60 +2 +15 +20 +0 +20 +4 +20 +3 +35 +2 +49 +25 +1 +15 +68 +8 +5 +1 +15 +20 +2 +7 +24 +83 +68 +9 +683 +20 +0 +7 +47 +7 +24 +35 +2 +49 +25 +1 +8 +684 +1 +15 +20 +0 +11 +I +c +I +5 +I +2 +I +2 +n +p +69 +x +7 +initial +x +4 +eos? +x +3 +=== +n +x +6 +Regexp +s +12 + \s+ | \\\n +x +3 +new +x +4 +scan +x +5 +space +n +s +5 +-- .* +x +7 +comment +n +s +42 + [-+*\/=<>?:;,!&^|()\[\]{}~%]+ | \.(?!\d) +x +8 +operator +n +s +24 + [A-Za-z_][A-Za-z_0-9]* +x +10 +IDENT_KIND +n +x +8 +downcase +x +2 +[] +n +s +7 +[a-z]?" +x +4 +open +x +6 +string +x +2 +<< +x +9 +delimiter +n +s +24 + L?' (?: [^\'\n\\] | \\ +x +6 +ESCAPE +n +x +4 +to_s +s +7 + )? '? +x +4 +char +n +s +18 +(?:\d+)(?![.eEfF]) +x +7 +integer +n +s +59 +\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]? +x +5 +float +x +5 +getch +x +5 +error +n +s +9 +[^\\\n"]+ +x +7 +content +n +s +1 +" +x +5 +close +n +s +8 + \\ (?: +n +s +3 + | +x +14 +UNICODE_ESCAPE +n +s +3 + ) +n +s +8 + \\ | $ +s +36 +else case " reached; %p not handled. +x +4 +peek +x +1 +% +x +13 +raise_inspect +s +13 +Unknown state +x +7 +matched +x +7 +Globals +x +6 +$DEBUG +s +25 +Error token %p in line %d +x +4 +line +s +11 +Empty token +x +2 +== +p +111 +I +0 +I +28 +I +0 +I +2a +I +5 +I +2c +I +c +I +2e +I +10 +I +2f +I +14 +I +31 +I +17 +I +33 +I +20 +I +35 +I +39 +I +36 +I +3f +I +38 +I +58 +I +39 +I +5e +I +3b +I +77 +I +3c +I +7d +I +3e +I +98 +I +3f +I +a7 +I +41 +I +c2 +I +42 +I +ce +I +43 +I +d3 +I +44 +I +d9 +I +46 +I +fd +I +47 +I +103 +I +49 +I +11c +I +4a +I +122 +I +4c +I +13b +I +4d +I +141 +I +50 +I +145 +I +51 +I +14c +I +55 +I +155 +I +56 +I +16e +I +57 +I +174 +I +58 +I +18d +I +59 +I +19a +I +5a +I +1a6 +I +5b +I +1ab +I +5c +I +1b0 +I +5d +I +1de +I +5e +I +1e4 +I +5f +I +1fd +I +60 +I +209 +I +61 +I +20e +I +62 +I +214 +I +64 +I +22a +I +68 +I +235 +I +6c +I +241 +I +6d +I +257 +I +6f +I +258 +I +6e +I +25b +I +6f +I +271 +I +6d +I +273 +I +71 +I +285 +I +73 +I +296 +I +77 +I +29e +I +78 +I +2ab +I +77 +I +2ad +I +7b +I +2b0 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +5 +x +6 +tokens +x +7 +options +x +5 +state +x +4 +kind +x +5 +match +x +17 +method_visibility +x +15 +add_defn_method +p +65 +I +2 +I +3 +I +a +I +5 +I +d +I +6 +I +22 +I +7 +I +3a +I +8 +I +55 +I +9 +I +6d +I +a +I +85 +I +b +I +a3 +I +c +I +bb +I +d +I +d3 +I +e +I +ee +I +f +I +109 +I +10 +I +115 +I +11 +I +11e +I +14 +I +121 +I +15 +I +139 +I +16 +I +14e +I +17 +I +15d +I +18 +I +169 +I +19 +I +181 +I +1c +I +184 +I +1e +I +18a +I +20 +I +1ab +I +21 +I +1b0 +I +20 +I +1b3 +I +22 +I +1b8 +I +20 +I +1bb +I +23 +I +1c0 +I +20 +I +1c7 +I +25 +I +1e0 +I +26 +I +1f9 +I +28 +I +207 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 +x +13 +attach_method +p +3 +I +0 +I +1 +I +23 +x +54 +/Users/murphy/ruby/coderay-0.9/test/functional/vhdl.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/word_list.rb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/word_list.rb Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,79 @@ +require 'test/unit' +require 'coderay' + +class WordListTest < Test::Unit::TestCase + + include CodeRay + + # define word arrays + RESERVED_WORDS = %w[ + asm break case continue default do else + ... + ] + + PREDEFINED_TYPES = %w[ + int long short char void + ... + ] + + PREDEFINED_CONSTANTS = %w[ + EOF NULL ... + ] + + # make a WordList + IDENT_KIND = WordList.new(:ident). + add(RESERVED_WORDS, :reserved). + add(PREDEFINED_TYPES, :pre_type). + add(PREDEFINED_CONSTANTS, :pre_constant) + + def test_word_list_example + assert_equal :pre_type, IDENT_KIND['void'] + # assert_equal :pre_constant, IDENT_KIND['...'] # not specified + end + + def test_word_list + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_word_list_cached + list = WordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + assert_equal :ident, list['FooBar'] + end + + def test_case_ignoring_word_list + list = CaseIgnoringWordList.new(:ident).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_case_ignoring_word_list_cached + list = CaseIgnoringWordList.new(:ident, true).add(['foobar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + + list = CaseIgnoringWordList.new(:ident, true).add(['FooBar'], :reserved) + assert_equal :ident, list['foo'] + assert_equal :reserved, list['foobar'] + assert_equal :reserved, list['FooBar'] + end + + def test_dup + list = WordList.new(:ident).add(['foobar'], :reserved) + assert_equal :reserved, list['foobar'] + list2 = list.dup + list2.add(%w[foobar], :keyword) + assert_equal :keyword, list2['foobar'] + assert_equal :reserved, list['foobar'] + end + +end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/coderay-0.9.7/test/functional/word_list.rbc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/gems/coderay-0.9.7/test/functional/word_list.rbc Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,1763 @@ +!RBIX +0 +x +M +1 +n +n +x +10 +__script__ +i +53 +5 +7 +0 +64 +47 +49 +1 +1 +15 +5 +7 +2 +64 +47 +49 +1 +1 +15 +99 +7 +3 +45 +4 +5 +43 +6 +43 +7 +65 +49 +8 +3 +13 +99 +12 +7 +9 +12 +7 +10 +12 +65 +12 +49 +11 +4 +15 +49 +9 +0 +15 +2 +11 +I +6 +I +0 +I +0 +I +0 +n +p +12 +s +9 +test/unit +x +7 +require +s +7 +coderay +x +12 +WordListTest +x +4 +Test +n +x +4 +Unit +x +8 +TestCase +x +10 +open_class +x +14 +__class_init__ +M +1 +n +n +x +12 +WordListTest +i +232 +5 +66 +5 +45 +0 +1 +47 +49 +2 +1 +15 +65 +7 +3 +7 +4 +64 +7 +5 +64 +7 +6 +64 +7 +7 +64 +7 +8 +64 +7 +9 +64 +7 +10 +64 +7 +11 +64 +35 +8 +49 +12 +2 +15 +65 +7 +13 +7 +14 +64 +7 +15 +64 +7 +16 +64 +7 +17 +64 +7 +18 +64 +7 +11 +64 +35 +6 +49 +12 +2 +15 +65 +7 +19 +7 +20 +64 +7 +21 +64 +7 +11 +64 +35 +3 +49 +12 +2 +15 +65 +7 +22 +45 +23 +24 +13 +71 +25 +47 +9 +115 +47 +49 +26 +0 +13 +7 +27 +47 +49 +28 +1 +15 +8 +120 +7 +27 +49 +25 +1 +45 +3 +29 +7 +30 +49 +31 +2 +45 +13 +32 +7 +33 +49 +31 +2 +45 +19 +34 +7 +35 +49 +31 +2 +49 +12 +2 +15 +99 +7 +36 +7 +37 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +40 +7 +41 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +42 +7 +43 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +44 +7 +45 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +46 +7 +47 +65 +67 +49 +38 +0 +49 +39 +4 +15 +99 +7 +48 +7 +49 +65 +67 +49 +38 +0 +49 +39 +4 +11 +I +a +I +0 +I +0 +I +0 +n +p +50 +x +7 +CodeRay +n +x +7 +include +x +14 +RESERVED_WORDS +s +3 +asm +s +5 +break +s +4 +case +s +8 +continue +s +7 +default +s +2 +do +s +4 +else +s +3 +... +x +9 +const_set +x +16 +PREDEFINED_TYPES +s +3 +int +s +4 +long +s +5 +short +s +4 +char +s +4 +void +x +20 +PREDEFINED_CONSTANTS +s +3 +EOF +s +4 +NULL +x +10 +IDENT_KIND +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +n +x +8 +reserved +x +3 +add +n +x +8 +pre_type +n +x +12 +pre_constant +x +22 +test_word_list_example +M +1 +n +n +x +22 +test_word_list_example +i +17 +5 +7 +0 +45 +1 +2 +7 +3 +64 +49 +4 +1 +47 +49 +5 +2 +11 +I +4 +I +0 +I +0 +I +0 +n +p +6 +x +8 +pre_type +x +10 +IDENT_KIND +n +s +4 +void +x +2 +[] +x +12 +assert_equal +p +5 +I +0 +I +1d +I +0 +I +1e +I +11 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +17 +method_visibility +x +15 +add_defn_method +x +14 +test_word_list +M +1 +n +n +x +14 +test_word_list +i +73 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +22 +I +0 +I +23 +I +29 +I +24 +I +39 +I +25 +I +49 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +21 +test_word_list_cached +M +1 +n +n +x +21 +test_word_list_cached +i +75 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +4 +20 +0 +7 +11 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +12 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +p +9 +I +0 +I +28 +I +0 +I +29 +I +2b +I +2a +I +3b +I +2b +I +4b +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +28 +test_case_ignoring_word_list +M +1 +n +n +x +28 +test_case_ignoring_word_list +i +178 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +112 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +117 +7 +4 +49 +2 +1 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +2e +I +0 +I +2f +I +29 +I +30 +I +39 +I +31 +I +49 +I +32 +I +59 +I +34 +I +82 +I +35 +I +92 +I +36 +I +a2 +I +37 +I +b2 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +35 +test_case_ignoring_word_list_cached +M +1 +n +n +x +35 +test_case_ignoring_word_list_cached +i +182 +45 +0 +1 +13 +71 +2 +47 +9 +24 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +30 +7 +4 +2 +49 +2 +2 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +15 +45 +0 +13 +13 +71 +2 +47 +9 +115 +47 +49 +3 +0 +13 +7 +4 +2 +47 +49 +5 +2 +15 +8 +121 +7 +4 +2 +49 +2 +2 +7 +12 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +4 +20 +0 +7 +9 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +10 +1 +47 +49 +11 +2 +15 +5 +7 +7 +20 +0 +7 +12 +64 +49 +10 +1 +47 +49 +11 +2 +11 +I +5 +I +1 +I +0 +I +0 +n +p +14 +x +20 +CaseIgnoringWordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +s +3 +foo +x +2 +[] +x +12 +assert_equal +s +6 +FooBar +n +p +19 +I +0 +I +3a +I +0 +I +3b +I +2b +I +3c +I +3b +I +3d +I +4b +I +3e +I +5b +I +40 +I +86 +I +41 +I +96 +I +42 +I +a6 +I +43 +I +b6 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +1 +x +4 +list +x +8 +test_dup +M +1 +n +n +x +8 +test_dup +i +110 +45 +0 +1 +13 +71 +2 +47 +9 +23 +47 +49 +3 +0 +13 +7 +4 +47 +49 +5 +1 +15 +8 +28 +7 +4 +49 +2 +1 +7 +6 +64 +35 +1 +7 +7 +49 +8 +2 +19 +0 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +20 +0 +49 +11 +0 +19 +1 +15 +20 +1 +7 +6 +64 +35 +1 +7 +12 +49 +8 +2 +15 +5 +7 +12 +20 +1 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +15 +5 +7 +7 +20 +0 +7 +6 +64 +49 +9 +1 +47 +49 +10 +2 +11 +I +6 +I +2 +I +0 +I +0 +n +p +13 +x +8 +WordList +n +x +3 +new +x +8 +allocate +x +5 +ident +x +10 +initialize +s +6 +foobar +x +8 +reserved +x +3 +add +x +2 +[] +x +12 +assert_equal +x +3 +dup +x +7 +keyword +p +15 +I +0 +I +46 +I +0 +I +47 +I +29 +I +48 +I +39 +I +49 +I +41 +I +4a +I +4e +I +4b +I +5e +I +4c +I +6e +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +2 +x +4 +list +x +5 +list2 +p +45 +I +2 +I +6 +I +b +I +9 +I +e +I +a +I +23 +I +b +I +2c +I +e +I +2f +I +f +I +3e +I +10 +I +47 +I +13 +I +4a +I +14 +I +59 +I +18 +I +78 +I +19 +I +7d +I +18 +I +80 +I +1a +I +85 +I +18 +I +88 +I +1b +I +8d +I +18 +I +94 +I +1d +I +a2 +I +22 +I +b0 +I +28 +I +be +I +2e +I +cc +I +3a +I +da +I +46 +I +e8 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 +x +13 +attach_method +p +7 +I +0 +I +1 +I +9 +I +2 +I +12 +I +4 +I +35 +x +59 +/Users/murphy/ruby/coderay-0.9/test/functional/word_list.rb +p +0 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/rubytree-0.5.2/.svn/entries --- a/vendor/gems/rubytree-0.5.2/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/gems/rubytree-0.5.2 +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2 http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 48b46ff6764d5b76e1ad138669923aff 2009-11-25T05:36:44.792571Z 3090 @@ -69,7 +69,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 954df52967073c3833d9c565bb4b1ea8 2009-11-25T05:36:44.792571Z 3090 @@ -103,7 +103,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z f3e96d4b9eeb3d0c4d841c7c7ea6259c 2009-11-25T05:36:44.792571Z 3090 @@ -137,7 +137,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 7a9a6ee34490c5d9c4148c7cf8f85034 2009-11-25T05:36:44.792571Z 3090 @@ -171,7 +171,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 82301a43d2504d992ba1cfd7839b2d7e 2009-11-25T05:36:44.792571Z 3090 @@ -208,7 +208,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z b15b8164d281daa7c7028cdda9635950 2009-11-25T05:36:44.792571Z 3090 @@ -242,7 +242,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 25d0fdd6b9633f784544a5c000dc1351 2009-11-25T05:36:44.792571Z 3090 @@ -276,7 +276,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 13d490389c788748b3931b9e09b2b4d4 2009-11-25T05:36:44.792571Z 3090 @@ -310,7 +310,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 5906fb8bdb4197fe19171f795952ed9d 2009-11-25T05:36:44.792571Z 3090 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/rubytree-0.5.2/lib/.svn/entries --- a/vendor/gems/rubytree-0.5.2/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/gems/rubytree-0.5.2/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 46e46766767dc3a96b3019d385a5af83 2009-11-25T05:36:44.792571Z 3090 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries --- a/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/lib/tree/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/gems/rubytree-0.5.2/lib/tree +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/lib/tree http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 54320f0ffbb41fa9d99ab2d617636ea1 2009-11-25T05:36:44.792571Z 3090 diff -r fca2657f4aa5 -r eeebe205a056 vendor/gems/rubytree-0.5.2/test/.svn/entries --- a/vendor/gems/rubytree-0.5.2/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/gems/rubytree-0.5.2/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/gems/rubytree-0.5.2/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/gems/rubytree-0.5.2/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z bd5257614b958bab00916feffc4fa9ae 2009-11-25T05:36:44.792571Z 3090 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z b9b4a1d43e859491e80fb1e2c7499d20 2009-11-25T05:36:44.792571Z 3090 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/.svn/all-wcprops --- a/vendor/plugins/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,5 +1,5 @@ K 25 svn:wc:ra_dav:version-url V 39 -/svn/!svn/ver/4602/trunk/vendor/plugins +/svn/!svn/ver/4891/trunk/vendor/plugins END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/.svn/entries --- a/vendor/plugins/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins http://redmine.rubyforge.org/svn -2011-01-01T11:45:12.617336Z -4602 +2011-02-20T14:26:23.957459Z +4891 jplang @@ -44,9 +44,6 @@ classic_pagination dir -coderay-0.9.2 -dir - acts_as_versioned dir diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_activity_provider/.svn/entries --- a/vendor/plugins/acts_as_activity_provider/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_activity_provider/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_activity_provider +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 779d73c171dc111df084a0798cca73e2 2008-07-27T17:54:09.197937Z 1701 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_activity_provider/lib/.svn/entries --- a/vendor/plugins/acts_as_activity_provider/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_activity_provider/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_activity_provider/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_activity_provider/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 21fbeb28c4ce556d2534306b96be9497 2008-12-08T18:20:26.452857Z 2114 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_attachable/.svn/entries --- a/vendor/plugins/acts_as_attachable/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_attachable/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_attachable +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z b215588c95e69b4bb8f91ad91606bfbe 2008-12-09T16:54:46.963649Z 2116 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_attachable/lib/.svn/entries --- a/vendor/plugins/acts_as_attachable/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_attachable/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_attachable/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_attachable/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 982227c44f1fe848c8aeed862ea027f3 2010-03-03T17:05:00.967826Z 3528 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_customizable/.svn/all-wcprops --- a/vendor/plugins/acts_as_customizable/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ K 25 svn:wc:ra_dav:version-url V 60 -/svn/!svn/ver/4481/trunk/vendor/plugins/acts_as_customizable +/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable END init.rb K 25 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_customizable/.svn/entries --- a/vendor/plugins/acts_as_customizable/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_customizable +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable http://redmine.rubyforge.org/svn -2010-12-10T10:48:16.342425Z -4481 +2011-02-20T14:26:23.957459Z +4891 jplang @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 0d1f178b7636d6712b38304954530928 2008-06-27T20:13:56.888432Z 1592 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops --- a/vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -1,11 +1,11 @@ K 25 svn:wc:ra_dav:version-url V 64 -/svn/!svn/ver/4481/trunk/vendor/plugins/acts_as_customizable/lib +/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable/lib END acts_as_customizable.rb K 25 svn:wc:ra_dav:version-url V 88 -/svn/!svn/ver/4481/trunk/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb +/svn/!svn/ver/4891/trunk/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_customizable/lib/.svn/entries --- a/vendor/plugins/acts_as_customizable/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_customizable/lib http://redmine.rubyforge.org/svn -2010-12-10T10:48:16.342425Z -4481 +2011-02-20T14:26:23.957459Z +4891 jplang @@ -32,10 +32,10 @@ -2011-01-13T14:09:38.000000Z -cef2f70b94f09391acec6dea08160454 -2010-12-10T10:48:16.342425Z -4481 +2011-03-03T11:40:18.000000Z +2a7f0cd4a6b5d7f58a12567604697208 +2011-02-20T14:26:23.957459Z +4891 jplang has-props @@ -58,5 +58,5 @@ -4418 +4469 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base --- a/vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/.svn/text-base/acts_as_customizable.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -71,6 +71,7 @@ custom_field_values.each do |custom_value| custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s) end if values.is_a?(Hash) + self.custom_values = custom_field_values end def custom_field_values diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb --- a/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_customizable/lib/acts_as_customizable.rb Thu Mar 03 12:02:03 2011 +0000 @@ -71,6 +71,7 @@ custom_field_values.each do |custom_value| custom_value.value = values[custom_value.custom_field_id.to_s] if values.has_key?(custom_value.custom_field_id.to_s) end if values.is_a?(Hash) + self.custom_values = custom_field_values end def custom_field_values diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_event/.svn/entries --- a/vendor/plugins/acts_as_event/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_event/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_event +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 60df7ab698ddd0c3701bb0efbb8233cf 2007-08-29T16:52:35.680643Z 674 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_event/lib/.svn/entries --- a/vendor/plugins/acts_as_event/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_event/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_event/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_event/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z ca8e33777d59976db870f71defe5f66d 2010-04-30T10:45:21.145380Z 3703 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_list/.svn/entries --- a/vendor/plugins/acts_as_list/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_list/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_list +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 0bdbdc825f80fda1a94852a82b68ffd4 2007-12-10T17:58:07.273873Z 975 @@ -72,7 +72,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 42212b5cb681c9888d56f9c0f36e1e02 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_list/lib/.svn/entries --- a/vendor/plugins/acts_as_list/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_list/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_list/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_list/lib/active_record/.svn/entries --- a/vendor/plugins/acts_as_list/lib/active_record/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_list/lib/active_record/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_list/lib/active_record +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries --- a/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_list/lib/active_record/acts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_list/lib/active_record/acts +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/lib/active_record/acts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z a3ee41e8bed56868bc2e4ab2cb7df73a 2009-02-26T09:21:41.696815Z 2526 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_list/test/.svn/entries --- a/vendor/plugins/acts_as_list/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_list/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_list/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_list/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 3d41debf5c631e88295d337507c3b5b6 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_searchable/.svn/entries --- a/vendor/plugins/acts_as_searchable/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_searchable/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_searchable +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 7512fe68c7dfbb57e956d22b9aa8f8ed 2007-09-27T17:28:22.154371Z 766 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_searchable/lib/.svn/entries --- a/vendor/plugins/acts_as_searchable/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_searchable/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_searchable/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_searchable/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z f282f30a34a9560d7ef3d5883aba5fe9 2010-02-17T20:20:51.097274Z 3445 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_tree/.svn/entries --- a/vendor/plugins/acts_as_tree/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_tree/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_tree +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 77667cb4c41516750075eefb98896a93 2007-12-10T17:58:07.273873Z 975 @@ -69,7 +69,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 581c104f87fe90cfe9a7d1d41d77c84f 2007-12-10T17:58:07.273873Z 975 @@ -106,7 +106,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 918c85e850eb84259c178529b9aafd62 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_tree/lib/.svn/entries --- a/vendor/plugins/acts_as_tree/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_tree/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_tree/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_tree/lib/active_record/.svn/entries --- a/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_tree/lib/active_record/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_tree/lib/active_record +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries --- a/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_tree/lib/active_record/acts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_tree/lib/active_record/acts +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/lib/active_record/acts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 544900d884182d6888334ce14323bef0 2009-04-21T12:19:56.547537Z 2676 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_tree/test/.svn/entries --- a/vendor/plugins/acts_as_tree/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_tree/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_tree/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -137,7 +137,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 7bd3d48984d0e563b9f5e20ca8fdff81 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_tree/test/fixtures/.svn/entries --- a/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_tree/test/fixtures/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_tree/test/fixtures +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_tree/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_versioned/.svn/entries --- a/vendor/plugins/acts_as_versioned/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_versioned +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 8aae554c93cc60ef98cb3da2dd7c1b4b 2007-03-04T13:40:21.895320Z 290 @@ -69,7 +69,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 1f57ce7fac2d625797b9ec6d6480cf5b 2008-07-04T17:58:14.743502Z 1623 @@ -103,7 +103,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 1d117218f55938f9c75f1f814a4915d1 2007-03-04T13:40:21.895320Z 290 @@ -140,7 +140,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 3aa6f483cf322e248d4a1281160f8845 2007-03-04T13:40:21.895320Z 290 @@ -174,7 +174,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z e4ba7226e637685b5cca7a9cc5c05af2 2007-03-04T13:40:21.895320Z 290 @@ -208,7 +208,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 06ee73d1b4ad386b681f88b9326a0685 2007-03-04T13:40:21.895320Z 290 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_versioned/lib/.svn/entries --- a/vendor/plugins/acts_as_versioned/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_versioned/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 474fc02132fce15712540924bb7b22cf 2008-07-04T17:58:14.743502Z 1623 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_versioned/test/.svn/entries --- a/vendor/plugins/acts_as_versioned/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_versioned/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 8a2eaa42c29dc84e0c018e78c99987f1 2008-07-04T17:58:14.743502Z 1623 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z df4118ed0edd4b3a0bae0cbb3b7a8a6b 2007-03-04T13:40:21.895320Z 290 @@ -100,7 +100,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 99f5a4aa22b79a8f8c7521a0b1e9ec3e 2008-07-04T17:58:14.743502Z 1623 @@ -134,7 +134,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z c5ac373bf98e48576df3a63ab4349883 2007-03-04T13:40:21.895320Z 290 @@ -171,7 +171,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z eb28101ab94f672b3a99998fc03f0d38 2008-07-04T17:58:14.743502Z 1623 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries --- a/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/test/fixtures/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_versioned/test/fixtures +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 6052582a74186e97a71e6d50ff1c3558 2007-03-04T13:40:21.895320Z 290 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 35aca448cc30c958ad2f3a8130903701 2007-03-04T13:40:21.895320Z 290 @@ -100,7 +100,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z df240cb0129f29834aea167ea97df5c9 2007-03-04T13:40:21.895320Z 290 @@ -134,7 +134,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 3e63e88f04d92531412a5e328670313d 2007-03-04T13:40:21.895320Z 290 @@ -168,7 +168,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 9e0c65a239dc63caf3ba5b61e5acd86b 2007-03-04T13:40:21.895320Z 290 @@ -202,7 +202,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z c9631a233cff08e617f783f2c5d4ebcb 2007-03-04T13:40:21.895320Z 290 @@ -236,7 +236,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 6cbb9a0d4b22160edce9cdd270943fcd 2008-07-04T17:58:14.743502Z 1623 @@ -270,7 +270,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 7845068722476900746d101729c30187 2007-03-04T13:40:21.895320Z 290 @@ -307,7 +307,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z ebfb47357586fa12e4524a65ba0a714a 2007-03-04T13:40:21.895320Z 290 @@ -341,7 +341,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z a93535c95869678b16df898b8de4259f 2007-03-04T13:40:21.895320Z 290 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries --- a/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_versioned/test/fixtures/migrations/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_versioned/test/fixtures/migrations +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_versioned/test/fixtures/migrations http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 8fca6192aeeba1c8456bd6ac6199839f 2007-03-04T13:40:21.895320Z 290 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_watchable/.svn/entries --- a/vendor/plugins/acts_as_watchable/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_watchable/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_watchable +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 7051267daa625f991f2b604afde255ff 2007-04-21T12:08:31.130506Z 453 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/acts_as_watchable/lib/.svn/entries --- a/vendor/plugins/acts_as_watchable/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/acts_as_watchable/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/acts_as_watchable/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/acts_as_watchable/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 30f73616865f02dadce09f9511269b70 2010-06-20T18:41:30.111362Z 3803 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/plugins/awesome_nested_set/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,35 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/svn/!svn/ver/4735/trunk/vendor/plugins/awesome_nested_set +END +awesome_nested_set.gemspec +K 25 +svn:wc:ra_dav:version-url +V 85 +/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/awesome_nested_set.gemspec +END +Rakefile +K 25 +svn:wc:ra_dav:version-url +V 67 +/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/Rakefile +END +README.rdoc +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/README.rdoc +END +init.rb +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/init.rb +END +MIT-LICENSE +K 25 +svn:wc:ra_dav:version-url +V 70 +/svn/!svn/ver/2304/trunk/vendor/plugins/awesome_nested_set/MIT-LICENSE +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/.svn/entries --- a/vendor/plugins/awesome_nested_set/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set http://redmine.rubyforge.org/svn -2010-11-14T16:24:21.989522Z -4406 +2011-01-22T11:46:15.415880Z +4735 jplang @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z c1f9a7c7c81a0c9150d260757c895ab3 2008-12-20T12:22:38.158335Z 2149 @@ -69,7 +69,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 75ea4a8e8109afdbce9214ac3e9aa40a 2008-12-20T12:22:38.158335Z 2149 @@ -103,7 +103,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z 5d897290320b00753c366c59f40b213e 2008-12-20T12:22:38.158335Z 2149 @@ -137,7 +137,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z af5f1806895c92bb03e8855a96d13a64 2008-12-20T12:22:38.158335Z 2149 @@ -174,7 +174,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z ba826ae68593d063b726b4e66dcb1e8f 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/lib/.svn/all-wcprops --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/.svn/all-wcprops Thu Mar 03 12:02:03 2011 +0000 @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/svn/!svn/ver/4735/trunk/vendor/plugins/awesome_nested_set/lib +END +awesome_nested_set.rb +K 25 +svn:wc:ra_dav:version-url +V 84 +/svn/!svn/ver/4735/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb +END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/lib/.svn/entries --- a/vendor/plugins/awesome_nested_set/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,14 +1,14 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib http://redmine.rubyforge.org/svn -2010-11-14T16:24:21.989522Z -4406 +2011-01-22T11:46:15.415880Z +4735 jplang @@ -32,10 +32,10 @@ -2010-11-30T13:11:54.000000Z -e8fd989882fd3a10519da66c2a73e982 -2010-11-14T16:24:21.989522Z -4406 +2011-03-03T11:05:12.000000Z +30e0732ab58f6380af97e08261871486 +2011-01-22T11:46:15.415880Z +4735 jplang has-props @@ -58,7 +58,7 @@ -21530 +21619 awesome_nested_set dir diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/lib/.svn/text-base/awesome_nested_set.rb.svn-base --- a/vendor/plugins/awesome_nested_set/lib/.svn/text-base/awesome_nested_set.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/.svn/text-base/awesome_nested_set.rb.svn-base Thu Mar 03 12:02:03 2011 +0000 @@ -444,17 +444,19 @@ # Prunes a branch off of the tree, shifting all of the elements on the right # back to the left so the counts still work. def prune_from_tree - return if right.nil? || left.nil? - diff = right - left + 1 + return if right.nil? || left.nil? || !self.class.exists?(id) delete_method = acts_as_nested_set_options[:dependent] == :destroy ? :destroy_all : :delete_all self.class.base_class.transaction do + reload_nested_set nested_set_scope.send(delete_method, ["#{quoted_left_column_name} > ? AND #{quoted_right_column_name} < ?", left, right] ) + reload_nested_set + diff = right - left + 1 nested_set_scope.update_all( ["#{quoted_left_column_name} = (#{quoted_left_column_name} - ?)", diff], ["#{quoted_left_column_name} >= ?", right] diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb --- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb Thu Mar 03 12:02:03 2011 +0000 @@ -444,17 +444,19 @@ # Prunes a branch off of the tree, shifting all of the elements on the right # back to the left so the counts still work. def prune_from_tree - return if right.nil? || left.nil? - diff = right - left + 1 + return if right.nil? || left.nil? || !self.class.exists?(id) delete_method = acts_as_nested_set_options[:dependent] == :destroy ? :destroy_all : :delete_all self.class.base_class.transaction do + reload_nested_set nested_set_scope.send(delete_method, ["#{quoted_left_column_name} > ? AND #{quoted_right_column_name} < ?", left, right] ) + reload_nested_set + diff = right - left + 1 nested_set_scope.update_all( ["#{quoted_left_column_name} = (#{quoted_left_column_name} - ?)", diff], ["#{quoted_left_column_name} >= ?", right] diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries --- a/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/lib/awesome_nested_set +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/lib/awesome_nested_set http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d15393e7ec4757df0e53641d9a8d76f4 2008-12-20T12:22:38.158335Z 2149 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d4a9622144313fa6b56117a6c1f11e61 2008-12-20T12:22:38.158335Z 2149 @@ -100,7 +100,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z cebe8bf25e6f479251be38c80a246574 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/rails/.svn/entries --- a/vendor/plugins/awesome_nested_set/rails/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/rails/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/rails +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/rails http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:13.000000Z d5995cbfa2abdc12b57c44d69dc0085b 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/test/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 41b65aff686211d45ba085c1b0791218 2008-12-20T12:22:38.158335Z 2149 @@ -75,7 +75,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d177339aefb3c4a8f280efff48c974b6 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/awesome_nested_set/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/test/awesome_nested_set +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/awesome_nested_set http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 03a414e3247544a5a2334aed005764f3 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/test/db/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/db/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/db/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/test/db +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/db http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z ae23aecda935bb66e29aa4f02ea9de0a 2008-12-20T12:22:38.158335Z 2149 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 359889e11314c2969bdf7e37475bdc62 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries --- a/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/awesome_nested_set/test/fixtures/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/awesome_nested_set/test/fixtures +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/awesome_nested_set/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 460e90d6f219f339e8e4c64aaae0063c 2008-12-20T12:22:38.158335Z 2149 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 4b6a06e11c21a3aadd09e60dee443110 2008-12-20T12:22:38.158335Z 2149 @@ -100,7 +100,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z e4eb5dbc7f2a2aa2fee79dba9210e769 2008-12-20T12:22:38.158335Z 2149 @@ -134,7 +134,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z e8b507fd94ed89b9997c3f9f137290cf 2008-12-20T12:22:38.158335Z 2149 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/classic_pagination/.svn/entries --- a/vendor/plugins/classic_pagination/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/classic_pagination/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/classic_pagination +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z b14424b71d2f606a775061237c8226f1 2007-12-10T17:58:07.273873Z 975 @@ -69,7 +69,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 181539722e198d92992a94f40310f4fc 2007-12-10T17:58:07.273873Z 975 @@ -106,7 +106,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 3ef206f381b42341342908fcc0001210 2007-12-09T21:53:46.068689Z 966 @@ -140,7 +140,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 1c88d6bc27aa809cd6ef26543c18b1e6 2007-12-10T17:58:07.273873Z 975 @@ -174,7 +174,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z f1df690ff1ea0da74f8fe161f50722ad 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/classic_pagination/lib/.svn/entries --- a/vendor/plugins/classic_pagination/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/classic_pagination/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/classic_pagination/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 535b7515c14fb3964e97be32c2d36415 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z d770c57066726c423cc9de4ca5b552cd 2008-12-14T15:36:59.418123Z 2134 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/classic_pagination/test/.svn/entries --- a/vendor/plugins/classic_pagination/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/classic_pagination/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/classic_pagination/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 50c7fabeb3d6728ce24eada59d5b2b67 2007-12-10T17:58:07.273873Z 975 @@ -69,7 +69,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 0a02d28a37b53a8e19af7935db5be1a8 2007-12-10T17:58:07.273873Z 975 @@ -103,7 +103,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 597b7501984a5ecd10242163d06c33e7 2007-12-10T17:58:07.273873Z 975 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/classic_pagination/test/fixtures/.svn/entries --- a/vendor/plugins/classic_pagination/test/fixtures/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/classic_pagination/test/fixtures/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/classic_pagination/test/fixtures +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/classic_pagination/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 4e923be7fd534a67635192bcfcbed5cf 2007-12-10T17:58:07.273873Z 975 @@ -66,7 +66,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 021192cd31a5c3a39cbe7bd14144425a 2007-12-10T17:58:07.273873Z 975 @@ -100,7 +100,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 5953f128689c82c1d5c9ab2709a682e4 2007-12-10T17:58:07.273873Z 975 @@ -134,7 +134,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z cc2715c9793cffccefbac86e97dd5a08 2007-12-10T17:58:07.273873Z 975 @@ -168,7 +168,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 92e8d8a3cd6b419bdabbafc91be07b13 2007-12-10T17:58:07.273873Z 975 @@ -202,7 +202,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 182661632986d51f75c49d74b19df40c 2007-12-10T17:58:07.273873Z 975 @@ -236,7 +236,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z f1bf372057211d4a6d86499e561d903c 2007-12-10T17:58:07.273873Z 975 @@ -270,7 +270,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 98f978d0e16223524ee8dc769136a3c4 2007-12-10T17:58:07.273873Z 975 @@ -304,7 +304,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 3605b2a8f1cf10cbc34343bd7c49330d 2007-12-10T17:58:07.273873Z 975 @@ -338,7 +338,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z dccebb95780c20b896fe26306d904e9d 2007-12-10T17:58:07.273873Z 975 @@ -372,7 +372,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 318c27008dc35148da64e32ff9bf53c7 2007-12-10T17:58:07.273873Z 975 @@ -406,7 +406,7 @@ -2010-08-12T15:03:26.000000Z +2011-03-03T11:05:12.000000Z 78b664b5dbb72751888e7f6bf4cd12f8 2007-12-09T21:53:46.068689Z 966 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/.svn/entries --- a/vendor/plugins/coderay-0.9.2/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2 -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -LICENSE -file - - - - -2010-08-12T15:03:26.000000Z -071d975e884a936b40eab0b865ea4da1 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -26534 - -lib -dir - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/.svn/prop-base/LICENSE.svn-base --- a/vendor/plugins/coderay-0.9.2/.svn/prop-base/LICENSE.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/.svn/text-base/LICENSE.svn-base --- a/vendor/plugins/coderay-0.9.2/.svn/text-base/LICENSE.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/LICENSE --- a/vendor/plugins/coderay-0.9.2/LICENSE Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2/lib -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -coderay -dir - -coderay.rb -file - - - - -2010-08-12T15:03:27.000000Z -c736c3ed620d59c1c6799d6fa340b0af -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -10050 - -README -file - - - - -2010-08-12T15:03:27.000000Z -0d50df22acd760dc1905c7ef55e509e6 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4998 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/README.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/README.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/coderay.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/prop-base/coderay.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/.svn/text-base/README.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/text-base/README.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -= CodeRay - -[- Tired of blue'n'gray? Try the original version of this documentation on -coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] - -== About -CodeRay is a Ruby library for syntax highlighting. - -Syntax highlighting means: You put your code in, and you get it back colored; -Keywords, strings, floats, comments - all in different colors. -And with line numbers. - -*Syntax* *Highlighting*... -* makes code easier to read and maintain -* lets you detect syntax errors faster -* helps you to understand the syntax of a language -* looks nice -* is what everybody should have on their website -* solves all your problems and makes the girls run after you - -Version: 0.9.2 -Author:: murphy (Kornelius Kalnbach) -Contact:: murphy rubychan de -Website:: coderay.rubychan.de[http://coderay.rubychan.de] -License:: GNU LGPL; see LICENSE file in the main directory. - -== Installation - -You need RubyGems[http://rubyforge.org/frs/?group_id=126]. - - % gem install coderay - - -=== Dependencies - -CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+. - - -== Example Usage -(Forgive me, but this is not highlighted.) - - require 'coderay' - - tokens = CodeRay.scan "puts 'Hello, world!'", :ruby - page = tokens.html :line_numbers => :inline, :wrap => :page - puts page - - -== Documentation - -See CodeRay. - -Please report errors in this documentation to . - - -== Credits - -=== Special Thanks to - -* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder - project and the input/output plugin system. - CodeRay would not exist without him. -* bovi (Daniel Bovensiepen) for helping me out on various occasions. - -=== Thanks to - -* Caleb Clausen for writing RubyLexer (see - http://rubyforge.org/projects/rubylexer) and lots of very interesting mail - traffic -* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. - You guys rock! -* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) - I got some useful ideas from it. -* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me - coding CodeRay, but also gave me a wonderful target to reach for the Ruby - scanner. -* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de -* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de -* Dethix from ruby-mine.de -* zickzackw -* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de -* Andreas Schwarz for finding out that CaseIgnoringWordList was not case - ignoring! Such things really make you write tests. -* closure for the first version of the Scheme scanner. -* Stefan Walk for the first version of the JavaScript and PHP scanners. -* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. -* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. -* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. -* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. -* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. -* 0xf30fc7 for the FileType patch concerning Delphi file extensions. -* The folks at redmine.org - thank you for using and fixing CodeRay! -* Keith Pitt for his SQL scanners -* Rob Aldred for the terminal encoder -* Trans for pointing out $DEBUG dependencies -* Flameeyes for finding that Term::ANSIColor was obsolete -* matz and all Ruby gods and gurus -* The inventors of: the computer, the internet, the true color display, HTML & - CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, - manga, coke and green ice tea. - -Where would we be without all those people? - -=== Created using - -* Ruby[http://ruby-lang.org/] -* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); - Triella, born Rico (my new MacBook); as well as - Seras and Hikari (my PCs) -* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], - VIM[http://vim.org] and TextMate[http://macromates.com] -* Subversion[http://subversion.tigris.org/] -* Redmine[http://redmine.org/] -* Firefox[http://www.mozilla.org/products/firefox/], - Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and - Thunderbird[http://www.mozilla.org/products/thunderbird/] -* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] -* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via - XAMPP[http://www.apachefriends.org/en/xampp.html] -* RDoc (though I'm quite unsatisfied with it) -* Microsoft Windows (yes, I confess!) and MacOS X -* GNUWin32, MinGW and some other tools to make the shell under windows a bit - less useless -* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] -* PLEAC[http://pleac.sourceforge.net/] code examples - -=== Free - -* As you can see, CodeRay was created under heavy use of *free* software. -* So CodeRay is also *free*. -* If you use CodeRay to create software, think about making this software - *free*, too. -* Thanks :) diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/.svn/text-base/coderay.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/.svn/text-base/coderay.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,322 +0,0 @@ -# = CodeRay Library -# -# CodeRay is a Ruby library for syntax highlighting. -# -# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete, -# fast and efficient. -# -# See README. -# -# It consists mainly of -# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost -# * the scanners in CodeRay::Scanners -# * the encoders in CodeRay::Encoders -# -# Here's a fancy graphic to light up this gray docu: -# -# http://cycnus.de/raindark/coderay/scheme.png -# -# == Documentation -# -# See CodeRay, Encoders, Scanners, Tokens. -# -# == Usage -# -# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with -# -rubygems option if required. -# -# === Highlight Ruby code in a string as html -# -# require 'coderay' -# print CodeRay.scan('puts "Hello, world!"', :ruby).html -# -# # prints something like this: -# puts "Hello, world!" -# -# -# === Highlight C code from a file in a html div -# -# require 'coderay' -# print CodeRay.scan(File.read('ruby.h'), :c).div -# print CodeRay.scan_file('ruby.h').html.div -# -# You can include this div in your page. The used CSS styles can be printed with -# -# % coderay_stylesheet -# -# === Highlight without typing too much -# -# If you are one of the hasty (or lazy, or extremely curious) people, just run this file: -# -# % ruby -rubygems /path/to/coderay/coderay.rb > example.html -# -# and look at the file it created in your browser. -# -# = CodeRay Module -# -# The CodeRay module provides convenience methods for the engine. -# -# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are -# simply lower-case symbols, like :python or :html. -# * All methods take an optional hash as last parameter, +options+, that is send to -# the Encoder / Scanner. -# * Input and language are always sorted in this order: +code+, +lang+. -# (This is in alphabetical order, if you need a mnemonic ;) -# -# You should be able to highlight everything you want just using these methods; -# so there is no need to dive into CodeRay's deep class hierarchy. -# -# The examples in the demo directory demonstrate common cases using this interface. -# -# = Basic Access Ways -# -# Read this to get a general view what CodeRay provides. -# -# == Scanning -# -# Scanning means analysing an input string, splitting it up into Tokens. -# Each Token knows about what type it is: string, comment, class name, etc. -# -# Each +lang+ (language) has its own Scanner; for example, :ruby code is -# handled by CodeRay::Scanners::Ruby. -# -# CodeRay.scan:: Scan a string in a given language into Tokens. -# This is the most common method to use. -# CodeRay.scan_file:: Scan a file and guess the language using FileType. -# -# The Tokens object you get from these methods can encode itself; see Tokens. -# -# == Encoding -# -# Encoding means compiling Tokens into an output. This can be colored HTML or -# LaTeX, a textual statistic or just the number of non-whitespace tokens. -# -# Each Encoder provides output in a specific +format+, so you select Encoders via -# formats like :html or :statistic. -# -# CodeRay.encode:: Scan and encode a string in a given language. -# CodeRay.encode_tokens:: Encode the given tokens. -# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it. -# -# == Streaming -# -# Streaming saves RAM by running Scanner and Encoder in some sort of -# pipe mode; see TokenStream. -# -# CodeRay.scan_stream:: Scan in stream mode. -# -# == All-in-One Encoding -# -# CodeRay.encode:: Highlight a string with a given input and output format. -# -# == Instanciating -# -# You can use an Encoder instance to highlight multiple inputs. This way, the setup -# for this Encoder must only be done once. -# -# CodeRay.encoder:: Create an Encoder instance with format and options. -# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code. -# -# To make use of CodeRay.scanner, use CodeRay::Scanner::code=. -# -# The scanning methods provide more flexibility; we recommend to use these. -# -# == Reusing Scanners and Encoders -# -# If you want to re-use scanners and encoders (because that is faster), see -# CodeRay::Duo for the most convenient (and recommended) interface. -module CodeRay - - $CODERAY_DEBUG ||= false - - # Version: Major.Minor.Teeny[.Revision] - # Major: 0 for pre-stable, 1 for stable - # Minor: feature milestone - # Teeny: development state, 0 for pre-release - # Revision: Subversion Revision number (generated on rake gem:make) - VERSION = '0.9.2' - - require 'coderay/tokens' - require 'coderay/token_classes' - require 'coderay/scanner' - require 'coderay/encoder' - require 'coderay/duo' - require 'coderay/style' - - - class << self - - # Scans the given +code+ (a String) with the Scanner for +lang+. - # - # This is a simple way to use CodeRay. Example: - # require 'coderay' - # page = CodeRay.scan("puts 'Hello, world!'", :ruby).html - # - # See also demo/demo_simple. - def scan code, lang, options = {}, &block - scanner = Scanners[lang].new code, options, &block - scanner.tokenize - end - - # Scans +filename+ (a path to a code file) with the Scanner for +lang+. - # - # If +lang+ is :auto or omitted, the CodeRay::FileType module is used to - # determine it. If it cannot find out what type it is, it uses - # CodeRay::Scanners::Plaintext. - # - # Calls CodeRay.scan. - # - # Example: - # require 'coderay' - # page = CodeRay.scan_file('some_c_code.c').html - def scan_file filename, lang = :auto, options = {}, &block - file = IO.read filename - if lang == :auto - require 'coderay/helpers/file_type' - lang = FileType.fetch filename, :plaintext, true - end - scan file, lang, options = {}, &block - end - - # Scan the +code+ (a string) with the scanner for +lang+. - # - # Calls scan. - # - # See CodeRay.scan. - def scan_stream code, lang, options = {}, &block - options[:stream] = true - scan code, lang, options, &block - end - - # Encode a string in Streaming mode. - # - # This starts scanning +code+ with the the Scanner for +lang+ - # while encodes the output with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode_stream - def encode_stream code, lang, format, options = {} - encoder(format, options).encode_stream code, lang, options - end - - # Encode a string. - # - # This scans +code+ with the the Scanner for +lang+ and then - # encodes it with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode - def encode code, lang, format, options = {} - encoder(format, options).encode code, lang, options - end - - # Highlight a string into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight code, lang, options = { :css => :class }, format = :div - encode code, lang, format, options - end - - # Encode pre-scanned Tokens. - # Use this together with CodeRay.scan: - # - # require 'coderay' - # - # # Highlight a short Ruby code example in a HTML span - # tokens = CodeRay.scan '1 + 2', :ruby - # puts CodeRay.encode_tokens(tokens, :span) - # - def encode_tokens tokens, format, options = {} - encoder(format, options).encode_tokens tokens, options - end - - # Encodes +filename+ (a path to a code file) with the Scanner for +lang+. - # - # See CodeRay.scan_file. - # Notice that the second argument is the output +format+, not the input language. - # - # Example: - # require 'coderay' - # page = CodeRay.encode_file 'some_c_code.c', :html - def encode_file filename, format, options = {} - tokens = scan_file filename, :auto, get_scanner_options(options) - encode_tokens tokens, format, options - end - - # Highlight a file into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight_file filename, options = { :css => :class }, format = :div - encode_file filename, format, options - end - - # Finds the Encoder class for +format+ and creates an instance, passing - # +options+ to it. - # - # Example: - # require 'coderay' - # - # stats = CodeRay.encoder(:statistic) - # stats.encode("puts 17 + 4\n", :ruby) - # - # puts '%d out of %d tokens have the kind :integer.' % [ - # stats.type_stats[:integer].count, - # stats.real_token_count - # ] - # #-> 2 out of 4 tokens have the kind :integer. - def encoder format, options = {} - Encoders[format].new options - end - - # Finds the Scanner class for +lang+ and creates an instance, passing - # +options+ to it. - # - # See Scanner.new. - def scanner lang, options = {} - Scanners[lang].new '', options - end - - # Extract the options for the scanner from the +options+ hash. - # - # Returns an empty Hash if :scanner_options is not set. - # - # This is used if a method like CodeRay.encode has to provide options - # for Encoder _and_ scanner. - def get_scanner_options options - options.fetch :scanner_options, {} - end - - end - - # This Exception is raised when you try to stream with something that is not - # capable of streaming. - class NotStreamableError < Exception - def initialize obj - @obj = obj - end - - def to_s - '%s is not Streamable!' % @obj.class - end - end - - # A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder - # to show that they are able to handle streams. - module Streamable - end - -end - -# Run a test script. -if $0 == __FILE__ - $stderr.print 'Press key to print demo.'; gets - # Just use this file as an example of Ruby code. - code = File.read(__FILE__)[/module CodeRay.*/m] - print CodeRay.scan(code, :ruby).html -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/README --- a/vendor/plugins/coderay-0.9.2/lib/README Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -= CodeRay - -[- Tired of blue'n'gray? Try the original version of this documentation on -coderay.rubychan.de[http://coderay.rubychan.de/doc/] (use Ctrl+Click to open it in its own frame.) -] - -== About -CodeRay is a Ruby library for syntax highlighting. - -Syntax highlighting means: You put your code in, and you get it back colored; -Keywords, strings, floats, comments - all in different colors. -And with line numbers. - -*Syntax* *Highlighting*... -* makes code easier to read and maintain -* lets you detect syntax errors faster -* helps you to understand the syntax of a language -* looks nice -* is what everybody should have on their website -* solves all your problems and makes the girls run after you - -Version: 0.9.2 -Author:: murphy (Kornelius Kalnbach) -Contact:: murphy rubychan de -Website:: coderay.rubychan.de[http://coderay.rubychan.de] -License:: GNU LGPL; see LICENSE file in the main directory. - -== Installation - -You need RubyGems[http://rubyforge.org/frs/?group_id=126]. - - % gem install coderay - - -=== Dependencies - -CodeRay needs Ruby 1.8.6 or later. It also runs with Ruby 1.9.1+ and JRuby 1.1+. - - -== Example Usage -(Forgive me, but this is not highlighted.) - - require 'coderay' - - tokens = CodeRay.scan "puts 'Hello, world!'", :ruby - page = tokens.html :line_numbers => :inline, :wrap => :page - puts page - - -== Documentation - -See CodeRay. - -Please report errors in this documentation to . - - -== Credits - -=== Special Thanks to - -* licenser (Heinz N. Gies) for ending my QBasic career, inventing the Coder - project and the input/output plugin system. - CodeRay would not exist without him. -* bovi (Daniel Bovensiepen) for helping me out on various occasions. - -=== Thanks to - -* Caleb Clausen for writing RubyLexer (see - http://rubyforge.org/projects/rubylexer) and lots of very interesting mail - traffic -* birkenfeld (Georg Brandl) and mitsuhiku (Arnim Ronacher) for PyKleur, now pygments. - You guys rock! -* Jamis Buck for writing Syntax (see http://rubyforge.org/projects/syntax) - I got some useful ideas from it. -* Doug Kearns and everyone else who worked on ruby.vim - it not only helped me - coding CodeRay, but also gave me a wonderful target to reach for the Ruby - scanner. -* everyone who uses CodeBB on http://www.rubyforen.de and http://www.python-forum.de -* iGEL, magichisoka, manveru, WoNáDo and everyone I forgot from rubyforen.de -* Dethix from ruby-mine.de -* zickzackw -* Dookie (who is no longer with us...) and Leonidas from http://www.python-forum.de -* Andreas Schwarz for finding out that CaseIgnoringWordList was not case - ignoring! Such things really make you write tests. -* closure for the first version of the Scheme scanner. -* Stefan Walk for the first version of the JavaScript and PHP scanners. -* Josh Goebel for another version of the JavaScript scanner, a SQL and a Diff scanner. -* Jonathan Younger for pointing out the licence confusion caused by wrong LICENSE file. -* Jeremy Hinegardner for finding the shebang-on-empty-file bug in FileType. -* Charles Oliver Nutter and Yehuda Katz for helping me benchmark CodeRay on JRuby. -* Andreas Neuhaus for pointing out a markup bug in coderay/for_redcloth. -* 0xf30fc7 for the FileType patch concerning Delphi file extensions. -* The folks at redmine.org - thank you for using and fixing CodeRay! -* Keith Pitt for his SQL scanners -* Rob Aldred for the terminal encoder -* Trans for pointing out $DEBUG dependencies -* Flameeyes for finding that Term::ANSIColor was obsolete -* matz and all Ruby gods and gurus -* The inventors of: the computer, the internet, the true color display, HTML & - CSS, VIM, Ruby, pizza, microwaves, guitars, scouting, programming, anime, - manga, coke and green ice tea. - -Where would we be without all those people? - -=== Created using - -* Ruby[http://ruby-lang.org/] -* Chihiro (my Sony VAIO laptop); Henrietta (my old MacBook); - Triella, born Rico (my new MacBook); as well as - Seras and Hikari (my PCs) -* RDE[http://homepage2.nifty.com/sakazuki/rde_e.html], - VIM[http://vim.org] and TextMate[http://macromates.com] -* Subversion[http://subversion.tigris.org/] -* Redmine[http://redmine.org/] -* Firefox[http://www.mozilla.org/products/firefox/], - Firebug[http://getfirebug.com/], Safari[http://www.apple.com/safari/], and - Thunderbird[http://www.mozilla.org/products/thunderbird/] -* RubyGems[http://docs.rubygems.org/] and Rake[http://rake.rubyforge.org/] -* TortoiseSVN[http://tortoisesvn.tigris.org/] using Apache via - XAMPP[http://www.apachefriends.org/en/xampp.html] -* RDoc (though I'm quite unsatisfied with it) -* Microsoft Windows (yes, I confess!) and MacOS X -* GNUWin32, MinGW and some other tools to make the shell under windows a bit - less useless -* Term::ANSIColor[http://term-ansicolor.rubyforge.org/] -* PLEAC[http://pleac.sourceforge.net/] code examples - -=== Free - -* As you can see, CodeRay was created under heavy use of *free* software. -* So CodeRay is also *free*. -* If you use CodeRay to create software, think about making this software - *free*, too. -* Thanks :) diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,322 +0,0 @@ -# = CodeRay Library -# -# CodeRay is a Ruby library for syntax highlighting. -# -# I try to make CodeRay easy to use and intuitive, but at the same time fully featured, complete, -# fast and efficient. -# -# See README. -# -# It consists mainly of -# * the main engine: CodeRay (Scanners::Scanner, Tokens/TokenStream, Encoders::Encoder), PluginHost -# * the scanners in CodeRay::Scanners -# * the encoders in CodeRay::Encoders -# -# Here's a fancy graphic to light up this gray docu: -# -# http://cycnus.de/raindark/coderay/scheme.png -# -# == Documentation -# -# See CodeRay, Encoders, Scanners, Tokens. -# -# == Usage -# -# Remember you need RubyGems to use CodeRay, unless you have it in your load path. Run Ruby with -# -rubygems option if required. -# -# === Highlight Ruby code in a string as html -# -# require 'coderay' -# print CodeRay.scan('puts "Hello, world!"', :ruby).html -# -# # prints something like this: -# puts "Hello, world!" -# -# -# === Highlight C code from a file in a html div -# -# require 'coderay' -# print CodeRay.scan(File.read('ruby.h'), :c).div -# print CodeRay.scan_file('ruby.h').html.div -# -# You can include this div in your page. The used CSS styles can be printed with -# -# % coderay_stylesheet -# -# === Highlight without typing too much -# -# If you are one of the hasty (or lazy, or extremely curious) people, just run this file: -# -# % ruby -rubygems /path/to/coderay/coderay.rb > example.html -# -# and look at the file it created in your browser. -# -# = CodeRay Module -# -# The CodeRay module provides convenience methods for the engine. -# -# * The +lang+ and +format+ arguments select Scanner and Encoder to use. These are -# simply lower-case symbols, like :python or :html. -# * All methods take an optional hash as last parameter, +options+, that is send to -# the Encoder / Scanner. -# * Input and language are always sorted in this order: +code+, +lang+. -# (This is in alphabetical order, if you need a mnemonic ;) -# -# You should be able to highlight everything you want just using these methods; -# so there is no need to dive into CodeRay's deep class hierarchy. -# -# The examples in the demo directory demonstrate common cases using this interface. -# -# = Basic Access Ways -# -# Read this to get a general view what CodeRay provides. -# -# == Scanning -# -# Scanning means analysing an input string, splitting it up into Tokens. -# Each Token knows about what type it is: string, comment, class name, etc. -# -# Each +lang+ (language) has its own Scanner; for example, :ruby code is -# handled by CodeRay::Scanners::Ruby. -# -# CodeRay.scan:: Scan a string in a given language into Tokens. -# This is the most common method to use. -# CodeRay.scan_file:: Scan a file and guess the language using FileType. -# -# The Tokens object you get from these methods can encode itself; see Tokens. -# -# == Encoding -# -# Encoding means compiling Tokens into an output. This can be colored HTML or -# LaTeX, a textual statistic or just the number of non-whitespace tokens. -# -# Each Encoder provides output in a specific +format+, so you select Encoders via -# formats like :html or :statistic. -# -# CodeRay.encode:: Scan and encode a string in a given language. -# CodeRay.encode_tokens:: Encode the given tokens. -# CodeRay.encode_file:: Scan a file, guess the language using FileType and encode it. -# -# == Streaming -# -# Streaming saves RAM by running Scanner and Encoder in some sort of -# pipe mode; see TokenStream. -# -# CodeRay.scan_stream:: Scan in stream mode. -# -# == All-in-One Encoding -# -# CodeRay.encode:: Highlight a string with a given input and output format. -# -# == Instanciating -# -# You can use an Encoder instance to highlight multiple inputs. This way, the setup -# for this Encoder must only be done once. -# -# CodeRay.encoder:: Create an Encoder instance with format and options. -# CodeRay.scanner:: Create an Scanner instance for lang, with '' as default code. -# -# To make use of CodeRay.scanner, use CodeRay::Scanner::code=. -# -# The scanning methods provide more flexibility; we recommend to use these. -# -# == Reusing Scanners and Encoders -# -# If you want to re-use scanners and encoders (because that is faster), see -# CodeRay::Duo for the most convenient (and recommended) interface. -module CodeRay - - $CODERAY_DEBUG ||= false - - # Version: Major.Minor.Teeny[.Revision] - # Major: 0 for pre-stable, 1 for stable - # Minor: feature milestone - # Teeny: development state, 0 for pre-release - # Revision: Subversion Revision number (generated on rake gem:make) - VERSION = '0.9.2' - - require 'coderay/tokens' - require 'coderay/token_classes' - require 'coderay/scanner' - require 'coderay/encoder' - require 'coderay/duo' - require 'coderay/style' - - - class << self - - # Scans the given +code+ (a String) with the Scanner for +lang+. - # - # This is a simple way to use CodeRay. Example: - # require 'coderay' - # page = CodeRay.scan("puts 'Hello, world!'", :ruby).html - # - # See also demo/demo_simple. - def scan code, lang, options = {}, &block - scanner = Scanners[lang].new code, options, &block - scanner.tokenize - end - - # Scans +filename+ (a path to a code file) with the Scanner for +lang+. - # - # If +lang+ is :auto or omitted, the CodeRay::FileType module is used to - # determine it. If it cannot find out what type it is, it uses - # CodeRay::Scanners::Plaintext. - # - # Calls CodeRay.scan. - # - # Example: - # require 'coderay' - # page = CodeRay.scan_file('some_c_code.c').html - def scan_file filename, lang = :auto, options = {}, &block - file = IO.read filename - if lang == :auto - require 'coderay/helpers/file_type' - lang = FileType.fetch filename, :plaintext, true - end - scan file, lang, options = {}, &block - end - - # Scan the +code+ (a string) with the scanner for +lang+. - # - # Calls scan. - # - # See CodeRay.scan. - def scan_stream code, lang, options = {}, &block - options[:stream] = true - scan code, lang, options, &block - end - - # Encode a string in Streaming mode. - # - # This starts scanning +code+ with the the Scanner for +lang+ - # while encodes the output with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode_stream - def encode_stream code, lang, format, options = {} - encoder(format, options).encode_stream code, lang, options - end - - # Encode a string. - # - # This scans +code+ with the the Scanner for +lang+ and then - # encodes it with the Encoder for +format+. - # +options+ will be passed to the Encoder. - # - # See CodeRay::Encoder.encode - def encode code, lang, format, options = {} - encoder(format, options).encode code, lang, options - end - - # Highlight a string into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight code, lang, options = { :css => :class }, format = :div - encode code, lang, format, options - end - - # Encode pre-scanned Tokens. - # Use this together with CodeRay.scan: - # - # require 'coderay' - # - # # Highlight a short Ruby code example in a HTML span - # tokens = CodeRay.scan '1 + 2', :ruby - # puts CodeRay.encode_tokens(tokens, :span) - # - def encode_tokens tokens, format, options = {} - encoder(format, options).encode_tokens tokens, options - end - - # Encodes +filename+ (a path to a code file) with the Scanner for +lang+. - # - # See CodeRay.scan_file. - # Notice that the second argument is the output +format+, not the input language. - # - # Example: - # require 'coderay' - # page = CodeRay.encode_file 'some_c_code.c', :html - def encode_file filename, format, options = {} - tokens = scan_file filename, :auto, get_scanner_options(options) - encode_tokens tokens, format, options - end - - # Highlight a file into a HTML
    . - # - # CSS styles use classes, so you have to include a stylesheet - # in your output. - # - # See encode. - def highlight_file filename, options = { :css => :class }, format = :div - encode_file filename, format, options - end - - # Finds the Encoder class for +format+ and creates an instance, passing - # +options+ to it. - # - # Example: - # require 'coderay' - # - # stats = CodeRay.encoder(:statistic) - # stats.encode("puts 17 + 4\n", :ruby) - # - # puts '%d out of %d tokens have the kind :integer.' % [ - # stats.type_stats[:integer].count, - # stats.real_token_count - # ] - # #-> 2 out of 4 tokens have the kind :integer. - def encoder format, options = {} - Encoders[format].new options - end - - # Finds the Scanner class for +lang+ and creates an instance, passing - # +options+ to it. - # - # See Scanner.new. - def scanner lang, options = {} - Scanners[lang].new '', options - end - - # Extract the options for the scanner from the +options+ hash. - # - # Returns an empty Hash if :scanner_options is not set. - # - # This is used if a method like CodeRay.encode has to provide options - # for Encoder _and_ scanner. - def get_scanner_options options - options.fetch :scanner_options, {} - end - - end - - # This Exception is raised when you try to stream with something that is not - # capable of streaming. - class NotStreamableError < Exception - def initialize obj - @obj = obj - end - - def to_s - '%s is not Streamable!' % @obj.class - end - end - - # A dummy module that is included by subclasses of CodeRay::Scanner an CodeRay::Encoder - # to show that they are able to handle streams. - module Streamable - end - -end - -# Run a test script. -if $0 == __FILE__ - $stderr.print 'Press key to print demo.'; gets - # Just use this file as an example of Ruby code. - code = File.read(__FILE__)[/module CodeRay.*/m] - print CodeRay.scan(code, :ruby).html -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2/lib/coderay -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -token_classes.rb -file - - - - -2010-08-12T15:03:27.000000Z -4f17211f3874899049db6111ef282a3b -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2287 - -encoder.rb -file - - - - -2010-08-12T15:03:27.000000Z -f0ead48eaa86c8b4d6a5587e9b5450ca -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6565 - -encoders -dir - -helpers -dir - -style.rb -file - - - - -2010-08-12T15:03:27.000000Z -409fa492a5470a8bed5ae969f270decf -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -293 - -styles -dir - -tokens.rb -file - - - - -2010-08-12T15:03:27.000000Z -b7662592ff38046174f935548f579ce4 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -10153 - -duo.rb -file - - - - -2010-08-12T15:03:27.000000Z -b33e5b83e354c09655f46d37ae662f64 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2549 - -scanner.rb -file - - - - -2010-08-12T15:03:27.000000Z -f75f38c93ee8de3e6df1c08773b62319 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7803 - -scanners -dir - -for_redcloth.rb -file - - - - -2010-08-12T15:03:27.000000Z -d216c2f1c7a84a23ce3feff0b1358d60 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3001 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/duo.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/duo.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/encoder.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/encoder.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/for_redcloth.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/for_redcloth.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/scanner.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/scanner.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/style.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/style.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/token_classes.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/token_classes.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/tokens.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/prop-base/tokens.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/duo.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/duo.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -module CodeRay - - # = Duo - # - # A Duo is a convenient way to use CodeRay. You just create a Duo, - # giving it a lang (language of the input code) and a format (desired - # output format), and call Duo#highlight with the code. - # - # Duo makes it easy to re-use both scanner and encoder for a repetitive - # task. It also provides a very easy interface syntax: - # - # require 'coderay' - # CodeRay::Duo[:python, :div].highlight 'import this' - # - # Until you want to do uncommon things with CodeRay, I recommend to use - # this method, since it takes care of everything. - class Duo - - attr_accessor :lang, :format, :options - - # Create a new Duo, holding a lang and a format to highlight code. - # - # simple: - # CodeRay::Duo[:ruby, :page].highlight 'bla 42' - # - # streaming: - # CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true - # - # with options: - # CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??' - # - # alternative syntax without options: - # CodeRay::Duo[:ruby => :statistic].encode 'class << self; end' - # - # alternative syntax with options: - # CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc' - # - # The options are forwarded to scanner and encoder - # (see CodeRay.get_scanner_options). - def initialize lang = nil, format = nil, options = {} - if format == nil and lang.is_a? Hash and lang.size == 1 - @lang = lang.keys.first - @format = lang[@lang] - else - @lang = lang - @format = format - end - @options = options - end - - class << self - # To allow calls like Duo[:ruby, :html].highlight. - alias [] new - end - - # The scanner of the duo. Only created once. - def scanner - @scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options) - end - - # The encoder of the duo. Only created once. - def encoder - @encoder ||= CodeRay.encoder @format, @options - end - - # Tokenize and highlight the code using +scanner+ and +encoder+. - # - # If the :stream option is set, the Duo will go into streaming mode, - # saving memory for the cost of time. - def encode code, options = { :stream => false } - stream = options.delete :stream - options = @options.merge options - if stream - encoder.encode_stream(code, @lang, options) - else - scanner.code = code - encoder.encode_tokens(scanner.tokenize, options) - end - end - alias highlight encode - - end - -end - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/encoder.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/encoder.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -module CodeRay - - # This module holds the Encoder class and its subclasses. - # For example, the HTML encoder is named CodeRay::Encoders::HTML - # can be found in coderay/encoders/html. - # - # Encoders also provides methods and constants for the register - # mechanism and the [] method that returns the Encoder class - # belonging to the given format. - module Encoders - extend PluginHost - plugin_path File.dirname(__FILE__), 'encoders' - - # = Encoder - # - # The Encoder base class. Together with Scanner and - # Tokens, it forms the highlighting triad. - # - # Encoder instances take a Tokens object and do something with it. - # - # The most common Encoder is surely the HTML encoder - # (CodeRay::Encoders::HTML). It highlights the code in a colorful - # html page. - # If you want the highlighted code in a div or a span instead, - # use its subclasses Div and Span. - class Encoder - extend Plugin - plugin_host Encoders - - attr_reader :token_stream - - class << self - - # Returns if the Encoder can be used in streaming mode. - def streamable? - is_a? Streamable - end - - # If FILE_EXTENSION isn't defined, this method returns the - # downcase class name instead. - def const_missing sym - if sym == :FILE_EXTENSION - plugin_id - else - super - end - end - - end - - # Subclasses are to store their default options in this constant. - DEFAULT_OPTIONS = { :stream => false } - - # The options you gave the Encoder at creating. - attr_accessor :options - - # Creates a new Encoder. - # +options+ is saved and used for all encode operations, as long - # as you don't overwrite it there by passing additional options. - # - # Encoder objects provide three encode methods: - # - encode simply takes a +code+ string and a +lang+ - # - encode_tokens expects a +tokens+ object instead - # - encode_stream is like encode, but uses streaming mode. - # - # Each method has an optional +options+ parameter. These are - # added to the options you passed at creation. - def initialize options = {} - @options = self.class::DEFAULT_OPTIONS.merge options - raise "I am only the basic Encoder class. I can't encode "\ - "anything. :( Use my subclasses." if self.class == Encoder - end - - # Encode a Tokens object. - def encode_tokens tokens, options = {} - options = @options.merge options - setup options - compile tokens, options - finish options - end - - # Encode the given +code+ after tokenizing it using the Scanner - # for +lang+. - def encode code, lang, options = {} - options = @options.merge options - scanner_options = CodeRay.get_scanner_options(options) - tokens = CodeRay.scan code, lang, scanner_options - encode_tokens tokens, options - end - - # You can use highlight instead of encode, if that seems - # more clear to you. - alias highlight encode - - # Encode the given +code+ using the Scanner for +lang+ in - # streaming mode. - def encode_stream code, lang, options = {} - raise NotStreamableError, self unless kind_of? Streamable - options = @options.merge options - setup options - scanner_options = CodeRay.get_scanner_options options - @token_stream = - CodeRay.scan_stream code, lang, scanner_options, &self - finish options - end - - # Behave like a proc. The token method is converted to a proc. - def to_proc - method(:token).to_proc - end - - # Return the default file extension for outputs of this encoder. - def file_extension - self.class::FILE_EXTENSION - end - - protected - - # Called with merged options before encoding starts. - # Sets @out to an empty string. - # - # See the HTML Encoder for an example of option caching. - def setup options - @out = '' - end - - # Called with +content+ and +kind+ of the currently scanned token. - # For simple scanners, it's enougth to implement this method. - # - # By default, it calls text_token or block_token, depending on - # whether +content+ is a String. - def token content, kind - encoded_token = - if content.is_a? ::String - text_token content, kind - elsif content.is_a? ::Symbol - block_token content, kind - else - raise 'Unknown token content type: %p' % [content] - end - append_encoded_token_to_output encoded_token - end - - def append_encoded_token_to_output encoded_token - @out << encoded_token if encoded_token && defined?(@out) && @out - end - - # Called for each text token ([text, kind]), where text is a String. - def text_token text, kind - end - - # Called for each block (non-text) token ([action, kind]), - # where +action+ is a Symbol. - # - # Calls open_token, close_token, begin_line, and end_line according to - # the value of +action+. - def block_token action, kind - case action - when :open - open_token kind - when :close - close_token kind - when :begin_line - begin_line kind - when :end_line - end_line kind - else - raise 'unknown block action: %p' % action - end - end - - # Called for each block token at the start of the block ([:open, kind]). - def open_token kind - end - - # Called for each block token end of the block ([:close, kind]). - def close_token kind - end - - # Called for each line token block at the start of the line ([:begin_line, kind]). - def begin_line kind - end - - # Called for each line token block at the end of the line ([:end_line, kind]). - def end_line kind - end - - # Called with merged options after encoding starts. - # The return value is the result of encoding, typically @out. - def finish options - @out - end - - # Do the encoding. - # - # The already created +tokens+ object must be used; it can be a - # TokenStream or a Tokens object. - if RUBY_VERSION >= '1.9' - def compile tokens, options - for text, kind in tokens - token text, kind - end - end - else - def compile tokens, options - tokens.each(&self) - end - end - - end - - end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/for_redcloth.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/for_redcloth.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -module CodeRay - - # A little hack to enable CodeRay highlighting in RedCloth. - # - # Usage: - # require 'coderay' - # require 'coderay/for_redcloth' - # RedCloth.new('@[ruby]puts "Hello, World!"@').to_html - # - # Make sure you have RedCloth 4.0.3 activated, for example by calling - # require 'rubygems' - # before RedCloth is loaded and before calling CodeRay.for_redcloth. - module ForRedCloth - - def self.install - gem 'RedCloth', '>= 4.0.3' if defined? gem - require 'redcloth' - unless RedCloth::VERSION.to_s >= '4.0.3' - if defined? gem - raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later. ' + - "You have #{RedCloth::VERSION}. Please gem install RedCloth." - else - $".delete 'redcloth.rb' # sorry, but it works - require 'rubygems' - return install # retry - end - end - unless RedCloth::VERSION.to_s >= '4.2.2' - warn 'CodeRay.for_redcloth works best with RedCloth version 4.2.2 or later.' - end - RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc - RedCloth::Formatters::HTML.module_eval do - def unescape(html) - replacements = { - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - html.gsub(/&(?:amp|quot|[gl]t);/) { |entity| replacements[entity] } - end - undef code, bc_open, bc_close, escape_pre - def code(opts) # :nodoc: - opts[:block] = true - if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' - # simulating pre-4.2 behavior - if opts[:text].sub!(/\A\[(\w+)\]/, '') - if CodeRay::Scanners[$1].plugin_id == 'plaintext' - opts[:text] = $& + opts[:text] - else - opts[:lang] = $1 - end - end - end - if opts[:lang] && !filter_coderay - require 'coderay' - @in_bc ||= nil - format = @in_bc ? :div : :span - opts[:text] = unescape(opts[:text]) unless @in_bc - highlighted_code = CodeRay.encode opts[:text], opts[:lang], format, :stream => true - highlighted_code.sub!(/\A<(span|div)/) { |m| m + pba(@in_bc || opts) } - highlighted_code - else - "#{opts[:text]}" - end - end - def bc_open(opts) # :nodoc: - opts[:block] = true - @in_bc = opts - opts[:lang] ? '' : "" - end - def bc_close(opts) # :nodoc: - opts = @in_bc - @in_bc = nil - opts[:lang] ? '' : "\n" - end - def escape_pre(text) - if @in_bc ||= nil - text - else - html_esc(text, :html_escape_preformatted) - end - end - end - end - - module TextileDoc # :nodoc: - attr_accessor :filter_coderay - end - - end - -end - -CodeRay::ForRedCloth.install \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/scanner.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/scanner.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,292 +0,0 @@ -module CodeRay - - require 'coderay/helpers/plugin' - - # = Scanners - # - # This module holds the Scanner class and its subclasses. - # For example, the Ruby scanner is named CodeRay::Scanners::Ruby - # can be found in coderay/scanners/ruby. - # - # Scanner also provides methods and constants for the register - # mechanism and the [] method that returns the Scanner class - # belonging to the given lang. - # - # See PluginHost. - module Scanners - extend PluginHost - plugin_path File.dirname(__FILE__), 'scanners' - - require 'strscan' - - # = Scanner - # - # The base class for all Scanners. - # - # It is a subclass of Ruby's great +StringScanner+, which - # makes it easy to access the scanning methods inside. - # - # It is also +Enumerable+, so you can use it like an Array of - # Tokens: - # - # require 'coderay' - # - # c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;" - # - # for text, kind in c_scanner - # puts text if kind == :operator - # end - # - # # prints: (*==)++; - # - # OK, this is a very simple example :) - # You can also use +map+, +any?+, +find+ and even +sort_by+, - # if you want. - class Scanner < StringScanner - - extend Plugin - plugin_host Scanners - - # Raised if a Scanner fails while scanning - ScanError = Class.new(Exception) - - require 'coderay/helpers/word_list' - - # The default options for all scanner classes. - # - # Define @default_options for subclasses. - DEFAULT_OPTIONS = { :stream => false } - - KINDS_NOT_LOC = [:comment, :doctype] - - class << self - - # Returns if the Scanner can be used in streaming mode. - def streamable? - is_a? Streamable - end - - def normify code - code = code.to_s - if code.respond_to? :force_encoding - debug, $DEBUG = $DEBUG, false - begin - code.force_encoding 'utf-8' - code[/\z/] # raises an ArgumentError when code contains a non-UTF-8 char - rescue ArgumentError - code.force_encoding 'binary' - ensure - $DEBUG = debug - end - end - code.to_unix - end - - def file_extension extension = nil - if extension - @file_extension = extension.to_s - else - @file_extension ||= plugin_id.to_s - end - end - - end - -=begin -## Excluded for speed reasons; protected seems to make methods slow. - - # Save the StringScanner methods from being called. - # This would not be useful for highlighting. - strscan_public_methods = - StringScanner.instance_methods - - StringScanner.ancestors[1].instance_methods - protected(*strscan_public_methods) -=end - - # Create a new Scanner. - # - # * +code+ is the input String and is handled by the superclass - # StringScanner. - # * +options+ is a Hash with Symbols as keys. - # It is merged with the default options of the class (you can - # overwrite default options here.) - # * +block+ is the callback for streamed highlighting. - # - # If you set :stream to +true+ in the options, the Scanner uses a - # TokenStream with the +block+ as callback to handle the tokens. - # - # Else, a Tokens object is used. - def initialize code='', options = {}, &block - raise "I am only the basic Scanner class. I can't scan "\ - "anything. :( Use my subclasses." if self.class == Scanner - - @options = self.class::DEFAULT_OPTIONS.merge options - - super Scanner.normify(code) - - @tokens = options[:tokens] - if @options[:stream] - warn "warning in CodeRay::Scanner.new: :stream is set, "\ - "but no block was given" unless block_given? - raise NotStreamableError, self unless kind_of? Streamable - @tokens ||= TokenStream.new(&block) - else - warn "warning in CodeRay::Scanner.new: Block given, "\ - "but :stream is #{@options[:stream]}" if block_given? - @tokens ||= Tokens.new - end - @tokens.scanner = self - - setup - end - - def reset - super - reset_instance - end - - def string= code - code = Scanner.normify(code) - super code - reset_instance - end - - # More mnemonic accessor name for the input string. - alias code string - alias code= string= - - # Returns the Plugin ID for this scanner. - def lang - self.class.plugin_id - end - - # Scans the code and returns all tokens in a Tokens object. - def tokenize new_string=nil, options = {} - options = @options.merge(options) - self.string = new_string if new_string - @cached_tokens = - if @options[:stream] # :stream must have been set already - reset unless new_string - scan_tokens @tokens, options - @tokens - else - scan_tokens @tokens, options - end - end - - def tokens - @cached_tokens ||= tokenize - end - - # Whether the scanner is in streaming mode. - def streaming? - !!@options[:stream] - end - - # Traverses the tokens. - def each &block - raise ArgumentError, - 'Cannot traverse TokenStream.' if @options[:stream] - tokens.each(&block) - end - include Enumerable - - # The current line position of the scanner. - # - # Beware, this is implemented inefficiently. It should be used - # for debugging only. - def line - string[0..pos].count("\n") + 1 - end - - def column pos = self.pos - return 0 if pos <= 0 - string = string() - if string.respond_to?(:bytesize) && (defined?(@bin_string) || string.bytesize != string.size) - @bin_string ||= string.dup.force_encoding('binary') - string = @bin_string - end - pos - (string.rindex(?\n, pos) || 0) - end - - def marshal_dump - @options - end - - def marshal_load options - @options = options - end - - protected - - # Can be implemented by subclasses to do some initialization - # that has to be done once per instance. - # - # Use reset for initialization that has to be done once per - # scan. - def setup - end - - # This is the central method, and commonly the only one a - # subclass implements. - # - # Subclasses must implement this method; it must return +tokens+ - # and must only use Tokens#<< for storing scanned tokens! - def scan_tokens tokens, options - raise NotImplementedError, - "#{self.class}#scan_tokens not implemented." - end - - def reset_instance - @tokens.clear unless @options[:keep_tokens] - @cached_tokens = nil - @bin_string = nil if defined? @bin_string - end - - # Scanner error with additional status information - def raise_inspect msg, tokens, state = 'No state given!', ambit = 30 - raise ScanError, <<-EOE % [ - - -***ERROR in %s: %s (after %d tokens) - -tokens: -%s - -current line: %d column: %d pos: %d -matched: %p state: %p -bol? = %p, eos? = %p - -surrounding code: -%p ~~ %p - - -***ERROR*** - - EOE - File.basename(caller[0]), - msg, - tokens.size, - tokens.last(10).map { |t| t.inspect }.join("\n"), - line, column, pos, - matched, state, bol?, eos?, - string[pos - ambit, ambit], - string[pos, ambit], - ] - end - - end - - end -end - -class String - # I love this hack. It seems to silence all dos/unix/mac newline problems. - def to_unix - if index ?\r - gsub(/\r\n?/, "\n") - else - self - end - end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/style.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/style.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -module CodeRay - - # This module holds the Style class and its subclasses. - # - # See Plugin. - module Styles - extend PluginHost - plugin_path File.dirname(__FILE__), 'styles' - - class Style - extend Plugin - plugin_host Styles - - DEFAULT_OPTIONS = { } - - end - - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/token_classes.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/token_classes.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -module CodeRay - class Tokens - ClassOfKind = Hash.new do |h, k| - h[k] = k.to_s - end - ClassOfKind.update with = { - :annotation => 'at', - :attribute_name => 'an', - :attribute_name_fat => 'af', - :attribute_value => 'av', - :attribute_value_fat => 'aw', - :bin => 'bi', - :char => 'ch', - :class => 'cl', - :class_variable => 'cv', - :color => 'cr', - :comment => 'c', - :complex => 'cm', - :constant => 'co', - :content => 'k', - :decorator => 'de', - :definition => 'df', - :delimiter => 'dl', - :directive => 'di', - :doc => 'do', - :doctype => 'dt', - :doc_string => 'ds', - :entity => 'en', - :error => 'er', - :escape => 'e', - :exception => 'ex', - :float => 'fl', - :function => 'fu', - :global_variable => 'gv', - :hex => 'hx', - :imaginary => 'cm', - :important => 'im', - :include => 'ic', - :inline => 'il', - :inline_delimiter => 'idl', - :instance_variable => 'iv', - :integer => 'i', - :interpreted => 'in', - :keyword => 'kw', - :key => 'ke', - :label => 'la', - :local_variable => 'lv', - :modifier => 'mod', - :oct => 'oc', - :operator_fat => 'of', - :pre_constant => 'pc', - :pre_type => 'pt', - :predefined => 'pd', - :preprocessor => 'pp', - :pseudo_class => 'ps', - :regexp => 'rx', - :reserved => 'r', - :shell => 'sh', - :string => 's', - :symbol => 'sy', - :tag => 'ta', - :tag_fat => 'tf', - :tag_special => 'ts', - :type => 'ty', - :variable => 'v', - :value => 'vl', - :xml_text => 'xt', - - :insert => 'ins', - :delete => 'del', - :change => 'chg', - :head => 'head', - - :ident => :NO_HIGHLIGHT, # 'id' - #:operator => 'op', - :operator => :NO_HIGHLIGHT, # 'op' - :space => :NO_HIGHLIGHT, # 'sp' - :plain => :NO_HIGHLIGHT, - } - ClassOfKind[:method] = ClassOfKind[:function] - ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] - ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] - ClassOfKind[:escape] = ClassOfKind[:delimiter] - #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' - end -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/tokens.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/.svn/text-base/tokens.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -module CodeRay - - # = Tokens - # - # The Tokens class represents a list of tokens returnd from - # a Scanner. - # - # A token is not a special object, just a two-element Array - # consisting of - # * the _token_ _kind_ (a Symbol representing the type of the token) - # * the _token_ _text_ (the original source of the token in a String) - # - # A token looks like this: - # - # [:comment, '# It looks like this'] - # [:float, '3.1415926'] - # [:error, '$^'] - # - # Some scanners also yield some kind of sub-tokens, represented by special - # token texts, namely :open and :close . - # - # The Ruby scanner, for example, splits "a string" into: - # - # [ - # [:open, :string], - # [:delimiter, '"'], - # [:content, 'a string'], - # [:delimiter, '"'], - # [:close, :string] - # ] - # - # Tokens is also the interface between Scanners and Encoders: - # The input is split and saved into a Tokens object. The Encoder - # then builds the output from this object. - # - # Thus, the syntax below becomes clear: - # - # CodeRay.scan('price = 2.59', :ruby).html - # # the Tokens object is here -------^ - # - # See how small it is? ;) - # - # Tokens gives you the power to handle pre-scanned code very easily: - # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string - # that you put in your DB. - # - # Tokens' subclass TokenStream allows streaming to save memory. - class Tokens < Array - - # The Scanner instance that created the tokens. - attr_accessor :scanner - - # Whether the object is a TokenStream. - # - # Returns false. - def stream? - false - end - - # Iterates over all tokens. - # - # If a filter is given, only tokens of that kind are yielded. - def each kind_filter = nil, &block - unless kind_filter - super(&block) - else - super() do |text, kind| - next unless kind == kind_filter - yield text, kind - end - end - end - - # Iterates over all text tokens. - # Range tokens like [:open, :string] are left out. - # - # Example: - # tokens.each_text_token { |text, kind| text.replace html_escape(text) } - def each_text_token - each do |text, kind| - next unless text.is_a? ::String - yield text, kind - end - end - - # Encode the tokens using encoder. - # - # encoder can be - # * a symbol like :html oder :statistic - # * an Encoder class - # * an Encoder object - # - # options are passed to the encoder. - def encode encoder, options = {} - unless encoder.is_a? Encoders::Encoder - unless encoder.is_a? Class - encoder_class = Encoders[encoder] - end - encoder = encoder_class.new options - end - encoder.encode_tokens self, options - end - - - # Turn into a string using Encoders::Text. - # - # +options+ are passed to the encoder if given. - def to_s options = {} - encode :text, options - end - - # Redirects unknown methods to encoder calls. - # - # For example, if you call +tokens.html+, the HTML encoder - # is used to highlight the tokens. - def method_missing meth, options = {} - Encoders[meth].new(options).encode_tokens self - end - - # Returns the tokens compressed by joining consecutive - # tokens of the same kind. - # - # This can not be undone, but should yield the same output - # in most Encoders. It basically makes the output smaller. - # - # Combined with dump, it saves space for the cost of time. - # - # If the scanner is written carefully, this is not required - - # for example, consecutive //-comment lines could already be - # joined in one comment token by the Scanner. - def optimize - last_kind = last_text = nil - new = self.class.new - for text, kind in self - if text.is_a? String - if kind == last_kind - last_text << text - else - new << [last_text, last_kind] if last_kind - last_text = text - last_kind = kind - end - else - new << [last_text, last_kind] if last_kind - last_kind = last_text = nil - new << [text, kind] - end - end - new << [last_text, last_kind] if last_kind - new - end - - # Compact the object itself; see optimize. - def optimize! - replace optimize - end - - # Ensure that all :open tokens have a correspondent :close one. - # - # TODO: Test this! - def fix - tokens = self.class.new - # Check token nesting using a stack of kinds. - opened = [] - for type, kind in self - case type - when :open - opened.push [:close, kind] - when :begin_line - opened.push [:end_line, kind] - when :close, :end_line - expected = opened.pop - if [type, kind] != expected - # Unexpected :close; decide what to do based on the kind: - # - token was never opened: delete the :close (just skip it) - next unless opened.rindex expected - # - token was opened earlier: also close tokens in between - tokens << token until (token = opened.pop) == expected - end - end - tokens << [type, kind] - end - # Close remaining opened tokens - tokens << token while token = opened.pop - tokens - end - - def fix! - replace fix - end - - # TODO: Scanner#split_into_lines - # - # Makes sure that: - # - newlines are single tokens - # (which means all other token are single-line) - # - there are no open tokens at the end the line - # - # This makes it simple for encoders that work line-oriented, - # like HTML with list-style numeration. - def split_into_lines - raise NotImplementedError - end - - def split_into_lines! - replace split_into_lines - end - - # Dumps the object into a String that can be saved - # in files or databases. - # - # The dump is created with Marshal.dump; - # In addition, it is gzipped using GZip.gzip. - # - # The returned String object includes Undumping - # so it has an #undump method. See Tokens.load. - # - # You can configure the level of compression, - # but the default value 7 should be what you want - # in most cases as it is a good compromise between - # speed and compression rate. - # - # See GZip module. - def dump gzip_level = 7 - require 'coderay/helpers/gzip_simple' - dump = Marshal.dump self - dump = dump.gzip gzip_level - dump.extend Undumping - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text_size - size = 0 - each_text_token do |t, k| - size + t.size - end - size - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text - map { |t, k| t if t.is_a? ::String }.join - end - - # Include this module to give an object an #undump - # method. - # - # The string returned by Tokens.dump includes Undumping. - module Undumping - # Calls Tokens.load with itself. - def undump - Tokens.load self - end - end - - # Undump the object using Marshal.load, then - # unzip it using GZip.gunzip. - # - # The result is commonly a Tokens object, but - # this is not guaranteed. - def Tokens.load dump - require 'coderay/helpers/gzip_simple' - dump = dump.gunzip - @dump = Marshal.load dump - end - - end - - - # = TokenStream - # - # The TokenStream class is a fake Array without elements. - # - # It redirects the method << to a block given at creation. - # - # This allows scanners and Encoders to use streaming (no - # tokens are saved, the input is highlighted the same time it - # is scanned) with the same code. - # - # See CodeRay.encode_stream and CodeRay.scan_stream - class TokenStream < Tokens - - # Whether the object is a TokenStream. - # - # Returns true. - def stream? - true - end - - # The Array is empty, but size counts the tokens given by <<. - attr_reader :size - - # Creates a new TokenStream that calls +block+ whenever - # its << method is called. - # - # Example: - # - # require 'coderay' - # - # token_stream = CodeRay::TokenStream.new do |kind, text| - # puts 'kind: %s, text size: %d.' % [kind, text.size] - # end - # - # token_stream << [:regexp, '/\d+/'] - # #-> kind: rexpexp, text size: 5. - # - def initialize &block - raise ArgumentError, 'Block expected for streaming.' unless block - @callback = block - @size = 0 - end - - # Calls +block+ with +token+ and increments size. - # - # Returns self. - def << token - @callback.call(*token) - @size += 1 - self - end - - # This method is not implemented due to speed reasons. Use Tokens. - def text_size - raise NotImplementedError, - 'This method is not implemented due to speed reasons.' - end - - # A TokenStream cannot be dumped. Use Tokens. - def dump - raise NotImplementedError, 'A TokenStream cannot be dumped.' - end - - # A TokenStream cannot be optimized. Use Tokens. - def optimize - raise NotImplementedError, 'A TokenStream cannot be optimized.' - end - - end - -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokensTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Tokens < Array - tokens = nil - assert_nothing_raised do - tokens = CodeRay::Tokens.new - end - assert_kind_of Array, tokens - end - - def test_adding_tokens - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - assert_equal tokens.size, 2 - end - - def test_dump_undump - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - tokens2 = nil - assert_nothing_raised do - tokens2 = tokens.dump.undump - end - assert_equal tokens, tokens2 - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/duo.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/duo.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -module CodeRay - - # = Duo - # - # A Duo is a convenient way to use CodeRay. You just create a Duo, - # giving it a lang (language of the input code) and a format (desired - # output format), and call Duo#highlight with the code. - # - # Duo makes it easy to re-use both scanner and encoder for a repetitive - # task. It also provides a very easy interface syntax: - # - # require 'coderay' - # CodeRay::Duo[:python, :div].highlight 'import this' - # - # Until you want to do uncommon things with CodeRay, I recommend to use - # this method, since it takes care of everything. - class Duo - - attr_accessor :lang, :format, :options - - # Create a new Duo, holding a lang and a format to highlight code. - # - # simple: - # CodeRay::Duo[:ruby, :page].highlight 'bla 42' - # - # streaming: - # CodeRay::Duo[:ruby, :page].highlight 'bar 23', :stream => true - # - # with options: - # CodeRay::Duo[:ruby, :html, :hint => :debug].highlight '????::??' - # - # alternative syntax without options: - # CodeRay::Duo[:ruby => :statistic].encode 'class << self; end' - # - # alternative syntax with options: - # CodeRay::Duo[{ :ruby => :statistic }, :do => :something].encode 'abc' - # - # The options are forwarded to scanner and encoder - # (see CodeRay.get_scanner_options). - def initialize lang = nil, format = nil, options = {} - if format == nil and lang.is_a? Hash and lang.size == 1 - @lang = lang.keys.first - @format = lang[@lang] - else - @lang = lang - @format = format - end - @options = options - end - - class << self - # To allow calls like Duo[:ruby, :html].highlight. - alias [] new - end - - # The scanner of the duo. Only created once. - def scanner - @scanner ||= CodeRay.scanner @lang, CodeRay.get_scanner_options(@options) - end - - # The encoder of the duo. Only created once. - def encoder - @encoder ||= CodeRay.encoder @format, @options - end - - # Tokenize and highlight the code using +scanner+ and +encoder+. - # - # If the :stream option is set, the Duo will go into streaming mode, - # saving memory for the cost of time. - def encode code, options = { :stream => false } - stream = options.delete :stream - options = @options.merge options - if stream - encoder.encode_stream(code, @lang, options) - else - scanner.code = code - encoder.encode_tokens(scanner.tokenize, options) - end - end - alias highlight encode - - end - -end - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoder.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoder.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -module CodeRay - - # This module holds the Encoder class and its subclasses. - # For example, the HTML encoder is named CodeRay::Encoders::HTML - # can be found in coderay/encoders/html. - # - # Encoders also provides methods and constants for the register - # mechanism and the [] method that returns the Encoder class - # belonging to the given format. - module Encoders - extend PluginHost - plugin_path File.dirname(__FILE__), 'encoders' - - # = Encoder - # - # The Encoder base class. Together with Scanner and - # Tokens, it forms the highlighting triad. - # - # Encoder instances take a Tokens object and do something with it. - # - # The most common Encoder is surely the HTML encoder - # (CodeRay::Encoders::HTML). It highlights the code in a colorful - # html page. - # If you want the highlighted code in a div or a span instead, - # use its subclasses Div and Span. - class Encoder - extend Plugin - plugin_host Encoders - - attr_reader :token_stream - - class << self - - # Returns if the Encoder can be used in streaming mode. - def streamable? - is_a? Streamable - end - - # If FILE_EXTENSION isn't defined, this method returns the - # downcase class name instead. - def const_missing sym - if sym == :FILE_EXTENSION - plugin_id - else - super - end - end - - end - - # Subclasses are to store their default options in this constant. - DEFAULT_OPTIONS = { :stream => false } - - # The options you gave the Encoder at creating. - attr_accessor :options - - # Creates a new Encoder. - # +options+ is saved and used for all encode operations, as long - # as you don't overwrite it there by passing additional options. - # - # Encoder objects provide three encode methods: - # - encode simply takes a +code+ string and a +lang+ - # - encode_tokens expects a +tokens+ object instead - # - encode_stream is like encode, but uses streaming mode. - # - # Each method has an optional +options+ parameter. These are - # added to the options you passed at creation. - def initialize options = {} - @options = self.class::DEFAULT_OPTIONS.merge options - raise "I am only the basic Encoder class. I can't encode "\ - "anything. :( Use my subclasses." if self.class == Encoder - end - - # Encode a Tokens object. - def encode_tokens tokens, options = {} - options = @options.merge options - setup options - compile tokens, options - finish options - end - - # Encode the given +code+ after tokenizing it using the Scanner - # for +lang+. - def encode code, lang, options = {} - options = @options.merge options - scanner_options = CodeRay.get_scanner_options(options) - tokens = CodeRay.scan code, lang, scanner_options - encode_tokens tokens, options - end - - # You can use highlight instead of encode, if that seems - # more clear to you. - alias highlight encode - - # Encode the given +code+ using the Scanner for +lang+ in - # streaming mode. - def encode_stream code, lang, options = {} - raise NotStreamableError, self unless kind_of? Streamable - options = @options.merge options - setup options - scanner_options = CodeRay.get_scanner_options options - @token_stream = - CodeRay.scan_stream code, lang, scanner_options, &self - finish options - end - - # Behave like a proc. The token method is converted to a proc. - def to_proc - method(:token).to_proc - end - - # Return the default file extension for outputs of this encoder. - def file_extension - self.class::FILE_EXTENSION - end - - protected - - # Called with merged options before encoding starts. - # Sets @out to an empty string. - # - # See the HTML Encoder for an example of option caching. - def setup options - @out = '' - end - - # Called with +content+ and +kind+ of the currently scanned token. - # For simple scanners, it's enougth to implement this method. - # - # By default, it calls text_token or block_token, depending on - # whether +content+ is a String. - def token content, kind - encoded_token = - if content.is_a? ::String - text_token content, kind - elsif content.is_a? ::Symbol - block_token content, kind - else - raise 'Unknown token content type: %p' % [content] - end - append_encoded_token_to_output encoded_token - end - - def append_encoded_token_to_output encoded_token - @out << encoded_token if encoded_token && defined?(@out) && @out - end - - # Called for each text token ([text, kind]), where text is a String. - def text_token text, kind - end - - # Called for each block (non-text) token ([action, kind]), - # where +action+ is a Symbol. - # - # Calls open_token, close_token, begin_line, and end_line according to - # the value of +action+. - def block_token action, kind - case action - when :open - open_token kind - when :close - close_token kind - when :begin_line - begin_line kind - when :end_line - end_line kind - else - raise 'unknown block action: %p' % action - end - end - - # Called for each block token at the start of the block ([:open, kind]). - def open_token kind - end - - # Called for each block token end of the block ([:close, kind]). - def close_token kind - end - - # Called for each line token block at the start of the line ([:begin_line, kind]). - def begin_line kind - end - - # Called for each line token block at the end of the line ([:end_line, kind]). - def end_line kind - end - - # Called with merged options after encoding starts. - # The return value is the result of encoding, typically @out. - def finish options - @out - end - - # Do the encoding. - # - # The already created +tokens+ object must be used; it can be a - # TokenStream or a Tokens object. - if RUBY_VERSION >= '1.9' - def compile tokens, options - for text, kind in tokens - token text, kind - end - end - else - def compile tokens, options - tokens.each(&self) - end - end - - end - - end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,643 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/encoders -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -div.rb -file - - - - -2010-09-23T14:37:45.643761Z -f0c5be15265facadc46889fbbc2613f1 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -232 - -text.rb -file - - - - -2010-09-23T14:37:45.651759Z -2914ed90921556a01a79f3fb6d549b09 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -400 - -filter.rb -file - - - - -2010-09-23T14:37:45.643761Z -08591bbd1f20dc7dce67030a294d1636 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1595 - -debug.rb -file - - - - -2010-09-23T14:37:45.643761Z -9e878089035fe9ad88c808bd1a15cf7a -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -835 - -count.rb -file - - - - -2010-09-23T14:37:45.643761Z -c262d84ddbdf37e99ff6bcf6dd6a66c2 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -230 - -lines_of_code.rb -file - - - - -2010-09-23T14:37:45.647759Z -966e154458fb6c665b6d62aa90d07e18 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2395 - -xml.rb -file - - - - -2010-09-23T14:37:45.651759Z -ada7effba81bbc28f41efeaef69dcc51 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1367 - -span.rb -file - - - - -2010-09-23T14:37:45.647759Z -e4228be45ad0f818a0e125caee838d56 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -236 - -html -dir - -yaml.rb -file - - - - -2010-09-23T14:37:45.651759Z -04c428b240ef44de896ad15827cf51df -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -264 - -html.rb -file - - - - -2010-09-23T14:37:45.643761Z -85370d734631d5ad2c034541e66e2910 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7856 - -comment_filter.rb -file - - - - -2010-09-23T14:37:45.643761Z -32f2d1a9db6f58636d3946a43b5a60f0 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -808 - -statistic.rb -file - - - - -2010-09-23T14:37:45.647759Z -49017735ef679f73dd65795e30d8e5c7 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1800 - -term.rb -file - - - - -2010-09-23T14:37:45.647759Z -422a51cd181de3cc0a55aba7f9915c18 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4324 - -json.rb -file - - - - -2010-09-23T14:37:45.647759Z -86a2dcae2ef0a971f70386c3b794469f -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1570 - -null.rb -file - - - - -2010-09-23T14:37:45.647759Z -9c9dcf3ba3f2effa5ebd4cd37417db36 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -320 - -token_class_filter.rb -file - - - - -2010-09-23T14:37:45.651759Z -e59791dbcdce328f09240e7e5c8b3d0e -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2546 - -page.rb -file - - - - -2010-09-23T14:37:45.647759Z -26da5aef43dc8731fbd63dcffea259bf -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -262 - -_map.rb -file - - - - -2010-09-23T14:37:45.643761Z -964d7ee16d213ab2e41418257f1eb8aa -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -167 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/_map.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/comment_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/comment_filter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/count.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/count.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/debug.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/div.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/div.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/filter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/html.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/json.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/lines_of_code.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/lines_of_code.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/null.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/null.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/page.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/page.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/span.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/span.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/statistic.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/statistic.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/term.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/term.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/text.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/text.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/token_class_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/token_class_filter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/xml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/prop-base/yaml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/_map.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -module CodeRay -module Encoders - - map \ - :loc => :lines_of_code, - :plain => :text, - :stats => :statistic, - :terminal => :term, - :tex => :latex - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/comment_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/comment_filter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :token_class_filter - - class CommentFilter < TokenClassFilter - - register_for :comment_filter - - DEFAULT_OPTIONS = superclass::DEFAULT_OPTIONS.merge \ - :exclude => [:comment] - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class CommentFilterTest < Test::Unit::TestCase - - def test_filtering_comments - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal <<-RUBY_FILTERED, tokens.comment_filter.text -#!/usr/bin/env ruby - -puts "Hello world!" - RUBY_FILTERED - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/count.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/count.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Encoders - - class Count < Encoder - - include Streamable - register_for :count - - protected - - def setup options - @out = 0 - end - - def token text, kind - @out += 1 - end - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/debug.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -module CodeRay -module Encoders - - # = Debug Encoder - # - # Fast encoder producing simple debug output. - # - # It is readable and diff-able and is used for testing. - # - # You cannot fully restore the tokens information from the - # output, because consecutive :space tokens are merged. - # Use Tokens#dump for caching purposes. - class Debug < Encoder - - include Streamable - register_for :debug - - FILE_EXTENSION = 'raydebug' - - protected - def text_token text, kind - if kind == :space - text - else - text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ - "#{kind}(#{text})" - end - end - - def open_token kind - "#{kind}<" - end - - def close_token kind - ">" - end - - def begin_line kind - "#{kind}[" - end - - def end_line kind - "]" - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/div.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/div.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Div < HTML - - FILE_EXTENSION = 'div.html' - - register_for :div - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :div - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/filter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - class Filter < Encoder - - register_for :filter - - protected - def setup options - @out = Tokens.new - end - - def text_token text, kind - [text, kind] if include_text_token? text, kind - end - - def include_text_token? text, kind - true - end - - def block_token action, kind - [action, kind] if include_block_token? action, kind - end - - def include_block_token? action, kind - true - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::Filter < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :filter - end - assert_kind_of CodeRay::Encoders::Encoder, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [i.to_s, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/html.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,305 +0,0 @@ -require 'set' - -module CodeRay -module Encoders - - # = HTML Encoder - # - # This is CodeRay's most important highlighter: - # It provides save, fast XHTML generation and CSS support. - # - # == Usage - # - # require 'coderay' - # puts CodeRay.scan('Some /code/', :ruby).html #-> a HTML page - # puts CodeRay.scan('Some /code/', :ruby).html(:wrap => :span) - # #-> Some /code/ - # puts CodeRay.scan('Some /code/', :ruby).span #-> the same - # - # puts CodeRay.scan('Some code', :ruby).html( - # :wrap => nil, - # :line_numbers => :inline, - # :css => :style - # ) - # #-> 1 Some code - # - # == Options - # - # === :tab_width - # Convert \t characters to +n+ spaces (a number.) - # Default: 8 - # - # === :css - # How to include the styles; can be :class or :style. - # - # Default: :class - # - # === :wrap - # Wrap in :page, :div, :span or nil. - # - # You can also use Encoders::Div and Encoders::Span. - # - # Default: nil - # - # === :title - # - # The title of the HTML page (works only when :wrap is set to :page.) - # - # Default: 'CodeRay output' - # - # === :line_numbers - # Include line numbers in :table, :inline, :list or nil (no line numbers) - # - # Default: nil - # - # === :line_number_start - # Where to start with line number counting. - # - # Default: 1 - # - # === :bold_every - # Make every +n+-th number appear bold. - # - # Default: 10 - # - # === :highlight_lines - # - # Highlights certain line numbers. - # Can be any Enumerable, typically just an Array or Range, of numbers. - # - # Bolding is deactivated when :highlight_lines is set. It only makes sense - # in combination with :line_numbers. - # - # Default: nil - # - # === :hint - # Include some information into the output using the title attribute. - # Can be :info (show token type on mouse-over), :info_long (with full path) - # or :debug (via inspect). - # - # Default: false - class HTML < Encoder - - include Streamable - register_for :html - - FILE_EXTENSION = 'html' - - DEFAULT_OPTIONS = { - :tab_width => 8, - - :css => :class, - - :style => :cycnus, - :wrap => nil, - :title => 'CodeRay output', - - :line_numbers => nil, - :line_number_start => 1, - :bold_every => 10, - :highlight_lines => nil, - - :hint => false, - } - - helper :output, :css - - attr_reader :css - - protected - - HTML_ESCAPE = { #:nodoc: - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - - # This was to prevent illegal HTML. - # Strange chars should still be avoided in codes. - evil_chars = Array(0x00...0x20) - [?\n, ?\t, ?\s] - evil_chars.each { |i| HTML_ESCAPE[i.chr] = ' ' } - #ansi_chars = Array(0x7f..0xff) - #ansi_chars.each { |i| HTML_ESCAPE[i.chr] = '&#%d;' % i } - # \x9 (\t) and \xA (\n) not included - #HTML_ESCAPE_PATTERN = /[\t&"><\0-\x8\xB-\x1f\x7f-\xff]/ - HTML_ESCAPE_PATTERN = /[\t"&><\0-\x8\xB-\x1f]/ - - TOKEN_KIND_TO_INFO = Hash.new { |h, kind| - h[kind] = - case kind - when :pre_constant - 'Predefined constant' - else - kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } - end - } - - TRANSPARENT_TOKEN_KINDS = [ - :delimiter, :modifier, :content, :escape, :inline_delimiter, - ].to_set - - # Generate a hint about the given +classes+ in a +hint+ style. - # - # +hint+ may be :info, :info_long or :debug. - def self.token_path_to_hint hint, classes - title = - case hint - when :info - TOKEN_KIND_TO_INFO[classes.first] - when :info_long - classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') - when :debug - classes.inspect - end - title ? " title=\"#{title}\"" : '' - end - - def setup options - super - - @HTML_ESCAPE = HTML_ESCAPE.dup - @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] - - @opened = [nil] - @css = CSS.new options[:style] - - hint = options[:hint] - if hint and not [:debug, :info, :info_long].include? hint - raise ArgumentError, "Unknown value %p for :hint; \ - expected :info, :debug, false, or nil." % hint - end - - case options[:css] - - when :class - @css_style = Hash.new do |h, k| - c = CodeRay::Tokens::ClassOfKind[k.first] - if c == :NO_HIGHLIGHT and not hint - h[k.dup] = false - else - title = if hint - HTML.token_path_to_hint(hint, k[1..-1] << k.first) - else - '' - end - if c == :NO_HIGHLIGHT - h[k.dup] = '' % [title] - else - h[k.dup] = '' % [title, c] - end - end - end - - when :style - @css_style = Hash.new do |h, k| - if k.is_a? ::Array - styles = k.dup - else - styles = [k] - end - type = styles.first - classes = styles.map { |c| Tokens::ClassOfKind[c] } - if classes.first == :NO_HIGHLIGHT and not hint - h[k] = false - else - styles.shift if TRANSPARENT_TOKEN_KINDS.include? styles.first - title = HTML.token_path_to_hint hint, styles - style = @css[*classes] - h[k] = - if style - '' % [title, style] - else - false - end - end - end - - else - raise ArgumentError, "Unknown value %p for :css." % options[:css] - - end - end - - def finish options - not_needed = @opened.shift - @out << '' * @opened.size - unless @opened.empty? - warn '%d tokens still open: %p' % [@opened.size, @opened] - end - - @out.extend Output - @out.css = @css - @out.numerize! options[:line_numbers], options - @out.wrap! options[:wrap] - @out.apply_title! options[:title] - - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - if text =~ /#{HTML_ESCAPE_PATTERN}/o - text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } - end - @opened[0] = type - if text != "\n" && style = @css_style[@opened] - @out << style << text << '' - else - @out << text - end - - - # token groups, eg. strings - when :open - @opened[0] = type - @out << (@css_style[@opened] || '') - @opened << type - when :close - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a token (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '' - @opened.pop - end - - # whole lines to be highlighted, eg. a deleted line in a diff - when :begin_line - @opened[0] = type - if style = @css_style[@opened] - @out << style.sub('' - end - @opened << type - when :end_line - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a line (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '
    ' - @opened.pop - end - - else - raise 'unknown token kind: %p' % [text] - - end - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/json.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # = JSON Encoder - class JSON < Encoder - - register_for :json - FILE_EXTENSION = 'json' - - protected - def setup options - begin - require 'json' - rescue LoadError - require 'rubygems' - require 'json' - end - @out = [] - end - - def text_token text, kind - { :type => 'text', :text => text, :kind => kind } - end - - def block_token action, kind - { :type => 'block', :action => action, :kind => kind } - end - - def finish options - @out.to_json - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' -$:.delete '.' -require 'rubygems' if RUBY_VERSION < '1.9' - -class JSONEncoderTest < Test::Unit::TestCase - - def test_json_output - tokens = CodeRay.scan <<-RUBY, :ruby -puts "Hello world!" - RUBY - require 'json' - assert_equal [ - {"type"=>"text", "text"=>"puts", "kind"=>"ident"}, - {"type"=>"text", "text"=>" ", "kind"=>"space"}, - {"type"=>"block", "action"=>"open", "kind"=>"string"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"text", "text"=>"Hello world!", "kind"=>"content"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"block", "action"=>"close", "kind"=>"string"}, - {"type"=>"text", "text"=>"\n", "kind"=>"space"} - ], JSON.load(tokens.json) - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/lines_of_code.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/lines_of_code.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # Counts the LoC (Lines of Code). Returns an Integer >= 0. - # - # Alias: :loc - # - # Everything that is not comment, markup, doctype/shebang, or an empty line, - # is considered to be code. - # - # For example, - # * HTML files not containing JavaScript have 0 LoC - # * in a Java class without comments, LoC is the number of non-empty lines - # - # A Scanner class should define the token kinds that are not code in the - # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. - class LinesOfCode < Encoder - - register_for :lines_of_code - - NON_EMPTY_LINE = /^\s*\S.*$/ - - def compile tokens, options - if scanner = tokens.scanner - kinds_not_loc = scanner.class::KINDS_NOT_LOC - else - warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE - kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC - end - code = tokens.token_class_filter :exclude => kinds_not_loc - @loc = code.text.scan(NON_EMPTY_LINE).size - end - - def finish options - @loc - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class LinesOfCodeTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :loc - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - assert_nothing_raised do - filter = CodeRay.encoder :lines_of_code - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - end - - def test_lines_of_code - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby - -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 1, tokens.lines_of_code - assert_equal 1, tokens.loc - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - tokens << ["Hello\n", :world] - tokens << ["Hello\n", :space] - tokens << ["Hello\n", :comment] - assert_equal 2, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 2, tokens.lines_of_code - assert_equal 2, tokens.loc - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/null.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/null.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -module CodeRay -module Encoders - - # = Null Encoder - # - # Does nothing and returns an empty string. - class Null < Encoder - - include Streamable - register_for :null - - # Defined for faster processing - def to_proc - proc {} - end - - protected - - def token(*) - # do nothing - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/page.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/page.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Page < HTML - - FILE_EXTENSION = 'html' - - register_for :page - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :class, - :wrap => :page, - :line_numbers => :table - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/span.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/span.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Span < HTML - - FILE_EXTENSION = 'span.html' - - register_for :span - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :span - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/statistic.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/statistic.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -module CodeRay -module Encoders - - # Makes a statistic for the given tokens. - class Statistic < Encoder - - include Streamable - register_for :stats, :statistic - - attr_reader :type_stats, :real_token_count - - protected - - TypeStats = Struct.new :count, :size - - def setup options - @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } - @real_token_count = 0 - end - - def generate tokens, options - @tokens = tokens - super - end - - def text_token text, kind - @real_token_count += 1 unless kind == :space - @type_stats[kind].count += 1 - @type_stats[kind].size += text.size - @type_stats['TOTAL'].size += text.size - @type_stats['TOTAL'].count += 1 - end - - # TODO Hierarchy handling - def block_token action, kind - @type_stats['TOTAL'].count += 1 - @type_stats['open/close'].count += 1 - end - - STATS = <<-STATS - -Code Statistics - -Tokens %8d - Non-Whitespace %8d -Bytes Total %8d - -Token Types (%d): - type count ratio size (average) -------------------------------------------------------------- -%s - STATS -# space 12007 33.81 % 1.7 - TOKEN_TYPES_ROW = <<-TKR - %-20s %8d %6.2f %% %5.1f - TKR - - def finish options - all = @type_stats['TOTAL'] - all_count, all_size = all.count, all.size - @type_stats.each do |type, stat| - stat.size /= stat.count.to_f - end - types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| - TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] - end.join - STATS % [ - all_count, @real_token_count, all_size, - @type_stats.delete_if { |k, v| k.is_a? String }.size, - types_stats - ] - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/term.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/term.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -# encoders/term.rb -# By Rob Aldred (http://robaldred.co.uk) -# Based on idea by Nathan Weizenbaum (http://nex-3.com) -# MIT License (http://www.opensource.org/licenses/mit-license.php) -# -# A CodeRay encoder that outputs code highlighted for a color terminal. -# Check out http://robaldred.co.uk - -module CodeRay - module Encoders - class Term < Encoder - register_for :term - - TOKEN_COLORS = { - :annotation => '35', - :attribute_name => '33', - :attribute_name_fat => '33', - :attribute_value => '31', - :attribute_value_fat => '31', - :bin => '1;35', - :char => {:self => '36', :delimiter => '34'}, - :class => '1;35', - :class_variable => '36', - :color => '32', - :comment => '37', - :complex => '34', - :constant => ['34', '4'], - :decoration => '35', - :definition => '1;32', - :directive => ['32', '4'], - :doc => '46', - :doctype => '1;30', - :doc_string => ['31', '4'], - :entity => '33', - :error => ['1;33', '41'], - :exception => '1;31', - :float => '1;35', - :function => '1;34', - :global_variable => '42', - :hex => '1;36', - :important => '1;31', - :include => '33', - :integer => '1;34', - :interpreted => '1;35', - :key => '35', - :label => '1;4', - :local_variable => '33', - :oct => '1;35', - :operator_name => '1;29', - :pre_constant => '1;36', - :pre_type => '1;30', - :predefined => ['4', '1;34'], - :preprocessor => '36', - :pseudo_class => '34', - :regexp => { - :content => '31', - :delimiter => '1;29', - :modifier => '35', - :function => '1;29' - }, - :reserved => '1;31', - :shell => { - :self => '42', - :content => '1;29', - :delimiter => '37', - }, - :string => { - :self => '32', - :modifier => '1;32', - :escape => '1;36', - :delimiter => '1;32', - }, - :symbol => '1;32', - :tag => '34', - :tag_fat => '1;34', - :tag_special => ['34', '4'], - :type => '1;34', - :value => '36', - :variable => '34', - :insert => '42', - :delete => '41', - :change => '44', - :head => '45', - } - TOKEN_COLORS[:keyword] = TOKEN_COLORS[:reserved] - TOKEN_COLORS[:method] = TOKEN_COLORS[:function] - TOKEN_COLORS[:imaginary] = TOKEN_COLORS[:complex] - TOKEN_COLORS[:open] = TOKEN_COLORS[:close] = TOKEN_COLORS[:nesting_delimiter] = TOKEN_COLORS[:escape] = TOKEN_COLORS[:delimiter] - - protected - - def setup(options) - @out = '' - @opened = [nil] - @subcolors = nil - end - - def finish(options) - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - - if color = (@subcolors || TOKEN_COLORS)[type] - color = color[:self] || return if Hash === color - - @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0) - @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self] - else - @out << text - end - - # token groups, eg. strings - when :open - @opened[0] = type - if color = TOKEN_COLORS[type] - if Hash === color - @subcolors = color - @out << col(color[:self]) if color[:self] - else - @subcolors = {} - @out << col(color) - end - end - @opened << type - when :close - if @opened.empty? - # nothing to close - else - @out << col(0) if (@subcolors || {})[:self] - @subcolors = nil - @opened.pop - end - - # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff - when :begin_line - - when :end_line - - else - raise 'unknown token kind: %p' % [text] - end - end - - private - - def col(color) - Array(color).map { |c| "\e[#{c}m" }.join - end - end - end -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/text.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/text.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -module CodeRay -module Encoders - - class Text < Encoder - - include Streamable - register_for :text - - FILE_EXTENSION = 'txt' - - DEFAULT_OPTIONS = { - :separator => '' - } - - protected - def setup options - super - @sep = options[:separator] - end - - def text_token text, kind - text + @sep - end - - def finish options - super.chomp @sep - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/token_class_filter.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/token_class_filter.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :filter - - class TokenClassFilter < Filter - - include Streamable - register_for :token_class_filter - - DEFAULT_OPTIONS = { - :exclude => [], - :include => :all - } - - protected - def setup options - super - @exclude = options[:exclude] - @exclude = Array(@exclude) unless @exclude == :all - @include = options[:include] - @include = Array(@include) unless @include == :all - end - - def include_text_token? text, kind - (@include == :all || @include.include?(kind)) && - !(@exclude == :all || @exclude.include?(kind)) - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokenClassFilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Encoder - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Filter - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :token_class_filter - end - assert_instance_of CodeRay::Encoders::TokenClassFilter, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - for i in 1..10 - tokens << [i.to_s, :index] - tokens << [' ', :space] if i < 10 - end - assert_equal 10, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :space).size - assert_equal 10, tokens.token_class_filter(:exclude => :space).size - assert_equal 9, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :space).size - assert_equal 9, tokens.token_class_filter(:include => :space).size - assert_equal 0, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :all).size - assert_equal 0, tokens.token_class_filter(:exclude => :all).size - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal 20, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :blubb).size - assert_equal 20, tokens.token_class_filter(:include => :blubb).size - assert_equal 30, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :index).size - assert_equal 30, tokens.token_class_filter(:exclude => :index).size - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/xml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -module CodeRay -module Encoders - - # = XML Encoder - # - # Uses REXML. Very slow. - class XML < Encoder - - include Streamable - register_for :xml - - FILE_EXTENSION = 'xml' - - require 'rexml/document' - - DEFAULT_OPTIONS = { - :tab_width => 8, - :pretty => -1, - :transitive => false, - } - - protected - - def setup options - @doc = REXML::Document.new - @doc << REXML::XMLDecl.new - @tab_width = options[:tab_width] - @root = @node = @doc.add_element('coderay-tokens') - end - - def finish options - @out = '' - @doc.write @out, options[:pretty], options[:transitive], true - @out - end - - def text_token text, kind - if kind == :space - token = @node - else - token = @node.add_element kind.to_s - end - text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| - case - when space - token << REXML::Text.new(space, true) - when tab - token << REXML::Text.new(tab, true) - when nl - token << REXML::Text.new(nl, true) - else - token << REXML::Text.new($&) - end - end - end - - def open_token kind - @node = @node.add_element kind.to_s - end - - def close_token kind - if @node == @root - raise 'no token to close!' - end - @node = @node.parent - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/.svn/text-base/yaml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -module CodeRay -module Encoders - - # = YAML Encoder - # - # Slow. - class YAML < Encoder - - register_for :yaml - - FILE_EXTENSION = 'yaml' - - protected - def compile tokens, options - require 'yaml' - @out = tokens.to_a.to_yaml - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/_map.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/_map.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -module CodeRay -module Encoders - - map \ - :loc => :lines_of_code, - :plain => :text, - :stats => :statistic, - :terminal => :term, - :tex => :latex - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/comment_filter.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/comment_filter.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :token_class_filter - - class CommentFilter < TokenClassFilter - - register_for :comment_filter - - DEFAULT_OPTIONS = superclass::DEFAULT_OPTIONS.merge \ - :exclude => [:comment] - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class CommentFilterTest < Test::Unit::TestCase - - def test_filtering_comments - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal <<-RUBY_FILTERED, tokens.comment_filter.text -#!/usr/bin/env ruby - -puts "Hello world!" - RUBY_FILTERED - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/count.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/count.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Encoders - - class Count < Encoder - - include Streamable - register_for :count - - protected - - def setup options - @out = 0 - end - - def token text, kind - @out += 1 - end - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/debug.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/debug.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -module CodeRay -module Encoders - - # = Debug Encoder - # - # Fast encoder producing simple debug output. - # - # It is readable and diff-able and is used for testing. - # - # You cannot fully restore the tokens information from the - # output, because consecutive :space tokens are merged. - # Use Tokens#dump for caching purposes. - class Debug < Encoder - - include Streamable - register_for :debug - - FILE_EXTENSION = 'raydebug' - - protected - def text_token text, kind - if kind == :space - text - else - text = text.gsub(/[)\\]/, '\\\\\0') # escape ) and \ - "#{kind}(#{text})" - end - end - - def open_token kind - "#{kind}<" - end - - def close_token kind - ">" - end - - def begin_line kind - "#{kind}[" - end - - def end_line kind - "]" - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/div.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/div.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Div < HTML - - FILE_EXTENSION = 'div.html' - - register_for :div - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :div - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/filter.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/filter.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - class Filter < Encoder - - register_for :filter - - protected - def setup options - @out = Tokens.new - end - - def text_token text, kind - [text, kind] if include_text_token? text, kind - end - - def include_text_token? text, kind - true - end - - def block_token action, kind - [action, kind] if include_block_token? action, kind - end - - def include_block_token? action, kind - true - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::Filter < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :filter - end - assert_kind_of CodeRay::Encoders::Encoder, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [i.to_s, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal tokens, CodeRay::Encoders::Filter.new.encode_tokens(tokens) - assert_equal tokens, tokens.filter - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,305 +0,0 @@ -require 'set' - -module CodeRay -module Encoders - - # = HTML Encoder - # - # This is CodeRay's most important highlighter: - # It provides save, fast XHTML generation and CSS support. - # - # == Usage - # - # require 'coderay' - # puts CodeRay.scan('Some /code/', :ruby).html #-> a HTML page - # puts CodeRay.scan('Some /code/', :ruby).html(:wrap => :span) - # #-> Some /code/ - # puts CodeRay.scan('Some /code/', :ruby).span #-> the same - # - # puts CodeRay.scan('Some code', :ruby).html( - # :wrap => nil, - # :line_numbers => :inline, - # :css => :style - # ) - # #-> 1 Some code - # - # == Options - # - # === :tab_width - # Convert \t characters to +n+ spaces (a number.) - # Default: 8 - # - # === :css - # How to include the styles; can be :class or :style. - # - # Default: :class - # - # === :wrap - # Wrap in :page, :div, :span or nil. - # - # You can also use Encoders::Div and Encoders::Span. - # - # Default: nil - # - # === :title - # - # The title of the HTML page (works only when :wrap is set to :page.) - # - # Default: 'CodeRay output' - # - # === :line_numbers - # Include line numbers in :table, :inline, :list or nil (no line numbers) - # - # Default: nil - # - # === :line_number_start - # Where to start with line number counting. - # - # Default: 1 - # - # === :bold_every - # Make every +n+-th number appear bold. - # - # Default: 10 - # - # === :highlight_lines - # - # Highlights certain line numbers. - # Can be any Enumerable, typically just an Array or Range, of numbers. - # - # Bolding is deactivated when :highlight_lines is set. It only makes sense - # in combination with :line_numbers. - # - # Default: nil - # - # === :hint - # Include some information into the output using the title attribute. - # Can be :info (show token type on mouse-over), :info_long (with full path) - # or :debug (via inspect). - # - # Default: false - class HTML < Encoder - - include Streamable - register_for :html - - FILE_EXTENSION = 'html' - - DEFAULT_OPTIONS = { - :tab_width => 8, - - :css => :class, - - :style => :cycnus, - :wrap => nil, - :title => 'CodeRay output', - - :line_numbers => nil, - :line_number_start => 1, - :bold_every => 10, - :highlight_lines => nil, - - :hint => false, - } - - helper :output, :css - - attr_reader :css - - protected - - HTML_ESCAPE = { #:nodoc: - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - - # This was to prevent illegal HTML. - # Strange chars should still be avoided in codes. - evil_chars = Array(0x00...0x20) - [?\n, ?\t, ?\s] - evil_chars.each { |i| HTML_ESCAPE[i.chr] = ' ' } - #ansi_chars = Array(0x7f..0xff) - #ansi_chars.each { |i| HTML_ESCAPE[i.chr] = '&#%d;' % i } - # \x9 (\t) and \xA (\n) not included - #HTML_ESCAPE_PATTERN = /[\t&"><\0-\x8\xB-\x1f\x7f-\xff]/ - HTML_ESCAPE_PATTERN = /[\t"&><\0-\x8\xB-\x1f]/ - - TOKEN_KIND_TO_INFO = Hash.new { |h, kind| - h[kind] = - case kind - when :pre_constant - 'Predefined constant' - else - kind.to_s.gsub(/_/, ' ').gsub(/\b\w/) { $&.capitalize } - end - } - - TRANSPARENT_TOKEN_KINDS = [ - :delimiter, :modifier, :content, :escape, :inline_delimiter, - ].to_set - - # Generate a hint about the given +classes+ in a +hint+ style. - # - # +hint+ may be :info, :info_long or :debug. - def self.token_path_to_hint hint, classes - title = - case hint - when :info - TOKEN_KIND_TO_INFO[classes.first] - when :info_long - classes.reverse.map { |kind| TOKEN_KIND_TO_INFO[kind] }.join('/') - when :debug - classes.inspect - end - title ? " title=\"#{title}\"" : '' - end - - def setup options - super - - @HTML_ESCAPE = HTML_ESCAPE.dup - @HTML_ESCAPE["\t"] = ' ' * options[:tab_width] - - @opened = [nil] - @css = CSS.new options[:style] - - hint = options[:hint] - if hint and not [:debug, :info, :info_long].include? hint - raise ArgumentError, "Unknown value %p for :hint; \ - expected :info, :debug, false, or nil." % hint - end - - case options[:css] - - when :class - @css_style = Hash.new do |h, k| - c = CodeRay::Tokens::ClassOfKind[k.first] - if c == :NO_HIGHLIGHT and not hint - h[k.dup] = false - else - title = if hint - HTML.token_path_to_hint(hint, k[1..-1] << k.first) - else - '' - end - if c == :NO_HIGHLIGHT - h[k.dup] = '' % [title] - else - h[k.dup] = '' % [title, c] - end - end - end - - when :style - @css_style = Hash.new do |h, k| - if k.is_a? ::Array - styles = k.dup - else - styles = [k] - end - type = styles.first - classes = styles.map { |c| Tokens::ClassOfKind[c] } - if classes.first == :NO_HIGHLIGHT and not hint - h[k] = false - else - styles.shift if TRANSPARENT_TOKEN_KINDS.include? styles.first - title = HTML.token_path_to_hint hint, styles - style = @css[*classes] - h[k] = - if style - '' % [title, style] - else - false - end - end - end - - else - raise ArgumentError, "Unknown value %p for :css." % options[:css] - - end - end - - def finish options - not_needed = @opened.shift - @out << '' * @opened.size - unless @opened.empty? - warn '%d tokens still open: %p' % [@opened.size, @opened] - end - - @out.extend Output - @out.css = @css - @out.numerize! options[:line_numbers], options - @out.wrap! options[:wrap] - @out.apply_title! options[:title] - - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - if text =~ /#{HTML_ESCAPE_PATTERN}/o - text = text.gsub(/#{HTML_ESCAPE_PATTERN}/o) { |m| @HTML_ESCAPE[m] } - end - @opened[0] = type - if text != "\n" && style = @css_style[@opened] - @out << style << text << '' - else - @out << text - end - - - # token groups, eg. strings - when :open - @opened[0] = type - @out << (@css_style[@opened] || '') - @opened << type - when :close - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a token (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '' - @opened.pop - end - - # whole lines to be highlighted, eg. a deleted line in a diff - when :begin_line - @opened[0] = type - if style = @css_style[@opened] - @out << style.sub('' - end - @opened << type - when :end_line - if @opened.empty? - # nothing to close - else - if $CODERAY_DEBUG and (@opened.size == 1 or @opened.last != type) - raise 'Malformed token stream: Trying to close a line (%p) \ - that is not open. Open are: %p.' % [type, @opened[1..-1]] - end - @out << '
    ' - @opened.pop - end - - else - raise 'unknown token kind: %p' % [text] - - end - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -output.rb -file - - - - -2010-08-12T15:03:27.000000Z -8d0cea50dc9e6743bd10a8e0c6f1db17 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5271 - -numerization.rb -file - - - - -2010-08-12T15:03:27.000000Z -6f9a2f0d033d9af4d4804ecd8751a3f7 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4226 - -css.rb -file - - - - -2010-08-12T15:03:27.000000Z -aa931c09ed5f16abfed3b7c99f0f684d -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1626 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/css.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/numerization.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/numerization.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/output.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/prop-base/output.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/css.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -module CodeRay -module Encoders - - class HTML - class CSS - - attr :stylesheet - - def CSS.load_stylesheet style = nil - CodeRay::Styles[style] - end - - def initialize style = :default - @classes = Hash.new - style = CSS.load_stylesheet style - @stylesheet = [ - style::CSS_MAIN_STYLES, - style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ') - ].join("\n") - parse style::TOKEN_COLORS - end - - def [] *styles - cl = @classes[styles.first] - return '' unless cl - style = '' - 1.upto(styles.size) do |offset| - break if style = cl[styles[offset .. -1]] - end - # warn 'Style not found: %p' % [styles] if style.empty? - return style - end - - private - - CSS_CLASS_PATTERN = / - ( # $1 = selectors - (?: - (?: \s* \. [-\w]+ )+ - \s* ,? - )+ - ) - \s* \{ \s* - ( [^\}]+ )? # $2 = style - \s* \} \s* - | - ( . ) # $3 = error - /mx - def parse stylesheet - stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error| - raise "CSS parse error: '#{error.inspect}' not recognized" if error - for selector in selectors.split(',') - classes = selector.scan(/[-\w]+/) - cl = classes.pop - @classes[cl] ||= Hash.new - @classes[cl][classes] = style.to_s.strip.delete(' ').chomp(';') - end - end - end - - end - end - -end -end - -if $0 == __FILE__ - require 'pp' - pp CodeRay::Encoders::HTML::CSS.new -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/numerization.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/numerization.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - module Output - - def numerize *args - clone.numerize!(*args) - end - -=begin NUMERIZABLE_WRAPPINGS = { - :table => [:div, :page, nil], - :inline => :all, - :list => [:div, :page, nil] - } - NUMERIZABLE_WRAPPINGS.default = :all -=end - def numerize! mode = :table, options = {} - return self unless mode - - options = DEFAULT_OPTIONS.merge options - - start = options[:line_number_start] - unless start.is_a? Integer - raise ArgumentError, "Invalid value %p for :line_number_start; Integer expected." % start - end - - #allowed_wrappings = NUMERIZABLE_WRAPPINGS[mode] - #unless allowed_wrappings == :all or allowed_wrappings.include? options[:wrap] - # raise ArgumentError, "Can't numerize, :wrap must be in %p, but is %p" % [NUMERIZABLE_WRAPPINGS, options[:wrap]] - #end - - bold_every = options[:bold_every] - highlight_lines = options[:highlight_lines] - bolding = - if bold_every == false && highlight_lines == nil - proc { |line| line.to_s } - elsif highlight_lines.is_a? Enumerable - highlight_lines = highlight_lines.to_set - proc do |line| - if highlight_lines.include? line - "#{line}" # highlighted line numbers in bold - else - line.to_s - end - end - elsif bold_every.is_a? Integer - raise ArgumentError, ":bolding can't be 0." if bold_every == 0 - proc do |line| - if line % bold_every == 0 - "#{line}" # every bold_every-th number in bold - else - line.to_s - end - end - else - raise ArgumentError, 'Invalid value %p for :bolding; false or Integer expected.' % bold_every - end - - case mode - when :inline - max_width = (start + line_count).to_s.size - line_number = start - gsub!(/^/) do - line_number_text = bolding.call line_number - indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x) - res = "#{indent}#{line_number_text} " - line_number += 1 - res - end - - when :table - # This is really ugly. - # Because even monospace fonts seem to have different heights when bold, - # I make the newline bold, both in the code and the line numbers. - # FIXME Still not working perfect for Mr. Internet Exploder - line_numbers = (start ... start + line_count).to_a.map(&bolding).join("\n") - line_numbers << "\n" # also for Mr. MS Internet Exploder :-/ - line_numbers.gsub!(/\n/) { "\n" } - - line_numbers_table_tpl = TABLE.apply('LINE_NUMBERS', line_numbers) - gsub!(/<\/div>\n/) { '
    ' } - gsub!(/\n/) { "\n" } - wrap_in! line_numbers_table_tpl - @wrapped_in = :div - - when :list - opened_tags = [] - gsub!(/^.*$\n?/) do |line| - line.chomp! - - open = opened_tags.join - line.scan(%r!<(/)?span[^>]*>?!) do |close,| - if close - opened_tags.pop - else - opened_tags << $& - end - end - close = '' * opened_tags.size - - "
  • #{open}#{line}#{close}
  • \n" - end - chomp!("\n") - wrap_in! LIST - @wrapped_in = :div - - else - raise ArgumentError, 'Unknown value %p for mode: expected one of %p' % - [mode, [:table, :list, :inline]] - end - - self - end - - def line_count - line_count = count("\n") - position_of_last_newline = rindex(?\n) - if position_of_last_newline - after_last_newline = self[position_of_last_newline + 1 .. -1] - ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] - line_count += 1 if not ends_with_newline - end - line_count - end - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/output.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/.svn/text-base/output.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - # This module is included in the output String from thew HTML Encoder. - # - # It provides methods like wrap, div, page etc. - # - # Remember to use #clone instead of #dup to keep the modules the object was - # extended with. - # - # TODO: more doc. - module Output - - require 'coderay/encoders/html/numerization.rb' - - attr_accessor :css - - class << self - - # This makes Output look like a class. - # - # Example: - # - # a = Output.new 'Code' - # a.wrap! :page - def new string, css = CSS.new, element = nil - output = string.clone.extend self - output.wrapped_in = element - output.css = css - output - end - - # Raises an exception if an object that doesn't respond to to_str is extended by Output, - # to prevent users from misuse. Use Module#remove_method to disable. - def extended o - warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str - end - - def make_stylesheet css, in_tag = false - sheet = css.stylesheet - sheet = <<-CSS if in_tag - - CSS - sheet - end - - def page_template_for_css css - sheet = make_stylesheet css - PAGE.apply 'CSS', sheet - end - - # Define a new wrapper. This is meta programming. - def wrapper *wrappers - wrappers.each do |wrapper| - define_method wrapper do |*args| - wrap wrapper, *args - end - define_method "#{wrapper}!".to_sym do |*args| - wrap! wrapper, *args - end - end - end - - end - - wrapper :div, :span, :page - - def wrapped_in? element - wrapped_in == element - end - - def wrapped_in - @wrapped_in ||= nil - end - attr_writer :wrapped_in - - def wrap_in template - clone.wrap_in! template - end - - def wrap_in! template - Template.wrap! self, template, 'CONTENT' - self - end - - def apply_title! title - self.sub!(/()(<\/title>)/) { $1 + title + $2 } - self - end - - def wrap! element, *args - return self if not element or element == wrapped_in - case element - when :div - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! DIV - when :span - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! SPAN - when :page - wrap! :div if wrapped_in? nil - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div - wrap_in! Output.page_template_for_css(@css) - if args.first.is_a?(Hash) && title = args.first[:title] - apply_title! title - end - self - when nil - return self - else - raise "Unknown value %p for :wrap" % element - end - @wrapped_in = element - self - end - - def wrap *args - clone.wrap!(*args) - end - - def stylesheet in_tag = false - Output.make_stylesheet @css, in_tag - end - - class Template < String - - def self.wrap! str, template, target - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if template =~ target - str[0,0] = $` - str << $' - else - raise "Template target <%%%p%%> not found" % target - end - end - - def apply target, replacement - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if self =~ target - Template.new($` + replacement + $') - else - raise "Template target <%%%p%%> not found" % target - end - end - - module Simple - def ` str #` <-- for stupid editors - Template.new str - end - end - end - - extend Template::Simple - -#-- don't include the templates in docu - - SPAN = `<span class="CodeRay"><%CONTENT%></span>` - - DIV = <<-`DIV` -<div class="CodeRay"> - <div class="code"><pre><%CONTENT%></pre></div> -</div> - DIV - - TABLE = <<-`TABLE` -<table class="CodeRay"><tr> - <td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre><%LINE_NUMBERS%></pre></td> - <td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><%CONTENT%></pre></td> -</tr></table> - TABLE - # title="double click to expand" - - LIST = <<-`LIST` -<ol class="CodeRay"> -<%CONTENT%> -</ol> - LIST - - PAGE = <<-`PAGE` -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de"> -<head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - <title> - - - - -<%CONTENT%> - - - PAGE - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/css.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/css.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -module CodeRay -module Encoders - - class HTML - class CSS - - attr :stylesheet - - def CSS.load_stylesheet style = nil - CodeRay::Styles[style] - end - - def initialize style = :default - @classes = Hash.new - style = CSS.load_stylesheet style - @stylesheet = [ - style::CSS_MAIN_STYLES, - style::TOKEN_COLORS.gsub(/^(?!$)/, '.CodeRay ') - ].join("\n") - parse style::TOKEN_COLORS - end - - def [] *styles - cl = @classes[styles.first] - return '' unless cl - style = '' - 1.upto(styles.size) do |offset| - break if style = cl[styles[offset .. -1]] - end - # warn 'Style not found: %p' % [styles] if style.empty? - return style - end - - private - - CSS_CLASS_PATTERN = / - ( # $1 = selectors - (?: - (?: \s* \. [-\w]+ )+ - \s* ,? - )+ - ) - \s* \{ \s* - ( [^\}]+ )? # $2 = style - \s* \} \s* - | - ( . ) # $3 = error - /mx - def parse stylesheet - stylesheet.scan CSS_CLASS_PATTERN do |selectors, style, error| - raise "CSS parse error: '#{error.inspect}' not recognized" if error - for selector in selectors.split(',') - classes = selector.scan(/[-\w]+/) - cl = classes.pop - @classes[cl] ||= Hash.new - @classes[cl][classes] = style.to_s.strip.delete(' ').chomp(';') - end - end - end - - end - end - -end -end - -if $0 == __FILE__ - require 'pp' - pp CodeRay::Encoders::HTML::CSS.new -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/numerization.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - module Output - - def numerize *args - clone.numerize!(*args) - end - -=begin NUMERIZABLE_WRAPPINGS = { - :table => [:div, :page, nil], - :inline => :all, - :list => [:div, :page, nil] - } - NUMERIZABLE_WRAPPINGS.default = :all -=end - def numerize! mode = :table, options = {} - return self unless mode - - options = DEFAULT_OPTIONS.merge options - - start = options[:line_number_start] - unless start.is_a? Integer - raise ArgumentError, "Invalid value %p for :line_number_start; Integer expected." % start - end - - #allowed_wrappings = NUMERIZABLE_WRAPPINGS[mode] - #unless allowed_wrappings == :all or allowed_wrappings.include? options[:wrap] - # raise ArgumentError, "Can't numerize, :wrap must be in %p, but is %p" % [NUMERIZABLE_WRAPPINGS, options[:wrap]] - #end - - bold_every = options[:bold_every] - highlight_lines = options[:highlight_lines] - bolding = - if bold_every == false && highlight_lines == nil - proc { |line| line.to_s } - elsif highlight_lines.is_a? Enumerable - highlight_lines = highlight_lines.to_set - proc do |line| - if highlight_lines.include? line - "#{line}" # highlighted line numbers in bold - else - line.to_s - end - end - elsif bold_every.is_a? Integer - raise ArgumentError, ":bolding can't be 0." if bold_every == 0 - proc do |line| - if line % bold_every == 0 - "#{line}" # every bold_every-th number in bold - else - line.to_s - end - end - else - raise ArgumentError, 'Invalid value %p for :bolding; false or Integer expected.' % bold_every - end - - case mode - when :inline - max_width = (start + line_count).to_s.size - line_number = start - gsub!(/^/) do - line_number_text = bolding.call line_number - indent = ' ' * (max_width - line_number.to_s.size) # TODO: Optimize (10^x) - res = "#{indent}#{line_number_text} " - line_number += 1 - res - end - - when :table - # This is really ugly. - # Because even monospace fonts seem to have different heights when bold, - # I make the newline bold, both in the code and the line numbers. - # FIXME Still not working perfect for Mr. Internet Exploder - line_numbers = (start ... start + line_count).to_a.map(&bolding).join("\n") - line_numbers << "\n" # also for Mr. MS Internet Exploder :-/ - line_numbers.gsub!(/\n/) { "\n" } - - line_numbers_table_tpl = TABLE.apply('LINE_NUMBERS', line_numbers) - gsub!(/<\/div>\n/) { '
    ' } - gsub!(/\n/) { "\n" } - wrap_in! line_numbers_table_tpl - @wrapped_in = :div - - when :list - opened_tags = [] - gsub!(/^.*$\n?/) do |line| - line.chomp! - - open = opened_tags.join - line.scan(%r!<(/)?span[^>]*>?!) do |close,| - if close - opened_tags.pop - else - opened_tags << $& - end - end - close = '' * opened_tags.size - - "
  • #{open}#{line}#{close}
  • \n" - end - chomp!("\n") - wrap_in! LIST - @wrapped_in = :div - - else - raise ArgumentError, 'Unknown value %p for mode: expected one of %p' % - [mode, [:table, :list, :inline]] - end - - self - end - - def line_count - line_count = count("\n") - position_of_last_newline = rindex(?\n) - if position_of_last_newline - after_last_newline = self[position_of_last_newline + 1 .. -1] - ends_with_newline = after_last_newline[/\A(?:<\/span>)*\z/] - line_count += 1 if not ends_with_newline - end - line_count - end - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/html/output.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -module CodeRay -module Encoders - - class HTML - - # This module is included in the output String from thew HTML Encoder. - # - # It provides methods like wrap, div, page etc. - # - # Remember to use #clone instead of #dup to keep the modules the object was - # extended with. - # - # TODO: more doc. - module Output - - require 'coderay/encoders/html/numerization.rb' - - attr_accessor :css - - class << self - - # This makes Output look like a class. - # - # Example: - # - # a = Output.new 'Code' - # a.wrap! :page - def new string, css = CSS.new, element = nil - output = string.clone.extend self - output.wrapped_in = element - output.css = css - output - end - - # Raises an exception if an object that doesn't respond to to_str is extended by Output, - # to prevent users from misuse. Use Module#remove_method to disable. - def extended o - warn "The Output module is intended to extend instances of String, not #{o.class}." unless o.respond_to? :to_str - end - - def make_stylesheet css, in_tag = false - sheet = css.stylesheet - sheet = <<-CSS if in_tag - - CSS - sheet - end - - def page_template_for_css css - sheet = make_stylesheet css - PAGE.apply 'CSS', sheet - end - - # Define a new wrapper. This is meta programming. - def wrapper *wrappers - wrappers.each do |wrapper| - define_method wrapper do |*args| - wrap wrapper, *args - end - define_method "#{wrapper}!".to_sym do |*args| - wrap! wrapper, *args - end - end - end - - end - - wrapper :div, :span, :page - - def wrapped_in? element - wrapped_in == element - end - - def wrapped_in - @wrapped_in ||= nil - end - attr_writer :wrapped_in - - def wrap_in template - clone.wrap_in! template - end - - def wrap_in! template - Template.wrap! self, template, 'CONTENT' - self - end - - def apply_title! title - self.sub!(/()(<\/title>)/) { $1 + title + $2 } - self - end - - def wrap! element, *args - return self if not element or element == wrapped_in - case element - when :div - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! DIV - when :span - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? nil - wrap_in! SPAN - when :page - wrap! :div if wrapped_in? nil - raise "Can't wrap %p in %p" % [wrapped_in, element] unless wrapped_in? :div - wrap_in! Output.page_template_for_css(@css) - if args.first.is_a?(Hash) && title = args.first[:title] - apply_title! title - end - self - when nil - return self - else - raise "Unknown value %p for :wrap" % element - end - @wrapped_in = element - self - end - - def wrap *args - clone.wrap!(*args) - end - - def stylesheet in_tag = false - Output.make_stylesheet @css, in_tag - end - - class Template < String - - def self.wrap! str, template, target - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if template =~ target - str[0,0] = $` - str << $' - else - raise "Template target <%%%p%%> not found" % target - end - end - - def apply target, replacement - target = Regexp.new(Regexp.escape("<%#{target}%>")) - if self =~ target - Template.new($` + replacement + $') - else - raise "Template target <%%%p%%> not found" % target - end - end - - module Simple - def ` str #` <-- for stupid editors - Template.new str - end - end - end - - extend Template::Simple - -#-- don't include the templates in docu - - SPAN = `<span class="CodeRay"><%CONTENT%></span>` - - DIV = <<-`DIV` -<div class="CodeRay"> - <div class="code"><pre><%CONTENT%></pre></div> -</div> - DIV - - TABLE = <<-`TABLE` -<table class="CodeRay"><tr> - <td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"><pre><%LINE_NUMBERS%></pre></td> - <td class="code"><pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"><%CONTENT%></pre></td> -</tr></table> - TABLE - # title="double click to expand" - - LIST = <<-`LIST` -<ol class="CodeRay"> -<%CONTENT%> -</ol> - LIST - - PAGE = <<-`PAGE` -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de"> -<head> - <meta http-equiv="content-type" content="text/html; charset=utf-8" /> - <title> - - - - -<%CONTENT%> - - - PAGE - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/json.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/json.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # = JSON Encoder - class JSON < Encoder - - register_for :json - FILE_EXTENSION = 'json' - - protected - def setup options - begin - require 'json' - rescue LoadError - require 'rubygems' - require 'json' - end - @out = [] - end - - def text_token text, kind - { :type => 'text', :text => text, :kind => kind } - end - - def block_token action, kind - { :type => 'block', :action => action, :kind => kind } - end - - def finish options - @out.to_json - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' -$:.delete '.' -require 'rubygems' if RUBY_VERSION < '1.9' - -class JSONEncoderTest < Test::Unit::TestCase - - def test_json_output - tokens = CodeRay.scan <<-RUBY, :ruby -puts "Hello world!" - RUBY - require 'json' - assert_equal [ - {"type"=>"text", "text"=>"puts", "kind"=>"ident"}, - {"type"=>"text", "text"=>" ", "kind"=>"space"}, - {"type"=>"block", "action"=>"open", "kind"=>"string"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"text", "text"=>"Hello world!", "kind"=>"content"}, - {"type"=>"text", "text"=>"\"", "kind"=>"delimiter"}, - {"type"=>"block", "action"=>"close", "kind"=>"string"}, - {"type"=>"text", "text"=>"\n", "kind"=>"space"} - ], JSON.load(tokens.json) - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/lines_of_code.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/lines_of_code.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - # Counts the LoC (Lines of Code). Returns an Integer >= 0. - # - # Alias: :loc - # - # Everything that is not comment, markup, doctype/shebang, or an empty line, - # is considered to be code. - # - # For example, - # * HTML files not containing JavaScript have 0 LoC - # * in a Java class without comments, LoC is the number of non-empty lines - # - # A Scanner class should define the token kinds that are not code in the - # KINDS_NOT_LOC constant, which defaults to [:comment, :doctype]. - class LinesOfCode < Encoder - - register_for :lines_of_code - - NON_EMPTY_LINE = /^\s*\S.*$/ - - def compile tokens, options - if scanner = tokens.scanner - kinds_not_loc = scanner.class::KINDS_NOT_LOC - else - warn ArgumentError, 'Tokens have no scanner.' if $VERBOSE - kinds_not_loc = CodeRay::Scanners::Scanner::KINDS_NOT_LOC - end - code = tokens.token_class_filter :exclude => kinds_not_loc - @loc = code.text.scan(NON_EMPTY_LINE).size - end - - def finish options - @loc - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class LinesOfCodeTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :loc - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - assert_nothing_raised do - filter = CodeRay.encoder :lines_of_code - end - assert_kind_of CodeRay::Encoders::LinesOfCode, filter - end - - def test_lines_of_code - tokens = CodeRay.scan <<-RUBY, :ruby -#!/usr/bin/env ruby - -# a minimal Ruby program -puts "Hello world!" - RUBY - assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 1, tokens.lines_of_code - assert_equal 1, tokens.loc - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - tokens << ["Hello\n", :world] - tokens << ["Hello\n", :space] - tokens << ["Hello\n", :comment] - assert_equal 2, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens) - assert_equal 2, tokens.lines_of_code - assert_equal 2, tokens.loc - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/null.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/null.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -module CodeRay -module Encoders - - # = Null Encoder - # - # Does nothing and returns an empty string. - class Null < Encoder - - include Streamable - register_for :null - - # Defined for faster processing - def to_proc - proc {} - end - - protected - - def token(*) - # do nothing - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/page.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/page.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Page < HTML - - FILE_EXTENSION = 'html' - - register_for :page - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :class, - :wrap => :page, - :line_numbers => :table - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/span.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/span.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -module CodeRay -module Encoders - - load :html - - class Span < HTML - - FILE_EXTENSION = 'span.html' - - register_for :span - - DEFAULT_OPTIONS = HTML::DEFAULT_OPTIONS.merge \ - :css => :style, - :wrap => :span - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/statistic.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/statistic.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -module CodeRay -module Encoders - - # Makes a statistic for the given tokens. - class Statistic < Encoder - - include Streamable - register_for :stats, :statistic - - attr_reader :type_stats, :real_token_count - - protected - - TypeStats = Struct.new :count, :size - - def setup options - @type_stats = Hash.new { |h, k| h[k] = TypeStats.new 0, 0 } - @real_token_count = 0 - end - - def generate tokens, options - @tokens = tokens - super - end - - def text_token text, kind - @real_token_count += 1 unless kind == :space - @type_stats[kind].count += 1 - @type_stats[kind].size += text.size - @type_stats['TOTAL'].size += text.size - @type_stats['TOTAL'].count += 1 - end - - # TODO Hierarchy handling - def block_token action, kind - @type_stats['TOTAL'].count += 1 - @type_stats['open/close'].count += 1 - end - - STATS = <<-STATS - -Code Statistics - -Tokens %8d - Non-Whitespace %8d -Bytes Total %8d - -Token Types (%d): - type count ratio size (average) -------------------------------------------------------------- -%s - STATS -# space 12007 33.81 % 1.7 - TOKEN_TYPES_ROW = <<-TKR - %-20s %8d %6.2f %% %5.1f - TKR - - def finish options - all = @type_stats['TOTAL'] - all_count, all_size = all.count, all.size - @type_stats.each do |type, stat| - stat.size /= stat.count.to_f - end - types_stats = @type_stats.sort_by { |k, v| [-v.count, k.to_s] }.map do |k, v| - TOKEN_TYPES_ROW % [k, v.count, 100.0 * v.count / all_count, v.size] - end.join - STATS % [ - all_count, @real_token_count, all_size, - @type_stats.delete_if { |k, v| k.is_a? String }.size, - types_stats - ] - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/term.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/term.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,158 +0,0 @@ -# encoders/term.rb -# By Rob Aldred (http://robaldred.co.uk) -# Based on idea by Nathan Weizenbaum (http://nex-3.com) -# MIT License (http://www.opensource.org/licenses/mit-license.php) -# -# A CodeRay encoder that outputs code highlighted for a color terminal. -# Check out http://robaldred.co.uk - -module CodeRay - module Encoders - class Term < Encoder - register_for :term - - TOKEN_COLORS = { - :annotation => '35', - :attribute_name => '33', - :attribute_name_fat => '33', - :attribute_value => '31', - :attribute_value_fat => '31', - :bin => '1;35', - :char => {:self => '36', :delimiter => '34'}, - :class => '1;35', - :class_variable => '36', - :color => '32', - :comment => '37', - :complex => '34', - :constant => ['34', '4'], - :decoration => '35', - :definition => '1;32', - :directive => ['32', '4'], - :doc => '46', - :doctype => '1;30', - :doc_string => ['31', '4'], - :entity => '33', - :error => ['1;33', '41'], - :exception => '1;31', - :float => '1;35', - :function => '1;34', - :global_variable => '42', - :hex => '1;36', - :important => '1;31', - :include => '33', - :integer => '1;34', - :interpreted => '1;35', - :key => '35', - :label => '1;4', - :local_variable => '33', - :oct => '1;35', - :operator_name => '1;29', - :pre_constant => '1;36', - :pre_type => '1;30', - :predefined => ['4', '1;34'], - :preprocessor => '36', - :pseudo_class => '34', - :regexp => { - :content => '31', - :delimiter => '1;29', - :modifier => '35', - :function => '1;29' - }, - :reserved => '1;31', - :shell => { - :self => '42', - :content => '1;29', - :delimiter => '37', - }, - :string => { - :self => '32', - :modifier => '1;32', - :escape => '1;36', - :delimiter => '1;32', - }, - :symbol => '1;32', - :tag => '34', - :tag_fat => '1;34', - :tag_special => ['34', '4'], - :type => '1;34', - :value => '36', - :variable => '34', - :insert => '42', - :delete => '41', - :change => '44', - :head => '45', - } - TOKEN_COLORS[:keyword] = TOKEN_COLORS[:reserved] - TOKEN_COLORS[:method] = TOKEN_COLORS[:function] - TOKEN_COLORS[:imaginary] = TOKEN_COLORS[:complex] - TOKEN_COLORS[:open] = TOKEN_COLORS[:close] = TOKEN_COLORS[:nesting_delimiter] = TOKEN_COLORS[:escape] = TOKEN_COLORS[:delimiter] - - protected - - def setup(options) - @out = '' - @opened = [nil] - @subcolors = nil - end - - def finish(options) - super - end - - def token text, type = :plain - case text - - when nil - # raise 'Token with nil as text was given: %p' % [[text, type]] - - when String - - if color = (@subcolors || TOKEN_COLORS)[type] - color = color[:self] || return if Hash === color - - @out << col(color) + text.gsub("\n", col(0) + "\n" + col(color)) + col(0) - @out << col(@subcolors[:self]) if @subcolors && @subcolors[:self] - else - @out << text - end - - # token groups, eg. strings - when :open - @opened[0] = type - if color = TOKEN_COLORS[type] - if Hash === color - @subcolors = color - @out << col(color[:self]) if color[:self] - else - @subcolors = {} - @out << col(color) - end - end - @opened << type - when :close - if @opened.empty? - # nothing to close - else - @out << col(0) if (@subcolors || {})[:self] - @subcolors = nil - @opened.pop - end - - # whole lines to be highlighted, eg. a added/modified/deleted lines in a diff - when :begin_line - - when :end_line - - else - raise 'unknown token kind: %p' % [text] - end - end - - private - - def col(color) - Array(color).map { |c| "\e[#{c}m" }.join - end - end - end -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/text.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/text.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -module CodeRay -module Encoders - - class Text < Encoder - - include Streamable - register_for :text - - FILE_EXTENSION = 'txt' - - DEFAULT_OPTIONS = { - :separator => '' - } - - protected - def setup options - super - @sep = options[:separator] - end - - def text_token text, kind - text + @sep - end - - def finish options - super.chomp @sep - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/token_class_filter.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/token_class_filter.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -($:.unshift '../..'; require 'coderay') unless defined? CodeRay -module CodeRay -module Encoders - - load :filter - - class TokenClassFilter < Filter - - include Streamable - register_for :token_class_filter - - DEFAULT_OPTIONS = { - :exclude => [], - :include => :all - } - - protected - def setup options - super - @exclude = options[:exclude] - @exclude = Array(@exclude) unless @exclude == :all - @include = options[:include] - @include = Array(@include) unless @include == :all - end - - def include_text_token? text, kind - (@include == :all || @include.include?(kind)) && - !(@exclude == :all || @exclude.include?(kind)) - end - - end - -end -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokenClassFilterTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Encoder - assert CodeRay::Encoders::TokenClassFilter < CodeRay::Encoders::Filter - filter = nil - assert_nothing_raised do - filter = CodeRay.encoder :token_class_filter - end - assert_instance_of CodeRay::Encoders::TokenClassFilter, filter - end - - def test_filtering_text_tokens - tokens = CodeRay::Tokens.new - for i in 1..10 - tokens << [i.to_s, :index] - tokens << [' ', :space] if i < 10 - end - assert_equal 10, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :space).size - assert_equal 10, tokens.token_class_filter(:exclude => :space).size - assert_equal 9, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :space).size - assert_equal 9, tokens.token_class_filter(:include => :space).size - assert_equal 0, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :all).size - assert_equal 0, tokens.token_class_filter(:exclude => :all).size - end - - def test_filtering_block_tokens - tokens = CodeRay::Tokens.new - 10.times do |i| - tokens << [:open, :index] - tokens << [i.to_s, :content] - tokens << [:close, :index] - end - assert_equal 20, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :include => :blubb).size - assert_equal 20, tokens.token_class_filter(:include => :blubb).size - assert_equal 30, CodeRay::Encoders::TokenClassFilter.new.encode_tokens(tokens, :exclude => :index).size - assert_equal 30, tokens.token_class_filter(:exclude => :index).size - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/xml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/xml.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -module CodeRay -module Encoders - - # = XML Encoder - # - # Uses REXML. Very slow. - class XML < Encoder - - include Streamable - register_for :xml - - FILE_EXTENSION = 'xml' - - require 'rexml/document' - - DEFAULT_OPTIONS = { - :tab_width => 8, - :pretty => -1, - :transitive => false, - } - - protected - - def setup options - @doc = REXML::Document.new - @doc << REXML::XMLDecl.new - @tab_width = options[:tab_width] - @root = @node = @doc.add_element('coderay-tokens') - end - - def finish options - @out = '' - @doc.write @out, options[:pretty], options[:transitive], true - @out - end - - def text_token text, kind - if kind == :space - token = @node - else - token = @node.add_element kind.to_s - end - text.scan(/(\x20+)|(\t+)|(\n)|[^\x20\t\n]+/) do |space, tab, nl| - case - when space - token << REXML::Text.new(space, true) - when tab - token << REXML::Text.new(tab, true) - when nl - token << REXML::Text.new(nl, true) - else - token << REXML::Text.new($&) - end - end - end - - def open_token kind - @node = @node.add_element kind.to_s - end - - def close_token kind - if @node == @root - raise 'no token to close!' - end - @node = @node.parent - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/encoders/yaml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/encoders/yaml.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -module CodeRay -module Encoders - - # = YAML Encoder - # - # Slow. - class YAML < Encoder - - register_for :yaml - - FILE_EXTENSION = 'yaml' - - protected - def compile tokens, options - require 'yaml' - @out = tokens.to_a.to_yaml - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/for_redcloth.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/for_redcloth.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -module CodeRay - - # A little hack to enable CodeRay highlighting in RedCloth. - # - # Usage: - # require 'coderay' - # require 'coderay/for_redcloth' - # RedCloth.new('@[ruby]puts "Hello, World!"@').to_html - # - # Make sure you have RedCloth 4.0.3 activated, for example by calling - # require 'rubygems' - # before RedCloth is loaded and before calling CodeRay.for_redcloth. - module ForRedCloth - - def self.install - gem 'RedCloth', '>= 4.0.3' if defined? gem - require 'redcloth' - unless RedCloth::VERSION.to_s >= '4.0.3' - if defined? gem - raise 'CodeRay.for_redcloth needs RedCloth version 4.0.3 or later. ' + - "You have #{RedCloth::VERSION}. Please gem install RedCloth." - else - $".delete 'redcloth.rb' # sorry, but it works - require 'rubygems' - return install # retry - end - end - unless RedCloth::VERSION.to_s >= '4.2.2' - warn 'CodeRay.for_redcloth works best with RedCloth version 4.2.2 or later.' - end - RedCloth::TextileDoc.send :include, ForRedCloth::TextileDoc - RedCloth::Formatters::HTML.module_eval do - def unescape(html) - replacements = { - '&' => '&', - '"' => '"', - '>' => '>', - '<' => '<', - } - html.gsub(/&(?:amp|quot|[gl]t);/) { |entity| replacements[entity] } - end - undef code, bc_open, bc_close, escape_pre - def code(opts) # :nodoc: - opts[:block] = true - if !opts[:lang] && RedCloth::VERSION.to_s >= '4.2.0' - # simulating pre-4.2 behavior - if opts[:text].sub!(/\A\[(\w+)\]/, '') - if CodeRay::Scanners[$1].plugin_id == 'plaintext' - opts[:text] = $& + opts[:text] - else - opts[:lang] = $1 - end - end - end - if opts[:lang] && !filter_coderay - require 'coderay' - @in_bc ||= nil - format = @in_bc ? :div : :span - opts[:text] = unescape(opts[:text]) unless @in_bc - highlighted_code = CodeRay.encode opts[:text], opts[:lang], format, :stream => true - highlighted_code.sub!(/\A<(span|div)/) { |m| m + pba(@in_bc || opts) } - highlighted_code - else - "#{opts[:text]}
    " - end - end - def bc_open(opts) # :nodoc: - opts[:block] = true - @in_bc = opts - opts[:lang] ? '' : "" - end - def bc_close(opts) # :nodoc: - opts = @in_bc - @in_bc = nil - opts[:lang] ? '' : "\n" - end - def escape_pre(text) - if @in_bc ||= nil - text - else - html_esc(text, :html_escape_preformatted) - end - end - end - end - - module TextileDoc # :nodoc: - attr_accessor :filter_coderay - end - - end - -end - -CodeRay::ForRedCloth.install \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2/lib/coderay/helpers -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -plugin.rb -file - - - - -2010-08-12T15:03:27.000000Z -a8ef4aea22392cc4012ee679fc1d15ba -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -7926 - -file_type.rb -file - - - - -2010-08-12T15:03:27.000000Z -107e3d46dc60830e87b1a4ce4d467ce8 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6494 - -gzip_simple.rb -file - - - - -2010-08-12T15:03:27.000000Z -ffacc98651f60a6fe698427bbc3c3c86 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2701 - -word_list.rb -file - - - - -2010-08-12T15:03:27.000000Z -86d05af27cbe342789f28ed543956aa5 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3229 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/file_type.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/file_type.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/gzip_simple.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/gzip_simple.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/plugin.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/plugin.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/word_list.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/prop-base/word_list.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/file_type.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/file_type.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -#!/usr/bin/env ruby -module CodeRay - -# = FileType -# -# A simple filetype recognizer. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 0.1 (2005-09-01) -# -# == Documentation -# -# # determine the type of the given -# lang = FileType[ARGV.first] -# -# # return :plaintext if the file type is unknown -# lang = FileType.fetch ARGV.first, :plaintext -# -# # try the shebang line, too -# lang = FileType.fetch ARGV.first, :plaintext, true -module FileType - - UnknownFileType = Class.new Exception - - class << self - - # Try to determine the file type of the file. - # - # +filename+ is a relative or absolute path to a file. - # - # The file itself is only accessed when +read_shebang+ is set to true. - # That means you can get filetypes from files that don't exist. - def [] filename, read_shebang = false - name = File.basename filename - ext = File.extname(name).sub(/^\./, '') # from last dot, delete the leading dot - ext2 = filename.to_s[/\.(.*)/, 1] # from first dot - - type = - TypeFromExt[ext] || - TypeFromExt[ext.downcase] || - (TypeFromExt[ext2] if ext2) || - (TypeFromExt[ext2.downcase] if ext2) || - TypeFromName[name] || - TypeFromName[name.downcase] - type ||= shebang(filename) if read_shebang - - type - end - - def shebang filename - begin - File.open filename, 'r' do |f| - if first_line = f.gets - if type = first_line[TypeFromShebang] - type.to_sym - end - end - end - rescue IOError - nil - end - end - - # This works like Hash#fetch. - # - # If the filetype cannot be found, the +default+ value - # is returned. - def fetch filename, default = nil, read_shebang = false - if default and block_given? - warn 'block supersedes default value argument' - end - - unless type = self[filename, read_shebang] - return yield if block_given? - return default if default - raise UnknownFileType, 'Could not determine type of %p.' % filename - end - type - end - - end - - TypeFromExt = { - 'c' => :c, - 'css' => :css, - 'diff' => :diff, - 'dpr' => :delphi, - 'groovy' => :groovy, - 'gvy' => :groovy, - 'h' => :c, - 'htm' => :html, - 'html' => :html, - 'html.erb' => :rhtml, - 'java' => :java, - 'js' => :java_script, - 'json' => :json, - 'mab' => :ruby, - 'pas' => :delphi, - 'patch' => :diff, - 'php' => :php, - 'php3' => :php, - 'php4' => :php, - 'php5' => :php, - 'py' => :python, - 'py3' => :python, - 'pyw' => :python, - 'rake' => :ruby, - 'raydebug' => :debug, - 'rb' => :ruby, - 'rbw' => :ruby, - 'rhtml' => :rhtml, - 'rxml' => :ruby, - 'sch' => :scheme, - 'sql' => :sql, - 'ss' => :scheme, - 'xhtml' => :xhtml, - 'xml' => :xml, - 'yaml' => :yaml, - 'yml' => :yaml, - } - for cpp_alias in %w[cc cpp cp cxx c++ C hh hpp h++ cu] - TypeFromExt[cpp_alias] = :cpp - end - - TypeFromShebang = /\b(?:ruby|perl|python|sh)\b/ - - TypeFromName = { - 'Rakefile' => :ruby, - 'Rantfile' => :ruby, - } - -end - -end - -if $0 == __FILE__ - $VERBOSE = true - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FileTypeTests < Test::Unit::TestCase - - include CodeRay - - def test_fetch - assert_raise FileType::UnknownFileType do - FileType.fetch '' - end - - assert_throws :not_found do - FileType.fetch '.' do - throw :not_found - end - end - - assert_equal :default, FileType.fetch('c', :default) - - stderr, fake_stderr = $stderr, Object.new - $err = '' - def fake_stderr.write x - $err << x - end - $stderr = fake_stderr - FileType.fetch('c', :default) { } - assert_equal "block supersedes default value argument\n", $err - $stderr = stderr - end - - def test_ruby - assert_equal :ruby, FileType['test.rb'] - assert_equal :ruby, FileType['test.java.rb'] - assert_equal :java, FileType['test.rb.java'] - assert_equal :ruby, FileType['C:\\Program Files\\x\\y\\c\\test.rbw'] - assert_equal :ruby, FileType['/usr/bin/something/Rakefile'] - assert_equal :ruby, FileType['~/myapp/gem/Rantfile'] - assert_equal :ruby, FileType['./lib/tasks\repository.rake'] - assert_not_equal :ruby, FileType['test_rb'] - assert_not_equal :ruby, FileType['Makefile'] - assert_not_equal :ruby, FileType['set.rb/set'] - assert_not_equal :ruby, FileType['~/projects/blabla/rb'] - end - - def test_c - assert_equal :c, FileType['test.c'] - assert_equal :c, FileType['C:\\Program Files\\x\\y\\c\\test.h'] - assert_not_equal :c, FileType['test_c'] - assert_not_equal :c, FileType['Makefile'] - assert_not_equal :c, FileType['set.h/set'] - assert_not_equal :c, FileType['~/projects/blabla/c'] - end - - def test_cpp - assert_equal :cpp, FileType['test.c++'] - assert_equal :cpp, FileType['test.cxx'] - assert_equal :cpp, FileType['test.hh'] - assert_equal :cpp, FileType['test.hpp'] - assert_equal :cpp, FileType['test.cu'] - assert_equal :cpp, FileType['test.C'] - assert_not_equal :cpp, FileType['test.c'] - assert_not_equal :cpp, FileType['test.h'] - end - - def test_html - assert_equal :html, FileType['test.htm'] - assert_equal :xhtml, FileType['test.xhtml'] - assert_equal :xhtml, FileType['test.html.xhtml'] - assert_equal :rhtml, FileType['_form.rhtml'] - assert_equal :rhtml, FileType['_form.html.erb'] - end - - def test_yaml - assert_equal :yaml, FileType['test.yml'] - assert_equal :yaml, FileType['test.yaml'] - assert_equal :yaml, FileType['my.html.yaml'] - assert_not_equal :yaml, FileType['YAML'] - end - - def test_pathname - require 'pathname' - pn = Pathname.new 'test.rb' - assert_equal :ruby, FileType[pn] - dir = Pathname.new '/etc/var/blubb' - assert_equal :ruby, FileType[dir + pn] - assert_equal :cpp, FileType[dir + 'test.cpp'] - end - - def test_no_shebang - dir = './test' - if File.directory? dir - Dir.chdir dir do - assert_equal :c, FileType['test.c'] - end - end - end - - def test_shebang_empty_file - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { } # touch - assert_equal nil, FileType[tmpfile] - end - - def test_shebang - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } - assert_equal :ruby, FileType[tmpfile, true] - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/gzip_simple.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/gzip_simple.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -# =GZip Simple -# -# A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) -# -# Author: murphy (mail to murphy rubychan de) -# -# Version: 0.2 (2005.may.28) -# -# ==Documentation -# -# See +GZip+ module and the +String+ extensions. -# -module GZip - - require 'zlib' - - # The default zipping level. 7 zips good and fast. - DEFAULT_GZIP_LEVEL = 7 - - # Unzips the given string +s+. - # - # Example: - # require 'gzip_simple' - # print GZip.gunzip(File.read('adresses.gz')) - def GZip.gunzip s - Zlib::Inflate.inflate s - end - - # Zips the given string +s+. - # - # Example: - # require 'gzip_simple' - # File.open('adresses.gz', 'w') do |file - # file.write GZip.gzip('Mum: 0123 456 789', 9) - # end - # - # If you provide a +level+, you can control how strong - # the string is compressed: - # - 0: no compression, only convert to gzip format - # - 1: compress fast - # - 7: compress more, but still fast (default) - # - 8: compress more, slower - # - 9: compress best, very slow - def GZip.gzip s, level = DEFAULT_GZIP_LEVEL - Zlib::Deflate.new(level).deflate s, Zlib::FINISH - end -end - - -# String extensions to use the GZip module. -# -# The methods gzip and gunzip provide an even more simple -# interface to the ZLib: -# -# # create a big string -# x = 'a' * 1000 -# -# # zip it -# x_gz = x.gzip -# -# # test the result -# puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] -# #-> Zipped 1000 bytes to 19 bytes. -# -# # unzipping works -# p x_gz.gunzip == x #-> true -class String - # Returns the string, unzipped. - # See GZip.gunzip - def gunzip - GZip.gunzip self - end - # Replaces the string with its unzipped value. - # See GZip.gunzip - def gunzip! - replace gunzip - end - - # Returns the string, zipped. - # +level+ is the gzip compression level, see GZip.gzip. - def gzip level = GZip::DEFAULT_GZIP_LEVEL - GZip.gzip self, level - end - # Replaces the string with its zipped value. - # See GZip.gzip. - def gzip!(*args) - replace gzip(*args) - end -end - -if $0 == __FILE__ - eval DATA.read, nil, $0, __LINE__+4 -end - -__END__ -#CODE - -# Testing / Benchmark -x = 'a' * 1000 -x_gz = x.gzip -puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] #-> Zipped 1000 bytes to 19 bytes. -p x_gz.gunzip == x #-> true - -require 'benchmark' - -INFO = 'packed to %0.3f%%' # :nodoc: - -x = Array.new(100000) { rand(255).chr + 'aaaaaaaaa' + rand(255).chr }.join -Benchmark.bm(10) do |bm| - for level in 0..9 - bm.report "zip #{level}" do - $x = x.gzip level - end - puts INFO % [100.0 * $x.size / x.size] - end - bm.report 'zip' do - $x = x.gzip - end - puts INFO % [100.0 * $x.size / x.size] - bm.report 'unzip' do - $x.gunzip - end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/plugin.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/plugin.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,349 +0,0 @@ -module CodeRay - -# = PluginHost -# -# A simple subclass plugin system. -# -# Example: -# class Generators < PluginHost -# plugin_path 'app/generators' -# end -# -# class Generator -# extend Plugin -# PLUGIN_HOST = Generators -# end -# -# class FancyGenerator < Generator -# register_for :fancy -# end -# -# Generators[:fancy] #-> FancyGenerator -# # or -# CodeRay.require_plugin 'Generators/fancy' -module PluginHost - - # Raised if Encoders::[] fails because: - # * a file could not be found - # * the requested Encoder is not registered - PluginNotFound = Class.new Exception - HostNotFound = Class.new Exception - - PLUGIN_HOSTS = [] - PLUGIN_HOSTS_BY_ID = {} # dummy hash - - # Loads all plugins using list and load. - def load_all - for plugin in list - load plugin - end - end - - # Returns the Plugin for +id+. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml] - def [] id, *args, &blk - plugin = validate_id(id) - begin - plugin = plugin_hash.[] plugin, *args, &blk - end while plugin.is_a? Symbol - plugin - end - - # Alias for +[]+. - alias load [] - - def require_helper plugin_id, helper_name - path = path_to File.join(plugin_id, helper_name) - require path - end - - class << self - - # Adds the module/class to the PLUGIN_HOSTS list. - def extended mod - PLUGIN_HOSTS << mod - end - - # Warns you that you should not #include this module. - def included mod - warn "#{name} should not be included. Use extend." - end - - # Find the PluginHost for host_id. - def host_by_id host_id - unless PLUGIN_HOSTS_BY_ID.default_proc - ph = Hash.new do |h, a_host_id| - for host in PLUGIN_HOSTS - h[host.host_id] = host - end - h.fetch a_host_id, nil - end - PLUGIN_HOSTS_BY_ID.replace ph - end - PLUGIN_HOSTS_BY_ID[host_id] - end - - end - - # The path where the plugins can be found. - def plugin_path *args - unless args.empty? - @plugin_path = File.expand_path File.join(*args) - load_map - end - @plugin_path - end - - # The host's ID. - # - # If PLUGIN_HOST_ID is not set, it is simply the class name. - def host_id - if self.const_defined? :PLUGIN_HOST_ID - self::PLUGIN_HOST_ID - else - name - end - end - - # Map a plugin_id to another. - # - # Usage: Put this in a file plugin_path/_map.rb. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue, - # :maroon => :brown, - # :luna => :moon - # end - def map hash - for from, to in hash - from = validate_id from - to = validate_id to - plugin_hash[from] = to unless plugin_hash.has_key? from - end - end - - # Define the default plugin to use when no plugin is found - # for a given id. - # - # See also map. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue - # default :gray - # end - def default id = nil - if id - id = validate_id id - plugin_hash[nil] = id - else - plugin_hash[nil] - end - end - - # Every plugin must register itself for one or more - # +ids+ by calling register_for, which calls this method. - # - # See Plugin#register_for. - def register plugin, *ids - for id in ids - unless id.is_a? Symbol - raise ArgumentError, - "id must be a Symbol, but it was a #{id.class}" - end - plugin_hash[validate_id(id)] = plugin - end - end - - # A Hash of plugion_id => Plugin pairs. - def plugin_hash - @plugin_hash ||= create_plugin_hash - end - - # Returns an array of all .rb files in the plugin path. - # - # The extension .rb is not included. - def list - Dir[path_to('*')].select do |file| - File.basename(file)[/^(?!_)\w+\.rb$/] - end.map do |file| - File.basename file, '.rb' - end - end - - # Makes a map of all loaded plugins. - def inspect - map = plugin_hash.dup - map.each do |id, plugin| - map[id] = plugin.to_s[/(?>\w+)$/] - end - "#{name}[#{host_id}]#{map.inspect}" - end - -protected - # Created a new plugin list and stores it to @plugin_hash. - def create_plugin_hash - @plugin_hash = - Hash.new do |h, plugin_id| - id = validate_id(plugin_id) - path = path_to id - begin - require path - rescue LoadError => boom - if h.has_key? nil # default plugin - h[id] = h[nil] - else - raise PluginNotFound, 'Could not load plugin %p: %s' % [id, boom] - end - else - # Plugin should have registered by now - unless h.has_key? id - raise PluginNotFound, - "No #{self.name} plugin for #{id.inspect} found in #{path}." - end - end - h[id] - end - end - - # Loads the map file (see map). - # - # This is done automatically when plugin_path is called. - def load_map - mapfile = path_to '_map' - if File.exist? mapfile - require mapfile - elsif $VERBOSE - warn 'no _map.rb found for %s' % name - end - end - - # Returns the Plugin for +id+. - # Use it like Hash#fetch. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml, :default] - def fetch id, *args, &blk - plugin_hash.fetch validate_id(id), *args, &blk - end - - # Returns the expected path to the plugin file for the given id. - def path_to plugin_id - File.join plugin_path, "#{plugin_id}.rb" - end - - # Converts +id+ to a Symbol if it is a String, - # or returns +id+ if it already is a Symbol. - # - # Raises +ArgumentError+ for all other objects, or if the - # given String includes non-alphanumeric characters (\W). - def validate_id id - if id.is_a? Symbol or id.nil? - id - elsif id.is_a? String - if id[/\w+/] == id - id.downcase.to_sym - else - raise ArgumentError, "Invalid id: '#{id}' given." - end - else - raise ArgumentError, - "String or Symbol expected, but #{id.class} given." - end - end - -end - - -# = Plugin -# -# Plugins have to include this module. -# -# IMPORTANT: use extend for this module. -# -# Example: see PluginHost. -module Plugin - - def included mod - warn "#{name} should not be included. Use extend." - end - - # Register this class for the given langs. - # Example: - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # ... - # end - # - # See PluginHost.register. - def register_for *ids - plugin_host.register self, *ids - end - - # Returns the title of the plugin, or sets it to the - # optional argument +title+. - def title title = nil - if title - @title = title.to_s - else - @title ||= name[/([^:]+)$/, 1] - end - end - - # The host for this Plugin class. - def plugin_host host = nil - if host and not host.is_a? PluginHost - raise ArgumentError, - "PluginHost expected, but #{host.class} given." - end - self.const_set :PLUGIN_HOST, host if host - self::PLUGIN_HOST - end - - # Require some helper files. - # - # Example: - # - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # helper :my_helper - # - # The above example loads the file myplugin/my_helper.rb relative to the - # file in which MyPlugin was defined. - # - # You can also load a helper from a different plugin: - # - # helper 'other_plugin/helper_name' - def helper *helpers - for helper in helpers - if helper.is_a?(String) && helper[/\//] - self::PLUGIN_HOST.require_helper $`, $' - else - self::PLUGIN_HOST.require_helper plugin_id, helper.to_s - end - end - end - - # Returns the pulgin id used by the engine. - def plugin_id - name[/\w+$/].downcase - end - -end - -# Convenience method for plugin loading. -# The syntax used is: -# -# CodeRay.require_plugin '/' -# -# Returns the loaded plugin. -def self.require_plugin path - host_id, plugin_id = path.split '/', 2 - host = PluginHost.host_by_id(host_id) - raise PluginHost::HostNotFound, - "No host for #{host_id.inspect} found." unless host - host.load plugin_id -end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/word_list.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/.svn/text-base/word_list.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -module CodeRay - -# = WordList -# -# A Hash subclass designed for mapping word lists to token types. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 1.1 (2006-Oct-19) -# -# A WordList is a Hash with some additional features. -# It is intended to be used for keyword recognition. -# -# WordList is highly optimized to be used in Scanners, -# typically to decide whether a given ident is a special token. -# -# For case insensitive words use CaseIgnoringWordList. -# -# Example: -# -# # define word arrays -# RESERVED_WORDS = %w[ -# asm break case continue default do else -# ... -# ] -# -# PREDEFINED_TYPES = %w[ -# int long short char void -# ... -# ] -# -# PREDEFINED_CONSTANTS = %w[ -# EOF NULL ... -# ] -# -# # make a WordList -# IDENT_KIND = WordList.new(:ident). -# add(RESERVED_WORDS, :reserved). -# add(PREDEFINED_TYPES, :pre_type). -# add(PREDEFINED_CONSTANTS, :pre_constant) -# -# ... -# -# def scan_tokens tokens, options -# ... -# -# elsif scan(/[A-Za-z_][A-Za-z_0-9]*/) -# # use it -# kind = IDENT_KIND[match] -# ... -class WordList < Hash - - # Creates a new WordList with +default+ as default value. - # - # You can activate +caching+ to store the results for every [] request. - # - # With caching, methods like +include?+ or +delete+ may no longer behave - # as you expect. Therefore, it is recommended to use the [] method only. - def initialize default = false, caching = false, &block - if block - raise ArgumentError, 'Can\'t combine block with caching.' if caching - super(&block) - else - if caching - super() do |h, k| - h[k] = h.fetch k, default - end - else - super default - end - end - end - - # Add words to the list and associate them with +kind+. - # - # Returns +self+, so you can concat add calls. - def add words, kind = true - words.each do |word| - self[word] = kind - end - self - end - -end - - -# A CaseIgnoringWordList is like a WordList, only that -# keys are compared case-insensitively. -# -# Ignoring the text case is realized by sending the +downcase+ message to -# all keys. -# -# Caching usually makes a CaseIgnoringWordList faster, but it has to be -# activated explicitely. -class CaseIgnoringWordList < WordList - - # Creates a new case-insensitive WordList with +default+ as default value. - # - # You can activate caching to store the results for every [] request. - # This speeds up subsequent lookups for the same word, but also - # uses memory. - def initialize default = false, caching = false - if caching - super(default, false) do |h, k| - h[k] = h.fetch k.downcase, default - end - else - super(default, false) - extend Uncached - end - end - - module Uncached # :nodoc: - def [] key - super(key.downcase) - end - end - - # Add +words+ to the list and associate them with +kind+. - def add words, kind = true - words.each do |word| - self[word.downcase] = kind - end - self - end - -end - -end - -__END__ -# check memory consumption -END { - ObjectSpace.each_object(CodeRay::CaseIgnoringWordList) do |wl| - p wl.inject(0) { |memo, key, value| memo + key.size + 24 } - end -} \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/file_type.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/file_type.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,255 +0,0 @@ -#!/usr/bin/env ruby -module CodeRay - -# = FileType -# -# A simple filetype recognizer. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 0.1 (2005-09-01) -# -# == Documentation -# -# # determine the type of the given -# lang = FileType[ARGV.first] -# -# # return :plaintext if the file type is unknown -# lang = FileType.fetch ARGV.first, :plaintext -# -# # try the shebang line, too -# lang = FileType.fetch ARGV.first, :plaintext, true -module FileType - - UnknownFileType = Class.new Exception - - class << self - - # Try to determine the file type of the file. - # - # +filename+ is a relative or absolute path to a file. - # - # The file itself is only accessed when +read_shebang+ is set to true. - # That means you can get filetypes from files that don't exist. - def [] filename, read_shebang = false - name = File.basename filename - ext = File.extname(name).sub(/^\./, '') # from last dot, delete the leading dot - ext2 = filename.to_s[/\.(.*)/, 1] # from first dot - - type = - TypeFromExt[ext] || - TypeFromExt[ext.downcase] || - (TypeFromExt[ext2] if ext2) || - (TypeFromExt[ext2.downcase] if ext2) || - TypeFromName[name] || - TypeFromName[name.downcase] - type ||= shebang(filename) if read_shebang - - type - end - - def shebang filename - begin - File.open filename, 'r' do |f| - if first_line = f.gets - if type = first_line[TypeFromShebang] - type.to_sym - end - end - end - rescue IOError - nil - end - end - - # This works like Hash#fetch. - # - # If the filetype cannot be found, the +default+ value - # is returned. - def fetch filename, default = nil, read_shebang = false - if default and block_given? - warn 'block supersedes default value argument' - end - - unless type = self[filename, read_shebang] - return yield if block_given? - return default if default - raise UnknownFileType, 'Could not determine type of %p.' % filename - end - type - end - - end - - TypeFromExt = { - 'c' => :c, - 'css' => :css, - 'diff' => :diff, - 'dpr' => :delphi, - 'groovy' => :groovy, - 'gvy' => :groovy, - 'h' => :c, - 'htm' => :html, - 'html' => :html, - 'html.erb' => :rhtml, - 'java' => :java, - 'js' => :java_script, - 'json' => :json, - 'mab' => :ruby, - 'pas' => :delphi, - 'patch' => :diff, - 'php' => :php, - 'php3' => :php, - 'php4' => :php, - 'php5' => :php, - 'py' => :python, - 'py3' => :python, - 'pyw' => :python, - 'rake' => :ruby, - 'raydebug' => :debug, - 'rb' => :ruby, - 'rbw' => :ruby, - 'rhtml' => :rhtml, - 'rxml' => :ruby, - 'sch' => :scheme, - 'sql' => :sql, - 'ss' => :scheme, - 'xhtml' => :xhtml, - 'xml' => :xml, - 'yaml' => :yaml, - 'yml' => :yaml, - } - for cpp_alias in %w[cc cpp cp cxx c++ C hh hpp h++ cu] - TypeFromExt[cpp_alias] = :cpp - end - - TypeFromShebang = /\b(?:ruby|perl|python|sh)\b/ - - TypeFromName = { - 'Rakefile' => :ruby, - 'Rantfile' => :ruby, - } - -end - -end - -if $0 == __FILE__ - $VERBOSE = true - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class FileTypeTests < Test::Unit::TestCase - - include CodeRay - - def test_fetch - assert_raise FileType::UnknownFileType do - FileType.fetch '' - end - - assert_throws :not_found do - FileType.fetch '.' do - throw :not_found - end - end - - assert_equal :default, FileType.fetch('c', :default) - - stderr, fake_stderr = $stderr, Object.new - $err = '' - def fake_stderr.write x - $err << x - end - $stderr = fake_stderr - FileType.fetch('c', :default) { } - assert_equal "block supersedes default value argument\n", $err - $stderr = stderr - end - - def test_ruby - assert_equal :ruby, FileType['test.rb'] - assert_equal :ruby, FileType['test.java.rb'] - assert_equal :java, FileType['test.rb.java'] - assert_equal :ruby, FileType['C:\\Program Files\\x\\y\\c\\test.rbw'] - assert_equal :ruby, FileType['/usr/bin/something/Rakefile'] - assert_equal :ruby, FileType['~/myapp/gem/Rantfile'] - assert_equal :ruby, FileType['./lib/tasks\repository.rake'] - assert_not_equal :ruby, FileType['test_rb'] - assert_not_equal :ruby, FileType['Makefile'] - assert_not_equal :ruby, FileType['set.rb/set'] - assert_not_equal :ruby, FileType['~/projects/blabla/rb'] - end - - def test_c - assert_equal :c, FileType['test.c'] - assert_equal :c, FileType['C:\\Program Files\\x\\y\\c\\test.h'] - assert_not_equal :c, FileType['test_c'] - assert_not_equal :c, FileType['Makefile'] - assert_not_equal :c, FileType['set.h/set'] - assert_not_equal :c, FileType['~/projects/blabla/c'] - end - - def test_cpp - assert_equal :cpp, FileType['test.c++'] - assert_equal :cpp, FileType['test.cxx'] - assert_equal :cpp, FileType['test.hh'] - assert_equal :cpp, FileType['test.hpp'] - assert_equal :cpp, FileType['test.cu'] - assert_equal :cpp, FileType['test.C'] - assert_not_equal :cpp, FileType['test.c'] - assert_not_equal :cpp, FileType['test.h'] - end - - def test_html - assert_equal :html, FileType['test.htm'] - assert_equal :xhtml, FileType['test.xhtml'] - assert_equal :xhtml, FileType['test.html.xhtml'] - assert_equal :rhtml, FileType['_form.rhtml'] - assert_equal :rhtml, FileType['_form.html.erb'] - end - - def test_yaml - assert_equal :yaml, FileType['test.yml'] - assert_equal :yaml, FileType['test.yaml'] - assert_equal :yaml, FileType['my.html.yaml'] - assert_not_equal :yaml, FileType['YAML'] - end - - def test_pathname - require 'pathname' - pn = Pathname.new 'test.rb' - assert_equal :ruby, FileType[pn] - dir = Pathname.new '/etc/var/blubb' - assert_equal :ruby, FileType[dir + pn] - assert_equal :cpp, FileType[dir + 'test.cpp'] - end - - def test_no_shebang - dir = './test' - if File.directory? dir - Dir.chdir dir do - assert_equal :c, FileType['test.c'] - end - end - end - - def test_shebang_empty_file - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { } # touch - assert_equal nil, FileType[tmpfile] - end - - def test_shebang - require 'tmpdir' - tmpfile = File.join(Dir.tmpdir, 'bla') - File.open(tmpfile, 'w') { |f| f.puts '#!/usr/bin/env ruby' } - assert_equal :ruby, FileType[tmpfile, true] - end - -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/gzip_simple.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/gzip_simple.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -# =GZip Simple -# -# A simplified interface to the gzip library +zlib+ (from the Ruby Standard Library.) -# -# Author: murphy (mail to murphy rubychan de) -# -# Version: 0.2 (2005.may.28) -# -# ==Documentation -# -# See +GZip+ module and the +String+ extensions. -# -module GZip - - require 'zlib' - - # The default zipping level. 7 zips good and fast. - DEFAULT_GZIP_LEVEL = 7 - - # Unzips the given string +s+. - # - # Example: - # require 'gzip_simple' - # print GZip.gunzip(File.read('adresses.gz')) - def GZip.gunzip s - Zlib::Inflate.inflate s - end - - # Zips the given string +s+. - # - # Example: - # require 'gzip_simple' - # File.open('adresses.gz', 'w') do |file - # file.write GZip.gzip('Mum: 0123 456 789', 9) - # end - # - # If you provide a +level+, you can control how strong - # the string is compressed: - # - 0: no compression, only convert to gzip format - # - 1: compress fast - # - 7: compress more, but still fast (default) - # - 8: compress more, slower - # - 9: compress best, very slow - def GZip.gzip s, level = DEFAULT_GZIP_LEVEL - Zlib::Deflate.new(level).deflate s, Zlib::FINISH - end -end - - -# String extensions to use the GZip module. -# -# The methods gzip and gunzip provide an even more simple -# interface to the ZLib: -# -# # create a big string -# x = 'a' * 1000 -# -# # zip it -# x_gz = x.gzip -# -# # test the result -# puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] -# #-> Zipped 1000 bytes to 19 bytes. -# -# # unzipping works -# p x_gz.gunzip == x #-> true -class String - # Returns the string, unzipped. - # See GZip.gunzip - def gunzip - GZip.gunzip self - end - # Replaces the string with its unzipped value. - # See GZip.gunzip - def gunzip! - replace gunzip - end - - # Returns the string, zipped. - # +level+ is the gzip compression level, see GZip.gzip. - def gzip level = GZip::DEFAULT_GZIP_LEVEL - GZip.gzip self, level - end - # Replaces the string with its zipped value. - # See GZip.gzip. - def gzip!(*args) - replace gzip(*args) - end -end - -if $0 == __FILE__ - eval DATA.read, nil, $0, __LINE__+4 -end - -__END__ -#CODE - -# Testing / Benchmark -x = 'a' * 1000 -x_gz = x.gzip -puts 'Zipped %d bytes to %d bytes.' % [x.size, x_gz.size] #-> Zipped 1000 bytes to 19 bytes. -p x_gz.gunzip == x #-> true - -require 'benchmark' - -INFO = 'packed to %0.3f%%' # :nodoc: - -x = Array.new(100000) { rand(255).chr + 'aaaaaaaaa' + rand(255).chr }.join -Benchmark.bm(10) do |bm| - for level in 0..9 - bm.report "zip #{level}" do - $x = x.gzip level - end - puts INFO % [100.0 * $x.size / x.size] - end - bm.report 'zip' do - $x = x.gzip - end - puts INFO % [100.0 * $x.size / x.size] - bm.report 'unzip' do - $x.gunzip - end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/plugin.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/plugin.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,349 +0,0 @@ -module CodeRay - -# = PluginHost -# -# A simple subclass plugin system. -# -# Example: -# class Generators < PluginHost -# plugin_path 'app/generators' -# end -# -# class Generator -# extend Plugin -# PLUGIN_HOST = Generators -# end -# -# class FancyGenerator < Generator -# register_for :fancy -# end -# -# Generators[:fancy] #-> FancyGenerator -# # or -# CodeRay.require_plugin 'Generators/fancy' -module PluginHost - - # Raised if Encoders::[] fails because: - # * a file could not be found - # * the requested Encoder is not registered - PluginNotFound = Class.new Exception - HostNotFound = Class.new Exception - - PLUGIN_HOSTS = [] - PLUGIN_HOSTS_BY_ID = {} # dummy hash - - # Loads all plugins using list and load. - def load_all - for plugin in list - load plugin - end - end - - # Returns the Plugin for +id+. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml] - def [] id, *args, &blk - plugin = validate_id(id) - begin - plugin = plugin_hash.[] plugin, *args, &blk - end while plugin.is_a? Symbol - plugin - end - - # Alias for +[]+. - alias load [] - - def require_helper plugin_id, helper_name - path = path_to File.join(plugin_id, helper_name) - require path - end - - class << self - - # Adds the module/class to the PLUGIN_HOSTS list. - def extended mod - PLUGIN_HOSTS << mod - end - - # Warns you that you should not #include this module. - def included mod - warn "#{name} should not be included. Use extend." - end - - # Find the PluginHost for host_id. - def host_by_id host_id - unless PLUGIN_HOSTS_BY_ID.default_proc - ph = Hash.new do |h, a_host_id| - for host in PLUGIN_HOSTS - h[host.host_id] = host - end - h.fetch a_host_id, nil - end - PLUGIN_HOSTS_BY_ID.replace ph - end - PLUGIN_HOSTS_BY_ID[host_id] - end - - end - - # The path where the plugins can be found. - def plugin_path *args - unless args.empty? - @plugin_path = File.expand_path File.join(*args) - load_map - end - @plugin_path - end - - # The host's ID. - # - # If PLUGIN_HOST_ID is not set, it is simply the class name. - def host_id - if self.const_defined? :PLUGIN_HOST_ID - self::PLUGIN_HOST_ID - else - name - end - end - - # Map a plugin_id to another. - # - # Usage: Put this in a file plugin_path/_map.rb. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue, - # :maroon => :brown, - # :luna => :moon - # end - def map hash - for from, to in hash - from = validate_id from - to = validate_id to - plugin_hash[from] = to unless plugin_hash.has_key? from - end - end - - # Define the default plugin to use when no plugin is found - # for a given id. - # - # See also map. - # - # class MyColorHost < PluginHost - # map :navy => :dark_blue - # default :gray - # end - def default id = nil - if id - id = validate_id id - plugin_hash[nil] = id - else - plugin_hash[nil] - end - end - - # Every plugin must register itself for one or more - # +ids+ by calling register_for, which calls this method. - # - # See Plugin#register_for. - def register plugin, *ids - for id in ids - unless id.is_a? Symbol - raise ArgumentError, - "id must be a Symbol, but it was a #{id.class}" - end - plugin_hash[validate_id(id)] = plugin - end - end - - # A Hash of plugion_id => Plugin pairs. - def plugin_hash - @plugin_hash ||= create_plugin_hash - end - - # Returns an array of all .rb files in the plugin path. - # - # The extension .rb is not included. - def list - Dir[path_to('*')].select do |file| - File.basename(file)[/^(?!_)\w+\.rb$/] - end.map do |file| - File.basename file, '.rb' - end - end - - # Makes a map of all loaded plugins. - def inspect - map = plugin_hash.dup - map.each do |id, plugin| - map[id] = plugin.to_s[/(?>\w+)$/] - end - "#{name}[#{host_id}]#{map.inspect}" - end - -protected - # Created a new plugin list and stores it to @plugin_hash. - def create_plugin_hash - @plugin_hash = - Hash.new do |h, plugin_id| - id = validate_id(plugin_id) - path = path_to id - begin - require path - rescue LoadError => boom - if h.has_key? nil # default plugin - h[id] = h[nil] - else - raise PluginNotFound, 'Could not load plugin %p: %s' % [id, boom] - end - else - # Plugin should have registered by now - unless h.has_key? id - raise PluginNotFound, - "No #{self.name} plugin for #{id.inspect} found in #{path}." - end - end - h[id] - end - end - - # Loads the map file (see map). - # - # This is done automatically when plugin_path is called. - def load_map - mapfile = path_to '_map' - if File.exist? mapfile - require mapfile - elsif $VERBOSE - warn 'no _map.rb found for %s' % name - end - end - - # Returns the Plugin for +id+. - # Use it like Hash#fetch. - # - # Example: - # yaml_plugin = MyPluginHost[:yaml, :default] - def fetch id, *args, &blk - plugin_hash.fetch validate_id(id), *args, &blk - end - - # Returns the expected path to the plugin file for the given id. - def path_to plugin_id - File.join plugin_path, "#{plugin_id}.rb" - end - - # Converts +id+ to a Symbol if it is a String, - # or returns +id+ if it already is a Symbol. - # - # Raises +ArgumentError+ for all other objects, or if the - # given String includes non-alphanumeric characters (\W). - def validate_id id - if id.is_a? Symbol or id.nil? - id - elsif id.is_a? String - if id[/\w+/] == id - id.downcase.to_sym - else - raise ArgumentError, "Invalid id: '#{id}' given." - end - else - raise ArgumentError, - "String or Symbol expected, but #{id.class} given." - end - end - -end - - -# = Plugin -# -# Plugins have to include this module. -# -# IMPORTANT: use extend for this module. -# -# Example: see PluginHost. -module Plugin - - def included mod - warn "#{name} should not be included. Use extend." - end - - # Register this class for the given langs. - # Example: - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # ... - # end - # - # See PluginHost.register. - def register_for *ids - plugin_host.register self, *ids - end - - # Returns the title of the plugin, or sets it to the - # optional argument +title+. - def title title = nil - if title - @title = title.to_s - else - @title ||= name[/([^:]+)$/, 1] - end - end - - # The host for this Plugin class. - def plugin_host host = nil - if host and not host.is_a? PluginHost - raise ArgumentError, - "PluginHost expected, but #{host.class} given." - end - self.const_set :PLUGIN_HOST, host if host - self::PLUGIN_HOST - end - - # Require some helper files. - # - # Example: - # - # class MyPlugin < PluginHost::BaseClass - # register_for :my_id - # helper :my_helper - # - # The above example loads the file myplugin/my_helper.rb relative to the - # file in which MyPlugin was defined. - # - # You can also load a helper from a different plugin: - # - # helper 'other_plugin/helper_name' - def helper *helpers - for helper in helpers - if helper.is_a?(String) && helper[/\//] - self::PLUGIN_HOST.require_helper $`, $' - else - self::PLUGIN_HOST.require_helper plugin_id, helper.to_s - end - end - end - - # Returns the pulgin id used by the engine. - def plugin_id - name[/\w+$/].downcase - end - -end - -# Convenience method for plugin loading. -# The syntax used is: -# -# CodeRay.require_plugin '/' -# -# Returns the loaded plugin. -def self.require_plugin path - host_id, plugin_id = path.split '/', 2 - host = PluginHost.host_by_id(host_id) - raise PluginHost::HostNotFound, - "No host for #{host_id.inspect} found." unless host - host.load plugin_id -end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/helpers/word_list.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/helpers/word_list.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -module CodeRay - -# = WordList -# -# A Hash subclass designed for mapping word lists to token types. -# -# Copyright (c) 2006 by murphy (Kornelius Kalnbach) -# -# License:: LGPL / ask the author -# Version:: 1.1 (2006-Oct-19) -# -# A WordList is a Hash with some additional features. -# It is intended to be used for keyword recognition. -# -# WordList is highly optimized to be used in Scanners, -# typically to decide whether a given ident is a special token. -# -# For case insensitive words use CaseIgnoringWordList. -# -# Example: -# -# # define word arrays -# RESERVED_WORDS = %w[ -# asm break case continue default do else -# ... -# ] -# -# PREDEFINED_TYPES = %w[ -# int long short char void -# ... -# ] -# -# PREDEFINED_CONSTANTS = %w[ -# EOF NULL ... -# ] -# -# # make a WordList -# IDENT_KIND = WordList.new(:ident). -# add(RESERVED_WORDS, :reserved). -# add(PREDEFINED_TYPES, :pre_type). -# add(PREDEFINED_CONSTANTS, :pre_constant) -# -# ... -# -# def scan_tokens tokens, options -# ... -# -# elsif scan(/[A-Za-z_][A-Za-z_0-9]*/) -# # use it -# kind = IDENT_KIND[match] -# ... -class WordList < Hash - - # Creates a new WordList with +default+ as default value. - # - # You can activate +caching+ to store the results for every [] request. - # - # With caching, methods like +include?+ or +delete+ may no longer behave - # as you expect. Therefore, it is recommended to use the [] method only. - def initialize default = false, caching = false, &block - if block - raise ArgumentError, 'Can\'t combine block with caching.' if caching - super(&block) - else - if caching - super() do |h, k| - h[k] = h.fetch k, default - end - else - super default - end - end - end - - # Add words to the list and associate them with +kind+. - # - # Returns +self+, so you can concat add calls. - def add words, kind = true - words.each do |word| - self[word] = kind - end - self - end - -end - - -# A CaseIgnoringWordList is like a WordList, only that -# keys are compared case-insensitively. -# -# Ignoring the text case is realized by sending the +downcase+ message to -# all keys. -# -# Caching usually makes a CaseIgnoringWordList faster, but it has to be -# activated explicitely. -class CaseIgnoringWordList < WordList - - # Creates a new case-insensitive WordList with +default+ as default value. - # - # You can activate caching to store the results for every [] request. - # This speeds up subsequent lookups for the same word, but also - # uses memory. - def initialize default = false, caching = false - if caching - super(default, false) do |h, k| - h[k] = h.fetch k.downcase, default - end - else - super(default, false) - extend Uncached - end - end - - module Uncached # :nodoc: - def [] key - super(key.downcase) - end - end - - # Add +words+ to the list and associate them with +kind+. - def add words, kind = true - words.each do |word| - self[word.downcase] = kind - end - self - end - -end - -end - -__END__ -# check memory consumption -END { - ObjectSpace.each_object(CodeRay::CaseIgnoringWordList) do |wl| - p wl.inject(0) { |memo, key, value| memo + key.size + 24 } - end -} \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanner.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanner.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,292 +0,0 @@ -module CodeRay - - require 'coderay/helpers/plugin' - - # = Scanners - # - # This module holds the Scanner class and its subclasses. - # For example, the Ruby scanner is named CodeRay::Scanners::Ruby - # can be found in coderay/scanners/ruby. - # - # Scanner also provides methods and constants for the register - # mechanism and the [] method that returns the Scanner class - # belonging to the given lang. - # - # See PluginHost. - module Scanners - extend PluginHost - plugin_path File.dirname(__FILE__), 'scanners' - - require 'strscan' - - # = Scanner - # - # The base class for all Scanners. - # - # It is a subclass of Ruby's great +StringScanner+, which - # makes it easy to access the scanning methods inside. - # - # It is also +Enumerable+, so you can use it like an Array of - # Tokens: - # - # require 'coderay' - # - # c_scanner = CodeRay::Scanners[:c].new "if (*p == '{') nest++;" - # - # for text, kind in c_scanner - # puts text if kind == :operator - # end - # - # # prints: (*==)++; - # - # OK, this is a very simple example :) - # You can also use +map+, +any?+, +find+ and even +sort_by+, - # if you want. - class Scanner < StringScanner - - extend Plugin - plugin_host Scanners - - # Raised if a Scanner fails while scanning - ScanError = Class.new(Exception) - - require 'coderay/helpers/word_list' - - # The default options for all scanner classes. - # - # Define @default_options for subclasses. - DEFAULT_OPTIONS = { :stream => false } - - KINDS_NOT_LOC = [:comment, :doctype] - - class << self - - # Returns if the Scanner can be used in streaming mode. - def streamable? - is_a? Streamable - end - - def normify code - code = code.to_s - if code.respond_to? :force_encoding - debug, $DEBUG = $DEBUG, false - begin - code.force_encoding 'utf-8' - code[/\z/] # raises an ArgumentError when code contains a non-UTF-8 char - rescue ArgumentError - code.force_encoding 'binary' - ensure - $DEBUG = debug - end - end - code.to_unix - end - - def file_extension extension = nil - if extension - @file_extension = extension.to_s - else - @file_extension ||= plugin_id.to_s - end - end - - end - -=begin -## Excluded for speed reasons; protected seems to make methods slow. - - # Save the StringScanner methods from being called. - # This would not be useful for highlighting. - strscan_public_methods = - StringScanner.instance_methods - - StringScanner.ancestors[1].instance_methods - protected(*strscan_public_methods) -=end - - # Create a new Scanner. - # - # * +code+ is the input String and is handled by the superclass - # StringScanner. - # * +options+ is a Hash with Symbols as keys. - # It is merged with the default options of the class (you can - # overwrite default options here.) - # * +block+ is the callback for streamed highlighting. - # - # If you set :stream to +true+ in the options, the Scanner uses a - # TokenStream with the +block+ as callback to handle the tokens. - # - # Else, a Tokens object is used. - def initialize code='', options = {}, &block - raise "I am only the basic Scanner class. I can't scan "\ - "anything. :( Use my subclasses." if self.class == Scanner - - @options = self.class::DEFAULT_OPTIONS.merge options - - super Scanner.normify(code) - - @tokens = options[:tokens] - if @options[:stream] - warn "warning in CodeRay::Scanner.new: :stream is set, "\ - "but no block was given" unless block_given? - raise NotStreamableError, self unless kind_of? Streamable - @tokens ||= TokenStream.new(&block) - else - warn "warning in CodeRay::Scanner.new: Block given, "\ - "but :stream is #{@options[:stream]}" if block_given? - @tokens ||= Tokens.new - end - @tokens.scanner = self - - setup - end - - def reset - super - reset_instance - end - - def string= code - code = Scanner.normify(code) - super code - reset_instance - end - - # More mnemonic accessor name for the input string. - alias code string - alias code= string= - - # Returns the Plugin ID for this scanner. - def lang - self.class.plugin_id - end - - # Scans the code and returns all tokens in a Tokens object. - def tokenize new_string=nil, options = {} - options = @options.merge(options) - self.string = new_string if new_string - @cached_tokens = - if @options[:stream] # :stream must have been set already - reset unless new_string - scan_tokens @tokens, options - @tokens - else - scan_tokens @tokens, options - end - end - - def tokens - @cached_tokens ||= tokenize - end - - # Whether the scanner is in streaming mode. - def streaming? - !!@options[:stream] - end - - # Traverses the tokens. - def each &block - raise ArgumentError, - 'Cannot traverse TokenStream.' if @options[:stream] - tokens.each(&block) - end - include Enumerable - - # The current line position of the scanner. - # - # Beware, this is implemented inefficiently. It should be used - # for debugging only. - def line - string[0..pos].count("\n") + 1 - end - - def column pos = self.pos - return 0 if pos <= 0 - string = string() - if string.respond_to?(:bytesize) && (defined?(@bin_string) || string.bytesize != string.size) - @bin_string ||= string.dup.force_encoding('binary') - string = @bin_string - end - pos - (string.rindex(?\n, pos) || 0) - end - - def marshal_dump - @options - end - - def marshal_load options - @options = options - end - - protected - - # Can be implemented by subclasses to do some initialization - # that has to be done once per instance. - # - # Use reset for initialization that has to be done once per - # scan. - def setup - end - - # This is the central method, and commonly the only one a - # subclass implements. - # - # Subclasses must implement this method; it must return +tokens+ - # and must only use Tokens#<< for storing scanned tokens! - def scan_tokens tokens, options - raise NotImplementedError, - "#{self.class}#scan_tokens not implemented." - end - - def reset_instance - @tokens.clear unless @options[:keep_tokens] - @cached_tokens = nil - @bin_string = nil if defined? @bin_string - end - - # Scanner error with additional status information - def raise_inspect msg, tokens, state = 'No state given!', ambit = 30 - raise ScanError, <<-EOE % [ - - -***ERROR in %s: %s (after %d tokens) - -tokens: -%s - -current line: %d column: %d pos: %d -matched: %p state: %p -bol? = %p, eos? = %p - -surrounding code: -%p ~~ %p - - -***ERROR*** - - EOE - File.basename(caller[0]), - msg, - tokens.size, - tokens.last(10).map { |t| t.inspect }.join("\n"), - line, column, pos, - matched, state, bol?, eos?, - string[pos - ambit, ambit], - string[pos, ambit], - ] - end - - end - - end -end - -class String - # I love this hack. It seems to silence all dos/unix/mac newline problems. - def to_unix - if index ?\r - gsub(/\r\n?/, "\n") - else - self - end - end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,782 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/trunk/vendor/plugins/coderay-0.9.2/lib/coderay/scanners -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -ruby -dir - -java -dir - -ruby.rb -file - - - - -2010-09-23T14:37:45.675761Z -4a49513a2bda4483a1bfaeba8e57fb2c -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -13715 - -python.rb -file - - - - -2010-09-23T14:37:45.675761Z -939e009d9b197cb6437646be82c02982 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -9190 - -java.rb -file - - - - -2010-09-23T14:37:45.671759Z -c812fce5db1da4af753e919407494271 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5046 - -c.rb -file - - - - -2010-09-23T14:37:45.667815Z -299db2bdce8368d0bc6d90f5839c87ee -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5408 - -cpp.rb -file - - - - -2010-09-23T14:37:45.667815Z -afc4a4b0842e5efdafe98f6c5a10810e -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6286 - -groovy.rb -file - - - - -2010-09-23T14:37:45.671759Z -7fc1acca7ff04fa00160349b3a1b543e -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -8521 - -rhtml.rb -file - - - - -2010-09-23T14:37:45.675761Z -456da0b0587037dce29f70bdb4d42253 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1526 - -debug.rb -file - - - - -2010-09-23T14:37:45.671759Z -94bdd6c948cb9c3d21ef94a5cec19e05 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -1281 - -php.rb -file - - - - -2010-09-23T14:37:45.675761Z -90f9a8053ea7eaef089e5140188c9950 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -23501 - -css.rb -file - - - - -2010-09-23T14:37:45.671759Z -dfbdae0781ad8376342b8c0f5733c2ba -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -5548 - -sql.rb -file - - - - -2010-09-23T14:37:45.679790Z -dd1580e74abffd4c30a8b941b3903f07 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4727 - -xml.rb -file - - - - -2010-09-23T14:37:45.679790Z -798309ac45aa9d4ccc159242f3a6f150 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -211 - -yaml.rb -file - - - - -2010-09-23T14:37:45.679790Z -f62eab25adbef42e92cad3f5463f91ac -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4261 - -html.rb -file - - - - -2010-09-23T14:37:45.671759Z -9a21ea0438e6eea6962a27aa15f55645 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4247 - -scheme.rb -file - - - - -2010-09-23T14:37:45.679790Z -f6c296bbb33704ec2a03725b01e06719 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4939 - -java_script.rb -file - - - - -2010-09-23T14:37:45.675761Z -821536789acfa80a62a4fb54ab6f31d4 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6722 - -delphi.rb -file - - - - -2010-09-23T14:37:45.671759Z -182116a4525447d4faed874dfb790277 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -4504 - -nitro_xhtml.rb -file - - - - -2010-09-23T14:37:45.675761Z -f7d82e60f68fe6c9d46b63e63f6ec9f6 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2858 - -plaintext.rb -file - - - - -2010-09-23T14:37:45.675761Z -ae16e40b3db78a5d8c793165085f5db9 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -316 - -diff.rb -file - - - - -2010-09-23T14:37:45.671759Z -fbe0f5af1885b8c58e55c9ba2891ce49 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -3024 - -json.rb -file - - - - -2010-09-23T14:37:45.675761Z -0284131b18751e532a2c5e2dd8d51426 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -2940 - -_map.rb -file - - - - -2010-09-23T14:37:45.667815Z -b3eadcc78242cf25ba0ab3205d6a2b61 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -413 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/_map.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/c.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/c.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/cpp.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/cpp.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/css.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/debug.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/delphi.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/delphi.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/diff.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/diff.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/groovy.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/groovy.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/html.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java_script.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/java_script.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/json.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/nitro_xhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/nitro_xhtml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/php.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/php.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/plaintext.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/plaintext.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/python.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/python.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/rhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/rhtml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/ruby.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/ruby.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/scheme.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/scheme.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/sql.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/sql.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/xml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/prop-base/yaml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/_map.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/_map.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -module CodeRay -module Scanners - - map \ - :h => :c, - :cplusplus => :cpp, - :'c++' => :cpp, - :ecma => :java_script, - :ecmascript => :java_script, - :ecma_script => :java_script, - :irb => :ruby, - :javascript => :java_script, - :js => :java_script, - :nitro => :nitro_xhtml, - :pascal => :delphi, - :plain => :plaintext, - :xhtml => :html, - :yml => :yaml - - default :plain - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/c.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/c.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -module CodeRay -module Scanners - - class C < Scanner - - include Streamable - - register_for :c - file_extension 'c' - - RESERVED_WORDS = [ - 'asm', 'break', 'case', 'continue', 'default', 'do', - 'else', 'enum', 'for', 'goto', 'if', 'return', - 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', - 'restrict', # added in C99 - ] - - PREDEFINED_TYPES = [ - 'int', 'long', 'short', 'char', - 'signed', 'unsigned', 'float', 'double', - 'bool', 'complex', # added in C99 - ] - - PREDEFINED_CONSTANTS = [ - 'EOF', 'NULL', - 'true', 'false', # added in C99 - ] - DIRECTIVES = [ - 'auto', 'extern', 'register', 'static', 'void', - 'const', 'volatile', # added in C89 - 'inline', # added in C99 - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\\n"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/cpp.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/cpp.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -module CodeRay -module Scanners - - class CPlusPlus < Scanner - - include Streamable - - register_for :cpp - file_extension 'cpp' - title 'C++' - - # http://www.cppreference.com/wiki/keywords/start - RESERVED_WORDS = [ - 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', - 'case', 'catch', 'class', 'compl', 'const_cast', - 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', - 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', - 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', - 'sizeof', 'static_cast', 'struct', 'switch', 'template', - 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', - 'while', 'xor', 'xor_eq' - ] - - PREDEFINED_TYPES = [ - 'bool', 'char', 'double', 'float', 'int', 'long', - 'short', 'signed', 'unsigned', 'wchar_t', 'string' - ] - PREDEFINED_CONSTANTS = [ - 'false', 'true', - 'EOF', 'NULL', - ] - PREDEFINED_VARIABLES = [ - 'this' - ] - DIRECTIVES = [ - 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', - 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', - 'volatile' - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_VARIABLES, :local_variable). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'class' - state = :class_name_expected - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - when :class_name_expected - if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = :class - state = :initial - - elsif match = scan(/\s+/) - kind = :space - - else - getch - kind = :error - state = :initial - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/css.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/css.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -module CodeRay -module Scanners - - class CSS < Scanner - - register_for :css - - KINDS_NOT_LOC = [ - :comment, - :class, :pseudo_class, :type, - :constant, :directive, - :key, :value, :operator, :color, :float, - :error, :important, - ] - - module RE - NonASCII = /[\x80-\xFF]/ - Hex = /[0-9a-fA-F]/ - Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too - Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ - NMChar = /[-_a-zA-Z0-9]|#{NonASCII}|#{Escape}/ - NMStart = /[_a-zA-Z]|#{NonASCII}|#{Escape}/ - NL = /\r\n|\r|\n|\f/ - String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp - String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp - String = /#{String1}|#{String2}/ - - HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ - Color = /#{HexColor}/ - - Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ - Name = /#{NMChar}+/ - Ident = /-?#{NMStart}#{NMChar}*/ - AtKeyword = /@#{Ident}/ - Percentage = /#{Num}%/ - - reldimensions = %w[em ex px] - absdimensions = %w[in cm mm pt pc] - Unit = Regexp.union(*(reldimensions + absdimensions)) - - Dimension = /#{Num}#{Unit}/ - - Comment = %r! /\* (?: .*? \*/ | .* ) !mx - Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ - - Id = /##{Name}/ - Class = /\.#{Name}/ - PseudoClass = /:#{Name}/ - AttributeSelector = /\[[^\]]*\]?/ - - end - - def scan_tokens tokens, options - - value_expected = nil - states = [:initial] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - kind = :space - - elsif case states.last - when :initial, :media - if scan(/(?>#{RE::Ident})(?!\()|\*/ox) - kind = :type - elsif scan RE::Class - kind = :class - elsif scan RE::Id - kind = :constant - elsif scan RE::PseudoClass - kind = :pseudo_class - elsif match = scan(RE::AttributeSelector) - # TODO: Improve highlighting inside of attribute selectors. - tokens << [:open, :string] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1,1], :delimiter] if match[-1] == ?] - tokens << [:close, :string] - next - elsif match = scan(/@media/) - kind = :directive - states.push :media_before_name - end - - when :block - if scan(/(?>#{RE::Ident})(?!\()/ox) - if value_expected - kind = :value - else - kind = :key - end - end - - when :media_before_name - if scan RE::Ident - kind = :type - states[-1] = :media_after_name - end - - when :media_after_name - if scan(/\{/) - kind = :operator - states[-1] = :media - end - - when :comment - if scan(/(?:[^*\s]|\*(?!\/))+/) - kind = :comment - elsif scan(/\*\//) - kind = :comment - states.pop - elsif scan(/\s+/) - kind = :space - end - - else - raise_inspect 'Unknown state', tokens - - end - - elsif scan(/\/\*/) - kind = :comment - states.push :comment - - elsif scan(/\{/) - value_expected = false - kind = :operator - states.push :block - - elsif scan(/\}/) - value_expected = false - if states.last == :block || states.last == :media - kind = :operator - states.pop - else - kind = :error - end - - elsif match = scan(/#{RE::String}/o) - tokens << [:open, :string] - tokens << [match[0, 1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1, 1], :delimiter] if match.size >= 2 - tokens << [:close, :string] - next - - elsif match = scan(/#{RE::Function}/o) - tokens << [:open, :string] - start = match[/^\w+\(/] - tokens << [start, :delimiter] - if match[-1] == ?) - tokens << [match[start.size..-2], :content] - tokens << [')', :delimiter] - else - tokens << [match[start.size..-1], :content] - end - tokens << [:close, :string] - next - - elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) - kind = :float - - elsif scan(/#{RE::Color}/o) - kind = :color - - elsif scan(/! *important/) - kind = :important - - elsif scan(/rgb\([^()\n]*\)?/) - kind = :color - - elsif scan(/#{RE::AtKeyword}/o) - kind = :directive - - elsif match = scan(/ [+>:;,.=()\/] /x) - if match == ':' - value_expected = true - elsif match == ';' - value_expected = false - end - kind = :operator - - else - getch - kind = :error - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/debug.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/debug.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -module CodeRay -module Scanners - - # = Debug Scanner - class Debug < Scanner - - include Streamable - register_for :debug - file_extension 'raydebug' - title 'CodeRay Token Dump' - - protected - def scan_tokens tokens, options - - opened_tokens = [] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - tokens << [matched, :space] - next - - elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) - kind = self[1].to_sym - match = self[2].gsub(/\\(.)/, '\1') - - elsif scan(/ (\w+) < /x) - kind = self[1].to_sym - opened_tokens << kind - match = :open - - elsif !opened_tokens.empty? && scan(/ > /x) - kind = opened_tokens.pop || :error - match = :close - - else - kind = :error - getch - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/delphi.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/delphi.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -module CodeRay -module Scanners - - class Delphi < Scanner - - register_for :delphi - file_extension 'pas' - - RESERVED_WORDS = [ - 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', - 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', - 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', - 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', - 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', - 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', - 'procedure', 'program', 'property', 'raise', 'record', 'repeat', - 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', - 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', - 'xor', 'on' - ] - - DIRECTIVES = [ - 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', - 'contains', 'deprecated', 'dispid', 'dynamic', 'export', - 'external', 'far', 'forward', 'implements', 'local', - 'near', 'nodefault', 'on', 'overload', 'override', - 'package', 'pascal', 'platform', 'private', 'protected', 'public', - 'published', 'read', 'readonly', 'register', 'reintroduce', - 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', - 'virtual', 'write', 'writeonly' - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(DIRECTIVES, :directive) - - NAME_FOLLOWS = CaseIgnoringWordList.new(false). - add(%w(procedure function .)) - - private - def scan_tokens tokens, options - - state = :initial - last_token = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ /x) - tokens << [matched, :space] - next - - elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) - tokens << [matched, :preprocessor] - next - - elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) - tokens << [matched, :comment] - next - - elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) - kind = :operator - - elsif match = scan(/\./) - kind = :operator - if last_token == 'end' - tokens << [match, kind] - next - end - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] - - elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) - tokens << [:open, :char] - tokens << ["'", :delimiter] - tokens << [self[1], :content] - tokens << ["'", :delimiter] - tokens << [:close, :char] - next - - elsif match = scan(/ ' /x) - tokens << [:open, :string] - state = :string - kind = :delimiter - - elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) - kind = :char - - elsif scan(/ \$ [0-9A-Fa-f]+ /x) - kind = :hex - - elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) - kind = :integer - - elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) - kind = :float - - else - kind = :error - getch - - end - - elsif state == :string - if scan(/[^\n']+/) - kind = :content - elsif scan(/''/) - kind = :char - elsif scan(/'/) - tokens << ["'", :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif scan(/\n/) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise "else case \' reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - last_token = match - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/diff.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/diff.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -module CodeRay -module Scanners - - class Diff < Scanner - - register_for :diff - title 'diff output' - - def scan_tokens tokens, options - - line_kind = nil - state = :initial - - until eos? - kind = match = nil - - if match = scan(/\n/) - if line_kind - tokens << [:end_line, line_kind] - line_kind = nil - end - tokens << [match, :space] - next - end - - case state - - when :initial - if match = scan(/--- |\+\+\+ |=+|_+/) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Index: |Property changes on: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Added: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - state = :added - elsif match = scan(/\\ /) - tokens << [:begin_line, line_kind = :change] - tokens << [match, :change] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/(@@)((?>[^@\n]*))(@@)/) - tokens << [:begin_line, line_kind = :change] - tokens << [self[1], :change] - tokens << [self[2], :plain] - tokens << [self[3], :change] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/\+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/-/) - tokens << [:begin_line, line_kind = :delete] - tokens << [match, :delete] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/ .*/) - kind = :comment - elsif scan(/.+/) - tokens << [:begin_line, line_kind = :head] - kind = :plain - else - raise_inspect 'else case rached' - end - - when :added - if match = scan(/ \+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - else - state = :initial - next - end - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - tokens << [:end_line, line_kind] if line_kind - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/groovy.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/groovy.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -module CodeRay -module Scanners - - load :java - - class Groovy < Java - - include Streamable - register_for :groovy - - # TODO: Check this! - GROOVY_KEYWORDS = %w[ - as assert def in - ] - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case instanceof new return throw typeof while as assert in - ] - GROOVY_MAGIC_VARIABLES = %w[ it ] - - IDENT_KIND = Java::IDENT_KIND.dup. - add(GROOVY_KEYWORDS, :keyword). - add(GROOVY_MAGIC_VARIABLES, :local_variable) - - ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} - REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x - - # TODO: interpretation inside ', ", / - STRING_CONTENT_PATTERN = { - "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, - '"' => /[^\\$"\n]+/, - "'''" => /(?>[^\\']+|'(?!''))+/, - '"""' => /(?>[^\\$"]+|"(?!""))+/, - '/' => /[^\\$\/\n]+/, - } - - def scan_tokens tokens, options - - state = :initial - inline_block_stack = [] - inline_block_paren_depth = nil - string_delimiter = nil - import_clause = class_name_follows = last_token = after_def = false - value_expected = true - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - if match.index ?\n - import_clause = after_def = false - value_expected = true unless value_expected - end - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - after_def = false - kind = :comment - - elsif bol? && scan(/ \#!.* /x) - kind = :doctype - - elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) - after_def = value_expected = false - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - if last_token == '.' - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - elsif after_def && check(/\s*[({]/) - kind = :method - after_def = false - elsif kind == :ident && last_token != '?' && check(/:/) - kind = :key - else - class_name_follows = true if match == 'class' || (import_clause && match == 'as') - import_clause = match == 'import' - after_def = true if match == 'def' - end - - elsif scan(/;/) - import_clause = after_def = false - value_expected = true - kind = :operator - - elsif scan(/\{/) - class_name_follows = after_def = false - value_expected = true - kind = :operator - if !inline_block_stack.empty? - inline_block_paren_depth += 1 - end - - # TODO: ~'...', ~"..." and ~/.../ style regexps - elsif match = scan(/ \.\.] | \+\+ | - && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) - value_expected = true - value_expected = :regexp if match == '~' - after_def = false - kind = :operator - - elsif match = scan(/ [)\]}] /x) - value_expected = after_def = false - if !inline_block_stack.empty? && match == '}' - inline_block_paren_depth -= 1 - if inline_block_paren_depth == 0 # closing brace of inline block reached - tokens << [match, :inline_delimiter] - tokens << [:close, :inline] - state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop - next - end - end - kind = :operator - - elsif check(/[\d.]/) - after_def = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lLgG]?/) - kind = :integer - end - - elsif match = scan(/'''|"""/) - after_def = value_expected = false - state = :multiline_string - tokens << [:open, :string] - string_delimiter = match - kind = :delimiter - - # TODO: record.'name' - elsif match = scan(/["']/) - after_def = value_expected = false - state = match == '/' ? :regexp : :string - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\//)) - after_def = value_expected = false - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - after_def = value_expected = false - kind = :annotation - - elsif scan(/\//) - after_def = false - value_expected = true - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :multiline_string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - - elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - # TODO: regexp modifiers? s, m, x, i? - modifiers = scan(/[ix]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - state = :string if state == :multiline_string - tokens << [:close, state] - string_delimiter = nil - after_def = value_expected = false - state = :initial - next - - elsif (state == :string || state == :multiline_string) && - (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - - elsif match = scan(/ \$ #{IDENT} /mox) - tokens << [:open, :inline] - tokens << ['$', :inline_delimiter] - match = match[1..-1] - tokens << [match, IDENT_KIND[match]] - tokens << [:close, :inline] - next - elsif match = scan(/ \$ \{ /x) - tokens << [:open, :inline] - tokens << ['${', :inline_delimiter] - inline_block_stack << [state, string_delimiter, inline_block_paren_depth] - inline_block_paren_depth = 1 - state = :initial - next - - elsif scan(/ \$ /mx) - kind = :content - - elsif scan(/ \\. /mx) - kind = :content - - elsif scan(/ \\ | \n /x) - tokens << [:close, state] - kind = :error - after_def = value_expected = false - state = :initial - - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token = match unless [:space, :comment, :doctype].include? kind - - tokens << [match, kind] - - end - - if [:multiline_string, :string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/html.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/html.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -module CodeRay -module Scanners - - # HTML Scanner - class HTML < Scanner - - include Streamable - register_for :html - - KINDS_NOT_LOC = [ - :comment, :doctype, :preprocessor, - :tag, :attribute_name, :operator, - :attribute_value, :delimiter, :content, - :plain, :entity, :error - ] - - ATTR_NAME = /[\w.:-]+/ - ATTR_VALUE_UNQUOTED = ATTR_NAME - TAG_END = /\/?>/ - HEX = /[0-9a-fA-F]/ - ENTITY = / - & - (?: - \w+ - | - \# - (?: - \d+ - | - x#{HEX}+ - ) - ) - ; - /ox - - PLAIN_STRING_CONTENT = { - "'" => /[^&'>\n]+/, - '"' => /[^&">\n]+/, - } - - def reset - super - @state = :initial - end - - private - def setup - @state = :initial - @plain_string_content = nil - end - - def scan_tokens tokens, options - - state = @state - plain_string_content = @plain_string_content - - until eos? - - kind = nil - match = nil - - if scan(/\s+/m) - kind = :space - - else - - case state - - when :initial - if scan(//m) - kind = :comment - elsif scan(//m) - kind = :doctype - elsif scan(/<\?xml.*?\?>/m) - kind = :preprocessor - elsif scan(/<\?.*?\?>|<%.*?%>/m) - kind = :comment - elsif scan(/<\/[-\w.:]*>/m) - kind = :tag - elsif match = scan(/<[-\w.:]+>?/m) - kind = :tag - state = :attribute unless match[-1] == ?> - elsif scan(/[^<>&]+/) - kind = :plain - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/[<>&]/) - kind = :error - else - raise_inspect '[BUG] else-case reached with state %p' % [state], tokens - end - - when :attribute - if scan(/#{TAG_END}/) - kind = :tag - state = :initial - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - state = :attribute_equal - else - kind = :error - getch - end - - when :attribute_equal - if scan(/=/) - kind = :operator - state = :attribute_value - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - elsif scan(/./) - kind = :error - state = :attribute - end - - when :attribute_value - if scan(/#{ATTR_VALUE_UNQUOTED}/o) - kind = :attribute_value - state = :attribute - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :attribute_value_string - plain_string_content = PLAIN_STRING_CONTENT[match] - kind = :delimiter - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - else - kind = :error - getch - end - - when :attribute_value_string - if scan(plain_string_content) - kind = :content - elsif scan(/['"]/) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :attribute - next - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/&/) - kind = :content - elsif scan(/[\n>]/) - tokens << [:close, :string] - kind = :error - state = :initial - end - - else - raise_inspect 'Unknown state: %p' % [state], tokens - - end - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - if options[:keep_state] - @state = state - @plain_string_content = plain_string_content - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -module CodeRay -module Scanners - - class Java < Scanner - - include Streamable - register_for :java - helper :builtin_types - - # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html - KEYWORDS = %w[ - assert break case catch continue default do else - finally for if instanceof import new package - return switch throw try typeof while - debugger export - ] - RESERVED = %w[ const goto ] - CONSTANTS = %w[ false null true ] - MAGIC_VARIABLES = %w[ this super ] - TYPES = %w[ - boolean byte char class double enum float int interface long - short void - ] << '[]' # because int[] should be highlighted as a type - DIRECTIVES = %w[ - abstract extends final implements native private protected public - static strictfp synchronized throws transient volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(RESERVED, :reserved). - add(CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(TYPES, :type). - add(BuiltinTypes::List, :pre_type). - add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). - add(DIRECTIVES, :directive) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - import_clause = class_name_follows = last_token_dot = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - tokens << [match, :comment] - next - - elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - if last_token_dot - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - else - import_clause = true if match == 'import' - class_name_follows = true if match == 'class' || match == 'interface' - end - - elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) - kind = :operator - - elsif scan(/;/) - import_clause = false - kind = :operator - - elsif scan(/\{/) - class_name_follows = false - kind = :operator - - elsif check(/[\d.]/) - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lL]?/) - kind = :integer - end - - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :string - string_delimiter = match - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - kind = :annotation - - else - getch - kind = :error - - end - - when :string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - tokens << [:close, state] - string_delimiter = nil - state = :initial - next - elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/java_script.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -module CodeRay -module Scanners - - class JavaScript < Scanner - - include Streamable - - register_for :java_script - file_extension 'js' - - # The actual JavaScript keywords. - KEYWORDS = %w[ - break case catch continue default delete do else - finally for function if in instanceof new - return switch throw try typeof var void while with - ] - PREDEFINED_CONSTANTS = %w[ - false null true undefined - ] - - MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 - - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case delete in instanceof new return throw typeof with - ] - - # Reserved for future use. - RESERVED_WORDS = %w[ - abstract boolean byte char class debugger double enum export extends - final float goto implements import int interface long native package - private protected public short static super synchronized throws transient - volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(KEYWORDS, :keyword) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - REGEXP_ESCAPE = / [bBdDsSwW] /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - KEY_CHECK_PATTERN = { - "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, - '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, - } - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - value_expected = true - key_expected = false - function_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - value_expected = true if !value_expected && match.index(?\n) - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - kind = :comment - - elsif check(/\.?\d/) - key_expected = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - kind = :float - elsif scan(/\d+/) - kind = :integer - end - - elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) - # FIXME: scan over nested tags - xml_scanner.tokenize match - value_expected = false - next - - elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) - value_expected = true - last_operator = match[-1] - key_expected = (last_operator == ?{) || (last_operator == ?,) - function_expected = false - kind = :operator - - elsif scan(/ [)\]}]+ /x) - function_expected = key_expected = value_expected = false - kind = :operator - - elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - # TODO: labels - if kind == :ident - if match.index(?$) # $ allowed inside an identifier - kind = :predefined - elsif function_expected - kind = :function - elsif check(/\s*[=:]\s*function\b/) - kind = :function - elsif key_expected && check(/\s*:/) - kind = :key - end - end - function_expected = (kind == :keyword) && (match == 'function') - key_expected = false - - elsif match = scan(/["']/) - if key_expected && check(KEY_CHECK_PATTERN[match]) - state = :key - else - state = :string - end - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\/(?=\S)/)) - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ \/ /x) - value_expected = true - key_expected = false - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :key - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - modifiers = scan(/[gim]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - tokens << [:close, state] - string_delimiter = nil - key_expected = value_expected = false - state = :initial - next - elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, state] - kind = :error - key_expected = value_expected = false - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - protected - - def reset_instance - super - @xml_scanner.reset if defined? @xml_scanner - end - - def xml_scanner - @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/json.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/json.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -module CodeRay -module Scanners - - class JSON < Scanner - - include Streamable - - register_for :json - file_extension 'json' - - KINDS_NOT_LOC = [ - :float, :char, :content, :delimiter, - :error, :integer, :operator, :value, - ] - - CONSTANTS = %w( true false null ) - IDENT_KIND = WordList.new(:key).add(CONSTANTS, :value) - - ESCAPE = / [bfnrt\\"\/] /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x - - def scan_tokens tokens, options - - state = :initial - stack = [] - string_delimiter = nil - key_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - elsif match = scan(/ [:,\[{\]}] /x) - kind = :operator - case match - when '{' then stack << :object; key_expected = true - when '[' then stack << :array - when ':' then key_expected = false - when ',' then key_expected = true if stack.last == :object - when '}', ']' then stack.pop # no error recovery, but works for valid JSON - end - elsif match = scan(/ true | false | null /x) - kind = IDENT_KIND[match] - elsif match = scan(/-?(?:0|[1-9]\d*)/) - kind = :integer - if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) - match << matched - kind = :float - end - elsif match = scan(/"/) - state = key_expected ? :key : :string - tokens << [:open, state] - kind = :delimiter - else - getch - kind = :error - end - - when :string, :key - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, state] - state = :initial - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :key].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/nitro_xhtml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # Nitro XHTML Scanner - class NitroXHTML < Scanner - - include Streamable - register_for :nitro_xhtml - file_extension :xhtml - title 'Nitro XHTML' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - NITRO_RUBY_BLOCK = / - <\?r - (?> - [^\?]* - (?> \?(?!>) [^\?]* )* - ) - (?: \?> )? - | - - (?> - [^<]* - (?> <(?!\/ruby>) [^<]* )* - ) - (?: <\/ruby> )? - | - <% - (?> - [^%]* - (?> %(?!>) [^%]* )* - ) - (?: %> )? - /mx - - NITRO_VALUE_BLOCK = / - \# - (?: - \{ - [^{}]* - (?> - \{ [^}]* \} - (?> [^{}]* ) - )* - \}? - | \| [^|]* \|? - | \( [^)]* \)? - | \[ [^\]]* \]? - | \\ [^\\]* \\? - ) - /x - - NITRO_ENTITY = / - % (?: \#\d+ | \w+ ) ; - / - - START_OF_RUBY = / - (?=[<\#%]) - < (?: \?r | % | ruby> ) - | \# [{(|] - | % (?: \#\d+ | \w+ ) ; - /x - - CLOSING_PAREN = Hash.new do |h, p| - h[p] = p - end.update( { - '(' => ')', - '[' => ']', - '{' => '}', - } ) - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) - start_tag = match[0,2] - delimiter = CLOSING_PAREN[start_tag[1,1]] - end_tag = match[-1,1] == delimiter ? delimiter : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) - start_tag = '' ? '?>' : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -(end_tag.size)-1] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif entity = scan(/#{NITRO_ENTITY}/o) - tokens << [entity, :entity] - - elsif scan(/%/) - tokens << [matched, :error] - - else - raise_inspect 'else-case reached!', tokens - - end - - end - - tokens - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/php.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/php.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,527 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # Original by Stefan Walk. - class PHP < Scanner - - register_for :php - file_extension 'php' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - def setup - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - module Words - - # according to http://www.php.net/manual/en/reserved.keywords.php - KEYWORDS = %w[ - abstract and array as break case catch class clone const continue declare default do else elseif - enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global - goto if implements interface instanceof namespace new or private protected public static switch - throw try use var while xor - cfunction old_function - ] - - TYPES = %w[ int integer float double bool boolean string array object resource ] - - LANGUAGE_CONSTRUCTS = %w[ - die echo empty exit eval include include_once isset list - require require_once return print unset - ] - - CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] - - # according to http://php.net/quickref.php on 2009-04-21; - # all functions with _ excluded (module functions) and selected additional functions - BUILTIN_FUNCTIONS = %w[ - abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 - atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec - bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite - calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog - compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex - decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each - ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract - fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner - fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv - fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate - getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid - getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext - gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate - gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell - gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate - implode include intval ip2long iptcembed iptcparse isset - jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp - juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log - log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort - natsort next ngettext nl2br nthmac octdec opendir openlog - ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow - prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile - readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir - serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget - snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat - strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen - strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn - strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam - textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack - unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap - array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc - array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip - array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey - array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad - array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift - array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect - array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk - array_walk_recursive - assert_options base_convert base64_decode base64_encode - chunk_split class_exists class_implements class_parents - count_chars debug_backtrace debug_print_backtrace debug_zval_dump - error_get_last error_log error_reporting extension_loaded - file_exists file_get_contents file_put_contents load_file - func_get_arg func_get_args func_num_args function_exists - get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars - get_current_user get_declared_classes get_declared_interfaces get_defined_constants - get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table - get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime - get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type - gc_collect_cycles gc_disable gc_enable gc_enabled - halt_compiler headers_list headers_sent highlight_file highlight_string - html_entity_decode htmlspecialchars_decode - in_array include_once inclued_get_data - is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite - is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable - is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file - is_writable is_writeable - locale_get_default locale_set_default - number_format override_function parse_str parse_url - php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name - php_strip_whitespace php_uname - preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace - preg_replace_callback preg_split print_r - require_once register_shutdown_function register_tick_function - set_error_handler set_exception_handler set_file_buffer set_include_path - set_magic_quotes_runtime set_time_limit shell_exec - str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count - strip_tags substr_compare substr_count substr_replace - time_nanosleep time_sleep_until - token_get_all token_name trigger_error - unregister_tick_function use_soap_error_handler user_error - utf8_decode utf8_encode var_dump var_export - version_compare - zend_logo_guid zend_thread_id zend_version - create_function call_user_func_array - posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid - posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups - posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid - posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid - posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod - posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid - posix_setuid posix_strerror posix_times posix_ttyname posix_uname - pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority - pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait - pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited - pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig - ] - # TODO: more built-in PHP functions? - - EXCEPTIONS = %w[ - E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING - E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT - ] - - CONSTANTS = %w[ - null true false self parent - __LINE__ __DIR__ __FILE__ __LINE__ - __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ - PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS - PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH - PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR - PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX - PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END - __COMPILER_HALT_OFFSET__ - EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS - EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL - COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED - CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 - M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES - CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB - HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS - INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP - CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT - STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX - LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 - ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 - ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 - MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT - ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING - POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES - N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR - YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN - LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 - LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY - LOG_NDELAY LOG_NOWAIT LOG_PERROR - ] - - PREDEFINED = %w[ - $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV - $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header - $argc $argv - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(KEYWORDS, :reserved). - add(TYPES, :pre_type). - add(LANGUAGE_CONSTRUCTS, :reserved). - add(BUILTIN_FUNCTIONS, :predefined). - add(CLASSES, :pre_constant). - add(EXCEPTIONS, :exception). - add(CONSTANTS, :pre_constant) - - VARIABLE_KIND = WordList.new(:local_variable). - add(PREDEFINED, :predefined) - end - - module RE - - PHP_START = / - ]*?language\s*=\s*"php"[^>]*?> | - ]*?language\s*=\s*'php'[^>]*?> | - <\?php\d? | - <\?(?!xml) - /xi - - PHP_END = %r! - | - \?> - !xi - - HTML_INDICATOR = / ]/i - - IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i - VARIABLE = /\$#{IDENTIFIER}/ - - OPERATOR = / - \.(?!\d)=? | # dot that is not decimal point, string concatenation - && | \|\| | # logic - :: | -> | => | # scope, member, dictionary - \\(?!\n) | # namespace - \+\+ | -- | # increment, decrement - [,;?:()\[\]{}] | # simple delimiters - [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts - [~$] | # whatever - =& | # reference assignment - [=!]=?=? | <> | # comparison and assignment - <<=? | >>=? | [<>]=? # comparison and shift - /x - - end - - def scan_tokens tokens, options - - if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) - tokens << [:open, :inline] - tokens << [match, :local_variable] - tokens << [scan(/->/), :operator] - tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] - tokens << [:close, :inline] - next - elsif check(/->/) - match << scan(/->/) - kind = :error - end - elsif match = scan(/\{/) - if check(/\$/) - kind = :delimiter - states[-1] = [states.last, delimiter] - delimiter = nil - states.push :php - tokens << [:open, :inline] - else - kind = :string - end - elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) - kind = :local_variable - elsif scan(/\$/) - kind = :content - end - - when :class_expected - if scan(/\s+/) - kind = :space - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :class - states.pop - else - states.pop - next - end - - when :function_expected - if scan(/\s+/) - kind = :space - elsif scan(/&/) - kind = :operator - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :function - states.pop - else - states.pop - next - end - - else - raise_inspect 'Unknown state!', tokens, states - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, states - end - raise_inspect 'Empty token', tokens, states unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/plaintext.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Scanners - - class Plaintext < Scanner - - register_for :plaintext, :plain - title 'Plain text' - - include Streamable - - KINDS_NOT_LOC = [:plain] - - def scan_tokens tokens, options - text = (scan_until(/\z/) || '') - tokens << [text, :plain] - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/python.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/python.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,285 +0,0 @@ -module CodeRay -module Scanners - - # Bases on pygments' PythonLexer, see - # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. - class Python < Scanner - - include Streamable - - register_for :python - file_extension 'py' - - KEYWORDS = [ - 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', - 'del', 'elif', 'else', 'except', 'finally', 'for', - 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', - 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', - 'nonlocal', # new in Python 3 - ] - - OLD_KEYWORDS = [ - 'exec', 'print', # gone in Python 3 - ] - - PREDEFINED_METHODS_AND_TYPES = %w[ - __import__ abs all any apply basestring bin bool buffer - bytearray bytes callable chr classmethod cmp coerce compile - complex delattr dict dir divmod enumerate eval execfile exit - file filter float frozenset getattr globals hasattr hash hex id - input int intern isinstance issubclass iter len list locals - long map max min next object oct open ord pow property range - raw_input reduce reload repr reversed round set setattr slice - sorted staticmethod str sum super tuple type unichr unicode - vars xrange zip - ] - - PREDEFINED_EXCEPTIONS = %w[ - ArithmeticError AssertionError AttributeError - BaseException DeprecationWarning EOFError EnvironmentError - Exception FloatingPointError FutureWarning GeneratorExit IOError - ImportError ImportWarning IndentationError IndexError KeyError - KeyboardInterrupt LookupError MemoryError NameError - NotImplemented NotImplementedError OSError OverflowError - OverflowWarning PendingDeprecationWarning ReferenceError - RuntimeError RuntimeWarning StandardError StopIteration - SyntaxError SyntaxWarning SystemError SystemExit TabError - TypeError UnboundLocalError UnicodeDecodeError - UnicodeEncodeError UnicodeError UnicodeTranslateError - UnicodeWarning UserWarning ValueError Warning ZeroDivisionError - ] - - PREDEFINED_VARIABLES_AND_CONSTANTS = [ - 'False', 'True', 'None', # "keywords" since Python 3 - 'self', 'Ellipsis', 'NotImplemented', - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(OLD_KEYWORDS, :old_keyword). - add(PREDEFINED_METHODS_AND_TYPES, :predefined). - add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). - add(PREDEFINED_EXCEPTIONS, :exception) - - NAME = / [^\W\d] \w* /x - ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x - - OPERATOR = / - \.\.\. | # ellipsis - \.(?!\d) | # dot but not decimal point - [,;:()\[\]{}] | # simple delimiters - \/\/=? | \*\*=? | # special math - [-+*\/%&|^]=? | # ordinary math and binary logic - [~`] | # binary complement and inspection - <<=? | >>=? | [<>=]=? | != # comparison and assignment - /x - - STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = Regexp.union delimiter - end - - STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x - end - - DEF_NEW_STATE = WordList.new(:initial). - add(%w(def), :def_expected). - add(%w(import from), :include_expected). - add(%w(class), :class_expected) - - DESCRIPTOR = / - #{NAME} - (?: \. #{NAME} )* - | \* - /x - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - string_raw = false - import_clause = class_name_follows = last_token_dot = false - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - from_import_state = [] - - until eos? - - kind = nil - match = nil - - if state == :string - if scan(STRING_DELIMITER_REGEXP[string_delimiter]) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif string_delimiter.size == 3 && scan(/\n/) - kind = :content - elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) - kind = :content - elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) - kind = :char - elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) - kind = :char - elsif scan(/ \\ . /x) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state - end - - elsif match = scan(/ [ \t]+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(/\n/) - tokens << [match, :space] - state = :initial if state == :include_expected - next - - elsif match = scan(/ \# [^\n]* /mx) - tokens << [match, :comment] - next - - elsif state == :initial - - if scan(/#{OPERATOR}/o) - kind = :operator - - elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) - tokens << [:open, :string] - string_delimiter = self[2] - string_raw = false - modifiers = self[1] - unless modifiers.empty? - string_raw = !!modifiers.index(?r) - tokens << [modifiers, :modifier] - match = string_delimiter - end - state = :string - kind = :delimiter - - # TODO: backticks - - elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = IDENT_KIND[match] - # TODO: keyword arguments - kind = :ident if last_token_dot - if kind == :old_keyword - kind = check(/\(/) ? :ident : :keyword - elsif kind == :predefined && check(/ *=/) - kind = :ident - elsif kind == :keyword - state = DEF_NEW_STATE[match] - from_import_state << match.to_sym if state == :include_expected - end - - elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) - kind = :decorator - - elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) - kind = :hex - - elsif scan(/0[bB][01]+[lL]?/) - kind = :bin - - elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - if scan(/[jJ]/) - match << matched - kind = :imaginary - end - - elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) - kind = :oct - - elsif match = scan(/\d+([lL])?/) - kind = :integer - if self[1] == nil && scan(/[jJ]/) - match << matched - kind = :imaginary - end - - else - getch - kind = :error - - end - - elsif state == :def_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :method - else - next - end - - elsif state == :class_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :class - else - next - end - - elsif state == :include_expected - if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) - kind = :include - if match == 'as' - kind = :keyword - from_import_state << :as - elsif from_import_state.first == :from && match == 'import' - kind = :keyword - from_import_state << :import - elsif from_import_state.last == :as - # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method - kind = :ident - from_import_state.pop - elsif IDENT_KIND[match] == :keyword - unscan - match = nil - state = :initial - next - end - elsif match = scan(/,/) - from_import_state.pop if from_import_state.last == :as - kind = :operator - else - from_import_state = [] - state = :initial - next - end - - else - raise_inspect 'Unknown state', tokens, state - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens, state unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/rhtml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # RHTML Scanner - class RHTML < Scanner - - include Streamable - register_for :rhtml - title 'HTML ERB Template' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - ERB_RUBY_BLOCK = / - <%(?!%)[=-]? - (?> - [^\-%]* # normal* - (?> # special - (?: %(?!>) | -(?!%>) ) - [^\-%]* # normal* - )* - ) - (?: -?%> )? - /x - - START_OF_ERB = / - <%(?!%) - /x - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{ERB_RUBY_BLOCK}/o) - start_tag = match[/\A<%[-=]?/] - end_tag = match[/-?%?>?\z/] - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - else - raise_inspect 'else-case reached!', tokens - end - - end - - tokens - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/ruby.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ -module CodeRay -module Scanners - - # This scanner is really complex, since Ruby _is_ a complex language! - # - # It tries to highlight 100% of all common code, - # and 90% of strange codes. - # - # It is optimized for HTML highlighting, and is not very useful for - # parsing or pretty printing. - # - # For now, I think it's better than the scanners in VIM or Syntax, or - # any highlighter I was able to find, except Caleb's RubyLexer. - # - # I hope it's also better than the rdoc/irb lexer. - class Ruby < Scanner - - include Streamable - - register_for :ruby - file_extension 'rb' - - helper :patterns - - if not defined? EncodingError - EncodingError = Class.new Exception - end - - private - def scan_tokens tokens, options - last_token_dot = false - value_expected = true - heredocs = nil - last_state = nil - state = :initial - depth = nil - inline_block_stack = [] - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - - patterns = Patterns # avoid constant lookup - - until eos? - match = nil - kind = nil - - if state.instance_of? patterns::StringState -# {{{ - match = scan_until(state.pattern) || scan_until(/\z/) - tokens << [match, :content] unless match.empty? - break if eos? - - if state.heredoc and self[1] # end of heredoc - match = getch.to_s - match << scan_until(/$/) unless eos? - tokens << [match, :delimiter] - tokens << [:close, state.type] - state = state.next_state - next - end - - case match = getch - - when state.delim - if state.paren - state.paren_depth -= 1 - if state.paren_depth > 0 - tokens << [match, :nesting_delimiter] - next - end - end - tokens << [match, :delimiter] - if state.type == :regexp and not eos? - modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) - tokens << [modifiers, :modifier] unless modifiers.empty? - end - tokens << [:close, state.type] - value_expected = false - state = state.next_state - - when '\\' - if state.interpreted - if esc = scan(/ #{patterns::ESCAPE} /ox) - tokens << [match + esc, :char] - else - tokens << [match, :error] - end - else - case m = getch - when state.delim, '\\' - tokens << [match + m, :char] - when nil - tokens << [match, :error] - else - tokens << [match + m, :content] - end - end - - when '#' - case peek(1) - when '{' - inline_block_stack << [state, depth, heredocs] - value_expected = true - state = :initial - depth = 1 - tokens << [:open, :inline] - tokens << [match + getch, :inline_delimiter] - when '$', '@' - tokens << [match, :escape] - last_state = state # scan one token as normal code, then return here - state = :initial - else - raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens - end - - when state.paren - state.paren_depth += 1 - tokens << [match, :nesting_delimiter] - - when /#{patterns::REGEXP_SYMBOLS}/ox - tokens << [match, :function] - - else - raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens - - end - next -# }}} - else -# {{{ - if match = scan(/[ \t\f]+/) - kind = :space - match << scan(/\s*/) unless eos? || heredocs - value_expected = true if match.index(?\n) - tokens << [match, kind] - next - - elsif match = scan(/\\?\n/) - kind = :space - if match == "\n" - value_expected = true - state = :initial if state == :undef_comma_expected - end - if heredocs - unscan # heredoc scanning needs \n at start - state = heredocs.shift - tokens << [:open, state.type] - heredocs = nil if heredocs.empty? - next - else - match << scan(/\s*/) unless eos? - end - tokens << [match, kind] - next - - elsif bol? && match = scan(/\#!.*/) - tokens << [match, :doctype] - next - - elsif match = scan(/\#.*/) or - ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) - kind = :comment - tokens << [match, kind] - next - - elsif state == :initial - - # IDENTS # - if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : - /#{patterns::METHOD_NAME}/o) - if last_token_dot - kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end - else - kind = patterns::IDENT_KIND[match] - if kind == :ident and match[/^[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) - kind = :constant - elsif kind == :reserved - state = patterns::DEF_NEW_STATE[match] - value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] - end - end - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) - kind = :ident - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - # OPERATORS # - elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) - if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ - value_expected = :set - end - last_token_dot = :set if self[1] - kind = :operator - unless inline_block_stack.empty? - case match - when '{' - depth += 1 - when '}' - depth -= 1 - if depth == 0 # closing brace of inline block reached - state, depth, heredocs = inline_block_stack.pop - heredocs = nil if heredocs && heredocs.empty? - tokens << [match, :inline_delimiter] - kind = :inline - match = :close - end - end - end - - elsif match = scan(/ ['"] /mx) - tokens << [:open, :string] - kind = :delimiter - state = patterns::StringState.new :string, match == '"', match # important for streaming - - elsif match = scan(/#{patterns::INSTANCE_VARIABLE}/o) - kind = :instance_variable - - elsif value_expected and match = scan(/\//) - tokens << [:open, :regexp] - kind = :delimiter - interpreted = true - state = patterns::StringState.new :regexp, interpreted, match - - # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) - elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) - kind = self[1] ? :float : :integer - - elsif match = scan(/#{patterns::SYMBOL}/o) - case delim = match[1] - when ?', ?" - tokens << [:open, :symbol] - tokens << [':', :symbol] - match = delim.chr - kind = :delimiter - state = patterns::StringState.new :symbol, delim == ?", match - else - kind = :symbol - end - - elsif match = scan(/ [-+!~^]=? | [*|&]{1,2}=? | >>? /x) - value_expected = :set - kind = :operator - - elsif value_expected and match = scan(/#{patterns::HEREDOC_OPEN}/o) - indented = self[1] == '-' - quote = self[3] - delim = self[quote ? 4 : 2] - kind = patterns::QUOTE_TO_TYPE[quote] - tokens << [:open, kind] - tokens << [match, :delimiter] - match = :close - heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) - heredocs ||= [] # create heredocs if empty - heredocs << heredoc - - elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) - kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do - raise_inspect 'Unknown fancy string: %%%p' % k, tokens - end - tokens << [:open, kind] - state = patterns::StringState.new kind, interpreted, self[2] - kind = :delimiter - - elsif value_expected and match = scan(/#{patterns::CHARACTER}/o) - kind = :integer - - elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) - value_expected = :set - kind = :operator - - elsif match = scan(/`/) - if last_token_dot - kind = :operator - else - tokens << [:open, :shell] - kind = :delimiter - state = patterns::StringState.new :shell, true, match - end - - elsif match = scan(/#{patterns::GLOBAL_VARIABLE}/o) - kind = :global_variable - - elsif match = scan(/#{patterns::CLASS_VARIABLE}/o) - kind = :class_variable - - else - if !unicode - # check for unicode - debug, $DEBUG = $DEBUG, false - begin - if check(/./mu).size > 1 - # seems like we should try again with unicode - unicode = true - end - rescue - # bad unicode char; use getch - ensure - $DEBUG = debug - end - next if unicode - end - kind = :error - match = getch - - end - - elsif state == :def_expected - state = :initial - if scan(/self\./) - tokens << ['self', :pre_constant] - tokens << ['.', :operator] - end - if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : - /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) - kind = :method - else - next - end - - elsif state == :module_expected - if match = scan(/< 1 - state = this_block.first - tokens << [:close, state.type] - end - - tokens - end - - end - -end -end - -# vim:fdm=marker diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/scheme.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -module CodeRay - module Scanners - - # Scheme scanner for CodeRay (by closure). - # Thanks to murphy for putting CodeRay into public. - class Scheme < Scanner - - # TODO: function defs - # TODO: built-in functions - - register_for :scheme - file_extension 'scm' - - CORE_FORMS = %w[ - lambda let let* letrec syntax-case define-syntax let-syntax - letrec-syntax begin define quote if or and cond case do delay - quasiquote set! cons force call-with-current-continuation call/cc - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(CORE_FORMS, :reserved) - - #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i - #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ - #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ - IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ - DIGIT = /\d/ - DIGIT10 = DIGIT - DIGIT16 = /[0-9a-f]/i - DIGIT8 = /[0-7]/ - DIGIT2 = /[01]/ - RADIX16 = /\#x/i - RADIX8 = /\#o/i - RADIX2 = /\#b/i - RADIX10 = /\#d/i - EXACTNESS = /#i|#e/i - SIGN = /[\+-]?/ - EXP_MARK = /[esfdl]/i - EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ - SUFFIX = /#{EXP}?/ - PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ - PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ - PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ - PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ - UINT10 = /#{DIGIT10}+#*/ - UINT16 = /#{DIGIT16}+#*/ - UINT8 = /#{DIGIT8}+#*/ - UINT2 = /#{DIGIT2}+#*/ - DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ - UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ - UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ - UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ - UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ - REAL10 = /#{SIGN}#{UREAL10}/ - REAL16 = /#{SIGN}#{UREAL16}/ - REAL8 = /#{SIGN}#{UREAL8}/ - REAL2 = /#{SIGN}#{UREAL2}/ - IMAG10 = /i|#{UREAL10}i/ - IMAG16 = /i|#{UREAL16}i/ - IMAG8 = /i|#{UREAL8}i/ - IMAG2 = /i|#{UREAL2}i/ - COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ - COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ - COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ - COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ - NUM10 = /#{PREFIX10}?#{COMPLEX10}/ - NUM16 = /#{PREFIX16}#{COMPLEX16}/ - NUM8 = /#{PREFIX8}#{COMPLEX8}/ - NUM2 = /#{PREFIX2}#{COMPLEX2}/ - NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ - - private - def scan_tokens tokens,options - - state = :initial - ident_kind = IDENT_KIND - - until eos? - kind = match = nil - - case state - when :initial - if scan(/ \s+ | \\\n /x) - kind = :space - elsif scan(/['\(\[\)\]]|#\(/) - kind = :operator_fat - elsif scan(/;.*/) - kind = :comment - elsif scan(/#\\(?:newline|space|.?)/) - kind = :char - elsif scan(/#[ft]/) - kind = :pre_constant - elsif scan(/#{IDENTIFIER}/o) - kind = ident_kind[matched] - elsif scan(/\./) - kind = :operator - elsif scan(/"/) - tokens << [:open, :string] - state = :string - tokens << ['"', :delimiter] - next - elsif scan(/#{NUM}/o) and not matched.empty? - kind = :integer - elsif getch - kind = :error - end - - when :string - if scan(/[^"\\]+/) or scan(/\\.?/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - next - else - raise_inspect "else case \" reached; %p not handled." % peek(1), - tokens, state - end - - else - raise "else case reached" - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens, state unless match - - tokens << [match, kind] - - end # until eos - - if state == :string - tokens << [:close, :string] - end - - tokens - - end #scan_tokens - end #class - end #module scanners -end #module coderay \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/sql.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -module CodeRay module Scanners - - # by Josh Goebel - class SQL < Scanner - - register_for :sql - - RESERVED_WORDS = %w( - create database table index trigger drop primary key set select - insert update delete replace into - on from values before and or if exists case when - then else as group order by avg where - join inner outer union engine not - like end using collate show columns begin - ) - - PREDEFINED_TYPES = %w( - char varchar enum binary text tinytext mediumtext - longtext blob tinyblob mediumblob longblob timestamp - date time datetime year double decimal float int - integer tinyint mediumint bigint smallint unsigned bit - bool boolean hex bin oct - ) - - PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) - - DIRECTIVES = %w( auto_increment unique default charset ) - - PREDEFINED_CONSTANTS = %w( null true false ) - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(PREDEFINED_FUNCTIONS, :predefined). - add(DIRECTIVES, :directive) - - ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - STRING_PREFIXES = /[xnb]|_\w+/i - - def scan_tokens tokens, options - - state = :initial - string_type = nil - string_content = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ | \\\n /x) - kind = :space - - elsif scan(/^(?:--\s?|#).*/) - kind = :comment - - elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) - kind = :operator - - elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) - prefix = self[1] - string_type = self[2] - tokens << [:open, :string] - tokens << [prefix, :modifier] if prefix - match = string_type - state = :string - kind = :delimiter - - elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) - kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] - - elsif scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - - elsif scan(/0[0-7]+(?![89.eEfF])/) - kind = :oct - - elsif scan(/(?>\d+)(?![.eEfF])/) - kind = :integer - - elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - - else - getch - kind = :error - - end - - elsif state == :string - if match = scan(/[^\\"'`]+/) - string_content << match - next - elsif match = scan(/["'`]/) - if string_type == match - if peek(1) == string_type # doubling means escape - string_content << string_type << getch - next - end - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - string_type = nil - next - else - string_content << match - end - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :char - elsif match = scan(/ \\ . /mox) - string_content << match - next - elsif scan(/ \\ | $ /x) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :error - state = :initial - else - raise "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - unless kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - tokens - - end - - end - -end end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/xml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # XML Scanner - # - # Currently this is the same scanner as Scanners::HTML. - class XML < HTML - - register_for :xml - file_extension 'xml' - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/.svn/text-base/yaml.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -module CodeRay -module Scanners - - # YAML Scanner - # - # Based on the YAML scanner from Syntax by Jamis Buck. - class YAML < Scanner - - register_for :yaml - file_extension 'yml' - - KINDS_NOT_LOC = :all - - def scan_tokens tokens, options - - value_expected = nil - state = :initial - key_indent = indent = 0 - - until eos? - - kind = nil - match = nil - key_indent = nil if bol? - - if match = scan(/ +[\t ]*/) - kind = :space - - elsif match = scan(/\n+/) - kind = :space - state = :initial if match.index(?\n) - - elsif match = scan(/#.*/) - kind = :comment - - elsif bol? and case - when match = scan(/---|\.\.\./) - tokens << [:open, :head] - tokens << [match, :head] - tokens << [:close, :head] - next - when match = scan(/%.*/) - tokens << [match, :doctype] - next - end - - elsif state == :value and case - when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) - tokens << [:open, :string] - tokens << [matched, :delimiter] - tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) - tokens << [matched, :delimiter] if scan(/"/) - tokens << [:close, :string] - next - when match = scan(/[|>][-+]?/) - tokens << [:open, :string] - tokens << [match, :delimiter] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - tokens << [:close, :string] - next - when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) - tokens << [match, :string] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - next - end - - elsif case - when match = scan(/[-:](?= |$)/) - state = :value if state == :colon && (match == ':' || match == '-') - state = :value if state == :initial && match == '-' - kind = :operator - when match = scan(/[,{}\[\]]/) - kind = :operator - when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) - kind = :key - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) - tokens << [:open, :key] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] - tokens << [match[-1,1], :delimiter] - tokens << [:close, :key] - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - next - when scan(/(![\w\/]+)(:([\w:]+))?/) - tokens << [self[1], :type] - if self[2] - tokens << [':', :operator] - tokens << [self[3], :class] - end - next - when scan(/&\S+/) - kind = :variable - when scan(/\*\w+/) - kind = :global_variable - when scan(/< :c, - :cplusplus => :cpp, - :'c++' => :cpp, - :ecma => :java_script, - :ecmascript => :java_script, - :ecma_script => :java_script, - :irb => :ruby, - :javascript => :java_script, - :js => :java_script, - :nitro => :nitro_xhtml, - :pascal => :delphi, - :plain => :plaintext, - :xhtml => :html, - :yml => :yaml - - default :plain - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/c.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/c.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -module CodeRay -module Scanners - - class C < Scanner - - include Streamable - - register_for :c - file_extension 'c' - - RESERVED_WORDS = [ - 'asm', 'break', 'case', 'continue', 'default', 'do', - 'else', 'enum', 'for', 'goto', 'if', 'return', - 'sizeof', 'struct', 'switch', 'typedef', 'union', 'while', - 'restrict', # added in C99 - ] - - PREDEFINED_TYPES = [ - 'int', 'long', 'short', 'char', - 'signed', 'unsigned', 'float', 'double', - 'bool', 'complex', # added in C99 - ] - - PREDEFINED_CONSTANTS = [ - 'EOF', 'NULL', - 'true', 'false', # added in C99 - ] - DIRECTIVES = [ - 'auto', 'extern', 'register', 'static', 'void', - 'const', 'volatile', # added in C89 - 'inline', # added in C99 - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\\n"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/cpp.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/cpp.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -module CodeRay -module Scanners - - class CPlusPlus < Scanner - - include Streamable - - register_for :cpp - file_extension 'cpp' - title 'C++' - - # http://www.cppreference.com/wiki/keywords/start - RESERVED_WORDS = [ - 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'break', - 'case', 'catch', 'class', 'compl', 'const_cast', - 'continue', 'default', 'delete', 'do', 'dynamic_cast', 'else', - 'enum', 'export', 'for', 'goto', 'if', 'namespace', 'new', - 'not', 'not_eq', 'or', 'or_eq', 'reinterpret_cast', 'return', - 'sizeof', 'static_cast', 'struct', 'switch', 'template', - 'throw', 'try', 'typedef', 'typeid', 'typename', 'union', - 'while', 'xor', 'xor_eq' - ] - - PREDEFINED_TYPES = [ - 'bool', 'char', 'double', 'float', 'int', 'long', - 'short', 'signed', 'unsigned', 'wchar_t', 'string' - ] - PREDEFINED_CONSTANTS = [ - 'false', 'true', - 'EOF', 'NULL', - ] - PREDEFINED_VARIABLES = [ - 'this' - ] - DIRECTIVES = [ - 'auto', 'const', 'explicit', 'extern', 'friend', 'inline', 'mutable', 'operator', - 'private', 'protected', 'public', 'register', 'static', 'using', 'virtual', 'void', - 'volatile' - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_VARIABLES, :local_variable). - add(DIRECTIVES, :directive). - add(PREDEFINED_CONSTANTS, :pre_constant) - - ESCAPE = / [rbfntv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - def scan_tokens tokens, options - - state = :initial - label_expected = true - case_expected = false - label_expected_before_preproc_line = nil - in_preproc_line = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - if in_preproc_line && match != "\\\n" && match.index(?\n) - in_preproc_line = false - label_expected = label_expected_before_preproc_line - end - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif match = scan(/ \# \s* if \s* 0 /x) - match << scan_until(/ ^\# (?:elif|else|endif) .*? $ | \z /xm) unless eos? - kind = :comment - - elsif match = scan(/ [-+*=<>?:;,!&^|()\[\]{}~%]+ | \/=? | \.(?!\d) /x) - label_expected = match =~ /[;\{\}]/ - if case_expected - label_expected = true if match == ':' - case_expected = false - end - kind = :operator - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = IDENT_KIND[match] - if kind == :ident && label_expected && !in_preproc_line && scan(/:(?!:)/) - kind = :label - match << matched - else - label_expected = false - if kind == :reserved - case match - when 'class' - state = :class_name_expected - when 'case', 'default' - case_expected = true - end - end - end - - elsif scan(/\$/) - kind = :ident - - elsif match = scan(/L?"/) - tokens << [:open, :string] - if match[0] == ?L - tokens << ['L', :modifier] - match = '"' - end - state = :string - kind = :delimiter - - elsif scan(/#[ \t]*(\w*)/) - kind = :preprocessor - in_preproc_line = true - label_expected_before_preproc_line = label_expected - state = :include_expected if self[1] == 'include' - - elsif scan(/ L?' (?: [^\'\n\\] | \\ #{ESCAPE} )? '? /ox) - label_expected = false - kind = :char - - elsif scan(/0[xX][0-9A-Fa-f]+/) - label_expected = false - kind = :hex - - elsif scan(/(?:0[0-7]+)(?![89.eEfF])/) - label_expected = false - kind = :oct - - elsif scan(/(?:\d+)(?![.eEfF])L?L?/) - label_expected = false - kind = :integer - - elsif scan(/\d[fF]?|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - label_expected = false - kind = :float - - else - getch - kind = :error - - end - - when :string - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - label_expected = false - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - label_expected = false - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - when :include_expected - if scan(/<[^>\n]+>?|"[^"\n\\]*(?:\\.[^"\n\\]*)*"?/) - kind = :include - state = :initial - - elsif match = scan(/\s+/) - kind = :space - state = :initial if match.index ?\n - - else - state = :initial - next - - end - - when :class_name_expected - if scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = :class - state = :initial - - elsif match = scan(/\s+/) - kind = :space - - else - getch - kind = :error - state = :initial - - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/css.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/css.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -module CodeRay -module Scanners - - class CSS < Scanner - - register_for :css - - KINDS_NOT_LOC = [ - :comment, - :class, :pseudo_class, :type, - :constant, :directive, - :key, :value, :operator, :color, :float, - :error, :important, - ] - - module RE - NonASCII = /[\x80-\xFF]/ - Hex = /[0-9a-fA-F]/ - Unicode = /\\#{Hex}{1,6}(?:\r\n|\s)?/ # differs from standard because it allows uppercase hex too - Escape = /#{Unicode}|\\[^\r\n\f0-9a-fA-F]/ - NMChar = /[-_a-zA-Z0-9]|#{NonASCII}|#{Escape}/ - NMStart = /[_a-zA-Z]|#{NonASCII}|#{Escape}/ - NL = /\r\n|\r|\n|\f/ - String1 = /"(?:[^\n\r\f\\"]|\\#{NL}|#{Escape})*"?/ # FIXME: buggy regexp - String2 = /'(?:[^\n\r\f\\']|\\#{NL}|#{Escape})*'?/ # FIXME: buggy regexp - String = /#{String1}|#{String2}/ - - HexColor = /#(?:#{Hex}{6}|#{Hex}{3})/ - Color = /#{HexColor}/ - - Num = /-?(?:[0-9]+|[0-9]*\.[0-9]+)/ - Name = /#{NMChar}+/ - Ident = /-?#{NMStart}#{NMChar}*/ - AtKeyword = /@#{Ident}/ - Percentage = /#{Num}%/ - - reldimensions = %w[em ex px] - absdimensions = %w[in cm mm pt pc] - Unit = Regexp.union(*(reldimensions + absdimensions)) - - Dimension = /#{Num}#{Unit}/ - - Comment = %r! /\* (?: .*? \*/ | .* ) !mx - Function = /(?:url|alpha)\((?:[^)\n\r\f]|\\\))*\)?/ - - Id = /##{Name}/ - Class = /\.#{Name}/ - PseudoClass = /:#{Name}/ - AttributeSelector = /\[[^\]]*\]?/ - - end - - def scan_tokens tokens, options - - value_expected = nil - states = [:initial] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - kind = :space - - elsif case states.last - when :initial, :media - if scan(/(?>#{RE::Ident})(?!\()|\*/ox) - kind = :type - elsif scan RE::Class - kind = :class - elsif scan RE::Id - kind = :constant - elsif scan RE::PseudoClass - kind = :pseudo_class - elsif match = scan(RE::AttributeSelector) - # TODO: Improve highlighting inside of attribute selectors. - tokens << [:open, :string] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1,1], :delimiter] if match[-1] == ?] - tokens << [:close, :string] - next - elsif match = scan(/@media/) - kind = :directive - states.push :media_before_name - end - - when :block - if scan(/(?>#{RE::Ident})(?!\()/ox) - if value_expected - kind = :value - else - kind = :key - end - end - - when :media_before_name - if scan RE::Ident - kind = :type - states[-1] = :media_after_name - end - - when :media_after_name - if scan(/\{/) - kind = :operator - states[-1] = :media - end - - when :comment - if scan(/(?:[^*\s]|\*(?!\/))+/) - kind = :comment - elsif scan(/\*\//) - kind = :comment - states.pop - elsif scan(/\s+/) - kind = :space - end - - else - raise_inspect 'Unknown state', tokens - - end - - elsif scan(/\/\*/) - kind = :comment - states.push :comment - - elsif scan(/\{/) - value_expected = false - kind = :operator - states.push :block - - elsif scan(/\}/) - value_expected = false - if states.last == :block || states.last == :media - kind = :operator - states.pop - else - kind = :error - end - - elsif match = scan(/#{RE::String}/o) - tokens << [:open, :string] - tokens << [match[0, 1], :delimiter] - tokens << [match[1..-2], :content] if match.size > 2 - tokens << [match[-1, 1], :delimiter] if match.size >= 2 - tokens << [:close, :string] - next - - elsif match = scan(/#{RE::Function}/o) - tokens << [:open, :string] - start = match[/^\w+\(/] - tokens << [start, :delimiter] - if match[-1] == ?) - tokens << [match[start.size..-2], :content] - tokens << [')', :delimiter] - else - tokens << [match[start.size..-1], :content] - end - tokens << [:close, :string] - next - - elsif scan(/(?: #{RE::Dimension} | #{RE::Percentage} | #{RE::Num} )/ox) - kind = :float - - elsif scan(/#{RE::Color}/o) - kind = :color - - elsif scan(/! *important/) - kind = :important - - elsif scan(/rgb\([^()\n]*\)?/) - kind = :color - - elsif scan(/#{RE::AtKeyword}/o) - kind = :directive - - elsif match = scan(/ [+>:;,.=()\/] /x) - if match == ':' - value_expected = true - elsif match == ';' - value_expected = false - end - kind = :operator - - else - getch - kind = :error - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/debug.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/debug.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -module CodeRay -module Scanners - - # = Debug Scanner - class Debug < Scanner - - include Streamable - register_for :debug - file_extension 'raydebug' - title 'CodeRay Token Dump' - - protected - def scan_tokens tokens, options - - opened_tokens = [] - - until eos? - - kind = nil - match = nil - - if scan(/\s+/) - tokens << [matched, :space] - next - - elsif scan(/ (\w+) \( ( [^\)\\]* ( \\. [^\)\\]* )* ) \) /x) - kind = self[1].to_sym - match = self[2].gsub(/\\(.)/, '\1') - - elsif scan(/ (\w+) < /x) - kind = self[1].to_sym - opened_tokens << kind - match = :open - - elsif !opened_tokens.empty? && scan(/ > /x) - kind = opened_tokens.pop || :error - match = :close - - else - kind = :error - getch - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/delphi.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/delphi.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,150 +0,0 @@ -module CodeRay -module Scanners - - class Delphi < Scanner - - register_for :delphi - file_extension 'pas' - - RESERVED_WORDS = [ - 'and', 'array', 'as', 'at', 'asm', 'at', 'begin', 'case', 'class', - 'const', 'constructor', 'destructor', 'dispinterface', 'div', 'do', - 'downto', 'else', 'end', 'except', 'exports', 'file', 'finalization', - 'finally', 'for', 'function', 'goto', 'if', 'implementation', 'in', - 'inherited', 'initialization', 'inline', 'interface', 'is', 'label', - 'library', 'mod', 'nil', 'not', 'object', 'of', 'or', 'out', 'packed', - 'procedure', 'program', 'property', 'raise', 'record', 'repeat', - 'resourcestring', 'set', 'shl', 'shr', 'string', 'then', 'threadvar', - 'to', 'try', 'type', 'unit', 'until', 'uses', 'var', 'while', 'with', - 'xor', 'on' - ] - - DIRECTIVES = [ - 'absolute', 'abstract', 'assembler', 'at', 'automated', 'cdecl', - 'contains', 'deprecated', 'dispid', 'dynamic', 'export', - 'external', 'far', 'forward', 'implements', 'local', - 'near', 'nodefault', 'on', 'overload', 'override', - 'package', 'pascal', 'platform', 'private', 'protected', 'public', - 'published', 'read', 'readonly', 'register', 'reintroduce', - 'requires', 'resident', 'safecall', 'stdcall', 'stored', 'varargs', - 'virtual', 'write', 'writeonly' - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(DIRECTIVES, :directive) - - NAME_FOLLOWS = CaseIgnoringWordList.new(false). - add(%w(procedure function .)) - - private - def scan_tokens tokens, options - - state = :initial - last_token = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ /x) - tokens << [matched, :space] - next - - elsif scan(%r! \{ \$ [^}]* \}? | \(\* \$ (?: .*? \*\) | .* ) !mx) - tokens << [matched, :preprocessor] - next - - elsif scan(%r! // [^\n]* | \{ [^}]* \}? | \(\* (?: .*? \*\) | .* ) !mx) - tokens << [matched, :comment] - next - - elsif match = scan(/ <[>=]? | >=? | :=? | [-+=*\/;,@\^|\(\)\[\]] | \.\. /x) - kind = :operator - - elsif match = scan(/\./) - kind = :operator - if last_token == 'end' - tokens << [match, kind] - next - end - - elsif match = scan(/ [A-Za-z_][A-Za-z_0-9]* /x) - kind = NAME_FOLLOWS[last_token] ? :ident : IDENT_KIND[match] - - elsif match = scan(/ ' ( [^\n']|'' ) (?:'|$) /x) - tokens << [:open, :char] - tokens << ["'", :delimiter] - tokens << [self[1], :content] - tokens << ["'", :delimiter] - tokens << [:close, :char] - next - - elsif match = scan(/ ' /x) - tokens << [:open, :string] - state = :string - kind = :delimiter - - elsif scan(/ \# (?: \d+ | \$[0-9A-Fa-f]+ ) /x) - kind = :char - - elsif scan(/ \$ [0-9A-Fa-f]+ /x) - kind = :hex - - elsif scan(/ (?: \d+ ) (?![eE]|\.[^.]) /x) - kind = :integer - - elsif scan(/ \d+ (?: \.\d+ (?: [eE][+-]? \d+ )? | [eE][+-]? \d+ ) /x) - kind = :float - - else - kind = :error - getch - - end - - elsif state == :string - if scan(/[^\n']+/) - kind = :content - elsif scan(/''/) - kind = :char - elsif scan(/'/) - tokens << ["'", :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif scan(/\n/) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise "else case \' reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - last_token = match - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/diff.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/diff.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -module CodeRay -module Scanners - - class Diff < Scanner - - register_for :diff - title 'diff output' - - def scan_tokens tokens, options - - line_kind = nil - state = :initial - - until eos? - kind = match = nil - - if match = scan(/\n/) - if line_kind - tokens << [:end_line, line_kind] - line_kind = nil - end - tokens << [match, :space] - next - end - - case state - - when :initial - if match = scan(/--- |\+\+\+ |=+|_+/) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Index: |Property changes on: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/Added: /) - tokens << [:begin_line, line_kind = :head] - tokens << [match, :head] - next unless match = scan(/.+/) - kind = :plain - state = :added - elsif match = scan(/\\ /) - tokens << [:begin_line, line_kind = :change] - tokens << [match, :change] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/(@@)((?>[^@\n]*))(@@)/) - tokens << [:begin_line, line_kind = :change] - tokens << [self[1], :change] - tokens << [self[2], :plain] - tokens << [self[3], :change] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/\+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - elsif match = scan(/-/) - tokens << [:begin_line, line_kind = :delete] - tokens << [match, :delete] - next unless match = scan(/.+/) - kind = :plain - elsif scan(/ .*/) - kind = :comment - elsif scan(/.+/) - tokens << [:begin_line, line_kind = :head] - kind = :plain - else - raise_inspect 'else case rached' - end - - when :added - if match = scan(/ \+/) - tokens << [:begin_line, line_kind = :insert] - tokens << [match, :insert] - next unless match = scan(/.+/) - kind = :plain - else - state = :initial - next - end - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - tokens << [:end_line, line_kind] if line_kind - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/groovy.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/groovy.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -module CodeRay -module Scanners - - load :java - - class Groovy < Java - - include Streamable - register_for :groovy - - # TODO: Check this! - GROOVY_KEYWORDS = %w[ - as assert def in - ] - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case instanceof new return throw typeof while as assert in - ] - GROOVY_MAGIC_VARIABLES = %w[ it ] - - IDENT_KIND = Java::IDENT_KIND.dup. - add(GROOVY_KEYWORDS, :keyword). - add(GROOVY_MAGIC_VARIABLES, :local_variable) - - ESCAPE = / [bfnrtv$\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x # no 4-byte unicode chars? U[a-fA-F0-9]{8} - REGEXP_ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | \d | [bBdDsSwW\/] /x - - # TODO: interpretation inside ', ", / - STRING_CONTENT_PATTERN = { - "'" => /(?>\\[^\\'\n]+|[^\\'\n]+)+/, - '"' => /[^\\$"\n]+/, - "'''" => /(?>[^\\']+|'(?!''))+/, - '"""' => /(?>[^\\$"]+|"(?!""))+/, - '/' => /[^\\$\/\n]+/, - } - - def scan_tokens tokens, options - - state = :initial - inline_block_stack = [] - inline_block_paren_depth = nil - string_delimiter = nil - import_clause = class_name_follows = last_token = after_def = false - value_expected = true - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - if match.index ?\n - import_clause = after_def = false - value_expected = true unless value_expected - end - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - after_def = false - kind = :comment - - elsif bol? && scan(/ \#!.* /x) - kind = :doctype - - elsif import_clause && scan(/ (?!as) #{IDENT} (?: \. #{IDENT} )* (?: \.\* )? /ox) - after_def = value_expected = false - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - if last_token == '.' - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - elsif after_def && check(/\s*[({]/) - kind = :method - after_def = false - elsif kind == :ident && last_token != '?' && check(/:/) - kind = :key - else - class_name_follows = true if match == 'class' || (import_clause && match == 'as') - import_clause = match == 'import' - after_def = true if match == 'def' - end - - elsif scan(/;/) - import_clause = after_def = false - value_expected = true - kind = :operator - - elsif scan(/\{/) - class_name_follows = after_def = false - value_expected = true - kind = :operator - if !inline_block_stack.empty? - inline_block_paren_depth += 1 - end - - # TODO: ~'...', ~"..." and ~/.../ style regexps - elsif match = scan(/ \.\.] | \+\+ | - && | \|\| | \*\*=? | ==?~ | <=?>? | [-+*%^~&|>=!]=? | <<>>?=? /x) - value_expected = true - value_expected = :regexp if match == '~' - after_def = false - kind = :operator - - elsif match = scan(/ [)\]}] /x) - value_expected = after_def = false - if !inline_block_stack.empty? && match == '}' - inline_block_paren_depth -= 1 - if inline_block_paren_depth == 0 # closing brace of inline block reached - tokens << [match, :inline_delimiter] - tokens << [:close, :inline] - state, string_delimiter, inline_block_paren_depth = inline_block_stack.pop - next - end - end - kind = :operator - - elsif check(/[\d.]/) - after_def = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lLgG]?/) - kind = :integer - end - - elsif match = scan(/'''|"""/) - after_def = value_expected = false - state = :multiline_string - tokens << [:open, :string] - string_delimiter = match - kind = :delimiter - - # TODO: record.'name' - elsif match = scan(/["']/) - after_def = value_expected = false - state = match == '/' ? :regexp : :string - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\//)) - after_def = value_expected = false - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - after_def = value_expected = false - kind = :annotation - - elsif scan(/\//) - after_def = false - value_expected = true - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :multiline_string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - - elsif match = scan(state == :multiline_string ? /'''|"""/ : /["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - # TODO: regexp modifiers? s, m, x, i? - modifiers = scan(/[ix]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - state = :string if state == :multiline_string - tokens << [:close, state] - string_delimiter = nil - after_def = value_expected = false - state = :initial - next - - elsif (state == :string || state == :multiline_string) && - (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter[0] == ?' && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - - elsif match = scan(/ \$ #{IDENT} /mox) - tokens << [:open, :inline] - tokens << ['$', :inline_delimiter] - match = match[1..-1] - tokens << [match, IDENT_KIND[match]] - tokens << [:close, :inline] - next - elsif match = scan(/ \$ \{ /x) - tokens << [:open, :inline] - tokens << ['${', :inline_delimiter] - inline_block_stack << [state, string_delimiter, inline_block_paren_depth] - inline_block_paren_depth = 1 - state = :initial - next - - elsif scan(/ \$ /mx) - kind = :content - - elsif scan(/ \\. /mx) - kind = :content - - elsif scan(/ \\ | \n /x) - tokens << [:close, state] - kind = :error - after_def = value_expected = false - state = :initial - - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token = match unless [:space, :comment, :doctype].include? kind - - tokens << [match, kind] - - end - - if [:multiline_string, :string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/html.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/html.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -module CodeRay -module Scanners - - # HTML Scanner - class HTML < Scanner - - include Streamable - register_for :html - - KINDS_NOT_LOC = [ - :comment, :doctype, :preprocessor, - :tag, :attribute_name, :operator, - :attribute_value, :delimiter, :content, - :plain, :entity, :error - ] - - ATTR_NAME = /[\w.:-]+/ - ATTR_VALUE_UNQUOTED = ATTR_NAME - TAG_END = /\/?>/ - HEX = /[0-9a-fA-F]/ - ENTITY = / - & - (?: - \w+ - | - \# - (?: - \d+ - | - x#{HEX}+ - ) - ) - ; - /ox - - PLAIN_STRING_CONTENT = { - "'" => /[^&'>\n]+/, - '"' => /[^&">\n]+/, - } - - def reset - super - @state = :initial - end - - private - def setup - @state = :initial - @plain_string_content = nil - end - - def scan_tokens tokens, options - - state = @state - plain_string_content = @plain_string_content - - until eos? - - kind = nil - match = nil - - if scan(/\s+/m) - kind = :space - - else - - case state - - when :initial - if scan(//m) - kind = :comment - elsif scan(//m) - kind = :doctype - elsif scan(/<\?xml.*?\?>/m) - kind = :preprocessor - elsif scan(/<\?.*?\?>|<%.*?%>/m) - kind = :comment - elsif scan(/<\/[-\w.:]*>/m) - kind = :tag - elsif match = scan(/<[-\w.:]+>?/m) - kind = :tag - state = :attribute unless match[-1] == ?> - elsif scan(/[^<>&]+/) - kind = :plain - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/[<>&]/) - kind = :error - else - raise_inspect '[BUG] else-case reached with state %p' % [state], tokens - end - - when :attribute - if scan(/#{TAG_END}/) - kind = :tag - state = :initial - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - state = :attribute_equal - else - kind = :error - getch - end - - when :attribute_equal - if scan(/=/) - kind = :operator - state = :attribute_value - elsif scan(/#{ATTR_NAME}/o) - kind = :attribute_name - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - elsif scan(/./) - kind = :error - state = :attribute - end - - when :attribute_value - if scan(/#{ATTR_VALUE_UNQUOTED}/o) - kind = :attribute_value - state = :attribute - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :attribute_value_string - plain_string_content = PLAIN_STRING_CONTENT[match] - kind = :delimiter - elsif scan(/#{TAG_END}/o) - kind = :tag - state = :initial - else - kind = :error - getch - end - - when :attribute_value_string - if scan(plain_string_content) - kind = :content - elsif scan(/['"]/) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :attribute - next - elsif scan(/#{ENTITY}/ox) - kind = :entity - elsif scan(/&/) - kind = :content - elsif scan(/[\n>]/) - tokens << [:close, :string] - kind = :error - state = :initial - end - - else - raise_inspect 'Unknown state: %p' % [state], tokens - - end - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - end - - if options[:keep_state] - @state = state - @plain_string_content = plain_string_content - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -module CodeRay -module Scanners - - class Java < Scanner - - include Streamable - register_for :java - helper :builtin_types - - # http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html - KEYWORDS = %w[ - assert break case catch continue default do else - finally for if instanceof import new package - return switch throw try typeof while - debugger export - ] - RESERVED = %w[ const goto ] - CONSTANTS = %w[ false null true ] - MAGIC_VARIABLES = %w[ this super ] - TYPES = %w[ - boolean byte char class double enum float int interface long - short void - ] << '[]' # because int[] should be highlighted as a type - DIRECTIVES = %w[ - abstract extends final implements native private protected public - static strictfp synchronized throws transient volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(RESERVED, :reserved). - add(CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(TYPES, :type). - add(BuiltinTypes::List, :pre_type). - add(BuiltinTypes::List.select { |builtin| builtin[/(Error|Exception)$/] }, :exception). - add(DIRECTIVES, :directive) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - IDENT = /[a-zA-Z_][A-Za-z_0-9]*/ - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - import_clause = class_name_follows = last_token_dot = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - tokens << [match, :comment] - next - - elsif import_clause && scan(/ #{IDENT} (?: \. #{IDENT} )* /ox) - kind = :include - - elsif match = scan(/ #{IDENT} | \[\] /ox) - kind = IDENT_KIND[match] - if last_token_dot - kind = :ident - elsif class_name_follows - kind = :class - class_name_follows = false - else - import_clause = true if match == 'import' - class_name_follows = true if match == 'class' || match == 'interface' - end - - elsif scan(/ \.(?!\d) | [,?:()\[\]}] | -- | \+\+ | && | \|\| | \*\*=? | [-+*\/%^~&|<>=!]=? | <<>>?=? /x) - kind = :operator - - elsif scan(/;/) - import_clause = false - kind = :operator - - elsif scan(/\{/) - class_name_follows = false - kind = :operator - - elsif check(/[\d.]/) - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fFdD]|\d*\.\d+(?:[eE][+-]?\d+)?[fFdD]?|\d+[eE][+-]?\d+[fFdD]?/) - kind = :float - elsif scan(/\d+[lL]?/) - kind = :integer - end - - elsif match = scan(/["']/) - tokens << [:open, :string] - state = :string - string_delimiter = match - kind = :delimiter - - elsif scan(/ @ #{IDENT} /ox) - kind = :annotation - - else - getch - kind = :error - - end - - when :string - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - tokens << [:close, state] - string_delimiter = nil - state = :initial - next - elsif state == :string && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -builtin_types.rb -file - - - - -2010-08-12T15:03:27.000000Z -2522414597cbbef27fad175c20c8a556 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -41768 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/prop-base/builtin_types.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/prop-base/builtin_types.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/.svn/text-base/builtin_types.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,419 +0,0 @@ -module CodeRay -module Scanners - - module Java::BuiltinTypes # :nodoc: - - List = %w[ - AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection - AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel - AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences - AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector - AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit - AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible - AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext - AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText - AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject - AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection - AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange - AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException - AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent - ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc - ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub - ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent - ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener - Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi - AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite - AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement - Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet - AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array - ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType - AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray - AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference - AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute - AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator - AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException - AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip - AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem - AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback - AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy - AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException - BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException - BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute - BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI - BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup - BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI - BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory - BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel - BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI - BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI - BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI - BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI - BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI - BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException - BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport - BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener - BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider - BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener - BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport - BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding - BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory - BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator - BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp - BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException - BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte - ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet - CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler - CancelablePrintJob CancellationException CancelledKeyException CannotProceedException - CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor - CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException - CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException - CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult - CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator - CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore - CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener - Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter - CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider - Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice - ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class - ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError - ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard - ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException - ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner - CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection - CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI - ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource - ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator - CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel - ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation - ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData - CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl - CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap - ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback - ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener - ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container - ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler - ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory - Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported - CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 - CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector - CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer - DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort - DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl - DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource - DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat - DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing - DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel - DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel - DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter - DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer - DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme - DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument - DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor - DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed - DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec - DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable - DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec - DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream - Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory - DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document - DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener - DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer - DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter - DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener - DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter - DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey - DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey - DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m - ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey - ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder - EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum - EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error - ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener - EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception - ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor - ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException - ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse - Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field - FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel - FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream - FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap - FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter - Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter - Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener - FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter - FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics - FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException - Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future - FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean - GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError - GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics - Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter - GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream - GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet - HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet - HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter - HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument - HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection - HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon - IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage - IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl - IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener - IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener - IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException - IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException - IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException - IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException - IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException - IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities - ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl - ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi - ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder - ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi - ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel - IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address - InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited - InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext - InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext - InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests - InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource - InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException - Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError - InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener - InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException - InterruptedNamingException InterruptibleChannel IntrospectionException Introspector - InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException - InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException - InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException - InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException - InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException - InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException - InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException - InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException - InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler - InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator - IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection - JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog - JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu - JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification - JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory - JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException - JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted - JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets - JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName - JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet - JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable - JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator - JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField - JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal - KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException - KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory - KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager - KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep - KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI - LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy - LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName - LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer - LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException - LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException - LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator - ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView - LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext - LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp - LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException - MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission - ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException - MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo - MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo - MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer - MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory - MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter - MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName - MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler - MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType - MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener - MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager - MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI - MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon - MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane - MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI - MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton - MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI - MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method - MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat - MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException - MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException - Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo - ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo - ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification - MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter - MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent - MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI - MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI - MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI - MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster - MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI - MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI - MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet - MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair - NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration - NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException - NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError - NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException - NoninvertibleTransformException NonReadableChannelException NonWritableChannelException - NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException - NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException - NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException - NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster - NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport - NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException - NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException - NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper - OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput - ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream - ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID - Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport - OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport - OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo - OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException - OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError - OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException - OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes - PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor - Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor - ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException - ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch - PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported - Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe - PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel - PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker - PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy - PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent - PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate - PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences - PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException - PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob - PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo - PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason - PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter - PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent - PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService - PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet - PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader - PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException - PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor - ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener - PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor - PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle - PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector - PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval - QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp - RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException - ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape - ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue - ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable - RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException - RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification - RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport - RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall - RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub - RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage - RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName - RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result - ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader - RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub - RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl - RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub - RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList - RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer - RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener - RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec - RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey - RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit - RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException - RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory - SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource - SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture - ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable - Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI - SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec - SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException - SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider - Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob - SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef - SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef - ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException - ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set - SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer - ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi - SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter - SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax - SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException - SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory - SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException - SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet - SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource - Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel - SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput - SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException - SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException - SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession - SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack - StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit - StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService - StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer - StringBufferInputStream StringBuilder StringCharacterIterator StringContent - StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr - StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate - StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet - Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings - SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException - SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants - SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory - SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor - TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener - TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData - TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates - TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo - TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint - Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor - Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer - TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone - TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track - TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable - TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException - TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency - TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel - TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener - TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory - TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults - UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener - UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError - UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException - UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException - UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException - UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission - UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent - UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException - UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError - UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException - UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL - URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory - UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler - ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener - VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI - VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet - WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener - WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage - WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector - X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension - X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants - XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath - XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory - XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver - XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView - ] - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/builtin_types.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java/builtin_types.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,419 +0,0 @@ -module CodeRay -module Scanners - - module Java::BuiltinTypes # :nodoc: - - List = %w[ - AbstractAction AbstractBorder AbstractButton AbstractCellEditor AbstractCollection - AbstractColorChooserPanel AbstractDocument AbstractExecutorService AbstractInterruptibleChannel - AbstractLayoutCache AbstractList AbstractListModel AbstractMap AbstractMethodError AbstractPreferences - AbstractQueue AbstractQueuedSynchronizer AbstractSelectableChannel AbstractSelectionKey AbstractSelector - AbstractSequentialList AbstractSet AbstractSpinnerModel AbstractTableModel AbstractUndoableEdit - AbstractWriter AccessControlContext AccessControlException AccessController AccessException Accessible - AccessibleAction AccessibleAttributeSequence AccessibleBundle AccessibleComponent AccessibleContext - AccessibleEditableText AccessibleExtendedComponent AccessibleExtendedTable AccessibleExtendedText - AccessibleHyperlink AccessibleHypertext AccessibleIcon AccessibleKeyBinding AccessibleObject - AccessibleRelation AccessibleRelationSet AccessibleResourceBundle AccessibleRole AccessibleSelection - AccessibleState AccessibleStateSet AccessibleStreamable AccessibleTable AccessibleTableModelChange - AccessibleText AccessibleTextSequence AccessibleValue AccountException AccountExpiredException - AccountLockedException AccountNotFoundException Acl AclEntry AclNotFoundException Action ActionEvent - ActionListener ActionMap ActionMapUIResource Activatable ActivateFailedException ActivationDesc - ActivationException ActivationGroup ActivationGroupDesc ActivationGroupID ActivationGroup_Stub - ActivationID ActivationInstantiator ActivationMonitor ActivationSystem Activator ActiveEvent - ActivityCompletedException ActivityRequiredException Adjustable AdjustmentEvent AdjustmentListener - Adler32 AffineTransform AffineTransformOp AlgorithmParameterGenerator AlgorithmParameterGeneratorSpi - AlgorithmParameters AlgorithmParameterSpec AlgorithmParametersSpi AllPermission AlphaComposite - AlreadyBoundException AlreadyConnectedException AncestorEvent AncestorListener AnnotatedElement - Annotation AnnotationFormatError AnnotationTypeMismatchException AppConfigurationEntry Appendable Applet - AppletContext AppletInitializer AppletStub Arc2D Area AreaAveragingScaleFilter ArithmeticException Array - ArrayBlockingQueue ArrayIndexOutOfBoundsException ArrayList Arrays ArrayStoreException ArrayType - AssertionError AsyncBoxView AsynchronousCloseException AtomicBoolean AtomicInteger AtomicIntegerArray - AtomicIntegerFieldUpdater AtomicLong AtomicLongArray AtomicLongFieldUpdater AtomicMarkableReference - AtomicReference AtomicReferenceArray AtomicReferenceFieldUpdater AtomicStampedReference Attribute - AttributeChangeNotification AttributeChangeNotificationFilter AttributedCharacterIterator - AttributedString AttributeException AttributeInUseException AttributeList AttributeModificationException - AttributeNotFoundException Attributes AttributeSet AttributeSetUtilities AttributeValueExp AudioClip - AudioFileFormat AudioFileReader AudioFileWriter AudioFormat AudioInputStream AudioPermission AudioSystem - AuthenticationException AuthenticationNotSupportedException Authenticator AuthorizeCallback - AuthPermission AuthProvider Autoscroll AWTError AWTEvent AWTEventListener AWTEventListenerProxy - AWTEventMulticaster AWTException AWTKeyStroke AWTPermission BackingStoreException - BadAttributeValueExpException BadBinaryOpValueExpException BadLocationException BadPaddingException - BadStringOperationException BandCombineOp BandedSampleModel BaseRowSet BasicArrowButton BasicAttribute - BasicAttributes BasicBorders BasicButtonListener BasicButtonUI BasicCheckBoxMenuItemUI BasicCheckBoxUI - BasicColorChooserUI BasicComboBoxEditor BasicComboBoxRenderer BasicComboBoxUI BasicComboPopup - BasicControl BasicDesktopIconUI BasicDesktopPaneUI BasicDirectoryModel BasicEditorPaneUI - BasicFileChooserUI BasicFormattedTextFieldUI BasicGraphicsUtils BasicHTML BasicIconFactory - BasicInternalFrameTitlePane BasicInternalFrameUI BasicLabelUI BasicListUI BasicLookAndFeel - BasicMenuBarUI BasicMenuItemUI BasicMenuUI BasicOptionPaneUI BasicPanelUI BasicPasswordFieldUI - BasicPermission BasicPopupMenuSeparatorUI BasicPopupMenuUI BasicProgressBarUI BasicRadioButtonMenuItemUI - BasicRadioButtonUI BasicRootPaneUI BasicScrollBarUI BasicScrollPaneUI BasicSeparatorUI BasicSliderUI - BasicSpinnerUI BasicSplitPaneDivider BasicSplitPaneUI BasicStroke BasicTabbedPaneUI BasicTableHeaderUI - BasicTableUI BasicTextAreaUI BasicTextFieldUI BasicTextPaneUI BasicTextUI BasicToggleButtonUI - BasicToolBarSeparatorUI BasicToolBarUI BasicToolTipUI BasicTreeUI BasicViewportUI BatchUpdateException - BeanContext BeanContextChild BeanContextChildComponentProxy BeanContextChildSupport - BeanContextContainerProxy BeanContextEvent BeanContextMembershipEvent BeanContextMembershipListener - BeanContextProxy BeanContextServiceAvailableEvent BeanContextServiceProvider - BeanContextServiceProviderBeanInfo BeanContextServiceRevokedEvent BeanContextServiceRevokedListener - BeanContextServices BeanContextServicesListener BeanContextServicesSupport BeanContextSupport - BeanDescriptor BeanInfo Beans BevelBorder Bidi BigDecimal BigInteger BinaryRefAddr BindException Binding - BitSet Blob BlockingQueue BlockView BMPImageWriteParam Book Boolean BooleanControl Border BorderFactory - BorderLayout BorderUIResource BoundedRangeModel Box BoxLayout BoxView BreakIterator - BrokenBarrierException Buffer BufferCapabilities BufferedImage BufferedImageFilter BufferedImageOp - BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter BufferOverflowException - BufferStrategy BufferUnderflowException Button ButtonGroup ButtonModel ButtonUI Byte - ByteArrayInputStream ByteArrayOutputStream ByteBuffer ByteChannel ByteLookupTable ByteOrder CachedRowSet - CacheRequest CacheResponse Calendar Callable CallableStatement Callback CallbackHandler - CancelablePrintJob CancellationException CancelledKeyException CannotProceedException - CannotRedoException CannotUndoException Canvas CardLayout Caret CaretEvent CaretListener CellEditor - CellEditorListener CellRendererPane Certificate CertificateEncodingException CertificateException - CertificateExpiredException CertificateFactory CertificateFactorySpi CertificateNotYetValidException - CertificateParsingException CertPath CertPathBuilder CertPathBuilderException CertPathBuilderResult - CertPathBuilderSpi CertPathParameters CertPathTrustManagerParameters CertPathValidator - CertPathValidatorException CertPathValidatorResult CertPathValidatorSpi CertSelector CertStore - CertStoreException CertStoreParameters CertStoreSpi ChangedCharSetException ChangeEvent ChangeListener - Channel Channels Character CharacterCodingException CharacterIterator CharArrayReader CharArrayWriter - CharBuffer CharConversionException CharSequence Charset CharsetDecoder CharsetEncoder CharsetProvider - Checkbox CheckboxGroup CheckboxMenuItem CheckedInputStream CheckedOutputStream Checksum Choice - ChoiceCallback ChoiceFormat Chromaticity Cipher CipherInputStream CipherOutputStream CipherSpi Class - ClassCastException ClassCircularityError ClassDefinition ClassDesc ClassFileTransformer ClassFormatError - ClassLoader ClassLoaderRepository ClassLoadingMXBean ClassNotFoundException Clip Clipboard - ClipboardOwner Clob Cloneable CloneNotSupportedException Closeable ClosedByInterruptException - ClosedChannelException ClosedSelectorException CMMException CoderMalfunctionError CoderResult CodeSigner - CodeSource CodingErrorAction CollationElementIterator CollationKey Collator Collection - CollectionCertStoreParameters Collections Color ColorChooserComponentFactory ColorChooserUI - ColorConvertOp ColorModel ColorSelectionModel ColorSpace ColorSupported ColorType ColorUIResource - ComboBoxEditor ComboBoxModel ComboBoxUI ComboPopup CommunicationException Comparable Comparator - CompilationMXBean Compiler CompletionService Component ComponentAdapter ComponentColorModel - ComponentEvent ComponentInputMap ComponentInputMapUIResource ComponentListener ComponentOrientation - ComponentSampleModel ComponentUI ComponentView Composite CompositeContext CompositeData - CompositeDataSupport CompositeName CompositeType CompositeView CompoundBorder CompoundControl - CompoundEdit CompoundName Compression ConcurrentHashMap ConcurrentLinkedQueue ConcurrentMap - ConcurrentModificationException Condition Configuration ConfigurationException ConfirmationCallback - ConnectException ConnectIOException Connection ConnectionEvent ConnectionEventListener - ConnectionPendingException ConnectionPoolDataSource ConsoleHandler Constructor Container - ContainerAdapter ContainerEvent ContainerListener ContainerOrderFocusTraversalPolicy ContentHandler - ContentHandlerFactory ContentModel Context ContextNotEmptyException ContextualRenderedImageFactory - Control ControlFactory ControllerEventListener ConvolveOp CookieHandler Copies CopiesSupported - CopyOnWriteArrayList CopyOnWriteArraySet CountDownLatch CounterMonitor CounterMonitorMBean CRC32 - CredentialException CredentialExpiredException CredentialNotFoundException CRL CRLException CRLSelector - CropImageFilter CSS CubicCurve2D Currency Cursor Customizer CyclicBarrier DatabaseMetaData DataBuffer - DataBufferByte DataBufferDouble DataBufferFloat DataBufferInt DataBufferShort DataBufferUShort - DataFlavor DataFormatException DatagramChannel DatagramPacket DatagramSocket DatagramSocketImpl - DatagramSocketImplFactory DataInput DataInputStream DataLine DataOutput DataOutputStream DataSource - DataTruncation DatatypeConfigurationException DatatypeConstants DatatypeFactory Date DateFormat - DateFormatSymbols DateFormatter DateTimeAtCompleted DateTimeAtCreation DateTimeAtProcessing - DateTimeSyntax DebugGraphics DecimalFormat DecimalFormatSymbols DefaultBoundedRangeModel - DefaultButtonModel DefaultCaret DefaultCellEditor DefaultColorSelectionModel DefaultComboBoxModel - DefaultDesktopManager DefaultEditorKit DefaultFocusManager DefaultFocusTraversalPolicy DefaultFormatter - DefaultFormatterFactory DefaultHighlighter DefaultKeyboardFocusManager DefaultListCellRenderer - DefaultListModel DefaultListSelectionModel DefaultLoaderRepository DefaultMenuLayout DefaultMetalTheme - DefaultMutableTreeNode DefaultPersistenceDelegate DefaultSingleSelectionModel DefaultStyledDocument - DefaultTableCellRenderer DefaultTableColumnModel DefaultTableModel DefaultTextUI DefaultTreeCellEditor - DefaultTreeCellRenderer DefaultTreeModel DefaultTreeSelectionModel Deflater DeflaterOutputStream Delayed - DelayQueue DelegationPermission Deprecated Descriptor DescriptorAccess DescriptorSupport DESedeKeySpec - DesignMode DESKeySpec DesktopIconUI DesktopManager DesktopPaneUI Destination Destroyable - DestroyFailedException DGC DHGenParameterSpec DHKey DHParameterSpec DHPrivateKey DHPrivateKeySpec - DHPublicKey DHPublicKeySpec Dialog Dictionary DigestException DigestInputStream DigestOutputStream - Dimension Dimension2D DimensionUIResource DirContext DirectColorModel DirectoryManager DirObjectFactory - DirStateFactory DisplayMode DnDConstants Doc DocAttribute DocAttributeSet DocFlavor DocPrintJob Document - DocumentBuilder DocumentBuilderFactory Documented DocumentEvent DocumentFilter DocumentListener - DocumentName DocumentParser DomainCombiner DOMLocator DOMResult DOMSource Double DoubleBuffer - DragGestureEvent DragGestureListener DragGestureRecognizer DragSource DragSourceAdapter - DragSourceContext DragSourceDragEvent DragSourceDropEvent DragSourceEvent DragSourceListener - DragSourceMotionListener Driver DriverManager DriverPropertyInfo DropTarget DropTargetAdapter - DropTargetContext DropTargetDragEvent DropTargetDropEvent DropTargetEvent DropTargetListener DSAKey - DSAKeyPairGenerator DSAParameterSpec DSAParams DSAPrivateKey DSAPrivateKeySpec DSAPublicKey - DSAPublicKeySpec DTD DTDConstants DuplicateFormatFlagsException Duration DynamicMBean ECField ECFieldF2m - ECFieldFp ECGenParameterSpec ECKey ECParameterSpec ECPoint ECPrivateKey ECPrivateKeySpec ECPublicKey - ECPublicKeySpec EditorKit Element ElementIterator ElementType Ellipse2D EllipticCurve EmptyBorder - EmptyStackException EncodedKeySpec Encoder EncryptedPrivateKeyInfo Entity Enum - EnumConstantNotPresentException EnumControl Enumeration EnumMap EnumSet EnumSyntax EOFException Error - ErrorListener ErrorManager EtchedBorder Event EventContext EventDirContext EventHandler EventListener - EventListenerList EventListenerProxy EventObject EventQueue EventSetDescriptor Exception - ExceptionInInitializerError ExceptionListener Exchanger ExecutionException Executor - ExecutorCompletionService Executors ExecutorService ExemptionMechanism ExemptionMechanismException - ExemptionMechanismSpi ExpandVetoException ExportException Expression ExtendedRequest ExtendedResponse - Externalizable FactoryConfigurationError FailedLoginException FeatureDescriptor Fidelity Field - FieldPosition FieldView File FileCacheImageInputStream FileCacheImageOutputStream FileChannel - FileChooserUI FileDescriptor FileDialog FileFilter FileHandler FileImageInputStream - FileImageOutputStream FileInputStream FileLock FileLockInterruptionException FilenameFilter FileNameMap - FileNotFoundException FileOutputStream FilePermission FileReader FileSystemView FileView FileWriter - Filter FilteredImageSource FilteredRowSet FilterInputStream FilterOutputStream FilterReader FilterWriter - Finishings FixedHeightLayoutCache FlatteningPathIterator FlavorEvent FlavorException FlavorListener - FlavorMap FlavorTable Float FloatBuffer FloatControl FlowLayout FlowView Flushable FocusAdapter - FocusEvent FocusListener FocusManager FocusTraversalPolicy Font FontFormatException FontMetrics - FontRenderContext FontUIResource Format FormatConversionProvider FormatFlagsConversionMismatchException - Formattable FormattableFlags Formatter FormatterClosedException FormSubmitEvent FormView Frame Future - FutureTask GapContent GarbageCollectorMXBean GatheringByteChannel GaugeMonitor GaugeMonitorMBean - GeneralPath GeneralSecurityException GenericArrayType GenericDeclaration GenericSignatureFormatError - GlyphJustificationInfo GlyphMetrics GlyphVector GlyphView GradientPaint GraphicAttribute Graphics - Graphics2D GraphicsConfigTemplate GraphicsConfiguration GraphicsDevice GraphicsEnvironment GrayFilter - GregorianCalendar GridBagConstraints GridBagLayout GridLayout Group Guard GuardedObject GZIPInputStream - GZIPOutputStream Handler HandshakeCompletedEvent HandshakeCompletedListener HasControls HashAttributeSet - HashDocAttributeSet HashMap HashPrintJobAttributeSet HashPrintRequestAttributeSet - HashPrintServiceAttributeSet HashSet Hashtable HeadlessException HierarchyBoundsAdapter - HierarchyBoundsListener HierarchyEvent HierarchyListener Highlighter HostnameVerifier HTML HTMLDocument - HTMLEditorKit HTMLFrameHyperlinkEvent HTMLWriter HttpRetryException HttpsURLConnection HttpURLConnection - HyperlinkEvent HyperlinkListener ICC_ColorSpace ICC_Profile ICC_ProfileGray ICC_ProfileRGB Icon - IconUIResource IconView Identity IdentityHashMap IdentityScope IIOByteBuffer IIOException IIOImage - IIOInvalidTreeException IIOMetadata IIOMetadataController IIOMetadataFormat IIOMetadataFormatImpl - IIOMetadataNode IIOParam IIOParamController IIOReadProgressListener IIOReadUpdateListener - IIOReadWarningListener IIORegistry IIOServiceProvider IIOWriteProgressListener IIOWriteWarningListener - IllegalAccessError IllegalAccessException IllegalArgumentException IllegalBlockingModeException - IllegalBlockSizeException IllegalCharsetNameException IllegalClassFormatException - IllegalComponentStateException IllegalFormatCodePointException IllegalFormatConversionException - IllegalFormatException IllegalFormatFlagsException IllegalFormatPrecisionException - IllegalFormatWidthException IllegalMonitorStateException IllegalPathStateException - IllegalSelectorException IllegalStateException IllegalThreadStateException Image ImageCapabilities - ImageConsumer ImageFilter ImageGraphicAttribute ImageIcon ImageInputStream ImageInputStreamImpl - ImageInputStreamSpi ImageIO ImageObserver ImageOutputStream ImageOutputStreamImpl ImageOutputStreamSpi - ImageProducer ImageReader ImageReaderSpi ImageReaderWriterSpi ImageReadParam ImageTranscoder - ImageTranscoderSpi ImageTypeSpecifier ImageView ImageWriteParam ImageWriter ImageWriterSpi - ImagingOpException IncompatibleClassChangeError IncompleteAnnotationException IndexColorModel - IndexedPropertyChangeEvent IndexedPropertyDescriptor IndexOutOfBoundsException Inet4Address Inet6Address - InetAddress InetSocketAddress Inflater InflaterInputStream InheritableThreadLocal Inherited - InitialContext InitialContextFactory InitialContextFactoryBuilder InitialDirContext InitialLdapContext - InlineView InputContext InputEvent InputMap InputMapUIResource InputMethod InputMethodContext - InputMethodDescriptor InputMethodEvent InputMethodHighlight InputMethodListener InputMethodRequests - InputMismatchException InputStream InputStreamReader InputSubset InputVerifier Insets InsetsUIResource - InstanceAlreadyExistsException InstanceNotFoundException InstantiationError InstantiationException - Instrument Instrumentation InsufficientResourcesException IntBuffer Integer IntegerSyntax InternalError - InternalFrameAdapter InternalFrameEvent InternalFrameFocusTraversalPolicy InternalFrameListener - InternalFrameUI InternationalFormatter InterruptedException InterruptedIOException - InterruptedNamingException InterruptibleChannel IntrospectionException Introspector - InvalidActivityException InvalidAlgorithmParameterException InvalidApplicationException - InvalidAttributeIdentifierException InvalidAttributesException InvalidAttributeValueException - InvalidClassException InvalidDnDOperationException InvalidKeyException InvalidKeySpecException - InvalidMarkException InvalidMidiDataException InvalidNameException InvalidObjectException - InvalidOpenTypeException InvalidParameterException InvalidParameterSpecException - InvalidPreferencesFormatException InvalidPropertiesFormatException InvalidRelationIdException - InvalidRelationServiceException InvalidRelationTypeException InvalidRoleInfoException - InvalidRoleValueException InvalidSearchControlsException InvalidSearchFilterException - InvalidTargetObjectTypeException InvalidTransactionException InvocationEvent InvocationHandler - InvocationTargetException IOException ItemEvent ItemListener ItemSelectable Iterable Iterator - IvParameterSpec JApplet JarEntry JarException JarFile JarInputStream JarOutputStream JarURLConnection - JButton JCheckBox JCheckBoxMenuItem JColorChooser JComboBox JComponent JdbcRowSet JDesktopPane JDialog - JEditorPane JFileChooser JFormattedTextField JFrame JInternalFrame JLabel JLayeredPane JList JMenu - JMenuBar JMenuItem JMException JMRuntimeException JMXAuthenticator JMXConnectionNotification - JMXConnector JMXConnectorFactory JMXConnectorProvider JMXConnectorServer JMXConnectorServerFactory - JMXConnectorServerMBean JMXConnectorServerProvider JMXPrincipal JMXProviderException - JMXServerErrorException JMXServiceURL JobAttributes JobHoldUntil JobImpressions JobImpressionsCompleted - JobImpressionsSupported JobKOctets JobKOctetsProcessed JobKOctetsSupported JobMediaSheets - JobMediaSheetsCompleted JobMediaSheetsSupported JobMessageFromOperator JobName JobOriginatingUserName - JobPriority JobPrioritySupported JobSheets JobState JobStateReason JobStateReasons Joinable JoinRowSet - JOptionPane JPanel JPasswordField JPEGHuffmanTable JPEGImageReadParam JPEGImageWriteParam JPEGQTable - JPopupMenu JProgressBar JRadioButton JRadioButtonMenuItem JRootPane JScrollBar JScrollPane JSeparator - JSlider JSpinner JSplitPane JTabbedPane JTable JTableHeader JTextArea JTextComponent JTextField - JTextPane JToggleButton JToolBar JToolTip JTree JViewport JWindow KerberosKey KerberosPrincipal - KerberosTicket Kernel Key KeyAdapter KeyAgreement KeyAgreementSpi KeyAlreadyExistsException - KeyboardFocusManager KeyEvent KeyEventDispatcher KeyEventPostProcessor KeyException KeyFactory - KeyFactorySpi KeyGenerator KeyGeneratorSpi KeyListener KeyManagementException KeyManager - KeyManagerFactory KeyManagerFactorySpi Keymap KeyPair KeyPairGenerator KeyPairGeneratorSpi KeyRep - KeySpec KeyStore KeyStoreBuilderParameters KeyStoreException KeyStoreSpi KeyStroke Label LabelUI - LabelView LanguageCallback LastOwnerException LayeredHighlighter LayoutFocusTraversalPolicy - LayoutManager LayoutManager2 LayoutQueue LDAPCertStoreParameters LdapContext LdapName - LdapReferralException Lease Level LimitExceededException Line Line2D LineBorder LineBreakMeasurer - LineEvent LineListener LineMetrics LineNumberInputStream LineNumberReader LineUnavailableException - LinkageError LinkedBlockingQueue LinkedHashMap LinkedHashSet LinkedList LinkException LinkLoopException - LinkRef List ListCellRenderer ListDataEvent ListDataListener ListenerNotFoundException ListIterator - ListModel ListResourceBundle ListSelectionEvent ListSelectionListener ListSelectionModel ListUI ListView - LoaderHandler Locale LocateRegistry Lock LockSupport Logger LoggingMXBean LoggingPermission LoginContext - LoginException LoginModule LogManager LogRecord LogStream Long LongBuffer LookAndFeel LookupOp - LookupTable Mac MacSpi MalformedInputException MalformedLinkException MalformedObjectNameException - MalformedParameterizedTypeException MalformedURLException ManagementFactory ManagementPermission - ManageReferralControl ManagerFactoryParameters Manifest Map MappedByteBuffer MarshalException - MarshalledObject MaskFormatter Matcher MatchResult Math MathContext MatteBorder MBeanAttributeInfo - MBeanConstructorInfo MBeanException MBeanFeatureInfo MBeanInfo MBeanNotificationInfo MBeanOperationInfo - MBeanParameterInfo MBeanPermission MBeanRegistration MBeanRegistrationException MBeanServer - MBeanServerBuilder MBeanServerConnection MBeanServerDelegate MBeanServerDelegateMBean MBeanServerFactory - MBeanServerForwarder MBeanServerInvocationHandler MBeanServerNotification MBeanServerNotificationFilter - MBeanServerPermission MBeanTrustPermission Media MediaName MediaPrintableArea MediaSize MediaSizeName - MediaTracker MediaTray Member MemoryCacheImageInputStream MemoryCacheImageOutputStream MemoryHandler - MemoryImageSource MemoryManagerMXBean MemoryMXBean MemoryNotificationInfo MemoryPoolMXBean MemoryType - MemoryUsage Menu MenuBar MenuBarUI MenuComponent MenuContainer MenuDragMouseEvent MenuDragMouseListener - MenuElement MenuEvent MenuItem MenuItemUI MenuKeyEvent MenuKeyListener MenuListener MenuSelectionManager - MenuShortcut MessageDigest MessageDigestSpi MessageFormat MetaEventListener MetalBorders MetalButtonUI - MetalCheckBoxIcon MetalCheckBoxUI MetalComboBoxButton MetalComboBoxEditor MetalComboBoxIcon - MetalComboBoxUI MetalDesktopIconUI MetalFileChooserUI MetalIconFactory MetalInternalFrameTitlePane - MetalInternalFrameUI MetalLabelUI MetalLookAndFeel MetalMenuBarUI MetalPopupMenuSeparatorUI - MetalProgressBarUI MetalRadioButtonUI MetalRootPaneUI MetalScrollBarUI MetalScrollButton - MetalScrollPaneUI MetalSeparatorUI MetalSliderUI MetalSplitPaneUI MetalTabbedPaneUI MetalTextFieldUI - MetalTheme MetalToggleButtonUI MetalToolBarUI MetalToolTipUI MetalTreeUI MetaMessage Method - MethodDescriptor MGF1ParameterSpec MidiChannel MidiDevice MidiDeviceProvider MidiEvent MidiFileFormat - MidiFileReader MidiFileWriter MidiMessage MidiSystem MidiUnavailableException MimeTypeParseException - MinimalHTMLWriter MissingFormatArgumentException MissingFormatWidthException MissingResourceException - Mixer MixerProvider MLet MLetMBean ModelMBean ModelMBeanAttributeInfo ModelMBeanConstructorInfo - ModelMBeanInfo ModelMBeanInfoSupport ModelMBeanNotificationBroadcaster ModelMBeanNotificationInfo - ModelMBeanOperationInfo ModificationItem Modifier Monitor MonitorMBean MonitorNotification - MonitorSettingException MouseAdapter MouseDragGestureRecognizer MouseEvent MouseInfo MouseInputAdapter - MouseInputListener MouseListener MouseMotionAdapter MouseMotionListener MouseWheelEvent - MouseWheelListener MultiButtonUI MulticastSocket MultiColorChooserUI MultiComboBoxUI MultiDesktopIconUI - MultiDesktopPaneUI MultiDoc MultiDocPrintJob MultiDocPrintService MultiFileChooserUI - MultiInternalFrameUI MultiLabelUI MultiListUI MultiLookAndFeel MultiMenuBarUI MultiMenuItemUI - MultiOptionPaneUI MultiPanelUI MultiPixelPackedSampleModel MultipleDocumentHandling MultipleMaster - MultiPopupMenuUI MultiProgressBarUI MultiRootPaneUI MultiScrollBarUI MultiScrollPaneUI MultiSeparatorUI - MultiSliderUI MultiSpinnerUI MultiSplitPaneUI MultiTabbedPaneUI MultiTableHeaderUI MultiTableUI - MultiTextUI MultiToolBarUI MultiToolTipUI MultiTreeUI MultiViewportUI MutableAttributeSet - MutableComboBoxModel MutableTreeNode Name NameAlreadyBoundException NameCallback NameClassPair - NameNotFoundException NameParser NamespaceChangeListener NamespaceContext Naming NamingEnumeration - NamingEvent NamingException NamingExceptionEvent NamingListener NamingManager NamingSecurityException - NavigationFilter NegativeArraySizeException NetPermission NetworkInterface NoClassDefFoundError - NoConnectionPendingException NodeChangeEvent NodeChangeListener NoInitialContextException - NoninvertibleTransformException NonReadableChannelException NonWritableChannelException - NoPermissionException NoRouteToHostException NoSuchAlgorithmException NoSuchAttributeException - NoSuchElementException NoSuchFieldError NoSuchFieldException NoSuchMethodError NoSuchMethodException - NoSuchObjectException NoSuchPaddingException NoSuchProviderException NotActiveException - NotBoundException NotCompliantMBeanException NotContextException Notification NotificationBroadcaster - NotificationBroadcasterSupport NotificationEmitter NotificationFilter NotificationFilterSupport - NotificationListener NotificationResult NotOwnerException NotSerializableException NotYetBoundException - NotYetConnectedException NullCipher NullPointerException Number NumberFormat NumberFormatException - NumberFormatter NumberOfDocuments NumberOfInterveningJobs NumberUp NumberUpSupported NumericShaper - OAEPParameterSpec Object ObjectChangeListener ObjectFactory ObjectFactoryBuilder ObjectInput - ObjectInputStream ObjectInputValidation ObjectInstance ObjectName ObjectOutput ObjectOutputStream - ObjectStreamClass ObjectStreamConstants ObjectStreamException ObjectStreamField ObjectView ObjID - Observable Observer OceanTheme OpenDataException OpenMBeanAttributeInfo OpenMBeanAttributeInfoSupport - OpenMBeanConstructorInfo OpenMBeanConstructorInfoSupport OpenMBeanInfo OpenMBeanInfoSupport - OpenMBeanOperationInfo OpenMBeanOperationInfoSupport OpenMBeanParameterInfo - OpenMBeanParameterInfoSupport OpenType OperatingSystemMXBean Operation OperationNotSupportedException - OperationsException Option OptionalDataException OptionPaneUI OrientationRequested OutOfMemoryError - OutputDeviceAssigned OutputKeys OutputStream OutputStreamWriter OverlappingFileLockException - OverlayLayout Override Owner Pack200 Package PackedColorModel Pageable PageAttributes - PagedResultsControl PagedResultsResponseControl PageFormat PageRanges PagesPerMinute PagesPerMinuteColor - Paint PaintContext PaintEvent Panel PanelUI Paper ParagraphView ParameterBlock ParameterDescriptor - ParameterizedType ParameterMetaData ParseException ParsePosition Parser ParserConfigurationException - ParserDelegator PartialResultException PasswordAuthentication PasswordCallback PasswordView Patch - PathIterator Pattern PatternSyntaxException PBEKey PBEKeySpec PBEParameterSpec PDLOverrideSupported - Permission PermissionCollection Permissions PersistenceDelegate PersistentMBean PhantomReference Pipe - PipedInputStream PipedOutputStream PipedReader PipedWriter PixelGrabber PixelInterleavedSampleModel - PKCS8EncodedKeySpec PKIXBuilderParameters PKIXCertPathBuilderResult PKIXCertPathChecker - PKIXCertPathValidatorResult PKIXParameters PlainDocument PlainView Point Point2D PointerInfo Policy - PolicyNode PolicyQualifierInfo Polygon PooledConnection Popup PopupFactory PopupMenu PopupMenuEvent - PopupMenuListener PopupMenuUI Port PortableRemoteObject PortableRemoteObjectDelegate - PortUnreachableException Position Predicate PreferenceChangeEvent PreferenceChangeListener Preferences - PreferencesFactory PreparedStatement PresentationDirection Principal Printable PrinterAbortException - PrinterException PrinterGraphics PrinterInfo PrinterIOException PrinterIsAcceptingJobs PrinterJob - PrinterLocation PrinterMakeAndModel PrinterMessageFromOperator PrinterMoreInfo - PrinterMoreInfoManufacturer PrinterName PrinterResolution PrinterState PrinterStateReason - PrinterStateReasons PrinterURI PrintEvent PrintException PrintGraphics PrintJob PrintJobAdapter - PrintJobAttribute PrintJobAttributeEvent PrintJobAttributeListener PrintJobAttributeSet PrintJobEvent - PrintJobListener PrintQuality PrintRequestAttribute PrintRequestAttributeSet PrintService - PrintServiceAttribute PrintServiceAttributeEvent PrintServiceAttributeListener PrintServiceAttributeSet - PrintServiceLookup PrintStream PrintWriter PriorityBlockingQueue PriorityQueue PrivateClassLoader - PrivateCredentialPermission PrivateKey PrivateMLet PrivilegedAction PrivilegedActionException - PrivilegedExceptionAction Process ProcessBuilder ProfileDataException ProgressBarUI ProgressMonitor - ProgressMonitorInputStream Properties PropertyChangeEvent PropertyChangeListener - PropertyChangeListenerProxy PropertyChangeSupport PropertyDescriptor PropertyEditor - PropertyEditorManager PropertyEditorSupport PropertyPermission PropertyResourceBundle - PropertyVetoException ProtectionDomain ProtocolException Provider ProviderException Proxy ProxySelector - PSource PSSParameterSpec PublicKey PushbackInputStream PushbackReader QName QuadCurve2D Query QueryEval - QueryExp Queue QueuedJobCount Random RandomAccess RandomAccessFile Raster RasterFormatException RasterOp - RC2ParameterSpec RC5ParameterSpec Rdn Readable ReadableByteChannel Reader ReadOnlyBufferException - ReadWriteLock RealmCallback RealmChoiceCallback Receiver Rectangle Rectangle2D RectangularShape - ReentrantLock ReentrantReadWriteLock Ref RefAddr Reference Referenceable ReferenceQueue - ReferenceUriSchemesSupported ReferralException ReflectionException ReflectPermission Refreshable - RefreshFailedException Region RegisterableService Registry RegistryHandler RejectedExecutionException - RejectedExecutionHandler Relation RelationException RelationNotFoundException RelationNotification - RelationService RelationServiceMBean RelationServiceNotRegisteredException RelationSupport - RelationSupportMBean RelationType RelationTypeNotFoundException RelationTypeSupport Remote RemoteCall - RemoteException RemoteObject RemoteObjectInvocationHandler RemoteRef RemoteServer RemoteStub - RenderableImage RenderableImageOp RenderableImageProducer RenderContext RenderedImage - RenderedImageFactory Renderer RenderingHints RepaintManager ReplicateScaleFilter RequestingUserName - RequiredModelMBean RescaleOp ResolutionSyntax Resolver ResolveResult ResourceBundle ResponseCache Result - ResultSet ResultSetMetaData Retention RetentionPolicy ReverbType RGBImageFilter RMIClassLoader - RMIClassLoaderSpi RMIClientSocketFactory RMIConnection RMIConnectionImpl RMIConnectionImpl_Stub - RMIConnector RMIConnectorServer RMIFailureHandler RMIIIOPServerImpl RMIJRMPServerImpl - RMISecurityException RMISecurityManager RMIServer RMIServerImpl RMIServerImpl_Stub - RMIServerSocketFactory RMISocketFactory Robot Role RoleInfo RoleInfoNotFoundException RoleList - RoleNotFoundException RoleResult RoleStatus RoleUnresolved RoleUnresolvedList RootPaneContainer - RootPaneUI RoundingMode RoundRectangle2D RowMapper RowSet RowSetEvent RowSetInternal RowSetListener - RowSetMetaData RowSetMetaDataImpl RowSetReader RowSetWarning RowSetWriter RSAKey RSAKeyGenParameterSpec - RSAMultiPrimePrivateCrtKey RSAMultiPrimePrivateCrtKeySpec RSAOtherPrimeInfo RSAPrivateCrtKey - RSAPrivateCrtKeySpec RSAPrivateKey RSAPrivateKeySpec RSAPublicKey RSAPublicKeySpec RTFEditorKit - RuleBasedCollator Runnable Runtime RuntimeErrorException RuntimeException RuntimeMBeanException - RuntimeMXBean RuntimeOperationsException RuntimePermission SampleModel Sasl SaslClient SaslClientFactory - SaslException SaslServer SaslServerFactory Savepoint SAXParser SAXParserFactory SAXResult SAXSource - SAXTransformerFactory Scanner ScatteringByteChannel ScheduledExecutorService ScheduledFuture - ScheduledThreadPoolExecutor Schema SchemaFactory SchemaFactoryLoader SchemaViolationException Scrollable - Scrollbar ScrollBarUI ScrollPane ScrollPaneAdjustable ScrollPaneConstants ScrollPaneLayout ScrollPaneUI - SealedObject SearchControls SearchResult SecretKey SecretKeyFactory SecretKeyFactorySpi SecretKeySpec - SecureCacheResponse SecureClassLoader SecureRandom SecureRandomSpi Security SecurityException - SecurityManager SecurityPermission Segment SelectableChannel SelectionKey Selector SelectorProvider - Semaphore SeparatorUI Sequence SequenceInputStream Sequencer SerialArray SerialBlob SerialClob - SerialDatalink SerialException Serializable SerializablePermission SerialJavaObject SerialRef - SerialStruct ServerCloneException ServerError ServerException ServerNotActiveException ServerRef - ServerRuntimeException ServerSocket ServerSocketChannel ServerSocketFactory ServiceNotFoundException - ServicePermission ServiceRegistry ServiceUI ServiceUIFactory ServiceUnavailableException Set - SetOfIntegerSyntax Severity Shape ShapeGraphicAttribute SheetCollate Short ShortBuffer - ShortBufferException ShortLookupTable ShortMessage Sides Signature SignatureException SignatureSpi - SignedObject Signer SimpleAttributeSet SimpleBeanInfo SimpleDateFormat SimpleDoc SimpleFormatter - SimpleTimeZone SimpleType SinglePixelPackedSampleModel SingleSelectionModel Size2DSyntax - SizeLimitExceededException SizeRequirements SizeSequence Skeleton SkeletonMismatchException - SkeletonNotFoundException SliderUI Socket SocketAddress SocketChannel SocketException SocketFactory - SocketHandler SocketImpl SocketImplFactory SocketOptions SocketPermission SocketSecurityException - SocketTimeoutException SoftBevelBorder SoftReference SortControl SortedMap SortedSet - SortingFocusTraversalPolicy SortKey SortResponseControl Soundbank SoundbankReader SoundbankResource - Source SourceDataLine SourceLocator SpinnerDateModel SpinnerListModel SpinnerModel SpinnerNumberModel - SpinnerUI SplitPaneUI Spring SpringLayout SQLData SQLException SQLInput SQLInputImpl SQLOutput - SQLOutputImpl SQLPermission SQLWarning SSLContext SSLContextSpi SSLEngine SSLEngineResult SSLException - SSLHandshakeException SSLKeyException SSLPeerUnverifiedException SSLPermission SSLProtocolException - SslRMIClientSocketFactory SslRMIServerSocketFactory SSLServerSocket SSLServerSocketFactory SSLSession - SSLSessionBindingEvent SSLSessionBindingListener SSLSessionContext SSLSocket SSLSocketFactory Stack - StackOverflowError StackTraceElement StandardMBean StartTlsRequest StartTlsResponse StateEdit - StateEditable StateFactory Statement StreamCorruptedException StreamHandler StreamPrintService - StreamPrintServiceFactory StreamResult StreamSource StreamTokenizer StrictMath String StringBuffer - StringBufferInputStream StringBuilder StringCharacterIterator StringContent - StringIndexOutOfBoundsException StringMonitor StringMonitorMBean StringReader StringRefAddr - StringSelection StringTokenizer StringValueExp StringWriter Stroke Struct Stub StubDelegate - StubNotFoundException Style StyleConstants StyleContext StyledDocument StyledEditorKit StyleSheet - Subject SubjectDelegationPermission SubjectDomainCombiner SupportedValuesAttribute SuppressWarnings - SwingConstants SwingPropertyChangeSupport SwingUtilities SyncFactory SyncFactoryException - SyncFailedException SynchronousQueue SyncProvider SyncProviderException SyncResolver SynthConstants - SynthContext Synthesizer SynthGraphicsUtils SynthLookAndFeel SynthPainter SynthStyle SynthStyleFactory - SysexMessage System SystemColor SystemFlavorMap TabableView TabbedPaneUI TabExpander TableCellEditor - TableCellRenderer TableColumn TableColumnModel TableColumnModelEvent TableColumnModelListener - TableHeaderUI TableModel TableModelEvent TableModelListener TableUI TableView TabSet TabStop TabularData - TabularDataSupport TabularType TagElement Target TargetDataLine TargetedNotification Templates - TemplatesHandler TextAction TextArea TextAttribute TextComponent TextEvent TextField TextHitInfo - TextInputCallback TextLayout TextListener TextMeasurer TextOutputCallback TextSyntax TextUI TexturePaint - Thread ThreadDeath ThreadFactory ThreadGroup ThreadInfo ThreadLocal ThreadMXBean ThreadPoolExecutor - Throwable Tie TileObserver Time TimeLimitExceededException TimeoutException Timer - TimerAlarmClockNotification TimerMBean TimerNotification TimerTask Timestamp TimeUnit TimeZone - TitledBorder ToolBarUI Toolkit ToolTipManager ToolTipUI TooManyListenersException Track - TransactionalWriter TransactionRequiredException TransactionRolledbackException Transferable - TransferHandler TransformAttribute Transformer TransformerConfigurationException TransformerException - TransformerFactory TransformerFactoryConfigurationError TransformerHandler Transmitter Transparency - TreeCellEditor TreeCellRenderer TreeExpansionEvent TreeExpansionListener TreeMap TreeModel - TreeModelEvent TreeModelListener TreeNode TreePath TreeSelectionEvent TreeSelectionListener - TreeSelectionModel TreeSet TreeUI TreeWillExpandListener TrustAnchor TrustManager TrustManagerFactory - TrustManagerFactorySpi Type TypeInfoProvider TypeNotPresentException Types TypeVariable UID UIDefaults - UIManager UIResource UndeclaredThrowableException UndoableEdit UndoableEditEvent UndoableEditListener - UndoableEditSupport UndoManager UnexpectedException UnicastRemoteObject UnknownError - UnknownFormatConversionException UnknownFormatFlagsException UnknownGroupException UnknownHostException - UnknownObjectException UnknownServiceException UnmappableCharacterException UnmarshalException - UnmodifiableClassException UnmodifiableSetException UnrecoverableEntryException - UnrecoverableKeyException Unreferenced UnresolvedAddressException UnresolvedPermission - UnsatisfiedLinkError UnsolicitedNotification UnsolicitedNotificationEvent - UnsolicitedNotificationListener UnsupportedAddressTypeException UnsupportedAudioFileException - UnsupportedCallbackException UnsupportedCharsetException UnsupportedClassVersionError - UnsupportedEncodingException UnsupportedFlavorException UnsupportedLookAndFeelException - UnsupportedOperationException URI URIException URIResolver URISyntax URISyntaxException URL - URLClassLoader URLConnection URLDecoder URLEncoder URLStreamHandler URLStreamHandlerFactory - UTFDataFormatException Util UtilDelegate Utilities UUID Validator ValidatorHandler ValueExp ValueHandler - ValueHandlerMultiFormat VariableHeightLayoutCache Vector VerifyError VetoableChangeListener - VetoableChangeListenerProxy VetoableChangeSupport View ViewFactory ViewportLayout ViewportUI - VirtualMachineError Visibility VMID VoiceStatus Void VolatileImage WeakHashMap WeakReference WebRowSet - WildcardType Window WindowAdapter WindowConstants WindowEvent WindowFocusListener WindowListener - WindowStateListener WrappedPlainView WritableByteChannel WritableRaster WritableRenderedImage - WriteAbortedException Writer X500Principal X500PrivateCredential X509Certificate X509CertSelector - X509CRL X509CRLEntry X509CRLSelector X509EncodedKeySpec X509ExtendedKeyManager X509Extension - X509KeyManager X509TrustManager XAConnection XADataSource XAException XAResource Xid XMLConstants - XMLDecoder XMLEncoder XMLFormatter XMLGregorianCalendar XMLParseException XmlReader XmlWriter XPath - XPathConstants XPathException XPathExpression XPathExpressionException XPathFactory - XPathFactoryConfigurationException XPathFunction XPathFunctionException XPathFunctionResolver - XPathVariableResolver ZipEntry ZipException ZipFile ZipInputStream ZipOutputStream ZoneView - ] - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java_script.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/java_script.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -module CodeRay -module Scanners - - class JavaScript < Scanner - - include Streamable - - register_for :java_script - file_extension 'js' - - # The actual JavaScript keywords. - KEYWORDS = %w[ - break case catch continue default delete do else - finally for function if in instanceof new - return switch throw try typeof var void while with - ] - PREDEFINED_CONSTANTS = %w[ - false null true undefined - ] - - MAGIC_VARIABLES = %w[ this arguments ] # arguments was introduced in JavaScript 1.4 - - KEYWORDS_EXPECTING_VALUE = WordList.new.add %w[ - case delete in instanceof new return throw typeof with - ] - - # Reserved for future use. - RESERVED_WORDS = %w[ - abstract boolean byte char class debugger double enum export extends - final float goto implements import int interface long native package - private protected public short static super synchronized throws transient - volatile - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(MAGIC_VARIABLES, :local_variable). - add(KEYWORDS, :keyword) - - ESCAPE = / [bfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - REGEXP_ESCAPE = / [bBdDsSwW] /x - STRING_CONTENT_PATTERN = { - "'" => /[^\\']+/, - '"' => /[^\\"]+/, - '/' => /[^\\\/]+/, - } - KEY_CHECK_PATTERN = { - "'" => / [^\\']* (?: \\.? [^\\']* )* '? \s* : /x, - '"' => / [^\\"]* (?: \\.? [^\\"]* )* "? \s* : /x, - } - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - value_expected = true - key_expected = false - function_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - - if match = scan(/ \s+ | \\\n /x) - value_expected = true if !value_expected && match.index(?\n) - tokens << [match, :space] - next - - elsif scan(%r! // [^\n\\]* (?: \\. [^\n\\]* )* | /\* (?: .*? \*/ | .* ) !mx) - value_expected = true - kind = :comment - - elsif check(/\.?\d/) - key_expected = value_expected = false - if scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - elsif scan(/(?>0[0-7]+)(?![89.eEfF])/) - kind = :oct - elsif scan(/\d+[fF]|\d*\.\d+(?:[eE][+-]?\d+)?[fF]?|\d+[eE][+-]?\d+[fF]?/) - kind = :float - elsif scan(/\d+/) - kind = :integer - end - - elsif value_expected && match = scan(/<([[:alpha:]]\w*) (?: [^\/>]*\/> | .*?<\/\1>)/xim) - # FIXME: scan over nested tags - xml_scanner.tokenize match - value_expected = false - next - - elsif match = scan(/ [-+*=<>?:;,!&^|(\[{~%]+ | \.(?!\d) /x) - value_expected = true - last_operator = match[-1] - key_expected = (last_operator == ?{) || (last_operator == ?,) - function_expected = false - kind = :operator - - elsif scan(/ [)\]}]+ /x) - function_expected = key_expected = value_expected = false - kind = :operator - - elsif match = scan(/ [$a-zA-Z_][A-Za-z_0-9$]* /x) - kind = IDENT_KIND[match] - value_expected = (kind == :keyword) && KEYWORDS_EXPECTING_VALUE[match] - # TODO: labels - if kind == :ident - if match.index(?$) # $ allowed inside an identifier - kind = :predefined - elsif function_expected - kind = :function - elsif check(/\s*[=:]\s*function\b/) - kind = :function - elsif key_expected && check(/\s*:/) - kind = :key - end - end - function_expected = (kind == :keyword) && (match == 'function') - key_expected = false - - elsif match = scan(/["']/) - if key_expected && check(KEY_CHECK_PATTERN[match]) - state = :key - else - state = :string - end - tokens << [:open, state] - string_delimiter = match - kind = :delimiter - - elsif value_expected && (match = scan(/\/(?=\S)/)) - tokens << [:open, :regexp] - state = :regexp - string_delimiter = '/' - kind = :delimiter - - elsif scan(/ \/ /x) - value_expected = true - key_expected = false - kind = :operator - - else - getch - kind = :error - - end - - when :string, :regexp, :key - if scan(STRING_CONTENT_PATTERN[string_delimiter]) - kind = :content - elsif match = scan(/["'\/]/) - tokens << [match, :delimiter] - if state == :regexp - modifiers = scan(/[gim]+/) - tokens << [modifiers, :modifier] if modifiers && !modifiers.empty? - end - tokens << [:close, state] - string_delimiter = nil - key_expected = value_expected = false - state = :initial - next - elsif state != :regexp && (match = scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox)) - if string_delimiter == "'" && !(match == "\\\\" || match == "\\'") - kind = :content - else - kind = :char - end - elsif state == :regexp && scan(/ \\ (?: #{ESCAPE} | #{REGEXP_ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, state] - kind = :error - key_expected = value_expected = false - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :regexp].include? state - tokens << [:close, state] - end - - tokens - end - - protected - - def reset_instance - super - @xml_scanner.reset if defined? @xml_scanner - end - - def xml_scanner - @xml_scanner ||= CodeRay.scanner :xml, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/json.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/json.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -module CodeRay -module Scanners - - class JSON < Scanner - - include Streamable - - register_for :json - file_extension 'json' - - KINDS_NOT_LOC = [ - :float, :char, :content, :delimiter, - :error, :integer, :operator, :value, - ] - - CONSTANTS = %w( true false null ) - IDENT_KIND = WordList.new(:key).add(CONSTANTS, :value) - - ESCAPE = / [bfnrt\\"\/] /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} /x - - def scan_tokens tokens, options - - state = :initial - stack = [] - string_delimiter = nil - key_expected = false - - until eos? - - kind = nil - match = nil - - case state - - when :initial - if match = scan(/ \s+ | \\\n /x) - tokens << [match, :space] - next - elsif match = scan(/ [:,\[{\]}] /x) - kind = :operator - case match - when '{' then stack << :object; key_expected = true - when '[' then stack << :array - when ':' then key_expected = false - when ',' then key_expected = true if stack.last == :object - when '}', ']' then stack.pop # no error recovery, but works for valid JSON - end - elsif match = scan(/ true | false | null /x) - kind = IDENT_KIND[match] - elsif match = scan(/-?(?:0|[1-9]\d*)/) - kind = :integer - if scan(/\.\d+(?:[eE][-+]?\d+)?|[eE][-+]?\d+/) - match << matched - kind = :float - end - elsif match = scan(/"/) - state = key_expected ? :key : :string - tokens << [:open, state] - kind = :delimiter - else - getch - kind = :error - end - - when :string, :key - if scan(/[^\\"]+/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, state] - state = :initial - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - kind = :char - elsif scan(/\\./m) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :delimiter] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise_inspect 'Unknown state', tokens - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - - if [:string, :key].include? state - tokens << [:close, state] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/nitro_xhtml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/nitro_xhtml.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # Nitro XHTML Scanner - class NitroXHTML < Scanner - - include Streamable - register_for :nitro_xhtml - file_extension :xhtml - title 'Nitro XHTML' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - NITRO_RUBY_BLOCK = / - <\?r - (?> - [^\?]* - (?> \?(?!>) [^\?]* )* - ) - (?: \?> )? - | - - (?> - [^<]* - (?> <(?!\/ruby>) [^<]* )* - ) - (?: <\/ruby> )? - | - <% - (?> - [^%]* - (?> %(?!>) [^%]* )* - ) - (?: %> )? - /mx - - NITRO_VALUE_BLOCK = / - \# - (?: - \{ - [^{}]* - (?> - \{ [^}]* \} - (?> [^{}]* ) - )* - \}? - | \| [^|]* \|? - | \( [^)]* \)? - | \[ [^\]]* \]? - | \\ [^\\]* \\? - ) - /x - - NITRO_ENTITY = / - % (?: \#\d+ | \w+ ) ; - / - - START_OF_RUBY = / - (?=[<\#%]) - < (?: \?r | % | ruby> ) - | \# [{(|] - | % (?: \#\d+ | \w+ ) ; - /x - - CLOSING_PAREN = Hash.new do |h, p| - h[p] = p - end.update( { - '(' => ')', - '[' => ']', - '{' => '}', - } ) - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_RUBY})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{NITRO_VALUE_BLOCK}/o) - start_tag = match[0,2] - delimiter = CLOSING_PAREN[start_tag[1,1]] - end_tag = match[-1,1] == delimiter ? delimiter : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif match = scan(/#{NITRO_RUBY_BLOCK}/o) - start_tag = '' ? '?>' : '' - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -(end_tag.size)-1] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - elsif entity = scan(/#{NITRO_ENTITY}/o) - tokens << [entity, :entity] - - elsif scan(/%/) - tokens << [matched, :error] - - else - raise_inspect 'else-case reached!', tokens - - end - - end - - tokens - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/php.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/php.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,527 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # Original by Stefan Walk. - class PHP < Scanner - - register_for :php - file_extension 'php' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - def setup - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - module Words - - # according to http://www.php.net/manual/en/reserved.keywords.php - KEYWORDS = %w[ - abstract and array as break case catch class clone const continue declare default do else elseif - enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global - goto if implements interface instanceof namespace new or private protected public static switch - throw try use var while xor - cfunction old_function - ] - - TYPES = %w[ int integer float double bool boolean string array object resource ] - - LANGUAGE_CONSTRUCTS = %w[ - die echo empty exit eval include include_once isset list - require require_once return print unset - ] - - CLASSES = %w[ Directory stdClass __PHP_Incomplete_Class exception php_user_filter Closure ] - - # according to http://php.net/quickref.php on 2009-04-21; - # all functions with _ excluded (module functions) and selected additional functions - BUILTIN_FUNCTIONS = %w[ - abs acos acosh addcslashes addslashes aggregate array arsort ascii2ebcdic asin asinh asort assert atan atan2 - atanh basename bcadd bccomp bcdiv bcmod bcmul bcpow bcpowmod bcscale bcsqrt bcsub bin2hex bindec - bindtextdomain bzclose bzcompress bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite - calculhmac ceil chdir checkdate checkdnsrr chgrp chmod chop chown chr chroot clearstatcache closedir closelog - compact constant copy cos cosh count crc32 crypt current date dcgettext dcngettext deaggregate decbin dechex - decoct define defined deg2rad delete dgettext die dirname diskfreespace dl dngettext doubleval each - ebcdic2ascii echo empty end ereg eregi escapeshellarg escapeshellcmd eval exec exit exp explode expm1 extract - fclose feof fflush fgetc fgetcsv fgets fgetss file fileatime filectime filegroup fileinode filemtime fileowner - fileperms filepro filesize filetype floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv - fputs fread frenchtojd fscanf fseek fsockopen fstat ftell ftok ftruncate fwrite getallheaders getcwd getdate - getenv gethostbyaddr gethostbyname gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid - getmyuid getopt getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext - gettimeofday gettype glob gmdate gmmktime gmstrftime gregoriantojd gzclose gzcompress gzdecode gzdeflate - gzencode gzeof gzfile gzgetc gzgets gzgetss gzinflate gzopen gzpassthru gzputs gzread gzrewind gzseek gztell - gzuncompress gzwrite hash header hebrev hebrevc hexdec htmlentities htmlspecialchars hypot iconv idate - implode include intval ip2long iptcembed iptcparse isset - jddayofweek jdmonthname jdtofrench jdtogregorian jdtojewish jdtojulian jdtounix jewishtojd join jpeg2wbmp - juliantojd key krsort ksort lcfirst lchgrp lchown levenshtein link linkinfo list localeconv localtime log - log10 log1p long2ip lstat ltrim mail main max md5 metaphone mhash microtime min mkdir mktime msql natcasesort - natsort next ngettext nl2br nthmac octdec opendir openlog - ord overload pack passthru pathinfo pclose pfsockopen phpcredits phpinfo phpversion pi png2wbmp popen pos pow - prev print printf putenv quotemeta rad2deg rand range rawurldecode rawurlencode readdir readfile readgzfile - readline readlink realpath recode rename require reset rewind rewinddir rmdir round rsort rtrim scandir - serialize setcookie setlocale setrawcookie settype sha1 shuffle signeurlpaiement sin sinh sizeof sleep snmpget - snmpgetnext snmprealwalk snmpset snmpwalk snmpwalkoid sort soundex split spliti sprintf sqrt srand sscanf stat - strcasecmp strchr strcmp strcoll strcspn strftime stripcslashes stripos stripslashes stristr strlen - strnatcasecmp strnatcmp strncasecmp strncmp strpbrk strpos strptime strrchr strrev strripos strrpos strspn - strstr strtok strtolower strtotime strtoupper strtr strval substr symlink syslog system tan tanh tempnam - textdomain time tmpfile touch trim uasort ucfirst ucwords uksort umask uniqid unixtojd unlink unpack - unserialize unset urldecode urlencode usleep usort vfprintf virtual vprintf vsprintf wordwrap - array_change_key_case array_chunk array_combine array_count_values array_diff array_diff_assoc - array_diff_key array_diff_uassoc array_diff_ukey array_fill array_fill_keys array_filter array_flip - array_intersect array_intersect_assoc array_intersect_key array_intersect_uassoc array_intersect_ukey - array_key_exists array_keys array_map array_merge array_merge_recursive array_multisort array_pad - array_pop array_product array_push array_rand array_reduce array_reverse array_search array_shift - array_slice array_splice array_sum array_udiff array_udiff_assoc array_udiff_uassoc array_uintersect - array_uintersect_assoc array_uintersect_uassoc array_unique array_unshift array_values array_walk - array_walk_recursive - assert_options base_convert base64_decode base64_encode - chunk_split class_exists class_implements class_parents - count_chars debug_backtrace debug_print_backtrace debug_zval_dump - error_get_last error_log error_reporting extension_loaded - file_exists file_get_contents file_put_contents load_file - func_get_arg func_get_args func_num_args function_exists - get_browser get_called_class get_cfg_var get_class get_class_methods get_class_vars - get_current_user get_declared_classes get_declared_interfaces get_defined_constants - get_defined_functions get_defined_vars get_extension_funcs get_headers get_html_translation_table - get_include_path get_included_files get_loaded_extensions get_magic_quotes_gpc get_magic_quotes_runtime - get_meta_tags get_object_vars get_parent_class get_required_filesget_resource_type - gc_collect_cycles gc_disable gc_enable gc_enabled - halt_compiler headers_list headers_sent highlight_file highlight_string - html_entity_decode htmlspecialchars_decode - in_array include_once inclued_get_data - is_a is_array is_binary is_bool is_buffer is_callable is_dir is_double is_executable is_file is_finite - is_float is_infinite is_int is_integer is_link is_long is_nan is_null is_numeric is_object is_readable - is_real is_resource is_scalar is_soap_fault is_string is_subclass_of is_unicode is_uploaded_file - is_writable is_writeable - locale_get_default locale_set_default - number_format override_function parse_str parse_url - php_check_syntax php_ini_loaded_file php_ini_scanned_files php_logo_guid php_sapi_name - php_strip_whitespace php_uname - preg_filter preg_grep preg_last_error preg_match preg_match_all preg_quote preg_replace - preg_replace_callback preg_split print_r - require_once register_shutdown_function register_tick_function - set_error_handler set_exception_handler set_file_buffer set_include_path - set_magic_quotes_runtime set_time_limit shell_exec - str_getcsv str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split str_word_count - strip_tags substr_compare substr_count substr_replace - time_nanosleep time_sleep_until - token_get_all token_name trigger_error - unregister_tick_function use_soap_error_handler user_error - utf8_decode utf8_encode var_dump var_export - version_compare - zend_logo_guid zend_thread_id zend_version - create_function call_user_func_array - posix_access posix_ctermid posix_get_last_error posix_getcwd posix_getegid - posix_geteuid posix_getgid posix_getgrgid posix_getgrnam posix_getgroups - posix_getlogin posix_getpgid posix_getpgrp posix_getpid posix_getppid - posix_getpwnam posix_getpwuid posix_getrlimit posix_getsid posix_getuid - posix_initgroups posix_isatty posix_kill posix_mkfifo posix_mknod - posix_setegid posix_seteuid posix_setgid posix_setpgid posix_setsid - posix_setuid posix_strerror posix_times posix_ttyname posix_uname - pcntl_alarm pcntl_exec pcntl_fork pcntl_getpriority pcntl_setpriority - pcntl_signal pcntl_signal_dispatch pcntl_sigprocmask pcntl_sigtimedwait - pcntl_sigwaitinfo pcntl_wait pcntl_waitpid pcntl_wexitstatus pcntl_wifexited - pcntl_wifsignaled pcntl_wifstopped pcntl_wstopsig pcntl_wtermsig - ] - # TODO: more built-in PHP functions? - - EXCEPTIONS = %w[ - E_ERROR E_WARNING E_PARSE E_NOTICE E_CORE_ERROR E_CORE_WARNING E_COMPILE_ERROR E_COMPILE_WARNING - E_USER_ERROR E_USER_WARNING E_USER_NOTICE E_DEPRECATED E_USER_DEPRECATED E_ALL E_STRICT - ] - - CONSTANTS = %w[ - null true false self parent - __LINE__ __DIR__ __FILE__ __LINE__ - __CLASS__ __NAMESPACE__ __METHOD__ __FUNCTION__ - PHP_VERSION PHP_MAJOR_VERSION PHP_MINOR_VERSION PHP_RELEASE_VERSION PHP_VERSION_ID PHP_EXTRA_VERSION PHP_ZTS - PHP_DEBUG PHP_MAXPATHLEN PHP_OS PHP_SAPI PHP_EOL PHP_INT_MAX PHP_INT_SIZE DEFAULT_INCLUDE_PATH - PEAR_INSTALL_DIR PEAR_EXTENSION_DIR PHP_EXTENSION_DIR PHP_PREFIX PHP_BINDIR PHP_LIBDIR PHP_DATADIR - PHP_SYSCONFDIR PHP_LOCALSTATEDIR PHP_CONFIG_FILE_PATH PHP_CONFIG_FILE_SCAN_DIR PHP_SHLIB_SUFFIX - PHP_OUTPUT_HANDLER_START PHP_OUTPUT_HANDLER_CONT PHP_OUTPUT_HANDLER_END - __COMPILER_HALT_OFFSET__ - EXTR_OVERWRITE EXTR_SKIP EXTR_PREFIX_SAME EXTR_PREFIX_ALL EXTR_PREFIX_INVALID EXTR_PREFIX_IF_EXISTS - EXTR_IF_EXISTS SORT_ASC SORT_DESC SORT_REGULAR SORT_NUMERIC SORT_STRING CASE_LOWER CASE_UPPER COUNT_NORMAL - COUNT_RECURSIVE ASSERT_ACTIVE ASSERT_CALLBACK ASSERT_BAIL ASSERT_WARNING ASSERT_QUIET_EVAL CONNECTION_ABORTED - CONNECTION_NORMAL CONNECTION_TIMEOUT INI_USER INI_PERDIR INI_SYSTEM INI_ALL M_E M_LOG2E M_LOG10E M_LN2 M_LN10 - M_PI M_PI_2 M_PI_4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2 CRYPT_SALT_LENGTH CRYPT_STD_DES CRYPT_EXT_DES - CRYPT_MD5 CRYPT_BLOWFISH DIRECTORY_SEPARATOR SEEK_SET SEEK_CUR SEEK_END LOCK_SH LOCK_EX LOCK_UN LOCK_NB - HTML_SPECIALCHARS HTML_ENTITIES ENT_COMPAT ENT_QUOTES ENT_NOQUOTES INFO_GENERAL INFO_CREDITS - INFO_CONFIGURATION INFO_MODULES INFO_ENVIRONMENT INFO_VARIABLES INFO_LICENSE INFO_ALL CREDITS_GROUP - CREDITS_GENERAL CREDITS_SAPI CREDITS_MODULES CREDITS_DOCS CREDITS_FULLPAGE CREDITS_QA CREDITS_ALL STR_PAD_LEFT - STR_PAD_RIGHT STR_PAD_BOTH PATHINFO_DIRNAME PATHINFO_BASENAME PATHINFO_EXTENSION PATH_SEPARATOR CHAR_MAX - LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_ALL LC_MESSAGES ABDAY_1 ABDAY_2 ABDAY_3 ABDAY_4 ABDAY_5 - ABDAY_6 ABDAY_7 DAY_1 DAY_2 DAY_3 DAY_4 DAY_5 DAY_6 DAY_7 ABMON_1 ABMON_2 ABMON_3 ABMON_4 ABMON_5 ABMON_6 - ABMON_7 ABMON_8 ABMON_9 ABMON_10 ABMON_11 ABMON_12 MON_1 MON_2 MON_3 MON_4 MON_5 MON_6 MON_7 MON_8 MON_9 - MON_10 MON_11 MON_12 AM_STR PM_STR D_T_FMT D_FMT T_FMT T_FMT_AMPM ERA ERA_YEAR ERA_D_T_FMT ERA_D_FMT ERA_T_FMT - ALT_DIGITS INT_CURR_SYMBOL CURRENCY_SYMBOL CRNCYSTR MON_DECIMAL_POINT MON_THOUSANDS_SEP MON_GROUPING - POSITIVE_SIGN NEGATIVE_SIGN INT_FRAC_DIGITS FRAC_DIGITS P_CS_PRECEDES P_SEP_BY_SPACE N_CS_PRECEDES - N_SEP_BY_SPACE P_SIGN_POSN N_SIGN_POSN DECIMAL_POINT RADIXCHAR THOUSANDS_SEP THOUSEP GROUPING YESEXPR NOEXPR - YESSTR NOSTR CODESET LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG LOG_KERN - LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON LOG_AUTHPRIV LOG_LOCAL0 - LOG_LOCAL1 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS LOG_ODELAY - LOG_NDELAY LOG_NOWAIT LOG_PERROR - ] - - PREDEFINED = %w[ - $GLOBALS $_SERVER $_GET $_POST $_FILES $_REQUEST $_SESSION $_ENV - $_COOKIE $php_errormsg $HTTP_RAW_POST_DATA $http_response_header - $argc $argv - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(KEYWORDS, :reserved). - add(TYPES, :pre_type). - add(LANGUAGE_CONSTRUCTS, :reserved). - add(BUILTIN_FUNCTIONS, :predefined). - add(CLASSES, :pre_constant). - add(EXCEPTIONS, :exception). - add(CONSTANTS, :pre_constant) - - VARIABLE_KIND = WordList.new(:local_variable). - add(PREDEFINED, :predefined) - end - - module RE - - PHP_START = / - ]*?language\s*=\s*"php"[^>]*?> | - ]*?language\s*=\s*'php'[^>]*?> | - <\?php\d? | - <\?(?!xml) - /xi - - PHP_END = %r! - | - \?> - !xi - - HTML_INDICATOR = / ]/i - - IDENTIFIER = /[a-z_\x7f-\xFF][a-z0-9_\x7f-\xFF]*/i - VARIABLE = /\$#{IDENTIFIER}/ - - OPERATOR = / - \.(?!\d)=? | # dot that is not decimal point, string concatenation - && | \|\| | # logic - :: | -> | => | # scope, member, dictionary - \\(?!\n) | # namespace - \+\+ | -- | # increment, decrement - [,;?:()\[\]{}] | # simple delimiters - [-+*\/%&|^]=? | # ordinary math, binary logic, assignment shortcuts - [~$] | # whatever - =& | # reference assignment - [=!]=?=? | <> | # comparison and assignment - <<=? | >>=? | [<>]=? # comparison and shift - /x - - end - - def scan_tokens tokens, options - - if check(RE::PHP_START) || # starts with #{RE::IDENTIFIER}/o) - tokens << [:open, :inline] - tokens << [match, :local_variable] - tokens << [scan(/->/), :operator] - tokens << [scan(/#{RE::IDENTIFIER}/o), :ident] - tokens << [:close, :inline] - next - elsif check(/->/) - match << scan(/->/) - kind = :error - end - elsif match = scan(/\{/) - if check(/\$/) - kind = :delimiter - states[-1] = [states.last, delimiter] - delimiter = nil - states.push :php - tokens << [:open, :inline] - else - kind = :string - end - elsif scan(/\$\{#{RE::IDENTIFIER}\}/o) - kind = :local_variable - elsif scan(/\$/) - kind = :content - end - - when :class_expected - if scan(/\s+/) - kind = :space - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :class - states.pop - else - states.pop - next - end - - when :function_expected - if scan(/\s+/) - kind = :space - elsif scan(/&/) - kind = :operator - elsif match = scan(/#{RE::IDENTIFIER}/o) - kind = :function - states.pop - else - states.pop - next - end - - else - raise_inspect 'Unknown state!', tokens, states - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, states - end - raise_inspect 'Empty token', tokens, states unless match - - tokens << [match, kind] - - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/plaintext.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/plaintext.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -module CodeRay -module Scanners - - class Plaintext < Scanner - - register_for :plaintext, :plain - title 'Plain text' - - include Streamable - - KINDS_NOT_LOC = [:plain] - - def scan_tokens tokens, options - text = (scan_until(/\z/) || '') - tokens << [text, :plain] - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/python.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/python.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,285 +0,0 @@ -module CodeRay -module Scanners - - # Bases on pygments' PythonLexer, see - # http://dev.pocoo.org/projects/pygments/browser/pygments/lexers/agile.py. - class Python < Scanner - - include Streamable - - register_for :python - file_extension 'py' - - KEYWORDS = [ - 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', - 'del', 'elif', 'else', 'except', 'finally', 'for', - 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', - 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield', - 'nonlocal', # new in Python 3 - ] - - OLD_KEYWORDS = [ - 'exec', 'print', # gone in Python 3 - ] - - PREDEFINED_METHODS_AND_TYPES = %w[ - __import__ abs all any apply basestring bin bool buffer - bytearray bytes callable chr classmethod cmp coerce compile - complex delattr dict dir divmod enumerate eval execfile exit - file filter float frozenset getattr globals hasattr hash hex id - input int intern isinstance issubclass iter len list locals - long map max min next object oct open ord pow property range - raw_input reduce reload repr reversed round set setattr slice - sorted staticmethod str sum super tuple type unichr unicode - vars xrange zip - ] - - PREDEFINED_EXCEPTIONS = %w[ - ArithmeticError AssertionError AttributeError - BaseException DeprecationWarning EOFError EnvironmentError - Exception FloatingPointError FutureWarning GeneratorExit IOError - ImportError ImportWarning IndentationError IndexError KeyError - KeyboardInterrupt LookupError MemoryError NameError - NotImplemented NotImplementedError OSError OverflowError - OverflowWarning PendingDeprecationWarning ReferenceError - RuntimeError RuntimeWarning StandardError StopIteration - SyntaxError SyntaxWarning SystemError SystemExit TabError - TypeError UnboundLocalError UnicodeDecodeError - UnicodeEncodeError UnicodeError UnicodeTranslateError - UnicodeWarning UserWarning ValueError Warning ZeroDivisionError - ] - - PREDEFINED_VARIABLES_AND_CONSTANTS = [ - 'False', 'True', 'None', # "keywords" since Python 3 - 'self', 'Ellipsis', 'NotImplemented', - ] - - IDENT_KIND = WordList.new(:ident). - add(KEYWORDS, :keyword). - add(OLD_KEYWORDS, :old_keyword). - add(PREDEFINED_METHODS_AND_TYPES, :predefined). - add(PREDEFINED_VARIABLES_AND_CONSTANTS, :pre_constant). - add(PREDEFINED_EXCEPTIONS, :exception) - - NAME = / [^\W\d] \w* /x - ESCAPE = / [abfnrtv\n\\'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} /x - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} | N\{[-\w ]+\} /x - - OPERATOR = / - \.\.\. | # ellipsis - \.(?!\d) | # dot but not decimal point - [,;:()\[\]{}] | # simple delimiters - \/\/=? | \*\*=? | # special math - [-+*\/%&|^]=? | # ordinary math and binary logic - [~`] | # binary complement and inspection - <<=? | >>=? | [<>=]=? | != # comparison and assignment - /x - - STRING_DELIMITER_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = Regexp.union delimiter - end - - STRING_CONTENT_REGEXP = Hash.new do |h, delimiter| - h[delimiter] = / [^\\\n]+? (?= \\ | $ | #{Regexp.escape(delimiter)} ) /x - end - - DEF_NEW_STATE = WordList.new(:initial). - add(%w(def), :def_expected). - add(%w(import from), :include_expected). - add(%w(class), :class_expected) - - DESCRIPTOR = / - #{NAME} - (?: \. #{NAME} )* - | \* - /x - - def scan_tokens tokens, options - - state = :initial - string_delimiter = nil - string_raw = false - import_clause = class_name_follows = last_token_dot = false - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - from_import_state = [] - - until eos? - - kind = nil - match = nil - - if state == :string - if scan(STRING_DELIMITER_REGEXP[string_delimiter]) - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - next - elsif string_delimiter.size == 3 && scan(/\n/) - kind = :content - elsif scan(STRING_CONTENT_REGEXP[string_delimiter]) - kind = :content - elsif !string_raw && scan(/ \\ #{ESCAPE} /ox) - kind = :char - elsif scan(/ \\ #{UNICODE_ESCAPE} /ox) - kind = :char - elsif scan(/ \\ . /x) - kind = :content - elsif scan(/ \\ | $ /x) - tokens << [:close, :string] - kind = :error - state = :initial - else - raise_inspect "else case \" reached; %p not handled." % peek(1), tokens, state - end - - elsif match = scan(/ [ \t]+ | \\\n /x) - tokens << [match, :space] - next - - elsif match = scan(/\n/) - tokens << [match, :space] - state = :initial if state == :include_expected - next - - elsif match = scan(/ \# [^\n]* /mx) - tokens << [match, :comment] - next - - elsif state == :initial - - if scan(/#{OPERATOR}/o) - kind = :operator - - elsif match = scan(/(u?r?|b)?("""|"|'''|')/i) - tokens << [:open, :string] - string_delimiter = self[2] - string_raw = false - modifiers = self[1] - unless modifiers.empty? - string_raw = !!modifiers.index(?r) - tokens << [modifiers, :modifier] - match = string_delimiter - end - state = :string - kind = :delimiter - - # TODO: backticks - - elsif match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = IDENT_KIND[match] - # TODO: keyword arguments - kind = :ident if last_token_dot - if kind == :old_keyword - kind = check(/\(/) ? :ident : :keyword - elsif kind == :predefined && check(/ *=/) - kind = :ident - elsif kind == :keyword - state = DEF_NEW_STATE[match] - from_import_state << match.to_sym if state == :include_expected - end - - elsif scan(/@[a-zA-Z0-9_.]+[lL]?/) - kind = :decorator - - elsif scan(/0[xX][0-9A-Fa-f]+[lL]?/) - kind = :hex - - elsif scan(/0[bB][01]+[lL]?/) - kind = :bin - - elsif match = scan(/(?:\d*\.\d+|\d+\.\d*)(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - if scan(/[jJ]/) - match << matched - kind = :imaginary - end - - elsif scan(/0[oO][0-7]+|0[0-7]+(?![89.eE])[lL]?/) - kind = :oct - - elsif match = scan(/\d+([lL])?/) - kind = :integer - if self[1] == nil && scan(/[jJ]/) - match << matched - kind = :imaginary - end - - else - getch - kind = :error - - end - - elsif state == :def_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :method - else - next - end - - elsif state == :class_expected - state = :initial - if match = scan(unicode ? /#{NAME}/uo : /#{NAME}/o) - kind = :class - else - next - end - - elsif state == :include_expected - if match = scan(unicode ? /#{DESCRIPTOR}/uo : /#{DESCRIPTOR}/o) - kind = :include - if match == 'as' - kind = :keyword - from_import_state << :as - elsif from_import_state.first == :from && match == 'import' - kind = :keyword - from_import_state << :import - elsif from_import_state.last == :as - # kind = match[0,1][unicode ? /[[:upper:]]/u : /[[:upper:]]/] ? :class : :method - kind = :ident - from_import_state.pop - elsif IDENT_KIND[match] == :keyword - unscan - match = nil - state = :initial - next - end - elsif match = scan(/,/) - from_import_state.pop if from_import_state.last == :as - kind = :operator - else - from_import_state = [] - state = :initial - next - end - - else - raise_inspect 'Unknown state', tokens, state - - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens, state unless match - - last_token_dot = match == '.' - - tokens << [match, kind] - - end - - if state == :string - tokens << [:close, :string] - end - - tokens - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/rhtml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/rhtml.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -module CodeRay -module Scanners - - load :html - load :ruby - - # RHTML Scanner - class RHTML < Scanner - - include Streamable - register_for :rhtml - title 'HTML ERB Template' - - KINDS_NOT_LOC = HTML::KINDS_NOT_LOC - - ERB_RUBY_BLOCK = / - <%(?!%)[=-]? - (?> - [^\-%]* # normal* - (?> # special - (?: %(?!>) | -(?!%>) ) - [^\-%]* # normal* - )* - ) - (?: -?%> )? - /x - - START_OF_ERB = / - <%(?!%) - /x - - private - - def setup - @ruby_scanner = CodeRay.scanner :ruby, :tokens => @tokens, :keep_tokens => true - @html_scanner = CodeRay.scanner :html, :tokens => @tokens, :keep_tokens => true, :keep_state => true - end - - def reset_instance - super - @html_scanner.reset - end - - def scan_tokens tokens, options - - until eos? - - if (match = scan_until(/(?=#{START_OF_ERB})/o) || scan_until(/\z/)) and not match.empty? - @html_scanner.tokenize match - - elsif match = scan(/#{ERB_RUBY_BLOCK}/o) - start_tag = match[/\A<%[-=]?/] - end_tag = match[/-?%?>?\z/] - tokens << [:open, :inline] - tokens << [start_tag, :inline_delimiter] - code = match[start_tag.size .. -1 - end_tag.size] - @ruby_scanner.tokenize code - tokens << [end_tag, :inline_delimiter] unless end_tag.empty? - tokens << [:close, :inline] - - else - raise_inspect 'else-case reached!', tokens - end - - end - - tokens - - end - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ -module CodeRay -module Scanners - - # This scanner is really complex, since Ruby _is_ a complex language! - # - # It tries to highlight 100% of all common code, - # and 90% of strange codes. - # - # It is optimized for HTML highlighting, and is not very useful for - # parsing or pretty printing. - # - # For now, I think it's better than the scanners in VIM or Syntax, or - # any highlighter I was able to find, except Caleb's RubyLexer. - # - # I hope it's also better than the rdoc/irb lexer. - class Ruby < Scanner - - include Streamable - - register_for :ruby - file_extension 'rb' - - helper :patterns - - if not defined? EncodingError - EncodingError = Class.new Exception - end - - private - def scan_tokens tokens, options - last_token_dot = false - value_expected = true - heredocs = nil - last_state = nil - state = :initial - depth = nil - inline_block_stack = [] - unicode = string.respond_to?(:encoding) && string.encoding.name == 'UTF-8' - - patterns = Patterns # avoid constant lookup - - until eos? - match = nil - kind = nil - - if state.instance_of? patterns::StringState -# {{{ - match = scan_until(state.pattern) || scan_until(/\z/) - tokens << [match, :content] unless match.empty? - break if eos? - - if state.heredoc and self[1] # end of heredoc - match = getch.to_s - match << scan_until(/$/) unless eos? - tokens << [match, :delimiter] - tokens << [:close, state.type] - state = state.next_state - next - end - - case match = getch - - when state.delim - if state.paren - state.paren_depth -= 1 - if state.paren_depth > 0 - tokens << [match, :nesting_delimiter] - next - end - end - tokens << [match, :delimiter] - if state.type == :regexp and not eos? - modifiers = scan(/#{patterns::REGEXP_MODIFIERS}/ox) - tokens << [modifiers, :modifier] unless modifiers.empty? - end - tokens << [:close, state.type] - value_expected = false - state = state.next_state - - when '\\' - if state.interpreted - if esc = scan(/ #{patterns::ESCAPE} /ox) - tokens << [match + esc, :char] - else - tokens << [match, :error] - end - else - case m = getch - when state.delim, '\\' - tokens << [match + m, :char] - when nil - tokens << [match, :error] - else - tokens << [match + m, :content] - end - end - - when '#' - case peek(1) - when '{' - inline_block_stack << [state, depth, heredocs] - value_expected = true - state = :initial - depth = 1 - tokens << [:open, :inline] - tokens << [match + getch, :inline_delimiter] - when '$', '@' - tokens << [match, :escape] - last_state = state # scan one token as normal code, then return here - state = :initial - else - raise_inspect 'else-case # reached; #%p not handled' % peek(1), tokens - end - - when state.paren - state.paren_depth += 1 - tokens << [match, :nesting_delimiter] - - when /#{patterns::REGEXP_SYMBOLS}/ox - tokens << [match, :function] - - else - raise_inspect 'else-case " reached; %p not handled, state = %p' % [match, state], tokens - - end - next -# }}} - else -# {{{ - if match = scan(/[ \t\f]+/) - kind = :space - match << scan(/\s*/) unless eos? || heredocs - value_expected = true if match.index(?\n) - tokens << [match, kind] - next - - elsif match = scan(/\\?\n/) - kind = :space - if match == "\n" - value_expected = true - state = :initial if state == :undef_comma_expected - end - if heredocs - unscan # heredoc scanning needs \n at start - state = heredocs.shift - tokens << [:open, state.type] - heredocs = nil if heredocs.empty? - next - else - match << scan(/\s*/) unless eos? - end - tokens << [match, kind] - next - - elsif bol? && match = scan(/\#!.*/) - tokens << [match, :doctype] - next - - elsif match = scan(/\#.*/) or - ( bol? and match = scan(/#{patterns::RUBYDOC_OR_DATA}/o) ) - kind = :comment - tokens << [match, kind] - next - - elsif state == :initial - - # IDENTS # - if match = scan(unicode ? /#{patterns::METHOD_NAME}/uo : - /#{patterns::METHOD_NAME}/o) - if last_token_dot - kind = if match[/^[A-Z]/] and not match?(/\(/) then :constant else :ident end - else - kind = patterns::IDENT_KIND[match] - if kind == :ident and match[/^[A-Z]/] and not match[/[!?]$/] and not match?(/\(/) - kind = :constant - elsif kind == :reserved - state = patterns::DEF_NEW_STATE[match] - value_expected = :set if patterns::KEYWORDS_EXPECTING_VALUE[match] - end - end - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - elsif last_token_dot and match = scan(/#{patterns::METHOD_NAME_OPERATOR}|\(/o) - kind = :ident - value_expected = :set if check(/#{patterns::VALUE_FOLLOWS}/o) - - # OPERATORS # - elsif not last_token_dot and match = scan(/ \.\.\.? | (?:\.|::)() | [,\(\)\[\]\{\}] | ==?=? /x) - if match !~ / [.\)\]\}] /x or match =~ /\.\.\.?/ - value_expected = :set - end - last_token_dot = :set if self[1] - kind = :operator - unless inline_block_stack.empty? - case match - when '{' - depth += 1 - when '}' - depth -= 1 - if depth == 0 # closing brace of inline block reached - state, depth, heredocs = inline_block_stack.pop - heredocs = nil if heredocs && heredocs.empty? - tokens << [match, :inline_delimiter] - kind = :inline - match = :close - end - end - end - - elsif match = scan(/ ['"] /mx) - tokens << [:open, :string] - kind = :delimiter - state = patterns::StringState.new :string, match == '"', match # important for streaming - - elsif match = scan(/#{patterns::INSTANCE_VARIABLE}/o) - kind = :instance_variable - - elsif value_expected and match = scan(/\//) - tokens << [:open, :regexp] - kind = :delimiter - interpreted = true - state = patterns::StringState.new :regexp, interpreted, match - - # elsif match = scan(/[-+]?#{patterns::NUMERIC}/o) - elsif match = value_expected ? scan(/[-+]?#{patterns::NUMERIC}/o) : scan(/#{patterns::NUMERIC}/o) - kind = self[1] ? :float : :integer - - elsif match = scan(/#{patterns::SYMBOL}/o) - case delim = match[1] - when ?', ?" - tokens << [:open, :symbol] - tokens << [':', :symbol] - match = delim.chr - kind = :delimiter - state = patterns::StringState.new :symbol, delim == ?", match - else - kind = :symbol - end - - elsif match = scan(/ [-+!~^]=? | [*|&]{1,2}=? | >>? /x) - value_expected = :set - kind = :operator - - elsif value_expected and match = scan(/#{patterns::HEREDOC_OPEN}/o) - indented = self[1] == '-' - quote = self[3] - delim = self[quote ? 4 : 2] - kind = patterns::QUOTE_TO_TYPE[quote] - tokens << [:open, kind] - tokens << [match, :delimiter] - match = :close - heredoc = patterns::StringState.new kind, quote != '\'', delim, (indented ? :indented : :linestart ) - heredocs ||= [] # create heredocs if empty - heredocs << heredoc - - elsif value_expected and match = scan(/#{patterns::FANCY_START_CORRECT}/o) - kind, interpreted = *patterns::FancyStringType.fetch(self[1]) do - raise_inspect 'Unknown fancy string: %%%p' % k, tokens - end - tokens << [:open, kind] - state = patterns::StringState.new kind, interpreted, self[2] - kind = :delimiter - - elsif value_expected and match = scan(/#{patterns::CHARACTER}/o) - kind = :integer - - elsif match = scan(/ [\/%]=? | <(?:<|=>?)? | [?:;] /x) - value_expected = :set - kind = :operator - - elsif match = scan(/`/) - if last_token_dot - kind = :operator - else - tokens << [:open, :shell] - kind = :delimiter - state = patterns::StringState.new :shell, true, match - end - - elsif match = scan(/#{patterns::GLOBAL_VARIABLE}/o) - kind = :global_variable - - elsif match = scan(/#{patterns::CLASS_VARIABLE}/o) - kind = :class_variable - - else - if !unicode - # check for unicode - debug, $DEBUG = $DEBUG, false - begin - if check(/./mu).size > 1 - # seems like we should try again with unicode - unicode = true - end - rescue - # bad unicode char; use getch - ensure - $DEBUG = debug - end - next if unicode - end - kind = :error - match = getch - - end - - elsif state == :def_expected - state = :initial - if scan(/self\./) - tokens << ['self', :pre_constant] - tokens << ['.', :operator] - end - if match = scan(unicode ? /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/uo : - /(?>#{patterns::METHOD_NAME_EX})(?!\.|::)/o) - kind = :method - else - next - end - - elsif state == :module_expected - if match = scan(/< 1 - state = this_block.first - tokens << [:close, state.type] - end - - tokens - end - - end - -end -end - -# vim:fdm=marker diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/entries --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -10 - -dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby -http://redmine.rubyforge.org/svn - - - -2010-03-16T20:29:12.319937Z -3592 -jplang - - - - - - - - - - - - - - -e93f8b46-1217-0410-a6f0-8f06a7374b81 - -patterns.rb -file - - - - -2010-08-12T15:03:27.000000Z -ae0aca82c4390ffcc5757c97c71bc8f3 -2010-03-16T20:29:12.319937Z -3592 -jplang -has-props - - - - - - - - - - - - - - - - - - - - -6903 - diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/prop-base/patterns.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/prop-base/patterns.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,5 +0,0 @@ -K 13 -svn:eol-style -V 6 -native -END diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/.svn/text-base/patterns.rb.svn-base Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -# encoding: utf-8 -module CodeRay -module Scanners - - module Ruby::Patterns # :nodoc: - - RESERVED_WORDS = %w[ - and def end in or unless begin - defined? ensure module redo super until - BEGIN break do next rescue then - when END case else for retry - while alias class elsif if not return - undef yield - ] - - DEF_KEYWORDS = %w[ def ] - UNDEF_KEYWORDS = %w[ undef ] - ALIAS_KEYWORDS = %w[ alias ] - MODULE_KEYWORDS = %w[class module] - DEF_NEW_STATE = WordList.new(:initial). - add(DEF_KEYWORDS, :def_expected). - add(UNDEF_KEYWORDS, :undef_expected). - add(ALIAS_KEYWORDS, :alias_expected). - add(MODULE_KEYWORDS, :module_expected) - - PREDEFINED_CONSTANTS = %w[ - nil true false self - DATA ARGV ARGF __FILE__ __LINE__ - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant) - - IDENT = 'ä'[/[[:alpha:]]/] == 'ä' ? /[[:alpha:]_][[:alnum:]_]*/ : /[^\W\d]\w*/ - - METHOD_NAME = / #{IDENT} [?!]? /ox - METHOD_NAME_OPERATOR = / - \*\*? # multiplication and power - | [-+~]@? # plus, minus, tilde with and without at sign - | [\/%&|^`] # division, modulo or format strings, and, or, xor, system - | \[\]=? # array getter and setter - | << | >> # append or shift left, shift right - | <=?>? | >=? # comparison, rocket operator - | ===? | =~ # simple equality, case equality, match - | ![~=@]? # negation with and without at sign, not-equal and not-match - /ox - METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox - INSTANCE_VARIABLE = / @ #{IDENT} /ox - CLASS_VARIABLE = / @@ #{IDENT} /ox - OBJECT_VARIABLE = / @@? #{IDENT} /ox - GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox - PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox - VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox - - QUOTE_TO_TYPE = { - '`' => :shell, - '/'=> :regexp, - } - QUOTE_TO_TYPE.default = :string - - REGEXP_MODIFIERS = /[mixounse]*/ - REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ - - DECIMAL = /\d+(?:_\d+)*/ - OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ - HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ - BINARY = /0b[01]+(?:_[01]+)*/ - - EXPONENT = / [eE] [+-]? #{DECIMAL} /ox - FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox - FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox - NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox - - SYMBOL = / - : - (?: - #{METHOD_NAME_EX} - | #{PREFIX_VARIABLE} - | ['"] - ) - /ox - METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox - - SIMPLE_ESCAPE = / - [abefnrstv] - | [0-7]{1,3} - | x[0-9A-Fa-f]{1,2} - | .? - /mx - - CONTROL_META_ESCAPE = / - (?: M-|C-|c ) - (?: \\ (?: M-|C-|c ) )* - (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? - /mox - - ESCAPE = / - #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} - /mox - - CHARACTER = / - \? - (?: - [^\s\\] - | \\ #{ESCAPE} - ) - /mox - - # NOTE: This is not completely correct, but - # nobody needs heredoc delimiters ending with \n. - HEREDOC_OPEN = / - << (-)? # $1 = float - (?: - ( [A-Za-z_0-9]+ ) # $2 = delim - | - ( ["'`\/] ) # $3 = quote, type - ( [^\n]*? ) \3 # $4 = delim - ) - /mx - - RUBYDOC = / - =begin (?!\S) - .*? - (?: \Z | ^=end (?!\S) [^\n]* ) - /mx - - DATA = / - __END__$ - .*? - (?: \Z | (?=^\#CODE) ) - /mx - - # Checks for a valid value to follow. This enables - # value_expected in method calls without parentheses. - VALUE_FOLLOWS = / - (?>[ \t\f\v]+) - (?: - [%\/][^\s=] - | <<-?\S - | [-+] \d - | #{CHARACTER} - ) - /x - KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ - and end in or unless begin - defined? ensure redo super until - break do next rescue then - when case else for retry - while elsif if not return - yield - ]) - - RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo - - RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x - - FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx - - FancyStringType = { - 'q' => [:string, false], - 'Q' => [:string, true], - 'r' => [:regexp, true], - 's' => [:symbol, false], - 'x' => [:shell, true] - } - FancyStringType['w'] = FancyStringType['q'] - FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] - - class StringState < Struct.new :type, :interpreted, :delim, :heredoc, - :paren, :paren_depth, :pattern, :next_state - - CLOSING_PAREN = Hash[ *%w[ - ( ) - [ ] - < > - { } - ] ] - - CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << - OPENING_PAREN = CLOSING_PAREN.invert - - STRING_PATTERN = Hash.new do |h, k| - delim, interpreted = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - if closing_paren = CLOSING_PAREN[delim] - delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix - delim_pattern << Regexp.escape(closing_paren) - end - delim_pattern << '\\\\' unless delim == '\\' - - special_escapes = - case interpreted - when :regexp_symbols - '| ' + REGEXP_SYMBOLS.source - when :words - '| \s' - end - - h[k] = - if interpreted and not delim == '#' - / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx - else - / (?= [#{delim_pattern}] #{special_escapes} ) /mx - end - end - - HEREDOC_PATTERN = Hash.new do |h, k| - delim, interpreted, indented = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x - h[k] = - if interpreted - / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc - else - / (?= #{delim_pattern}() | \\ ) /mx - end - end - - def initialize kind, interpreted, delim, heredoc = false - if heredoc - pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] - delim = nil - else - pattern = STRING_PATTERN[ [delim, interpreted] ] - if paren = CLOSING_PAREN[delim] - delim, paren = paren, delim - paren_depth = 1 - end - end - super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial - end - end unless defined? StringState - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/patterns.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/ruby/patterns.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -# encoding: utf-8 -module CodeRay -module Scanners - - module Ruby::Patterns # :nodoc: - - RESERVED_WORDS = %w[ - and def end in or unless begin - defined? ensure module redo super until - BEGIN break do next rescue then - when END case else for retry - while alias class elsif if not return - undef yield - ] - - DEF_KEYWORDS = %w[ def ] - UNDEF_KEYWORDS = %w[ undef ] - ALIAS_KEYWORDS = %w[ alias ] - MODULE_KEYWORDS = %w[class module] - DEF_NEW_STATE = WordList.new(:initial). - add(DEF_KEYWORDS, :def_expected). - add(UNDEF_KEYWORDS, :undef_expected). - add(ALIAS_KEYWORDS, :alias_expected). - add(MODULE_KEYWORDS, :module_expected) - - PREDEFINED_CONSTANTS = %w[ - nil true false self - DATA ARGV ARGF __FILE__ __LINE__ - ] - - IDENT_KIND = WordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_CONSTANTS, :pre_constant) - - IDENT = 'ä'[/[[:alpha:]]/] == 'ä' ? /[[:alpha:]_][[:alnum:]_]*/ : /[^\W\d]\w*/ - - METHOD_NAME = / #{IDENT} [?!]? /ox - METHOD_NAME_OPERATOR = / - \*\*? # multiplication and power - | [-+~]@? # plus, minus, tilde with and without at sign - | [\/%&|^`] # division, modulo or format strings, and, or, xor, system - | \[\]=? # array getter and setter - | << | >> # append or shift left, shift right - | <=?>? | >=? # comparison, rocket operator - | ===? | =~ # simple equality, case equality, match - | ![~=@]? # negation with and without at sign, not-equal and not-match - /ox - METHOD_NAME_EX = / #{IDENT} (?:[?!]|=(?!>))? | #{METHOD_NAME_OPERATOR} /ox - INSTANCE_VARIABLE = / @ #{IDENT} /ox - CLASS_VARIABLE = / @@ #{IDENT} /ox - OBJECT_VARIABLE = / @@? #{IDENT} /ox - GLOBAL_VARIABLE = / \$ (?: #{IDENT} | [1-9]\d* | 0\w* | [~&+`'=\/,;_.<>!@$?*":\\] | -[a-zA-Z_0-9] ) /ox - PREFIX_VARIABLE = / #{GLOBAL_VARIABLE} | #{OBJECT_VARIABLE} /ox - VARIABLE = / @?@? #{IDENT} | #{GLOBAL_VARIABLE} /ox - - QUOTE_TO_TYPE = { - '`' => :shell, - '/'=> :regexp, - } - QUOTE_TO_TYPE.default = :string - - REGEXP_MODIFIERS = /[mixounse]*/ - REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/ - - DECIMAL = /\d+(?:_\d+)*/ - OCTAL = /0_?[0-7]+(?:_[0-7]+)*/ - HEXADECIMAL = /0x[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*/ - BINARY = /0b[01]+(?:_[01]+)*/ - - EXPONENT = / [eE] [+-]? #{DECIMAL} /ox - FLOAT_SUFFIX = / #{EXPONENT} | \. #{DECIMAL} #{EXPONENT}? /ox - FLOAT_OR_INT = / #{DECIMAL} (?: #{FLOAT_SUFFIX} () )? /ox - NUMERIC = / (?: (?=0) (?: #{OCTAL} | #{HEXADECIMAL} | #{BINARY} ) | #{FLOAT_OR_INT} ) /ox - - SYMBOL = / - : - (?: - #{METHOD_NAME_EX} - | #{PREFIX_VARIABLE} - | ['"] - ) - /ox - METHOD_NAME_OR_SYMBOL = / #{METHOD_NAME_EX} | #{SYMBOL} /ox - - SIMPLE_ESCAPE = / - [abefnrstv] - | [0-7]{1,3} - | x[0-9A-Fa-f]{1,2} - | .? - /mx - - CONTROL_META_ESCAPE = / - (?: M-|C-|c ) - (?: \\ (?: M-|C-|c ) )* - (?: [^\\] | \\ #{SIMPLE_ESCAPE} )? - /mox - - ESCAPE = / - #{CONTROL_META_ESCAPE} | #{SIMPLE_ESCAPE} - /mox - - CHARACTER = / - \? - (?: - [^\s\\] - | \\ #{ESCAPE} - ) - /mox - - # NOTE: This is not completely correct, but - # nobody needs heredoc delimiters ending with \n. - HEREDOC_OPEN = / - << (-)? # $1 = float - (?: - ( [A-Za-z_0-9]+ ) # $2 = delim - | - ( ["'`\/] ) # $3 = quote, type - ( [^\n]*? ) \3 # $4 = delim - ) - /mx - - RUBYDOC = / - =begin (?!\S) - .*? - (?: \Z | ^=end (?!\S) [^\n]* ) - /mx - - DATA = / - __END__$ - .*? - (?: \Z | (?=^\#CODE) ) - /mx - - # Checks for a valid value to follow. This enables - # value_expected in method calls without parentheses. - VALUE_FOLLOWS = / - (?>[ \t\f\v]+) - (?: - [%\/][^\s=] - | <<-?\S - | [-+] \d - | #{CHARACTER} - ) - /x - KEYWORDS_EXPECTING_VALUE = WordList.new.add(%w[ - and end in or unless begin - defined? ensure redo super until - break do next rescue then - when case else for retry - while elsif if not return - yield - ]) - - RUBYDOC_OR_DATA = / #{RUBYDOC} | #{DATA} /xo - - RDOC_DATA_START = / ^=begin (?!\S) | ^__END__$ /x - - FANCY_START_CORRECT = / % ( [qQwWxsr] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /mx - - FancyStringType = { - 'q' => [:string, false], - 'Q' => [:string, true], - 'r' => [:regexp, true], - 's' => [:symbol, false], - 'x' => [:shell, true] - } - FancyStringType['w'] = FancyStringType['q'] - FancyStringType['W'] = FancyStringType[''] = FancyStringType['Q'] - - class StringState < Struct.new :type, :interpreted, :delim, :heredoc, - :paren, :paren_depth, :pattern, :next_state - - CLOSING_PAREN = Hash[ *%w[ - ( ) - [ ] - < > - { } - ] ] - - CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with << - OPENING_PAREN = CLOSING_PAREN.invert - - STRING_PATTERN = Hash.new do |h, k| - delim, interpreted = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - if closing_paren = CLOSING_PAREN[delim] - delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix - delim_pattern << Regexp.escape(closing_paren) - end - delim_pattern << '\\\\' unless delim == '\\' - - special_escapes = - case interpreted - when :regexp_symbols - '| ' + REGEXP_SYMBOLS.source - when :words - '| \s' - end - - h[k] = - if interpreted and not delim == '#' - / (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx - else - / (?= [#{delim_pattern}] #{special_escapes} ) /mx - end - end - - HEREDOC_PATTERN = Hash.new do |h, k| - delim, interpreted, indented = *k - delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby - delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x - h[k] = - if interpreted - / (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc - else - / (?= #{delim_pattern}() | \\ ) /mx - end - end - - def initialize kind, interpreted, delim, heredoc = false - if heredoc - pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ] - delim = nil - else - pattern = STRING_PATTERN[ [delim, interpreted] ] - if paren = CLOSING_PAREN[delim] - delim, paren = paren, delim - paren_depth = 1 - end - end - super kind, interpreted, delim, heredoc, paren, paren_depth, pattern, :initial - end - end unless defined? StringState - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/scheme.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/scheme.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -module CodeRay - module Scanners - - # Scheme scanner for CodeRay (by closure). - # Thanks to murphy for putting CodeRay into public. - class Scheme < Scanner - - # TODO: function defs - # TODO: built-in functions - - register_for :scheme - file_extension 'scm' - - CORE_FORMS = %w[ - lambda let let* letrec syntax-case define-syntax let-syntax - letrec-syntax begin define quote if or and cond case do delay - quasiquote set! cons force call-with-current-continuation call/cc - ] - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(CORE_FORMS, :reserved) - - #IDENTIFIER_INITIAL = /[a-z!@\$%&\*\/\:<=>\?~_\^]/i - #IDENTIFIER_SUBSEQUENT = /#{IDENTIFIER_INITIAL}|\d|\.|\+|-/ - #IDENTIFIER = /#{IDENTIFIER_INITIAL}#{IDENTIFIER_SUBSEQUENT}*|\+|-|\.{3}/ - IDENTIFIER = /[a-zA-Z!@$%&*\/:<=>?~_^][\w!@$%&*\/:<=>?~^.+\-]*|[+-]|\.\.\./ - DIGIT = /\d/ - DIGIT10 = DIGIT - DIGIT16 = /[0-9a-f]/i - DIGIT8 = /[0-7]/ - DIGIT2 = /[01]/ - RADIX16 = /\#x/i - RADIX8 = /\#o/i - RADIX2 = /\#b/i - RADIX10 = /\#d/i - EXACTNESS = /#i|#e/i - SIGN = /[\+-]?/ - EXP_MARK = /[esfdl]/i - EXP = /#{EXP_MARK}#{SIGN}#{DIGIT}+/ - SUFFIX = /#{EXP}?/ - PREFIX10 = /#{RADIX10}?#{EXACTNESS}?|#{EXACTNESS}?#{RADIX10}?/ - PREFIX16 = /#{RADIX16}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX16}/ - PREFIX8 = /#{RADIX8}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX8}/ - PREFIX2 = /#{RADIX2}#{EXACTNESS}?|#{EXACTNESS}?#{RADIX2}/ - UINT10 = /#{DIGIT10}+#*/ - UINT16 = /#{DIGIT16}+#*/ - UINT8 = /#{DIGIT8}+#*/ - UINT2 = /#{DIGIT2}+#*/ - DECIMAL = /#{DIGIT10}+#+\.#*#{SUFFIX}|#{DIGIT10}+\.#{DIGIT10}*#*#{SUFFIX}|\.#{DIGIT10}+#*#{SUFFIX}|#{UINT10}#{EXP}/ - UREAL10 = /#{UINT10}\/#{UINT10}|#{DECIMAL}|#{UINT10}/ - UREAL16 = /#{UINT16}\/#{UINT16}|#{UINT16}/ - UREAL8 = /#{UINT8}\/#{UINT8}|#{UINT8}/ - UREAL2 = /#{UINT2}\/#{UINT2}|#{UINT2}/ - REAL10 = /#{SIGN}#{UREAL10}/ - REAL16 = /#{SIGN}#{UREAL16}/ - REAL8 = /#{SIGN}#{UREAL8}/ - REAL2 = /#{SIGN}#{UREAL2}/ - IMAG10 = /i|#{UREAL10}i/ - IMAG16 = /i|#{UREAL16}i/ - IMAG8 = /i|#{UREAL8}i/ - IMAG2 = /i|#{UREAL2}i/ - COMPLEX10 = /#{REAL10}@#{REAL10}|#{REAL10}\+#{IMAG10}|#{REAL10}-#{IMAG10}|\+#{IMAG10}|-#{IMAG10}|#{REAL10}/ - COMPLEX16 = /#{REAL16}@#{REAL16}|#{REAL16}\+#{IMAG16}|#{REAL16}-#{IMAG16}|\+#{IMAG16}|-#{IMAG16}|#{REAL16}/ - COMPLEX8 = /#{REAL8}@#{REAL8}|#{REAL8}\+#{IMAG8}|#{REAL8}-#{IMAG8}|\+#{IMAG8}|-#{IMAG8}|#{REAL8}/ - COMPLEX2 = /#{REAL2}@#{REAL2}|#{REAL2}\+#{IMAG2}|#{REAL2}-#{IMAG2}|\+#{IMAG2}|-#{IMAG2}|#{REAL2}/ - NUM10 = /#{PREFIX10}?#{COMPLEX10}/ - NUM16 = /#{PREFIX16}#{COMPLEX16}/ - NUM8 = /#{PREFIX8}#{COMPLEX8}/ - NUM2 = /#{PREFIX2}#{COMPLEX2}/ - NUM = /#{NUM10}|#{NUM16}|#{NUM8}|#{NUM2}/ - - private - def scan_tokens tokens,options - - state = :initial - ident_kind = IDENT_KIND - - until eos? - kind = match = nil - - case state - when :initial - if scan(/ \s+ | \\\n /x) - kind = :space - elsif scan(/['\(\[\)\]]|#\(/) - kind = :operator_fat - elsif scan(/;.*/) - kind = :comment - elsif scan(/#\\(?:newline|space|.?)/) - kind = :char - elsif scan(/#[ft]/) - kind = :pre_constant - elsif scan(/#{IDENTIFIER}/o) - kind = ident_kind[matched] - elsif scan(/\./) - kind = :operator - elsif scan(/"/) - tokens << [:open, :string] - state = :string - tokens << ['"', :delimiter] - next - elsif scan(/#{NUM}/o) and not matched.empty? - kind = :integer - elsif getch - kind = :error - end - - when :string - if scan(/[^"\\]+/) or scan(/\\.?/) - kind = :content - elsif scan(/"/) - tokens << ['"', :delimiter] - tokens << [:close, :string] - state = :initial - next - else - raise_inspect "else case \" reached; %p not handled." % peek(1), - tokens, state - end - - else - raise "else case reached" - end - - match ||= matched - if $CODERAY_DEBUG and not kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens - end - raise_inspect 'Empty token', tokens, state unless match - - tokens << [match, kind] - - end # until eos - - if state == :string - tokens << [:close, :string] - end - - tokens - - end #scan_tokens - end #class - end #module scanners -end #module coderay \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/sql.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/sql.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -module CodeRay module Scanners - - # by Josh Goebel - class SQL < Scanner - - register_for :sql - - RESERVED_WORDS = %w( - create database table index trigger drop primary key set select - insert update delete replace into - on from values before and or if exists case when - then else as group order by avg where - join inner outer union engine not - like end using collate show columns begin - ) - - PREDEFINED_TYPES = %w( - char varchar enum binary text tinytext mediumtext - longtext blob tinyblob mediumblob longblob timestamp - date time datetime year double decimal float int - integer tinyint mediumint bigint smallint unsigned bit - bool boolean hex bin oct - ) - - PREDEFINED_FUNCTIONS = %w( sum cast abs pi count min max avg ) - - DIRECTIVES = %w( auto_increment unique default charset ) - - PREDEFINED_CONSTANTS = %w( null true false ) - - IDENT_KIND = CaseIgnoringWordList.new(:ident). - add(RESERVED_WORDS, :reserved). - add(PREDEFINED_TYPES, :pre_type). - add(PREDEFINED_CONSTANTS, :pre_constant). - add(PREDEFINED_FUNCTIONS, :predefined). - add(DIRECTIVES, :directive) - - ESCAPE = / [rbfntv\n\\\/'"] | x[a-fA-F0-9]{1,2} | [0-7]{1,3} | . /mx - UNICODE_ESCAPE = / u[a-fA-F0-9]{4} | U[a-fA-F0-9]{8} /x - - STRING_PREFIXES = /[xnb]|_\w+/i - - def scan_tokens tokens, options - - state = :initial - string_type = nil - string_content = '' - - until eos? - - kind = nil - match = nil - - if state == :initial - - if scan(/ \s+ | \\\n /x) - kind = :space - - elsif scan(/^(?:--\s?|#).*/) - kind = :comment - - elsif scan(%r! /\* (?: .*? \*/ | .* ) !mx) - kind = :comment - - elsif scan(/ [-+*\/=<>;,!&^|()\[\]{}~%] | \.(?!\d) /x) - kind = :operator - - elsif scan(/(#{STRING_PREFIXES})?([`"'])/o) - prefix = self[1] - string_type = self[2] - tokens << [:open, :string] - tokens << [prefix, :modifier] if prefix - match = string_type - state = :string - kind = :delimiter - - elsif match = scan(/ @? [A-Za-z_][A-Za-z_0-9]* /x) - kind = match[0] == ?@ ? :variable : IDENT_KIND[match.downcase] - - elsif scan(/0[xX][0-9A-Fa-f]+/) - kind = :hex - - elsif scan(/0[0-7]+(?![89.eEfF])/) - kind = :oct - - elsif scan(/(?>\d+)(?![.eEfF])/) - kind = :integer - - elsif scan(/\d[fF]|\d*\.\d+(?:[eE][+-]?\d+)?|\d+[eE][+-]?\d+/) - kind = :float - - else - getch - kind = :error - - end - - elsif state == :string - if match = scan(/[^\\"'`]+/) - string_content << match - next - elsif match = scan(/["'`]/) - if string_type == match - if peek(1) == string_type # doubling means escape - string_content << string_type << getch - next - end - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - tokens << [matched, :delimiter] - tokens << [:close, :string] - state = :initial - string_type = nil - next - else - string_content << match - end - next - elsif scan(/ \\ (?: #{ESCAPE} | #{UNICODE_ESCAPE} ) /mox) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :char - elsif match = scan(/ \\ . /mox) - string_content << match - next - elsif scan(/ \\ | $ /x) - unless string_content.empty? - tokens << [string_content, :content] - string_content = '' - end - kind = :error - state = :initial - else - raise "else case \" reached; %p not handled." % peek(1), tokens - end - - else - raise 'else-case reached', tokens - - end - - match ||= matched - unless kind - raise_inspect 'Error token %p in line %d' % - [[match, kind], line], tokens, state - end - raise_inspect 'Empty token', tokens unless match - - tokens << [match, kind] - - end - tokens - - end - - end - -end end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/xml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/xml.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -module CodeRay -module Scanners - - load :html - - # XML Scanner - # - # Currently this is the same scanner as Scanners::HTML. - class XML < HTML - - register_for :xml - file_extension 'xml' - - end - -end -end diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/scanners/yaml.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/scanners/yaml.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -module CodeRay -module Scanners - - # YAML Scanner - # - # Based on the YAML scanner from Syntax by Jamis Buck. - class YAML < Scanner - - register_for :yaml - file_extension 'yml' - - KINDS_NOT_LOC = :all - - def scan_tokens tokens, options - - value_expected = nil - state = :initial - key_indent = indent = 0 - - until eos? - - kind = nil - match = nil - key_indent = nil if bol? - - if match = scan(/ +[\t ]*/) - kind = :space - - elsif match = scan(/\n+/) - kind = :space - state = :initial if match.index(?\n) - - elsif match = scan(/#.*/) - kind = :comment - - elsif bol? and case - when match = scan(/---|\.\.\./) - tokens << [:open, :head] - tokens << [match, :head] - tokens << [:close, :head] - next - when match = scan(/%.*/) - tokens << [match, :doctype] - next - end - - elsif state == :value and case - when !check(/(?:"[^"]*")(?=: |:$)/) && scan(/"/) - tokens << [:open, :string] - tokens << [matched, :delimiter] - tokens << [matched, :content] if scan(/ [^"\\]* (?: \\. [^"\\]* )* /mx) - tokens << [matched, :delimiter] if scan(/"/) - tokens << [:close, :string] - next - when match = scan(/[|>][-+]?/) - tokens << [:open, :string] - tokens << [match, :delimiter] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :content] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - tokens << [:close, :string] - next - when match = scan(/(?![!"*&]).+?(?=$|\s+#)/) - tokens << [match, :string] - string_indent = key_indent || column(pos - match.size - 1) - tokens << [matched, :string] if scan(/(?:\n+ {#{string_indent + 1}}.*)+/) - next - end - - elsif case - when match = scan(/[-:](?= |$)/) - state = :value if state == :colon && (match == ':' || match == '-') - state = :value if state == :initial && match == '-' - kind = :operator - when match = scan(/[,{}\[\]]/) - kind = :operator - when state == :initial && match = scan(/[\w.() ]*\S(?=: |:$)/) - kind = :key - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - when match = scan(/(?:"[^"\n]*"|'[^'\n]*')(?=: |:$)/) - tokens << [:open, :key] - tokens << [match[0,1], :delimiter] - tokens << [match[1..-2], :content] - tokens << [match[-1,1], :delimiter] - tokens << [:close, :key] - key_indent = column(pos - match.size - 1) - # tokens << [key_indent.inspect, :debug] - state = :colon - next - when scan(/(![\w\/]+)(:([\w:]+))?/) - tokens << [self[1], :type] - if self[2] - tokens << [':', :operator] - tokens << [self[3], :class] - end - next - when scan(/&\S+/) - kind = :variable - when scan(/\*\w+/) - kind = :global_variable - when scan(/< 'at', - :attribute_name => 'an', - :attribute_name_fat => 'af', - :attribute_value => 'av', - :attribute_value_fat => 'aw', - :bin => 'bi', - :char => 'ch', - :class => 'cl', - :class_variable => 'cv', - :color => 'cr', - :comment => 'c', - :complex => 'cm', - :constant => 'co', - :content => 'k', - :decorator => 'de', - :definition => 'df', - :delimiter => 'dl', - :directive => 'di', - :doc => 'do', - :doctype => 'dt', - :doc_string => 'ds', - :entity => 'en', - :error => 'er', - :escape => 'e', - :exception => 'ex', - :float => 'fl', - :function => 'fu', - :global_variable => 'gv', - :hex => 'hx', - :imaginary => 'cm', - :important => 'im', - :include => 'ic', - :inline => 'il', - :inline_delimiter => 'idl', - :instance_variable => 'iv', - :integer => 'i', - :interpreted => 'in', - :keyword => 'kw', - :key => 'ke', - :label => 'la', - :local_variable => 'lv', - :modifier => 'mod', - :oct => 'oc', - :operator_fat => 'of', - :pre_constant => 'pc', - :pre_type => 'pt', - :predefined => 'pd', - :preprocessor => 'pp', - :pseudo_class => 'ps', - :regexp => 'rx', - :reserved => 'r', - :shell => 'sh', - :string => 's', - :symbol => 'sy', - :tag => 'ta', - :tag_fat => 'tf', - :tag_special => 'ts', - :type => 'ty', - :variable => 'v', - :value => 'vl', - :xml_text => 'xt', - - :insert => 'ins', - :delete => 'del', - :change => 'chg', - :head => 'head', - - :ident => :NO_HIGHLIGHT, # 'id' - #:operator => 'op', - :operator => :NO_HIGHLIGHT, # 'op' - :space => :NO_HIGHLIGHT, # 'sp' - :plain => :NO_HIGHLIGHT, - } - ClassOfKind[:method] = ClassOfKind[:function] - ClassOfKind[:open] = ClassOfKind[:close] = ClassOfKind[:delimiter] - ClassOfKind[:nesting_delimiter] = ClassOfKind[:delimiter] - ClassOfKind[:escape] = ClassOfKind[:delimiter] - #ClassOfKind.default = ClassOfKind[:error] or raise 'no class found for :error!' - end -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/coderay-0.9.2/lib/coderay/tokens.rb --- a/vendor/plugins/coderay-0.9.2/lib/coderay/tokens.rb Thu Jan 20 09:59:02 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,388 +0,0 @@ -module CodeRay - - # = Tokens - # - # The Tokens class represents a list of tokens returnd from - # a Scanner. - # - # A token is not a special object, just a two-element Array - # consisting of - # * the _token_ _kind_ (a Symbol representing the type of the token) - # * the _token_ _text_ (the original source of the token in a String) - # - # A token looks like this: - # - # [:comment, '# It looks like this'] - # [:float, '3.1415926'] - # [:error, '$^'] - # - # Some scanners also yield some kind of sub-tokens, represented by special - # token texts, namely :open and :close . - # - # The Ruby scanner, for example, splits "a string" into: - # - # [ - # [:open, :string], - # [:delimiter, '"'], - # [:content, 'a string'], - # [:delimiter, '"'], - # [:close, :string] - # ] - # - # Tokens is also the interface between Scanners and Encoders: - # The input is split and saved into a Tokens object. The Encoder - # then builds the output from this object. - # - # Thus, the syntax below becomes clear: - # - # CodeRay.scan('price = 2.59', :ruby).html - # # the Tokens object is here -------^ - # - # See how small it is? ;) - # - # Tokens gives you the power to handle pre-scanned code very easily: - # You can convert it to a webpage, a YAML file, or dump it into a gzip'ed string - # that you put in your DB. - # - # Tokens' subclass TokenStream allows streaming to save memory. - class Tokens < Array - - # The Scanner instance that created the tokens. - attr_accessor :scanner - - # Whether the object is a TokenStream. - # - # Returns false. - def stream? - false - end - - # Iterates over all tokens. - # - # If a filter is given, only tokens of that kind are yielded. - def each kind_filter = nil, &block - unless kind_filter - super(&block) - else - super() do |text, kind| - next unless kind == kind_filter - yield text, kind - end - end - end - - # Iterates over all text tokens. - # Range tokens like [:open, :string] are left out. - # - # Example: - # tokens.each_text_token { |text, kind| text.replace html_escape(text) } - def each_text_token - each do |text, kind| - next unless text.is_a? ::String - yield text, kind - end - end - - # Encode the tokens using encoder. - # - # encoder can be - # * a symbol like :html oder :statistic - # * an Encoder class - # * an Encoder object - # - # options are passed to the encoder. - def encode encoder, options = {} - unless encoder.is_a? Encoders::Encoder - unless encoder.is_a? Class - encoder_class = Encoders[encoder] - end - encoder = encoder_class.new options - end - encoder.encode_tokens self, options - end - - - # Turn into a string using Encoders::Text. - # - # +options+ are passed to the encoder if given. - def to_s options = {} - encode :text, options - end - - # Redirects unknown methods to encoder calls. - # - # For example, if you call +tokens.html+, the HTML encoder - # is used to highlight the tokens. - def method_missing meth, options = {} - Encoders[meth].new(options).encode_tokens self - end - - # Returns the tokens compressed by joining consecutive - # tokens of the same kind. - # - # This can not be undone, but should yield the same output - # in most Encoders. It basically makes the output smaller. - # - # Combined with dump, it saves space for the cost of time. - # - # If the scanner is written carefully, this is not required - - # for example, consecutive //-comment lines could already be - # joined in one comment token by the Scanner. - def optimize - last_kind = last_text = nil - new = self.class.new - for text, kind in self - if text.is_a? String - if kind == last_kind - last_text << text - else - new << [last_text, last_kind] if last_kind - last_text = text - last_kind = kind - end - else - new << [last_text, last_kind] if last_kind - last_kind = last_text = nil - new << [text, kind] - end - end - new << [last_text, last_kind] if last_kind - new - end - - # Compact the object itself; see optimize. - def optimize! - replace optimize - end - - # Ensure that all :open tokens have a correspondent :close one. - # - # TODO: Test this! - def fix - tokens = self.class.new - # Check token nesting using a stack of kinds. - opened = [] - for type, kind in self - case type - when :open - opened.push [:close, kind] - when :begin_line - opened.push [:end_line, kind] - when :close, :end_line - expected = opened.pop - if [type, kind] != expected - # Unexpected :close; decide what to do based on the kind: - # - token was never opened: delete the :close (just skip it) - next unless opened.rindex expected - # - token was opened earlier: also close tokens in between - tokens << token until (token = opened.pop) == expected - end - end - tokens << [type, kind] - end - # Close remaining opened tokens - tokens << token while token = opened.pop - tokens - end - - def fix! - replace fix - end - - # TODO: Scanner#split_into_lines - # - # Makes sure that: - # - newlines are single tokens - # (which means all other token are single-line) - # - there are no open tokens at the end the line - # - # This makes it simple for encoders that work line-oriented, - # like HTML with list-style numeration. - def split_into_lines - raise NotImplementedError - end - - def split_into_lines! - replace split_into_lines - end - - # Dumps the object into a String that can be saved - # in files or databases. - # - # The dump is created with Marshal.dump; - # In addition, it is gzipped using GZip.gzip. - # - # The returned String object includes Undumping - # so it has an #undump method. See Tokens.load. - # - # You can configure the level of compression, - # but the default value 7 should be what you want - # in most cases as it is a good compromise between - # speed and compression rate. - # - # See GZip module. - def dump gzip_level = 7 - require 'coderay/helpers/gzip_simple' - dump = Marshal.dump self - dump = dump.gzip gzip_level - dump.extend Undumping - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text_size - size = 0 - each_text_token do |t, k| - size + t.size - end - size - end - - # The total size of the tokens. - # Should be equal to the input size before - # scanning. - def text - map { |t, k| t if t.is_a? ::String }.join - end - - # Include this module to give an object an #undump - # method. - # - # The string returned by Tokens.dump includes Undumping. - module Undumping - # Calls Tokens.load with itself. - def undump - Tokens.load self - end - end - - # Undump the object using Marshal.load, then - # unzip it using GZip.gunzip. - # - # The result is commonly a Tokens object, but - # this is not guaranteed. - def Tokens.load dump - require 'coderay/helpers/gzip_simple' - dump = dump.gunzip - @dump = Marshal.load dump - end - - end - - - # = TokenStream - # - # The TokenStream class is a fake Array without elements. - # - # It redirects the method << to a block given at creation. - # - # This allows scanners and Encoders to use streaming (no - # tokens are saved, the input is highlighted the same time it - # is scanned) with the same code. - # - # See CodeRay.encode_stream and CodeRay.scan_stream - class TokenStream < Tokens - - # Whether the object is a TokenStream. - # - # Returns true. - def stream? - true - end - - # The Array is empty, but size counts the tokens given by <<. - attr_reader :size - - # Creates a new TokenStream that calls +block+ whenever - # its << method is called. - # - # Example: - # - # require 'coderay' - # - # token_stream = CodeRay::TokenStream.new do |kind, text| - # puts 'kind: %s, text size: %d.' % [kind, text.size] - # end - # - # token_stream << [:regexp, '/\d+/'] - # #-> kind: rexpexp, text size: 5. - # - def initialize &block - raise ArgumentError, 'Block expected for streaming.' unless block - @callback = block - @size = 0 - end - - # Calls +block+ with +token+ and increments size. - # - # Returns self. - def << token - @callback.call(*token) - @size += 1 - self - end - - # This method is not implemented due to speed reasons. Use Tokens. - def text_size - raise NotImplementedError, - 'This method is not implemented due to speed reasons.' - end - - # A TokenStream cannot be dumped. Use Tokens. - def dump - raise NotImplementedError, 'A TokenStream cannot be dumped.' - end - - # A TokenStream cannot be optimized. Use Tokens. - def optimize - raise NotImplementedError, 'A TokenStream cannot be optimized.' - end - - end - -end - -if $0 == __FILE__ - $VERBOSE = true - $: << File.join(File.dirname(__FILE__), '..') - eval DATA.read, nil, $0, __LINE__ + 4 -end - -__END__ -require 'test/unit' - -class TokensTest < Test::Unit::TestCase - - def test_creation - assert CodeRay::Tokens < Array - tokens = nil - assert_nothing_raised do - tokens = CodeRay::Tokens.new - end - assert_kind_of Array, tokens - end - - def test_adding_tokens - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - assert_equal tokens.size, 2 - end - - def test_dump_undump - tokens = CodeRay::Tokens.new - assert_nothing_raised do - tokens << ['string', :type] - tokens << ['()', :operator] - end - tokens2 = nil - assert_nothing_raised do - tokens2 = tokens.dump.undump - end - assert_equal tokens, tokens2 - end - -end \ No newline at end of file diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/.svn/entries --- a/vendor/plugins/engines/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z b8328004b1bb94c84d90c0839cd7d41d 2009-09-13T17:14:35.707881Z 2887 @@ -72,7 +72,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z a523ea1465a566ae38fba96a99506ff3 2008-07-12T10:17:14.809831Z 1654 @@ -106,7 +106,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z f653a768811758cee11e21d4de00b381 2009-10-07T16:43:50.656336Z 2904 @@ -140,7 +140,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z e4f81ba26f0b10a838b3336ba263aaa5 2009-09-13T17:14:35.707881Z 2887 @@ -177,7 +177,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 41bb5eeb2864cd46438eefb1cb048c4d 2009-02-21T11:04:50.579477Z 2493 @@ -214,7 +214,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 6e112fd6d07885bef3fd5bd537fc1409 2008-07-12T10:17:14.809831Z 1654 @@ -248,7 +248,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 18cc761cb69b7735ecf0cdb0d9b6d640 2009-09-13T17:14:35.707881Z 2887 @@ -282,7 +282,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 7e25f2cbded59c24735a20510040bb74 2008-07-12T10:17:14.809831Z 1654 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/generators/.svn/entries --- a/vendor/plugins/engines/generators/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/generators/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/generators +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/generators/plugin_migration/.svn/entries --- a/vendor/plugins/engines/generators/plugin_migration/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/generators/plugin_migration/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/generators/plugin_migration +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:54.000000Z +2011-03-03T11:05:12.000000Z 3f4805cb1e4a8b8a3ed180f22d81c285 2010-11-14T16:24:21.989522Z 4406 @@ -66,7 +66,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z d796f61555b36ef9941ea049c94df06b 2008-07-12T10:17:14.809831Z 1654 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries --- a/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/generators/plugin_migration/templates/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/generators/plugin_migration/templates +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/generators/plugin_migration/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 0b30f95c4244242093ded274caf9e4a8 2008-07-12T10:17:14.809831Z 1654 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/lib/.svn/entries --- a/vendor/plugins/engines/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z b9128ad79c06e8c2eb2474a7f9edf60d 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/lib/engines/.svn/entries --- a/vendor/plugins/engines/lib/engines/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/lib/engines/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/lib/engines +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z f5e61f1312a19bdac20f06b7529eaa98 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z d084e8ccb3edfb9f481f2626ee9e57e1 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z a2cb2f3c517fbe62ab1277e44b0a05ed 2009-02-21T11:04:50.579477Z 2493 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/lib/engines/plugin/.svn/entries --- a/vendor/plugins/engines/lib/engines/plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/lib/engines/plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/lib/engines/plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 2adca63e7c7d7c38a91953458e893bb2 2008-07-12T10:17:14.809831Z 1654 @@ -66,7 +66,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 21ac938bcf4f86e62ec21e9803cfd76e 2009-02-21T11:04:50.579477Z 2493 @@ -100,7 +100,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 38eaf6e3b113f74daa0669c67261cc72 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z d68941171066743dd63a174b5f270f66 2008-07-12T10:17:14.809831Z 1654 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries --- a/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/lib/engines/rails_extensions/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/lib/engines/rails_extensions +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/lib/engines/rails_extensions http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 3e26c9fe2cd009cb5e81f6ccea3f012c 2009-02-21T11:04:50.579477Z 2493 @@ -66,7 +66,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:12.000000Z c5a5e8b469c1e3fefcc5bedca9f4ac82 2010-09-17T04:06:40.671348Z 4094 @@ -100,7 +100,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 6e29697f02c187c9033624422365044a 2009-02-21T11:04:50.579477Z 2493 @@ -134,7 +134,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z f26da6a18ffcc7b846838f038a0abea4 2008-07-12T10:17:14.809831Z 1654 @@ -168,7 +168,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 8f8e408b9f1a72af1cc5232ddb888266 2009-02-21T11:04:50.579477Z 2493 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/tasks/.svn/entries --- a/vendor/plugins/engines/tasks/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/tasks/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/tasks +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/tasks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 10b9e5aacd9d0673e694f6ababd6ee3b 2009-12-18T14:41:37.649419Z 3186 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/.svn/entries --- a/vendor/plugins/engines/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/.svn/entries --- a/vendor/plugins/engines/test/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/controllers +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 8e2adc646126f3962ca1eaf16d663fa7 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/controllers/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/controllers/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z ed9f029690f9d77b31e0d68cff2f8ff3 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/helpers/.svn/entries --- a/vendor/plugins/engines/test/app/helpers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/helpers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/helpers +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/helpers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z b3286b0384ccf10d15423a78b8a70c3a 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/models/.svn/entries --- a/vendor/plugins/engines/test/app/models/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/models/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/models +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 53fd050b6dc2f5da77439ffab6e1dd6e 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z ffba288117364d8379bd2b6788e2fd2f 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/things/.svn/entries --- a/vendor/plugins/engines/test/app/things/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/things/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/things +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/things http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z aaa0b6b1363b304ca66c8def3c543b13 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/views/.svn/entries --- a/vendor/plugins/engines/test/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/views +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/app_and_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/views/app_and_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z e6dca36d9e91414f1a520ffddb5202d7 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/views/namespace/.svn/entries --- a/vendor/plugins/engines/test/app/views/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/views/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/views/namespace/app_and_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/namespace/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z e6dca36d9e91414f1a520ffddb5202d7 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/views/notify_mail/.svn/entries --- a/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/notify_mail/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/views/notify_mail +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/notify_mail http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 8e367f8a525da2fddf6b32d5f874c6ba 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 50ed7a6afc64b4a326aa8b681a31b9a3 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z cb0d28ce47ca265d02f252970ac69194 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 5a4f738dec733e5f4ad703495c5eb54a 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-08-12T15:03:27.000000Z +2011-03-03T11:05:12.000000Z 3b779e7b00bfe0f9b876bfebd7905a4e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries --- a/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/app/views/plugin_mail/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/app/views/plugin_mail +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/app/views/plugin_mail http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d0e724c594c43b6db39389834f3c26e2 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 317dc13d851c827568f61def9b031803 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/functional/.svn/entries --- a/vendor/plugins/engines/test/functional/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/functional/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/functional +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/functional http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 53bf916868db17fcb64853aab45ce80b 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 03f318c931cb7d40733445e72a504c95 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 43b6ff22af92cc8988a51d1b50c4c587 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 0ca8b6e7e4b7655c3633b11d4ff61cc6 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z afcc79d3fa1c4f1615b271f65d982d8b 2009-09-13T17:14:35.707881Z 2887 @@ -202,7 +202,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 6bd25b9259dbf37b6d31e69f83a32fe0 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/lib/.svn/entries --- a/vendor/plugins/engines/test/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 1fde453d5263852d1ba9fc3dd90254fc 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z b00ea9b677cec76cd2fc19b1f66db3e2 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 52fd5b17adc2fec1950be496b5ff3a3d 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/.svn/entries --- a/vendor/plugins/engines/test/plugins/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z b70de56fa165815bbab14f584b6fbdb4 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 9e56eb4864bc1877cc8a6e69ca873157 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z f9f42ac7db3bb715ff4f055162013aba 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z a24a7b9dd5706d2daef2456b1b1cac4c 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z b1c4a105ad8bfa7add28c583dbd9ef8a 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 43152818b40142db88dffe0192e66582 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/models/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/models +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z a661e69f87fead66873ac8cc162da128 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 01ab2dea5fd3e341bd082f2fc507f760 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z ae48cf4ce7068428c1525dba877a880c 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z eeb9900e088c367d06668e201e4be39e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 68deee946f4e81fafcae37d51f2e6bd5 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 3791a6748098d1382b11556ec47b6366 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z eeb9900e088c367d06668e201e4be39e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z eeb9900e088c367d06668e201e4be39e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 3bef9fe54ed08fd7ce454a189b2b3195 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 3bef9fe54ed08fd7ce454a189b2b3195 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 4799f34099980de6af0dc719c7f04845 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z e892323cf7ac415a30ca41b49ab96d1d 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries --- a/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/alpha_plugin/locales/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/alpha_plugin/locales +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/alpha_plugin/locales http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 8fb4d64b7ed263c84a6aa2974eb71f25 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z cee45809cc705092eca4e13d3aa204f1 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 6c633d0dcb606e532dd906bd2567bf57 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z df7f8bb84aa9fcbe07534d5aa59e11b8 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z a8bcbb79381d6db75a9ea6e2704828a9 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/models/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/models +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z c9a469b003eca7ac6627c41deeda1b4c 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/views +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 78db1a7e1a9f6216dfa3671e5d42c81b 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 78db1a7e1a9f6216dfa3671e5d42c81b 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries --- a/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/beta_plugin/locales/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/beta_plugin/locales +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/beta_plugin/locales http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 277816fa171800daec137e70993e39f6 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries --- a/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/not_a_plugin/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/not_a_plugin +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries --- a/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/not_a_plugin/public/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/not_a_plugin/public +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/not_a_plugin/public http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/app/controllers +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z ba97b09a04ada07aa57234ea8649c128 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/app/views +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/assets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/app/views/assets +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/assets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 5c22cfc5b27a3b2b869075baacf530a6 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/app/views/layouts http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z 8a99331150683df5edbd645cb851de37 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/public/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/public +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets/public/subfolder/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets/public/subfolder +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets/public/subfolder http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:28.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_code_mixing/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_code_mixing +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z cee45809cc705092eca4e13d3aa204f1 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_code_mixing/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_code_mixing/app/things/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_code_mixing/app/things +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_code_mixing/app/things http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 3b8cfcd53b03ccc6db1aac5b542abaa4 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_load_path/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_load_path/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_load_path +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_load_path http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_migration/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_migration/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_migration/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_migration +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_migration/db/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_migration/db +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_migration/db/migrate/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_migration/db/migrate +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_migration/db/migrate http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z ba950e9dc666a42d09029148ae7e3234 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z de937ac5b434955daacc33306a5a1a2d 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z b9241da5bb8308bcea2f4cd5cbd32ff1 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_plugin_mailing +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_plugin_mailing/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 6bfa7a84bb26ae29617568896fec30ae 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z cf207341167ec099c0e0ffbe3935a4d4 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z c54772416c0a8c4f3d46880180299dd5 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 6f32fb0cf1bfbf4dcc8636f350a126e8 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 6f32fb0cf1bfbf4dcc8636f350a126e8 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z ededb32a08ab9582df24ce1572dc2a20 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_routing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_routing +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_routing/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_routing/app/controllers +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z e5a27666b16bdff58054a3440cf14516 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 515669edfb53126155e911a1ae5149ec 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_routing/config/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_routing/config +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_routing/config http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 47135f279d2e64a431d8604df1402ffb 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_testing/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_testing +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing http://redmine.rubyforge.org/svn @@ -38,7 +38,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/app/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_testing/app +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/app http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 9cbac832f86ac5e8cfbbc4c69811910e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_testing/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/test/fixtures/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_testing/test/fixtures +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/fixtures http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d41d8cd98f00b204e9800998ecf8427e 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries --- a/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/plugins/test_testing/test/unit/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/plugins/test_testing/test/unit +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/plugins/test_testing/test/unit http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 35e9fbc2fb32c9114a5d6cf531f41e8d 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/unit/.svn/entries --- a/vendor/plugins/engines/test/unit/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/unit/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/unit +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 6724203a17cf765303c1f1cad440ec45 2009-09-13T17:14:35.707881Z 2887 @@ -66,7 +66,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 45a0f490d23fbb62bab17f142ba7e3a6 2009-09-13T17:14:35.707881Z 2887 @@ -100,7 +100,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 061b4ca6bf8ee79b149289ced48c0389 2009-09-13T17:14:35.707881Z 2887 @@ -134,7 +134,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z caf5ed93e20f9675e13260049b591bcb 2009-09-13T17:14:35.707881Z 2887 @@ -168,7 +168,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d48da3c38e3e757d1649f48a25913284 2009-09-13T17:14:35.707881Z 2887 @@ -202,7 +202,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z ba3376b21f9304e1bc6dd06e88fb031f 2009-09-13T17:14:35.707881Z 2887 @@ -236,7 +236,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 7930dc88c66a78e10283af28694f9d75 2009-09-13T17:14:35.707881Z 2887 @@ -273,7 +273,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z da88ee34b7ad92288156f6dc33bc8945 2009-09-13T17:14:35.707881Z 2887 @@ -307,7 +307,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 749dec42d5f8db283afd40fa09a7a323 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/engines/test/unit/test_testing/.svn/entries --- a/vendor/plugins/engines/test/unit/test_testing/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/engines/test/unit/test_testing/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/engines/test/unit/test_testing +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/engines/test/unit/test_testing http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 55340a07100e4eea865c224b450561d8 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/gravatar/.svn/entries --- a/vendor/plugins/gravatar/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/gravatar/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/gravatar +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-10-01T15:15:02.000000Z +2011-03-03T11:05:12.000000Z dcfa5a7b3c1cc768b2c0e3ad1ab802d0 2010-09-10T03:09:02.311267Z 4072 @@ -66,7 +66,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 3b03a1f4670e486bfc0a99ea42fcc661 2009-08-02T04:19:44.367555Z 2832 @@ -100,7 +100,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z cd9b6943fc8fe58cdccef0b0215bf6bb 2009-08-02T04:19:44.367555Z 2832 @@ -134,7 +134,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 7560c41dd1c4891e83f52d2855a6a4e9 2008-10-30T02:58:04.259131Z 1962 @@ -171,7 +171,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z b718f27e16d77b36a24720b5b902328f 2008-10-30T02:58:04.259131Z 1962 @@ -208,7 +208,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z e052390cb0624d4b81b7809e65db85f6 2009-08-02T04:19:44.367555Z 2832 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/gravatar/lib/.svn/entries --- a/vendor/plugins/gravatar/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/gravatar/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/gravatar/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/lib http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-11-30T13:11:54.000000Z +2011-03-03T11:05:12.000000Z a25a3e98e0d582955ee8fd520f424273 2010-11-14T16:24:21.989522Z 4406 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/gravatar/spec/.svn/entries --- a/vendor/plugins/gravatar/spec/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/gravatar/spec/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/gravatar/spec +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/gravatar/spec http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-10-01T15:15:03.000000Z +2011-03-03T11:05:12.000000Z 26b23e5e988b11435e121bf53624d934 2010-09-10T03:09:02.311267Z 4072 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/.svn/entries --- a/vendor/plugins/open_id_authentication/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z b66b372df8374607d104228f41a06671 2009-02-11T19:06:45.087605Z 2438 @@ -72,7 +72,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 22579abfc9dc6a4cf475150e407e9a17 2009-02-12T21:25:50.680468Z 2458 @@ -109,7 +109,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d23f4c2e6c00805d7172c76ad52ebe6f 2009-02-11T19:06:45.087605Z 2438 @@ -146,7 +146,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 45eb3e296a3591fca629d0c8eab71e4c 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/generators/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/generators +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z ee799e52b83b842fa2a879431195e9eb 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/open_id_authentication_tables/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 352b0b17c079fdf355c028a9b990b3b7 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z f401bfd8b5d2dd3008d16bf79de8c1e4 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries --- a/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/templates http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 512b6bc6321e15e12a9eb5ef10317b73 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/lib/.svn/entries --- a/vendor/plugins/open_id_authentication/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-09-10T14:59:25.000000Z +2011-03-03T11:05:12.000000Z c72f1bd48e8c2dfe4e84ba232fc40030 2010-08-10T21:12:32.103531Z 3933 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries --- a/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/lib/open_id_authentication/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/lib/open_id_authentication +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/lib/open_id_authentication http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 1effe2a3ab6ff2cf3a4ffc288222b114 2009-02-11T19:06:45.087605Z 2438 @@ -66,7 +66,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 9ed2aea6a3f0e76f21a84bf5bdb1bebe 2009-02-11T19:06:45.087605Z 2438 @@ -100,7 +100,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 4aa743638f54375c2f1f25e62fa50bf3 2009-02-11T19:06:45.087605Z 2438 @@ -134,7 +134,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d05c8725996156d4cc153a2fc0891db8 2009-02-11T19:06:45.087605Z 2438 @@ -168,7 +168,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 6a6fdfddabbc9ae4b8c11f69bc653107 2009-02-11T19:06:45.087605Z 2438 @@ -202,7 +202,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 42863e1d17d5af05e0e896d336def59c 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/tasks/.svn/entries --- a/vendor/plugins/open_id_authentication/tasks/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/tasks/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/tasks +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/tasks http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 54b595ee92e0adb364a9086340b2af51 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/open_id_authentication/test/.svn/entries --- a/vendor/plugins/open_id_authentication/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/open_id_authentication/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/open_id_authentication/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/open_id_authentication/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 9448478c6f6c999b3dfae03f9661a7a9 2009-02-11T19:06:45.087605Z 2438 @@ -66,7 +66,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 218b9c429fce5d50a6de37d10d4c626a 2009-02-11T19:06:45.087605Z 2438 @@ -100,7 +100,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 3ffcd8ee621212d3a963257c35cf565c 2009-02-11T19:06:45.087605Z 2438 @@ -134,7 +134,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 26175162cebaa3962614100cac9726fc 2009-02-11T19:06:45.087605Z 2438 @@ -168,7 +168,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z c3e483ae649f9324f093075331c26ed1 2009-02-11T19:06:45.087605Z 2438 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/prepend_engine_views/.svn/entries --- a/vendor/plugins/prepend_engine_views/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/prepend_engine_views/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/prepend_engine_views +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/prepend_engine_views http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 720c397a2f5ed49f4436f5d9cbe0b5ec 2009-09-13T17:14:35.707881Z 2887 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/rfpdf/.svn/entries --- a/vendor/plugins/rfpdf/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/rfpdf/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/rfpdf +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 1da9fbada6119233134b3aab6c7d0edf 2008-07-04T17:58:14.743502Z 1623 @@ -72,7 +72,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 275a3dc6407eaf7c40f1d8f4e6b08803 2006-11-21T18:34:04.275680Z 49 @@ -106,7 +106,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 40cf182dab06e3de067375de5bbab322 2006-11-21T18:34:04.275680Z 49 @@ -140,7 +140,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z d58199e83ebcaa5d234764407c238bb2 2006-11-21T18:34:04.275680Z 49 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/rfpdf/lib/.svn/entries --- a/vendor/plugins/rfpdf/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/rfpdf/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:29.000000Z +2011-03-03T11:05:12.000000Z 9667df0ee17c3893ec4025f214d990ee 2006-11-21T18:34:04.275680Z 49 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/rfpdf/lib/rfpdf/.svn/entries --- a/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/rfpdf/lib/rfpdf/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,7 +1,7 @@ 10 dir -4732 +4993 http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/lib/rfpdf http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z ddaf6868455af432aac221e53aadc10a 2008-06-07T08:39:06.277997Z 1497 @@ -66,7 +66,7 @@ -2011-01-13T14:09:38.000000Z +2011-03-03T11:05:12.000000Z a2f702c9c8177f01521aa9eb5d6f9313 2011-01-01T11:45:12.617336Z 4602 @@ -100,7 +100,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 61d6e8e3bc2a549b1adf12c8e5148019 2010-02-07T12:30:44.486359Z 3389 @@ -134,7 +134,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z f504607d615e4d100eb506daf3dfe038 2006-11-21T18:34:04.275680Z 49 @@ -168,7 +168,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 267f469d753d389beda7bb8d39ef5e79 2007-02-18T10:33:22.252239Z 248 @@ -202,7 +202,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z 8b971319c65229a7075520cf5ce0fb84 2006-11-21T18:34:04.275680Z 49 @@ -236,7 +236,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z c11f99560b9b2e12cf9c679f8ef11c37 2006-11-21T18:34:04.275680Z 49 @@ -270,7 +270,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z 48cd43d67257151aebb2e0aeee6f4cbf 2007-03-01T19:49:04.518842Z 287 @@ -304,7 +304,7 @@ -2010-09-23T14:37:45.855835Z +2011-03-03T11:05:12.000000Z 9bdec08cb98e4413cfb9c39877f3734d 2008-07-04T17:58:14.743502Z 1623 @@ -338,7 +338,7 @@ -2010-09-23T14:37:45.851779Z +2011-03-03T11:05:12.000000Z e759935ac5ac9027073e9a2f3543b231 2006-11-21T18:34:04.275680Z 49 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/rfpdf/test/.svn/entries --- a/vendor/plugins/rfpdf/test/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/rfpdf/test/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/rfpdf/test +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/rfpdf/test http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 65b672e3025a6dc9ed22dc2cb1356061 2006-11-21T18:34:04.275680Z 49 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/ruby-net-ldap-0.0.4 +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4 http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 100efd8d000514effa3709713ab85acb 2007-01-02T08:48:40.736310Z 134 @@ -72,7 +72,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z e951c712b462c2e6e01f12474d4a23c2 2007-01-02T08:48:40.736310Z 134 @@ -106,7 +106,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z ff6d66271209d878dbe3742d8061151e 2007-01-02T08:48:40.736310Z 134 @@ -140,7 +140,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 365281a5053e3232092adff0636600b3 2007-01-02T08:48:40.736310Z 134 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/ruby-net-ldap-0.0.4/lib +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib http://redmine.rubyforge.org/svn diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/ruby-net-ldap-0.0.4/lib/net +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net http://redmine.rubyforge.org/svn @@ -35,7 +35,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z bcd7fbc67923f3cc1491ca301a5c39cb 2007-01-02T08:48:40.736310Z 134 @@ -69,7 +69,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 47d5a9c76d96071a1de184dd49c09194 2007-01-02T08:48:40.736310Z 134 @@ -103,7 +103,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 40f7f978006674f2b916ce341e5ad684 2008-02-15T17:22:21.293943Z 1148 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z be6b5dd522a4532ceeda4ab5bddcb53e 2007-01-02T08:48:40.736310Z 134 @@ -66,7 +66,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z dce002e156bf793b6219b50e5d4ede3a 2007-01-02T08:48:40.736310Z 134 @@ -100,7 +100,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 39c1aa4a3ff36f2769b6855a4b56faa7 2007-02-18T11:45:55.832750Z 252 @@ -134,7 +134,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 7acdae44250f47d4b177c0367865d5f7 2007-01-02T08:48:40.736310Z 134 @@ -168,7 +168,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 7af528c0721148b904f82e64e523ee74 2007-01-02T08:48:40.736310Z 134 diff -r fca2657f4aa5 -r eeebe205a056 vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries --- a/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries Thu Jan 20 09:59:02 2011 +0000 +++ b/vendor/plugins/ruby-net-ldap-0.0.4/tests/.svn/entries Thu Mar 03 12:02:03 2011 +0000 @@ -1,8 +1,8 @@ 10 dir -4732 -http://redmine.rubyforge.org/svn/branches/1.1-stable/vendor/plugins/ruby-net-ldap-0.0.4/tests +4993 +http://redmine.rubyforge.org/svn/trunk/vendor/plugins/ruby-net-ldap-0.0.4/tests http://redmine.rubyforge.org/svn @@ -32,7 +32,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z d32a0d5d48658b30de358974dc588b6a 2007-01-02T08:48:40.736310Z 134 @@ -66,7 +66,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 9a4a1de4982131870bcc016b3062b563 2007-01-02T08:48:40.736310Z 134 @@ -100,7 +100,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 07fadb83b55212328945590db904016b 2007-01-02T08:48:40.736310Z 134 @@ -134,7 +134,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z f60b9471933a7a534097d3fd1fe38a18 2007-01-02T08:48:40.736310Z 134 @@ -168,7 +168,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 98e4a39b73665ed7c274457213d8e3d5 2007-01-02T08:48:40.736310Z 134 @@ -202,7 +202,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z a6eed10e89ba06f4ffa2da720bb1752f 2007-01-02T08:48:40.736310Z 134 @@ -236,7 +236,7 @@ -2010-08-12T15:03:30.000000Z +2011-03-03T11:05:12.000000Z 3dcbc8b4c3717fa97211a1d75a7fab4f 2007-01-02T08:48:40.736310Z 134