rutils 0.1.0 → 0.1.1

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.
data/README CHANGED
@@ -1,20 +1,16 @@
1
1
  == Добро пожаловать в RuTils
2
2
 
3
- RuTils - простой обработчик русского текста, позволяющий использовать и обрабатывать
4
- русский текст несколькими несложными способами. Основная цель RuTils - сделать
3
+ RuTils - простой обработчик русского текста на Ruby. Основная цель RuTils - сделать
5
4
  разработку русскоязычных приложений на Ruby (и Rails) максимально простой и приятной (в идеале - столь же
6
5
  простой как и разработку оных на английском)
7
6
 
8
7
  Весь функционал RuTils поддерживает только UTF-8 (настройка $KCODE / KanjiCode 'u'). Стандартно работа RuTils проверяется
9
8
  как на стандартной версии Ruby, так и на парсере регулярных выражений Oniguruma (правда имейте в виду, что с ним
10
9
  Gilenson работает медленнее).
11
-
12
-
13
- Это версия RuTils
14
-
15
- $Revision: 1.7 $
16
10
 
17
- Пожалуйста упоминайте версию при сообщении ошибок.
11
+ Пожалуйста упоминайте версию при сообщении ошибок. Версию RUTILS всегда можно узнать в константе
12
+
13
+ RuTils::VERSION
18
14
 
19
15
  Удостоверьтесь, что ваш скрипт правильно обрабатывает Unicode - то есть:
20
16
 
@@ -79,7 +75,15 @@ Textile английские кавычки и типографские знак
79
75
 
80
76
  Перегрузку всех функций (RedCloth, BlueCloth и компоненты Rails) можно включать и отключать в любое время
81
77
  с помощью метода overrides= модуля RuTils. Когда перегрузка выключена, все сторонние библиотеки будут работать
82
- в стандартном режиме (например, RedCloth будет расставлять английские типографские кавычки).
78
+ в стандартном режиме (например, RedCloth будет расставлять английские типографские кавычки). Это нужно
79
+ когда вам нужно переключиться на английский (или любой другой язык) без перезапуска приложения.
80
+
81
+ Если вы хотите использовать rutils как дополенние к Rails в одном конкретном приложении, скопируйте
82
+ директорию rutils в папку vendor/plugins вашего приложения. Вы можете воспользоваться командой
83
+ rutilize чтобы сделать это автоматически. После этого вы сможете использовать RuTils без
84
+ необходимости установки gem'а.
85
+
86
+ $ rutilize /Sites/my_app
83
87
 
84
88
  == Требования
85
89
 
data/bin/gilensize CHANGED
@@ -2,6 +2,17 @@
2
2
  $KCODE = 'u'
3
3
  require File.dirname(__FILE__) + '/../lib/rutils'
4
4
 
5
+ # == Synopsis
6
+ #
7
+ # Processes text on standard input with Typografica
8
+ #
9
+ # == Usage
10
+ #
11
+ # cat myfile.txt | gilensize > output.txt
12
+ #
13
+ # == Author
14
+ # Julik <me@julik.nl>
15
+
5
16
  while st = gets do
6
17
  puts RuTils::Gilenson::Formatter.new(st).to_html
7
18
  end
data/bin/rutilize ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ # == Synopsis
3
+ #
4
+ # Copy RuTils to your Rails application, automatically making it speak Russian.
5
+ # The application will need to be restarted for changes to take effect.
6
+ # After that your app contains RuTils and is not dependent on RuTils gem
7
+ #
8
+ # == Usage
9
+ #
10
+ # rutilize /Sites/my_app /Sites/my_other_app
11
+ #
12
+ # == Author
13
+ # Julik <me@julik.nl>
14
+
15
+
16
+ $KCODE = 'u'
17
+ require File.dirname(__FILE__) + '/../lib/rutils'
18
+ require 'optparse'
19
+ require 'rdoc/usage'
20
+
21
+ opts = OptionParser.new
22
+ opts.on(" -h", "--help") { RDoc::usage }
23
+ opts.parse(ARGV) rescue RDoc::usage('usage')
24
+
25
+ if ARGV.empty?
26
+ RDoc::usage_no_exit('usage')
27
+ exit(-1)
28
+ end
29
+
30
+ for item in ARGV
31
+ puts "Teaching #{item} to speak Russian"
32
+ raise "The directory #{item} does not exist" unless File.exist?(item)
33
+ raise "#{item} - not a directory" unless File.directory?(item)
34
+ raise "This directory doesn't seem to be a Rails application" unless File.exist?(item + '/vendor')
35
+ Dir::mkdir(item+'/vendor/plugins') unless File.exist?(item + '/vendor/plugins')
36
+ `cp -r #{RuTils::INSTALLATION_DIRECTORY} #{item}/vendor/plugins`
37
+ end
@@ -31,7 +31,7 @@ module RuTils
31
31
  when 46..90 then 'около часа'
