rutils 0.2.5 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/History.txt +9 -0
  2. data/Manifest.txt +22 -15
  3. data/README.txt +54 -41
  4. data/Rakefile.rb +9 -26
  5. data/TODO.txt +2 -3
  6. data/WHAT_HAS_CHANGED.txt +44 -0
  7. data/init.rb +20 -2
  8. data/lib/countries/countries.rb +1 -0
  9. data/lib/datetime/datetime.rb +1 -0
  10. data/lib/gilenson/bluecloth_extra.rb +7 -0
  11. data/lib/gilenson/gilenson.rb +39 -30
  12. data/lib/gilenson/helper.rb +34 -0
  13. data/lib/gilenson/maruku_extra.rb +19 -0
  14. data/lib/gilenson/rdiscount_extra.rb +7 -0
  15. data/lib/gilenson/redcloth_extra.rb +42 -0
  16. data/lib/integration/integration.rb +1 -11
  17. data/lib/integration/rails_date_helper_override.rb +103 -105
  18. data/lib/integration/rails_pre_filter.rb +1 -0
  19. data/lib/pluralizer/pluralizer.rb +14 -13
  20. data/lib/rutils.rb +15 -25
  21. data/lib/transliteration/bidi.rb +15 -72
  22. data/lib/transliteration/simple.rb +1 -0
  23. data/lib/transliteration/transliteration.rb +11 -9
  24. data/lib/version.rb +5 -0
  25. data/test/extras/integration_bluecloth.rb +13 -0
  26. data/test/extras/integration_maruku.rb +15 -0
  27. data/test/{test_rails_filter.rb → extras/integration_rails_filter.rb} +3 -1
  28. data/test/extras/integration_rails_gilenson_helpers.rb +80 -0
  29. data/test/{test_rails_helpers.rb → extras/integration_rails_helpers.rb} +15 -3
  30. data/test/extras/integration_rdiscount.rb +15 -0
  31. data/test/extras/integration_redcloth3.rb +18 -0
  32. data/test/extras/integration_redcloth4.rb +19 -0
  33. data/test/run_tests.rb +2 -2
  34. data/test/{t_datetime.rb → test_datetime.rb} +1 -2
  35. data/test/{t_gilenson.rb → test_gilenson.rb} +15 -6
  36. data/test/test_integration.rb +22 -0
  37. data/test/test_integration_flag.rb +18 -0
  38. data/test/{t_pluralize.rb → test_pluralize.rb} +3 -2
  39. data/test/{t_rutils_base.rb → test_rutils_base.rb} +1 -0
  40. data/test/test_transliteration.rb +53 -0
  41. metadata +35 -26
  42. data/lib/integration/blue_cloth_override.rb +0 -12
  43. data/lib/integration/red_cloth_four.rb +0 -24
  44. data/lib/integration/red_cloth_override.rb +0 -7
  45. data/lib/integration/red_cloth_three.rb +0 -25
  46. data/test/t_integration.rb +0 -46
  47. data/test/t_transliteration.rb +0 -109
  48. data/test/test_integration_bluecloth.rb +0 -17
  49. data/test/test_integration_redcloth3.rb +0 -31
  50. data/test/test_integration_redcloth4.rb +0 -31
@@ -1,78 +1,21 @@
1
- # Реализует транслитерацию обе стороны", дающую возможность автоматически использовать URL как ключ записи.
2
- # Перед применением убедитесь что среди ваших пользователей не осталось ни одного человека, пользующегося
3
- # любым другим алфавитом на земле кроме русского и латинского. К примеру можете таких пользователей лично истребить.
4
- #
5
- # Перед тем как использовать этот модуль подумайте - скорее всего вы строите приложение в котором Юникод использован
6
- # неправильно или не полностью. Честно.
1
+ # -*- encoding: utf-8 -*-
2
+ # ++DEPRECATED++ Этот модуль удален и присутствует только для выдачи сообщения об ошибке.
7
3
  module RuTils::Transliteration::BiDi
