rutils 0.2.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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