32
32
  # исключение, сдвигаем на один влево чтобы соответствовать падежу
33
33
  when 90..1440 then "около " + (distance_in_minutes.to_f / 60.0).round.to_s +
34
- " " + (distance_in_minutes.to_f / 60.0).round.items("часа", "часов", nil)
34
+ " " + (distance_in_minutes.to_f / 60.0).round.items("часа", "часов", '')
35
35
  when 1441..2880 then '1 день'
36
36
  else (distance_in_minutes / 1440).round.to_s +
37
37
  " " + (distance_in_minutes / 1440).round.items("день", "дня", "дней")
@@ -330,11 +330,12 @@ module RuTils
330
330
 
331
331
  end #end RuTils
332
332
 
333
+ # Вгружаем этот форматтер если уже не загружен наш новый
333
334
  unless defined?(RuTils::Gilenson::Formatter)
334
335
  class RuTils::Gilenson::Formatter < RuTils::Gilenson::Typografica
335
336
  end
336
337
  end
337
338
 
338
- class String
339
+ class Object::String
339
340
  include RuTils::Gilenson::StringFormatting
340
341
  end
@@ -1,5 +1,5 @@
1
1
  if defined?(BlueCloth)
2
- class BlueCloth < String #:nodoc:
2
+ class Object::BlueCloth < String #:nodoc:
3
3
  alias_method :old_to_html, :to_html
4
4
  def to_html(*opts)
5
5
  RuTils::overrides_enabled? ? RuTils::Gilenson::Formatter.new(old_to_html(*opts)).to_html : old_to_html(*opts)
@@ -4,7 +4,7 @@ module RuTils
4
4
  # Метод позволяет проверить, включена ли перегрузка функций других модулей.
5
5
  # Попутно он спрашивает модуль Locale (если таковой имеется) является ли русский
6
6
  # текущим языком, и если является, включает перегрузку функций имплицитно.
7
- # Модуль Locale можно скачать и скомпилировать а можно получить как часть Multilingual Rails.
7
+ # Модуль Locale можно получить как часть Multilingual Rails.
8
8
  def self.overrides_enabled?
9
9
  if defined?(Locale) and Locale.respond_to?(:current)
10
10
  return true if Locale.current.split('_').first == 'ru'
@@ -17,8 +17,14 @@ module RuTils
17
17
  def self.overrides= (new_override_flag)
18
18
  @@overrides = (new_override_flag ? true : false)
19
19
  end
20
+
21
+ # Вновь выполняет перегрузку. Делать это надо после того, как в программу импортированы
22
+ # другие модули.
23
+ def self.reload_integrations!
24
+ load File.dirname(__FILE__) + '/blue_cloth_override.rb'
25
+ load File.dirname(__FILE__) + '/red_cloth_override.rb'
26
+ load File.dirname(__FILE__) + '/rails_date_helper_override.rb'
27
+ end
20
28
  end
21
29
 
22
- load File.dirname(__FILE__) + '/blue_cloth_override.rb'
23
- load File.dirname(__FILE__) + '/red_cloth_override.rb'
24
- load File.dirname(__FILE__) + '/rails_date_helper_override.rb'
30
+ RuTils::reload_integrations!
@@ -1,5 +1,5 @@
1
- if defined?(ActionView)
2
- module ActionView #:nodoc:
1
+ if defined?(Object::ActionView)
2
+ module Object::ActionView #:nodoc:
3
3
  module Helpers
4
4
  module DateHelper
5
5
 
@@ -1,6 +1,6 @@
1
- if defined?(RedCloth)
1
+ if defined?(Object::RedCloth)
2
2
  # RuTils выполняет перегрузку Textile Glyphs в RedCloth, перенося форматирование спецсимволов на Gilenson.