8
- TABLE_TO = {
9
- "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
10
- "Е"=>"E","Ё"=>"JO","Ж"=>"ZH","З"=>"Z","И"=>"I",
11
- "Й"=>"JJ","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
12
- "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
13
- "У"=>"U","Ф"=>"F","Х"=>"KH","Ц"=>"C","Ч"=>"CH",
14
- "Ш"=>"SH","Щ"=>"SHH","Ъ"=>"_~","Ы"=>"Y","Ь"=>"_'",
15
- "Э"=>"EH","Ю"=>"JU","Я"=>"JA","а"=>"a","б"=>"b",
16
- "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"jo",
17
- "ж"=>"zh","з"=>"z","и"=>"i","й"=>"jj","к"=>"k",
18
- "л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p",
19
- "р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f",
20
- "х"=>"kh","ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh",
21
- "ъ"=>"~","ы"=>"y","ь"=>"'","э"=>"eh","ю"=>"ju",
22
- "я"=>"ja",
23
- # " "=>"__","_"=>"__"
24
- # так сразу не получится, будут проблемы с "Ь"=>"_'"
25
- }.sort do |one, two|
26
- two[1].split(//).size <=> one[1].split(//).size
27
- end
28
-
29
- TABLE_FROM = TABLE_TO.unshift([" ","__"]).clone
30
- TABLE_TO.unshift(["_","__"])
31
-
32
- #:startdoc:
4
+ ERR = "Equivalent bidirectional transliteration for URLs is malpractive. BiDi translit has been removed from RuTils"
33
5
 
34
- def self.translify(str, allow_slashes = true)
35
- slash = allow_slashes ? '/' : '';
36
-
37
- s = str.clone.gsub(/[^\- _0-9a-zA-ZА-ёЁ#{slash}]/, '')
38
- lang_fr = s.scan(/[А-ёЁ ]+/)
39
- lang_fr.each do |fr|
40
- TABLE_TO.each do | translation |
41
- fr.gsub!(/#{translation[0]}/, translation[1])
42
- end
43
- end
44
-
45
- lang_sr = s.scan(/[0-9A-Za-z\_\-\.\/\']+/)
46
-
47
- string = ""
48
- if s =~ /\A[А-ёЁ ]/
49
- lang_fr, lang_sr = lang_sr, lang_fr
50
- string = "+"
51
- end
52
-
53
- 0.upto([lang_fr.length, lang_sr.length].min-1) do |x|
54
- string += lang_sr[x] + "+" + lang_fr[x] + "+";
55
- end
56
-
57
- if (lang_fr.length < lang_sr.length)
58
- string += lang_sr[lang_sr.length-1]
59
- else
60
- string[0, string.length-1]
61
- end
6
+ extend self
7
+
8
+ # ++DEPRECATED++
9
+ def translify(str, allow_slashes = true)
10
+ bail!
62
11
  end
63
12
 
64
- def self.detranslify(str, allow_slashes = true)
65
- slash = allow_slashes ? '/' : '';
66
-
67
- str.split('/').inject(out = "") do |out, pg|
68
- strings = pg.split('+')
69
- 1.step(strings.length-1, 2) do |x|
70
- TABLE_FROM.each do | translation |
71
- strings[x].gsub!(/#{translation[1]}/, translation[0])
72
- end
73
- end
74
- out << slash << strings.to_s
75
- end
76
- out[slash.length, out.length-slash.length]
13
+ # ++DEPRECATED++
14
+ def detranslify(str, allow_slashes = true)
15
+ bail!
16
+ end
17
+
18
+ def bail! #:nodoc:
19
+ raise RuTils::RemovedFeature, ERR
77
20
  end
78
21
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  # Реализует простейшую транслитерацию
2
3
  # "вот мы и здесь".translify => "vot my i zdes"
3
4
  # "vot my i zdes".detranslify => "вот мы и здесь"
@@ -1,11 +1,13 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  module RuTils
2
3
  module Transliteration #:nodoc:
3
4
  end
4
5
  end
5
6
 
6
7
  require File.join(File.dirname(__FILE__), 'simple')
7
- require File.join(File.dirname(__FILE__), 'bidi')
8
8
 
9
+ # Заглушка
10
+ require File.join(File.dirname(__FILE__), 'bidi')
9
11
 
10
12
  # Реализует транслитерацию любого объекта, реализующего String или to_s
11
13
  module RuTils::Transliteration::StringFormatting
@@ -25,24 +27,24 @@ module RuTils::Transliteration::StringFormatting
25
27
  RuTils::Transliteration::Simple::dirify(self.to_s)
26
28
  end
27
29
 
28
- # Транслитерирует строку (взаимно-однозначный транслит), и возвращает измененную строку
30
+ # ++DEPRECATED++ Вызывает ошибку
29
31
  def bidi_translify(allow_slashes = true)
30
- RuTils::Transliteration::BiDi::translify(self.to_s, allow_slashes)
32
+ RuTils::Transliteration::BiDi.bail!
31
33
  end
32
34
 
33
- # Транслитерирует строку (взаимно-однозначный транслит), меняя объект
35
+ # ++DEPRECATED++ Вызывает ошибку
34
36
  def bidi_translify!(allow_slashes = true)
35
- self.replace(RuTils::Transliteration::BiDi::translify(self.to_s, allow_slashes))
37
+ RuTils::Transliteration::BiDi.bail!
36
38
  end
37
39
 
38
- # Заменяет латиницу на кириллицу (взаимно-однозначный транслит), меняя объект
40
+ # ++DEPRECATED++ Вызывает ошибку
39
41
  def bidi_detranslify!(allow_slashes = true)
40
- self.replace(RuTils::Transliteration::BiDi::detranslify(self.to_s, allow_slashes))
42
+ RuTils::Transliteration::BiDi.bail!
41
43
  end
42
44
 
43
- # Заменяет латиницу на кириллицу (взаимно-однозначный транслит), и возвращает измененную строку
45
+ # ++DEPRECATED++ Вызывает ошибку
44
46
  def bidi_detranslify(allow_slashes = true)
45
- RuTils::Transliteration::BiDi::detranslify(self.to_s, allow_slashes)
47
+ RuTils::Transliteration::BiDi.bail!
46
48
  end
47
49
  end
48
50
 
data/lib/version.rb ADDED
@@ -0,0 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+ module RuTils
3
+ # Версия RuTils
4
+ VERSION = '1.0.0'
5
+ end
@@ -0,0 +1,13 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'bluecloth'
3
+
4
+ # Интеграция с BlueCloth - Markdown
5
+ # Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
6
+ class BlueclothIntegrationTest < Test::Unit::TestCase
7
+ C = RuTils::Gilenson::BlueClothExtra
8
+
9
+ def test_integration_markdown
10
+ assert_equal "<p>И вот&#160;&#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
11
+ C.new('И вот "они пошли туда", и шли шли шли').to_html
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'maruku'
3
+
4
+ # Интеграция с BlueCloth - Markdown
5
+ # Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
6
+ class MarukuIntegrationTest < Test::Unit::TestCase
7
+ C = RuTils::Gilenson::MarukuExtra
8
+
9
+ def test_integration_maruku
10
+
11
+ assert_equal "<p>И вот&#160;&#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
12
+ C.new('И вот "они пошли туда", и шли шли шли').to_html
13
+
14
+ end
15
+ end
@@ -1,5 +1,7 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'action_controller'
1
3
  require 'action_controller/test_process'
2
- require File.dirname(__FILE__) + '/../init.rb'
4
+ require File.dirname(__FILE__) + '/../../init.rb'
3
5
 
4
6
  ActionController::Routing::Routes.draw { |map| map.connect ':controller/:action/:id' }
5
7
 
@@ -0,0 +1,80 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'action_controller'
4
+ require 'action_view'
5
+
6
+ require 'action_controller/test_process'
7
+ require File.dirname(__FILE__) + '/../../init.rb'
8
+
9
+ # Перегрузка helper'ов Rails
10
+ class RailsGilensonHelpersTest < Test::Unit::TestCase
11
+
12
+ class Kontroller < ActionController::Base
13
+ def action_with_gilensize
14
+ render :inline => "<%= gilensize('Они пришли -- туда -- к А. П. Чехову') %>"
15
+ end
16
+
17
+ def action_with_gilensize_and_options
18
+ render :inline => "<%= gilensize('Они пришли -- туда -- к А. П. Чехову', :raw_output => true) %>"
19
+ end
20
+
21
+ def action_with_textilize
22
+ render :inline => "<%= textilize('Они пришли -- туда -- к А. П. Чехову') %>"
23
+ end
24
+
25
+ def action_with_textilize_without_overrides
26
+ RuTils.overrides = false
27
+ render :inline => "<%= textilize('Они пришли -- туда -- к А. П. Чехову') %>"
28
+ end
29
+
30
+ def action_with_markdown
31
+ render :inline => "<%= markdown('Они пришли -- туда -- к А. П. Чехову') %>"
32
+ end
33
+
34
+ def action_with_markdown_without_overrides
35
+ RuTils.overrides = false
36
+ render :inline => "<%= markdown('Они пришли -- туда -- к А. П. Чехову') %>"
37
+ end
38
+
39
+ def rescue_action(e)
40
+ raise e
41
+ end
42
+ end
43
+
44
+ def setup
45
+ @request = ActionController::TestRequest.new
46
+ @response = ActionController::TestResponse.new
47
+ @controller = Kontroller.new
48
+ end
49
+
50
+ def test_action_with_gilensize
51
+ get :action_with_gilensize
52
+ assert_equal 'Они&#160;пришли &#8212; туда &#8212; к&#160;А.П.&#8201;Чехову', @response.body
53
+ end
54
+
55
+ def test_action_with_gilensize_and_options
56
+ get :action_with_gilensize_and_options
57
+ assert_equal "Они пришли — туда — к А.П. Чехову", @response.body
58
+ end
59
+
60
+ def test_action_with_textilize
61
+ get :action_with_textilize
62
+ assert_equal "<p>Они пришли &#8212; туда &#8212; к&#160;А.П.&#8201;Чехову</p>", @response.body
63
+ end
64
+
65
+ def test_action_with_textilize_without_overrides
66
+ get :action_with_textilize_without_overrides
67
+ assert_equal "<p>Они пришли &#8212; туда &#8212; к А. П. Чехову</p>", @response.body, "Initials should not be formatted"
68
+ end
69
+
70
+ def test_action_with_markdown
71
+ get :action_with_markdown
72
+ assert_equal "<p>Они пришли &#8212; туда &#8212; к&#160;А.П.&#8201;Чехову</p>", @response.body
73
+ end
74
+
75
+ def test_action_with_markdown_without_overrides
76
+ get :action_with_markdown_without_overrides
77
+ assert_equal "<p>Они пришли -- туда -- к А. П. Чехову</p>", @response.body
78
+ end
79
+
80
+ end
@@ -1,8 +1,21 @@
1
- TEST_DATE = Date.parse("1983-10-15") # coincidentially...
2
- TEST_TIME = Time.local(1983, 10, 15, 12, 15) # also coincidentially...
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require 'action_controller'
4
+ require 'action_view'
5
+
6
+ require 'action_controller/test_process'
7
+ require File.dirname(__FILE__) + '/../../init.rb'
8
+ require 'action_pack/version'
9
+
10
+ ma, mi, ti = ActionPack::VERSION::MAJOR, ActionPack::VERSION::MINOR, ActionPack::VERSION::TINY
11
+
12
+ raise LoadError, "RuTils is not 2.2.2 compat" if (ma >= 2 && mi >= 2 && ti >= 1)
3
13
 
4
14
  # Перегрузка helper'ов Rails
5
15
  class RailsHelpersOverrideTest < Test::Unit::TestCase
16
+ TEST_DATE = Date.parse("1983-10-15") # coincidentially...
17
+ TEST_TIME = Time.local(1983, 10, 15, 12, 15) # also coincidentially...
18
+
6
19
  # Вспомогательный класс для тестирования перегруженного DateHelper
7
20
  class HelperStub
8
21
  # для тестирования to_datetime_select_tag
@@ -21,7 +34,6 @@ class RailsHelpersOverrideTest < Test::Unit::TestCase
21
34
  assert_equal "20 минут", @stub.distance_of_time_in_words(Time.now - 20.minutes, Time.now)
22
35
  end
23
36
 
24
- # TODO - TextMate это не хайлайтит, и это _крайне_ достает
25
37
  def test_select_month
26
38
  assert_match /июль/, @stub.select_month(TEST_DATE),
27
39
  "Месяц в выборе месяца должен быть указан в именительном падеже"
@@ -0,0 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'rdiscount'
3
+
4
+ # Интеграция с BlueCloth - Markdown
5
+ # Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
6
+ class RdiscountIntegrationTest < Test::Unit::TestCase
7
+ C = RuTils::Gilenson::RDiscountExtra
8
+
9
+ def test_integration_markdown
10
+
11
+ assert_equal "<p>И вот&#160;&#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
12
+ C.new('И вот "они пошли туда", и шли шли шли').to_html
13
+
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'redcloth'
3
+ raise LoadError, "need RedCloth 3.x" unless RedCloth::VERSION.to_s =~ /^3/
4
+
5
+ # Интеграция с RedCloth - Textile.
6
+ # Нужно иметь в виду что Textile осуществляет свою обработку типографики, которую мы подменяем!
7
+ class Redcloth3IntegrationTest < Test::Unit::TestCase
8
+ C = RuTils::Gilenson::RedClothExtra
9
+ def test_integration_with_redcloth_3
10
+
11
+ assert_equal "<p>И&#160;вот &#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
12
+ C.new('И вот "они пошли туда", и шли шли шли').to_html
13
+
14
+ assert_equal '<p><strong>strong text</strong> and <em>emphasized text</em></p>',
15
+ C.new("*strong text* and _emphasized text_").to_html,
16
+ "Spaces should be preserved"
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'redcloth'
3
+ raise LoadError, "need RedCloth 4.x" unless RedCloth::VERSION.to_s =~ /^4/
4
+
5
+ # Интеграция с RedCloth 4 - Textile.
6
+ class Redcloth4IntegrationTest < Test::Unit::TestCase
7
+ C = RuTils::Gilenson::RedClothExtra
8
+
9
+ def test_integration_with_redcloth_4
10
+
11
+ assert_equal "<p>И вот&#160;&#171;они пошли туда&#187;, и&#160;шли шли&#160;шли</p>",
12
+ C.new('И вот "они пошли туда", и шли шли шли').to_html
13
+
14
+ assert_equal '<p><strong>strong text</strong> and&#160;<em>emphasized text</em></p>',
15
+ C.new("*strong text* and _emphasized text_").to_html,
16
+ "Spaces should be preserved"
17
+
18
+ end
19
+ end
data/test/run_tests.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  Dir.entries(File.dirname(__FILE__)).each do | it|
2
- next unless it =~ /^t_/
3
- require File.dirname(__FILE__) + '/' + it.gsub(/\.rb$/, '')
2
+ next unless it =~ /^test_/
3
+ require File.dirname(__FILE__) + '/' + it
4
4
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  $KCODE = 'u'
2
3
  require 'test/unit'
3
4
  require File.dirname(__FILE__) + '/../lib/rutils'
@@ -116,7 +117,6 @@ class StrftimeTest < Test::Unit::TestCase
116
117
  RuTils::overrides = true
117
118
  sleep(rand(10)/200.0)
118
119
  assert_equal "11 декабря", Time.local(1985, "dec", 11).strftime("%d %B")
119
- RuTils::overrides = false
120
120
  end
121
121
  end
122
122
 
@@ -125,7 +125,6 @@ class StrftimeTest < Test::Unit::TestCase
125
125
  RuTils::overrides = false
126
126
  sleep(rand(10)/200.0)
127
127
  assert_equal "11 December", Time.local(1985, "dec", 11).strftime("%d %B")
128
- RuTils::overrides = true
129
128
  end
130
129
  end
131
130
 
@@ -1,3 +1,4 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  $KCODE = 'u'
2
3
  require 'test/unit'
3
4
  require File.dirname(__FILE__) + '/../lib/rutils'
@@ -63,10 +64,23 @@ class GilensonOwnTest < Test::Unit::TestCase
63
64
  assert_equal '&#34; &#38; &#39; &#62; &#60; &#160; &#167; &#169; &#171; &#174; &#176; &#177; &#183; &#187; &#8211; &#8212; &#8216; &#8217; &#8220; &#8221; &#8222; &#8226; &#8230; &#8482; &#8722;', '&quot; &amp; &apos; &gt; &lt; &nbsp; &sect; &copy; &laquo; &reg; &deg; &plusmn; &middot; &raquo; &ndash; &mdash; &lsquo; &rsquo; &ldquo; &rdquo; &bdquo; &bull; &hellip; &trade; &minus;'.gilensize
64
65
  end
65
66
 
66
- def test_ugly_entities_replace1 # not_correct_number
67
+ def test_non_displayable_entities_replace1 # not_correct_number
67
68
  assert_equal '&#8222; &#8230; &#39; &#8220; &#8221; &#8226; &#8211; &#8212; &#8482;', '&#132; &#133; &#146; &#147; &#148; &#149; &#150; &#151; &#153;'.gilensize
68
69
  end
70
+
71
+ def test_non_displayable_entities_replace2 # copy&paste
72
+ @gilenson.configure!(:copypaste => true)
73
+ assert_equal '&#171; &#160; &#187; &#167; &#169; &#174; &#176; &#177; &#182; &#183; &#8211; &#8212; &#8216; &#8217; &#8220; &#8221; &#8222; &#8226; &#8230; &#8470; &#8482; &#8722; &#8201; &#8243;', @gilenson.process('«   » § © ® ° ± ¶ · – — ‘ ’ “ ” „ • … № ™ −   ″')
74
+ end
75
+
76
+ def test_nbsp_removed_on_anchor_start
77
+ assert_equal 'abcd', @gilenson.process(' abcd')
78
+ end
69
79
 
80
+ def test_nbsp_removed_on_anchor_end
81
+ assert_equal 'abcd', @gilenson.process('abcd ')
82
+ end
83
+
70
84
  def test_specials
71
85
  assert_equal '&#169; 2002, &#169; 2003, &#169; 2004, &#169; 2005 &#8212; тоже без&#160;пробелов: &#169;2002, &#169;Кукуц. однако: варианты (а) и&#160;(с)', '(с) 2002, (С) 2003, (c) 2004, (C) 2005 -- тоже без пробелов: (с)2002, (c)Кукуц. однако: варианты (а) и (с)'.gilensize
72
86
  assert_equal '+5&#176;С, +7&#176;C, &#8211;5&#176;F', '+5^С, +17^C, -275^F'.gilensize
@@ -347,11 +361,6 @@ class GilensonConfigurationTest < Test::Unit::TestCase
347
361
  @gilenson.process('скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана')
348
362
  end
349
363
 
350
- def test_ugly_entities_replace2 # copy&paste
351
- @gilenson.configure!(:copypaste => true)
352
- assert_equal '&#160; &#171; &#187; &#167; &#169; &#174; &#176; &#177; &#182; &#183; &#8211; &#8212; &#8216; &#8217; &#8220; &#8221; &#8222; &#8226; &#8230; &#8470; &#8482; &#8722; &#8201; &#8243;', @gilenson.process('  « » § © ® ° ± ¶ · – — ‘ ’ “ ” „ • … № ™ −   ″')
353
- end
354
-
355
364
  def test_raise_on_unknown_setting
356
365
  assert_raise(RuTils::Gilenson::UnknownSetting) { @gilenson.configure!(:bararara => true) }
357
366
  end
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $KCODE = 'u'
3
+ require 'test/unit'
4
+
5
+ require File.dirname(__FILE__) + '/../lib/rutils'
6
+
7
+ # Load all the prereqs
8
+ integration_tests = ['rubygems', 'multi_rails_init'] + Dir.glob(File.dirname(__FILE__) + '/extras/integration_*.rb')
9
+
10
+ # Specifically for Ruby 1.9.1 (too early at this point)
11
+ if ENV['NO_RAILS'] || RUBY_VERSION =~ /^1\.9/
12
+ STDERR.puts "Skipping Rails tests - NO_RAILS set in ENV or running on Ruby 1.9+"
13
+ integration_tests.reject! {|t| t.include?("rails") }
14
+ end
15
+
16
+ integration_tests.each do | integration_test |
17
+ begin
18
+ require integration_test
19
+ rescue LoadError => e
20
+ STDERR.puts "Skipping integration test #{File.basename(integration_test)} - deps not met (#{e.message})"
21
+ end
22
+ end