3
- class RedCloth < String #:nodoc:
3
+ class Object::RedCloth < String #:nodoc:
4
4
  # Этот метод в RedCloth эскейпит слишком много HTML, нам ничего не оставляет :-)
5
5
  alias_method :stock_htmlesc, :htmlesc
6
6
  def htmlesc(text, mode=0) #:nodoc:
@@ -55,17 +55,17 @@ module RuTils
55
55
  # начинаем подсчет с Rest
56
56
  end_word = five_items
57
57
  # сотни
58
- case rest / 100
59
- when 0 then hundreds = ""
60
- when 1 then hundreds = "сто "
61
- when 2 then hundreds = "двести "
62
- when 3 then hundreds = "триста "
63
- when 4 then hundreds = "четыреста "
64
- when 5 then hundreds = "пятьсот "
65
- when 6 then hundreds = "шестьсот "
66
- when 7 then hundreds = "семьсот "
67
- when 8 then hundreds = "восемьсот "
68
- when 9 then hundreds = "девятьсот "
58
+ hundreds = case rest / 100
59
+ when 0 then ""
60
+ when 1 then "сто "
61
+ when 2 then "двести "
62
+ when 3 then "триста "
63
+ when 4 then "четыреста "
64
+ when 5 then "пятьсот "
65
+ when 6 then "шестьсот "
66
+ when 7 then "семьсот "
67
+ when 8 then "восемьсот "
68
+ when 9 then "девятьсот "
69
69
  end
70
70
 
71
71
  # десятки
@@ -75,17 +75,17 @@ module RuTils
75
75
  case rest1
76
76
  when 0 then tens = ""
77
77
  when 1 # особый случай
78
- case rest
79
- when 10 then tens = "десять "
80
- when 11 then tens = "одиннадцать "
81
- when 12 then tens = "двенадцать "
82
- when 13 then tens = "тринадцать "
83
- when 14 then tens = "четырнадцать "
84
- when 15 then tens = "пятнадцать "
85
- when 16 then tens = "шестнадцать "
86
- when 17 then tens = "семнадцать "
87
- when 18 then tens = "восемнадцать "
88
- when 19 then tens = "девятнадцать "
78
+ tens = case rest
79
+ when 10 then "десять "
80
+ when 11 then "одиннадцать "
81
+ when 12 then "двенадцать "
82
+ when 13 then "тринадцать "
83
+ when 14 then "четырнадцать "
84
+ when 15 then "пятнадцать "
85
+ when 16 then "шестнадцать "
86
+ when 17 then "семнадцать "
87
+ when 18 then "восемнадцать "
88
+ when 19 then "девятнадцать "
89
89
  end
90
90
  when 2: tens = "двадцать "
91
91
  when 3: tens = "тридцать "
@@ -100,13 +100,10 @@ module RuTils
100
100
  if rest1 < 1 or rest1 > 1 # единицы
101
101
  case rest % 10
102
102
  when 1
103
- case gender
104
- when 1
105
- ones = "один "
106
- when 2
107
- ones = "одна "
108
- when 3
109
- ones = "одно "
103
+ ones = case gender
104
+ when 1 then "один "
105
+ when 2 then "одна "
106
+ when 3 then "одно "
110
107
  end
111
108
  end_word = one_item
112
109
  when 2
@@ -134,7 +131,8 @@ module RuTils
134
131
  end
135
132
 
136
133
  # сборка строки
137
- return [(hundreds.to_s + tens.to_s + ones.to_s + end_word.to_s + " " + into.to_s).strip, tmp_val]
134
+ st = ''
135
+ return [(st << hundreds.to_s << tens.to_s << ones.to_s << end_word.to_s << " " << into.to_s).strip, tmp_val]
138
136
  end
139
137
 
140
138
  # Реализует вывод прописью любого объекта, реализующего Float
@@ -144,14 +142,14 @@ module RuTils
144
142
  # дробная доля оканчивается на нули) до ближайшей доли ( 500 тысячных округляется до 5 десятых).
145
143
  # Дополнительный аргумент - род существительного (1 - мужской, 2- женский, 3-средний)
146
144
  def propisju(gender = 2)
147
- raise "NaN propisju eto ne propis!" if self.nan?
145
+ raise "Это не число!" if self.nan?
148
146
 
149
147
  st = RuTils::Pluralization::sum_string(self.to_i, gender, "целая", "целых", "целых")
150
148
  it = []
151
149
 
152
- rmdr = self.to_s.match(/\.(\d+)/)[1]
150
+ remainder = self.to_s.match(/\.(\d+)/)[1]
153
151
 
154
- signs = rmdr.to_s.size- 1
152
+ signs = remainder.to_s.size- 1
155
153
 
156
154
  it << ["десятая", "десятых"]
157
155
  it << ["сотая", "сотых"]
@@ -167,12 +165,12 @@ module RuTils
167
165
  # it << ["триллионная", "триллионных", "триллионных"]
168
166
 
169
167
  while it[signs].nil?
170
- rmdr = (rmdr/10).round
171
- signs = rmdr.to_s.size- 1
168
+ remainder = (remainder/10).round
169
+ signs = remainder.to_s.size- 1
172
170
  end
173
-
171
+
174
172
  suf1, suf2, suf3 = it[signs][0], it[signs][1], it[signs][2]
175
- st + " " + RuTils::Pluralization::sum_string(rmdr.to_i, 2, suf1, suf2, suf2)
173
+ st + " " + RuTils::Pluralization::sum_string(remainder.to_i, 2, suf1, suf2, suf2)
176
174
  end
177
175
 
178
176
  def propisju_items(gender=1, *forms)
@@ -207,11 +205,11 @@ module RuTils
207
205
  end
208
206
  end
209
207
 
210
- class Numeric
208
+ class Object::Numeric
211
209
  include RuTils::Pluralization::NumericFormatting
212
210
  end
213
211
 
214
212
 
215
- class Float
213
+ class Object::Float
216
214
  include RuTils::Pluralization::FloatFormatting
217
215
  end
data/lib/rutils.rb CHANGED
@@ -1,11 +1,13 @@
1
1
  $KCODE = 'u'
2
- require 'jcode'
2
+ require 'jcode' # вот от этого надо бы избавиться - скопировать jsize из jcode и поместить его в свой namespace
3
+
3
4
 
4
5
  # Главный контейнер модуля
5
6
  module RuTils
7
+ INSTALLATION_DIRECTORY = File.expand_path(File.dirname(__FILE__) + '/../')
6
8
  MAJOR = 0
7
9
  MINOR = 1
8
- TINY = 0
10
+ TINY = 1
9
11
  VERSION = "#{MAJOR}.#{MINOR}.#{TINY}"
10
12
  end
11
13
 
@@ -3,7 +3,7 @@ module RuTils
3
3
  end
4
4
  end
5
5
 
6
- # Реулизует простейшую транслитерацию
6
+ # Реализует простейшую транслитерацию
7
7
  # "вот мы и здесь".translify => "vot my i zdes"
8
8
  # "vot my i zdes".detranslify => "вот мы и здесь"
9
9
  module RuTils::Transliteration::Simple
@@ -56,8 +56,8 @@ module RuTils::Transliteration::Simple
56
56
  end
57
57
  end
58
58
 
59
- # Реулизует транслитерацию "в обе стороны", дающую возможность автоматически использовать URL как ключ записи
60
- module RuTils::Transliteration::BiDi
59
+ # Реализует транслитерацию "в обе стороны", дающую возможность автоматически использовать URL как ключ записи
60
+ module RuTils::Transliteration::BiDi #:nodoc:
61
61
  TABLE_TO = {
62
62
  "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
63
63
  "Е"=>"E","Ё"=>"JO","Ж"=>"ZH","З"=>"Z","И"=>"I",
@@ -148,26 +148,26 @@ module RuTils::Transliteration::StringFormatting
148
148
  end
149
149
 
150
150
  # Транслитерирует строку (взаимно-однозначный транслит), и возвращает измененную строку
151
- def bidi_translify(allow_slashes = true)
151
+ def bidi_translify(allow_slashes = true) #:nodoc:
152
152
  RuTils::Transliteration::BiDi::translify(self.to_s, allow_slashes)
153
153
  end
154
154
 
155
155
  # Транслитерирует строку (взаимно-однозначный транслит), меняя объект
156
- def bidi_translify!(allow_slashes = true)
156
+ def bidi_translify!(allow_slashes = true) #:nodoc:
157
157
  self.replace(RuTils::Transliteration::BiDi::translify(self.to_s, allow_slashes))
158
158
  end
159
159
 
160
160
  # Заменяет латиницу на кириллицу (взаимно-однозначный транслит), меняя объект
161
- def bidi_detranslify!(allow_slashes = true)
161
+ def bidi_detranslify!(allow_slashes = true) #:nodoc:
162
162
  self.replace(RuTils::Transliteration::BiDi::detranslify(self.to_s, allow_slashes))
163
163
  end
164
164
 
165
165
  # Заменяет латиницу на кириллицу (взаимно-однозначный транслит), и возвращает измененную строку
166
- def bidi_detranslify(allow_slashes = true)
166
+ def bidi_detranslify(allow_slashes = true) #:nodoc:
167
167
  RuTils::Transliteration::BiDi::detranslify(self.to_s, allow_slashes = true)
168
168
  end
169
169
  end
170
170
 
171
- class String
171
+ class Object::String
172
172
  include RuTils::Transliteration::StringFormatting
173
173
  end
@@ -0,0 +1,26 @@
1
+ $KCODE = 'u'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/rutils'
4
+
5
+
6
+ class RutilizeTest < Test::Unit::TestCase
7
+ def setup
8
+ @dirs = [
9
+ '/tmp/app',
10
+ '/tmp/notapp',
11
+ '/tmp/app/vendor',
12
+ ]
13
+ @dirs.each{|dir| Dir::mkdir(dir) }
14
+ @rutilize = File.dirname(__FILE__) + '/../bin/rutilize'
15
+ end
16
+
17
+ def test_rutilize_app
18
+ `#{@rutilize} #{@dirs[0]}`
19
+ assert File.exist?(@dirs[0] + '/vendor/plugins/rutils')
20
+ assert File.exist?(@dirs[0] + '/vendor/plugins/rutils/lib/rutils.rb')
21
+ end
22
+
23
+ def teardown
24
+ @dirs.each {|dir| `rm -rf #{dir}` }
25
+ end
26
+ end
data/test/t_datetime.rb CHANGED
@@ -7,5 +7,6 @@ class DistanceOfTimeTest < Test::Unit::TestCase
7
7
  assert_equal "меньше минуты", RuTils::DateTime::distance_of_time_in_words(0, 50)
8
8
  assert_equal "2 минуты", RuTils::DateTime::distance_of_time_in_words(0, 140)
9
9
  assert_equal "около 2 часов", RuTils::DateTime::distance_of_time_in_words(0, 60*114)
10
+ assert_equal "около 3 часов", RuTils::DateTime::distance_of_time_in_words(0, 60*120+60*60)
10
11
  end
11
12
  end
@@ -2,16 +2,14 @@ $KCODE = 'u'
2
2
  require 'test/unit'
3
3
  require 'rubygems'
4
4
 
5
+ require 'action_view'
5
6
  require_gem 'RedCloth'
6
7
  require_gem 'BlueCloth'
7
8
 
8
-
9
9
  require File.dirname(__FILE__) + '/../lib/rutils'
10
+ load File.dirname(__FILE__) + '/../lib/integration/integration.rb'
10
11
 
11
- # Весь integration надо грузить после патчимых пакетов
12
- load File.dirname(__FILE__) + '/../lib/integration/integration.rb'
13
-
14
- class IntegrationTest < Test::Unit::TestCase
12
+ class IntegrationFlagTest < Test::Unit::TestCase
15
13
  def setup
16
14
  RuTils::overrides = true
17
15
  end
@@ -21,23 +19,54 @@ class IntegrationTest < Test::Unit::TestCase
21
19
  assert !RuTils::overrides_enabled?
22
20
  RuTils::overrides = true
23
21
  assert RuTils::overrides_enabled?
24
- end
22
+ end
25
23
  end
26
24
 
27
25
  # Интеграция с RedCloth - Textile.
28
26
  # Нужно иметь в виду что Textile осуществляет свою обработку типографики, которую мы подменяем!
29
- class TextileIntegrationTest < IntegrationTest
30
- def test_integration_textile
27
+ class TextileIntegrationTest < Test::Unit::TestCase
28
+ def test_integration_textile
29
+ RuTils::overrides = true
30
+ assert RuTils.overrides_enabled?
31
31
  assert_equal "<p>И&nbsp;вот &laquo;они пошли туда&raquo;, и&nbsp;шли шли&nbsp;шли</p>",
32
32
  RedCloth.new('И вот "они пошли туда", и шли шли шли').to_html
33
+
34
+ RuTils::overrides = false
35
+ assert !RuTils.overrides_enabled?
36
+ assert_equal "<p>И вот &#8220;они пошли туда&#8221;, и шли шли шли</p>",
37
+ RedCloth.new('И вот "они пошли туда", и шли шли шли').to_html
33
38
  end
34
39
  end
35
40
 
36
41
  # Интеграция с BlueCloth - Markdown
37
42
  # Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
38
- class MarkdownIntegrationTest < IntegrationTest
43
+ class MarkdownIntegrationTest < Test::Unit::TestCase
39
44
  def test_integration_markdown
45
+ RuTils::overrides = true
46
+ assert RuTils.overrides_enabled?
40
47
  assert_equal "<p>И вот&nbsp;&laquo;они пошли туда&raquo;, и&nbsp;шли шли&nbsp;шли</p>",
41
48
  BlueCloth.new('И вот "они пошли туда", и шли шли шли').to_html
49
+
50
+ RuTils::overrides = false
51
+ assert !RuTils.overrides_enabled?
52
+ assert_equal "<p>И вот \"они пошли туда\", и шли шли шли</p>",
53
+ BlueCloth.new('И вот "они пошли туда", и шли шли шли').to_html
42
54
  end
43
- end
55
+ end
56
+
57
+ # Перегрузка helper'ов Rails
58
+ class RailsHelpersOverrideTest < Test::Unit::TestCase
59
+ def test_distance_of_time_in_words
60
+ eval 'class Foo
61
+ include ActionView::Helpers::DateHelper
62
+ def get_dst
63
+ distance_of_time_in_words(Time.now - 20.minutes, Time.now)
64
+ end
65
+ end'
66
+
67
+ RuTils::overrides = true
68
+ foo = Foo.new
69
+ assert_equal "20 минут", foo.get_dst
70
+ end
71
+ end
72
+
@@ -0,0 +1,10 @@
1
+ $KCODE = 'u'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/rutils'
4
+
5
+ class RutilsBaseTest < Test::Unit::TestCase
6
+ def test_rutils_location
7
+ libdir = File.expand_path(File.dirname(__FILE__) + '/../')
8
+ assert_equal libdir, RuTils::INSTALLATION_DIRECTORY
9
+ end
10
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: rutils
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.0
7
- date: 2005-10-23 00:00:00 +02:00
6
+ version: 0.1.1
7
+ date: 2005-10-29 00:00:00 +02:00
8
8
  summary: Simple processing of russian strings
9
9
  require_paths:
10
10
  - lib
@@ -31,11 +31,14 @@ authors:
31
31
  - Julian "Julik" Tarkhanov
32
32
  files:
33
33
  - bin/gilensize
34
+ - bin/rutilize
34
35
  - test/run_tests.rb
36
+ - test/t_binaries.rb
35
37
  - test/t_datetime.rb
36
38
  - test/t_gilenson.rb
37
39
  - test/t_integration.rb
38
40
  - test/t_pluralize.rb
41
+ - test/t_rutils_base.rb
39
42
  - test/t_transliteration.rb
40
43
  - test/t_typografica.rb
41
44
  - lib/datetime
@@ -61,6 +64,7 @@ test_files:
61
64
  rdoc_options:
62
65
  - "--main=README"
63
66
  - "--line-numbers"
67
+ - "--webcvs http://rubyforge.org/cgi-bin/viewcvs.cgi/rutils/%s?cvsroot=rutils"
64
68
  - "--charset=utf-8"
65
69
  - "--promiscuous"
66
70
  extra_rdoc_files:
@@ -69,6 +73,7 @@ extra_rdoc_files:
69
73
  - CHANGELOG
70
74
  executables:
71
75
  - gilensize
76
+ - rutilize
72
77
  extensions: []
73
78
  requirements: []
74
79
  dependencies: []