cmess 0.1.1.283 → 0.1.2.288

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,5 +1,12 @@
1
1
  = Revision history for cmess
2
2
 
3
+ == 0.1.2 [2008-09-17]
4
+
5
+ * Some refactoring; started to make tools more usable as a library
6
+ * Make tools accept multiple files for input (via tempfile)
7
+ * Use ENV.user_encoding from ruby-nuggets
8
+ * Wrap command execution in a block catching any exceptions
9
+
3
10
  == 0.1.1 [2008-09-16]
4
11
 
5
12
  * Added bconv tool to convert between bibliographic encodings
data/README CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  == VERSION
4
4
 
5
- This documentation refers to cmess version 0.1.1
5
+ This documentation refers to cmess version 0.1.2
6
6
 
7
7
 
8
8
  == DESCRIPTION
data/Rakefile CHANGED
@@ -17,7 +17,7 @@ begin
17
17
  },
18
18
  :files => FileList['lib/**/*.rb', 'bin/*'].to_a,
19
19
  :extra_files => FileList['[A-Z]*', 'example/**/*', 'data/**/*'].to_a,
20
- :dependencies => %w[ruby-nuggets htmlentities]
20
+ :dependencies => [['ruby-nuggets', '>= 0.3.3'], 'htmlentities']
21
21
  }
22
22
  }}
23
23
  rescue LoadError
data/bin/bconv CHANGED
@@ -29,7 +29,6 @@
29
29
  ###############################################################################
30
30
  #++
31
31
 
32
- require 'yaml'
33
32
  require 'optparse'
34
33
 
35
34
  require 'rubygems'
@@ -49,11 +48,11 @@ options = {
49
48
  :output => STDOUT,
50
49
  :source_encoding => determine_system_encoding,
51
50
  :target_encoding => determine_system_encoding,
52
- :chartab_file => File.join(DATA_DIR, 'chartab.yaml')
51
+ :chartab_file => CMess::BConv::DEFAULT_CHARTAB_FILE
53
52
  }
54
53
 
55
54
  OptionParser.new(nil, 40) { |opts|
56
- opts.banner = "Usage: #{$0} [options] [FILE]"
55
+ opts.banner = "Usage: #{$0} [options] [FILE...]"
57
56
 
58
57
  opts.separator ''
59
58
  opts.separator 'Options:'
@@ -84,7 +83,7 @@ OptionParser.new(nil, 40) { |opts|
84
83
 
85
84
  opts.separator ''
86
85
 
87
- opts.on('-c', '--chartab PATH', "File containing character mappings [Default: #{options[:chartab_file]}]") { |c|
86
+ opts.on('-c', '--chartab YAML_FILE', "File containing character mappings, in YAML format.", "[Default: #{options[:chartab_file]}]") { |c|
88
87
  options[:chartab_file] = c
89
88
  }
90
89
 
@@ -109,28 +108,23 @@ OptionParser.new(nil, 40) { |opts|
109
108
  opts.separator "When FILE is -, either STDIN or STDOUT is used (as appropriate)."
110
109
  }.parse!
111
110
 
112
- abort "Chartab file not found: #{options[:chartab_file]}" \
113
- unless File.readable?(options[:chartab_file])
114
-
115
- chartab = YAML.load_file(options[:chartab_file])
111
+ cli do
112
+ if options[:list_encodings]
113
+ puts CMess::BConv.encodings(options[:chartab_file])
114
+ exit
115
+ end
116
116
 
117
- if options[:list_encodings]
118
- puts CMess::BConv.encodings(chartab)
119
- exit
120
- end
117
+ [:source_encoding, :target_encoding].each { |key|
118
+ options[key].call if options[key].respond_to?(:call)
119
+ }
121
120
 
122
- [:source_encoding, :target_encoding].each { |key|
123
- options[key].call if options[key].respond_to?(:call)
124
- }
121
+ trailing_args_as_input(options)
125
122
 
126
- if ARGV[0] && !options[:input_set]
127
- options[:input] = open_file_or_std(ARGV[0])
123
+ CMess::BConv.convert(
124
+ options[:input],
125
+ options[:output],
126
+ options[:source_encoding],
127
+ options[:target_encoding],
128
+ options[:chartab_file]
129
+ )
128
130
  end
129
-
130
- CMess::BConv.convert(
131
- options[:input],
132
- options[:output],
133
- options[:source_encoding],
134
- options[:target_encoding],
135
- chartab
136
- )
@@ -48,12 +48,12 @@ options = {
48
48
  :crop => nil,
49
49
  :source_encoding => nil,
50
50
  :target_encoding => determine_system_encoding,
51
- :csets => [File.join(DATA_DIR, 'csets')],
51
+ :csets => [CMess::Cinderella::DEFAULT_CSETS_DIR],
52
52
  :repair => false
53
53
  }
54
54
 
55
55
  OptionParser.new(nil, 40) { |opts|
56
- opts.banner = "Usage: #{$0} [options] [FILE]"
56
+ opts.banner = "Usage: #{$0} [options] [FILE...]"
57
57
 
58
58
  opts.separator ''
59
59
  opts.separator 'Options:'
@@ -161,29 +161,30 @@ OptionParser.new(nil, 40) { |opts|
161
161
  opts.separator "is ignored. When FILE is -, either STDIN or STDOUT is used (as appropriate)."
162
162
  }.parse!
163
163
 
164
- options[:target_encoding].call if options[:target_encoding].respond_to?(:call)
164
+ cli do
165
+ options[:target_encoding].call if options[:target_encoding].respond_to?(:call)
165
166
 
166
- abort "No source encoding given! (Use the '-e' switch to do so; see '--help' for more information)" \
167
- unless options[:source_encoding]
167
+ abort "No source encoding given! (Use the '-e' switch to do so; see '--help' for more information)" \
168
+ unless options[:source_encoding]
168
169
 
169
- yaml_file = "#{options[:target_encoding].downcase}.yaml"
170
- char_file = options[:csets].inject(nil) { |path, cset|
171
- path = File.join(cset, yaml_file)
172
- break path if File.readable?(path)
173
- }
174
- abort "Char file not found for target encoding: #{options[:target_encoding]}" \
175
- unless char_file
170
+ yaml_file = "#{options[:target_encoding].downcase}.yaml"
171
+ char_file = options[:csets].inject(nil) { |path, cset|
172
+ path = File.join(cset, yaml_file)
173
+ break path if File.readable?(path)
174
+ }
176
175
 
177
- if ARGV[0] && !options[:input_set]
178
- options[:input] = open_file_or_std(ARGV[0])
179
- end
176
+ abort "Char file not found for target encoding: #{options[:target_encoding]}" \
177
+ unless char_file
180
178
 
181
- CMess::Cinderella.pick(
182
- options[:input],
183
- options[:pot],
184
- options[:crop],
185
- options[:source_encoding],
186
- options[:target_encoding],
187
- YAML.load_file(char_file),
188
- options[:repair]
189
- )
179
+ trailing_args_as_input(options)
180
+
181
+ CMess::Cinderella.pick(
182
+ options[:input],
183
+ options[:pot],
184
+ options[:crop],
185
+ options[:source_encoding],
186
+ options[:target_encoding],
187
+ YAML.load_file(char_file),
188
+ options[:repair]
189
+ )
190
+ end
@@ -48,7 +48,7 @@ options = {
48
48
  }
49
49
 
50
50
  OptionParser.new { |opts|
51
- opts.banner = "Usage: #{$0} [options] [FILE]"
51
+ opts.banner = "Usage: #{$0} [options] [FILE...]"
52
52
 
53
53
  opts.separator ''
54
54
  opts.separator 'Options:'
@@ -94,13 +94,13 @@ OptionParser.new { |opts|
94
94
  opts.separator "When FILE is -, either STDIN or STDOUT is used (as appropriate)."
95
95
  }.parse!
96
96
 
97
- if ARGV[0] && !options[:input_set]
98
- options[:input] = open_file_or_std(ARGV[0])
99
- end
97
+ cli do
98
+ trailing_args_as_input(options)
100
99
 
101
- CMess::DecodeEntities.decode(
102
- options[:input],
103
- options[:output],
104
- options[:source_encoding],
105
- options[:target_encoding]
106
- )
100
+ CMess::DecodeEntities.decode(
101
+ options[:input],
102
+ options[:output],
103
+ options[:source_encoding],
104
+ options[:target_encoding]
105
+ )
106
+ end
@@ -46,9 +46,6 @@ PROGNAME = File.basename($0)
46
46
  # short-cut
47
47
  CGE = CMess::GuessEncoding
48
48
 
49
- # how to split list of arguments
50
- SPLIT_ARG_LIST_RE = /\s*[,\s]\s*/o
51
-
52
49
  options = {
53
50
  :input => STDIN,
54
51
  :line => 1,
@@ -64,7 +61,7 @@ options = {
64
61
  }
65
62
 
66
63
  OptionParser.new(nil, 40) { |opts|
67
- opts.banner = "Usage: #{$0} [options] [FILE]"
64
+ opts.banner = "Usage: #{$0} [options] [FILE...]"
68
65
 
69
66
  opts.separator ''
70
67
  opts.separator 'Options:'
@@ -193,39 +190,34 @@ OptionParser.new(nil, 40) { |opts|
193
190
  opts.separator "When FILE is -, STDIN is used."
194
191
  }.parse!
195
192
 
196
- if ARGV[0] && !options[:input_set]
197
- options[:input] = open_file_or_std(ARGV[0])
198
- end
193
+ cli do
194
+ trailing_args_as_input(options)
195
+
196
+ if options[:manual] || options[:charcodes]
197
+ options[:target_encoding].call if options[:target_encoding].respond_to?(:call)
198
+
199
+ if charcodes = options[:charcodes]
200
+ base = options[:octal] ? 8 : options[:decimal] ? 10 : 16
201
+ input = charcodes.map { |c| c.to_i(base).chr }.join
202
+ else
203
+ # reset line counter
204
+ $. = 0
205
+
206
+ input = options[:input].each { |line|
207
+ break line if $. == options[:line]
208
+ }
209
+
210
+ abort "Input was empty!" if $..zero?
211
+ abort "Line not found -- input has only #{$.} line#{'s' if $. != 1}" unless input.is_a?(String)
212
+ end
199
213
 
200
- if options[:manual]
201
- options[:target_encoding].call if options[:target_encoding].respond_to?(:call)
202
-
203
- # reset line counter
204
- $. = 0
205
-
206
- input = options[:input].each { |line|
207
- break line if $. == options[:line]
208
- }
209
- abort "Input was empty!" if $..zero?
210
- abort "Line not found -- input has only #{$.} line#{'s' if $. != 1}" unless input.is_a?(String)
211
-
212
- CGE::Manual.display(
213
- input,
214
- options[:target_encoding],
215
- options[:encodings],
216
- options[:additional_encodings]
217
- )
218
- elsif charcodes = options[:charcodes]
219
- options[:target_encoding].call if options[:target_encoding].respond_to?(:call)
220
-
221
- base = options[:octal] ? 8 : options[:decimal] ? 10 : 16
222
-
223
- CGE::Manual.display(
224
- charcodes.map { |c| c.to_i(base).chr }.join,
225
- options[:target_encoding],
226
- options[:encodings],
227
- options[:additional_encodings]
228
- )
229
- else # automatic
230
- puts CGE::Automatic.guess(options[:input], options[:chunk_size], options[:ignore_bom])
214
+ CGE::Manual.display(
215
+ input,
216
+ options[:target_encoding],
217
+ options[:encodings],
218
+ options[:additional_encodings]
219
+ )
220
+ else # automatic
221
+ puts CGE::Automatic.guess(options[:input], options[:chunk_size], options[:ignore_bom])
222
+ end
231
223
  end
@@ -41,6 +41,9 @@
41
41
  # decode_entities:: Decode HTML entities in a string. (see DecodeEntities)
42
42
 
43
43
  module CMess
44
+
45
+ DATA_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data'))
46
+
44
47
  end
45
48
 
46
49
  require 'cmess/version'
@@ -26,67 +26,101 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
+ require 'yaml'
29
30
  require 'iconv'
30
31
  require 'cmess'
31
32
 
32
33
  # Convert between bibliographic (and other) encodings.
33
34
 
34
- module CMess::BConv
35
-
36
- extend self
35
+ class CMess::BConv
37
36
 
38
37
  # our version ;-)
39
- VERSION = '0.0.1'
38
+ VERSION = '0.0.2'
40
39
 
41
40
  INTERMEDIATE_ENCODING = 'utf-8'
42
41
 
43
- def encodings(chartab)
44
- chartab[chartab.keys.first].keys.map { |encoding|
45
- encoding.upcase unless encoding =~ /\A__/
46
- }.compact.sort
42
+ DEFAULT_CHARTAB_FILE = File.join(CMess::DATA_DIR, 'chartab.yaml')
43
+
44
+ class << self
45
+
46
+ def encodings(chartab = DEFAULT_CHARTAB_FILE)
47
+ chartab = load_chartab(chartab)
48
+
49
+ chartab[chartab.keys.first].keys.map { |encoding|
50
+ encoding.upcase unless encoding =~ /\A__/
51
+ }.compact.sort
52
+ end
53
+
54
+ def convert(*args)
55
+ new(*args).convert
56
+ end
57
+
58
+ def load_chartab(chartab)
59
+ case chartab
60
+ when Hash
61
+ chartab
62
+ when String
63
+ raise "chartab file not found: #{chartab}" unless File.readable?(chartab)
64
+ YAML.load_file(chartab)
65
+ else
66
+ raise ArgumentError, "invalid chartab of type #{chartab.class}"
67
+ end
68
+ end
69
+
47
70
  end
48
71
 
49
- def convert(input, output, source_encoding, target_encoding, chartab)
50
- source_encoding.upcase!
51
- target_encoding.upcase!
72
+ attr_reader :input, :output, :source_encoding, :target_encoding, :chartab, :encodings
52
73
 
53
- encodings = self.encodings(chartab)
74
+ def initialize(input, output, source_encoding, target_encoding, chartab = DEFAULT_CHARTAB_FILE)
75
+ @input, @output = input, output
54
76
 
55
- if encodings.include?(source_encoding)
56
- if encodings.include?(target_encoding)
57
- charmap = chartab.inject({}) { |hash, (code, map)|
77
+ @source_encoding = source_encoding.upcase
78
+ @target_encoding = target_encoding.upcase
79
+
80
+ @chartab = self.class.load_chartab(chartab)
81
+ @encodings = self.class.encodings(@chartab)
82
+ end
83
+
84
+ def encoding?(encoding)
85
+ encodings.include?(encoding)
86
+ end
87
+
88
+ def convert
89
+ if encoding?(source_encoding)
90
+ if encoding?(target_encoding)
91
+ @charmap = chartab.inject({}) { |hash, (code, map)|
58
92
  hash.update(map[source_encoding] => map[target_encoding].pack('U*'))
59
93
  }
60
94
 
61
- input.each_byte { |byte|
62
- output.print charmap[[byte]] || charmap[[byte, input.getc]]
95
+ input.each_byte { |char|
96
+ output.print map(char)
63
97
  }
64
98
  else
65
- iconv = Iconv.new(target_encoding, INTERMEDIATE_ENCODING)
99
+ iconv = iconv_to
66
100
 
67
- charmap = chartab.inject({}) { |hash, (code, map)|
101
+ @charmap = chartab.inject({}) { |hash, (code, map)|
68
102
  hash.update(map[source_encoding] => [code.to_i(16)].pack('U*'))
69
103
  }
70
104
 
71
- input.each_byte { |byte|
72
- output.print iconv.iconv(charmap[[byte]] || charmap[[byte, input.getc]])
105
+ input.each_byte { |char|
106
+ output.print iconv.iconv(map(char))
73
107
  }
74
108
  end
75
109
  else
76
- if encodings.include?(target_encoding)
77
- iconv = Iconv.new(INTERMEDIATE_ENCODING, source_encoding)
110
+ if encoding?(target_encoding)
111
+ iconv = iconv_from
78
112
 
79
113
  charmap = chartab.inject({}) { |hash, (code, map)|
80
114
  hash.update(code.to_i(16) => map[target_encoding].pack('U*'))
81
115
  }
82
116
 
83
117
  input.each { |line|
84
- iconv.iconv(line).unpack('U*').each { |byte|
85
- output.print charmap[byte]
118
+ iconv.iconv(line).unpack('U*').each { |char|
119
+ output.print charmap[char]
86
120
  }
87
121
  }
88
122
  else
89
- iconv = Iconv.new(target_encoding, source_encoding)
123
+ iconv = iconv_from_to
90
124
 
91
125
  input.each { |line|
92
126
  output.puts iconv.iconv(line)
@@ -95,4 +129,41 @@ module CMess::BConv
95
129
  end
96
130
  end
97
131
 
132
+ private
133
+
134
+ def iconv_from_to(from = source_encoding, to = target_encoding)
135
+ iconv = begin
136
+ Iconv.new(to, from)
137
+ rescue Iconv::InvalidEncoding
138
+ raise ArgumentError, "invalid encoding: source encoding = #{from}, target encoding = #{to}"
139
+ end
140
+
141
+ def iconv.iconv(*args)
142
+ super
143
+ rescue Iconv::IllegalSequence, Iconv::InvalidCharacter => err
144
+ warn "ILLEGAL INPUT SEQUENCE: #{err}"; ''
145
+ end
146
+
147
+ iconv
148
+ end
149
+
150
+ def iconv_from(from = source_encoding)
151
+ iconv_from_to(from, INTERMEDIATE_ENCODING)
152
+ end
153
+
154
+ def iconv_to(to = target_encoding)
155
+ iconv_from_to(INTERMEDIATE_ENCODING, to)
156
+ end
157
+
158
+ def map(char, charmap = @charmap)
159
+ unless map = charmap[[char]]
160
+ unless map = charmap[[char, c = input.getc]]
161
+ input.ungetc(c) if c
162
+ map = ''
163
+ end
164
+ end
165
+
166
+ map
167
+ end
168
+
98
169
  end
@@ -43,6 +43,8 @@ module CMess::Cinderella
43
43
  # our version ;-)
44
44
  VERSION = '0.0.3'
45
45
 
46
+ DEFAULT_CSETS_DIR = File.join(CMess::DATA_DIR, 'csets')
47
+
46
48
  def pick(input, pot, crop, source_encoding, target_encoding, chars, repair = false)
47
49
  iconv = Iconv.new(target_encoding, source_encoding)
48
50
 
@@ -26,9 +26,15 @@
26
26
  ###############################################################################
27
27
  #++
28
28
 
29
+ require 'tempfile'
30
+
31
+ require 'rubygems'
32
+ require 'nuggets/env/user_encoding'
33
+
29
34
  module CMess::CLI
30
35
 
31
- DATA_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data'))
36
+ # how to split list of arguments
37
+ SPLIT_ARG_LIST_RE = /\s*[,\s]\s*/o
32
38
 
33
39
  def ensure_readable(file)
34
40
  abort "Can't find input file: #{file}" unless File.readable?(file)
@@ -39,8 +45,7 @@ module CMess::CLI
39
45
  end
40
46
 
41
47
  def open_file_in_place(file)
42
- ensure_readable(file)
43
- [File.readlines(file), File.open(file, 'w')]
48
+ [open_temporary_input(file), File.open(file, 'w')]
44
49
  end
45
50
 
46
51
  def open_file_or_std(file, mode = 'r')
@@ -57,25 +62,59 @@ module CMess::CLI
57
62
  end
58
63
  end
59
64
 
60
- def determine_system_encoding
61
- ENV['SYSTEM_ENCODING'] ||
62
- ENV['LANG'][/\.(.*)/, 1] ||
63
- system_encoding_not_found
64
- end
65
+ def open_temporary_input(*files)
66
+ temp = Tempfile.new('cmess_cli')
65
67
 
66
- def system_encoding_not_found
67
- not_found = lambda {
68
- abort <<-EOT
69
- Your system's encoding couldn't be determined automatically -- please specify it
70
- explicitly via the SYSTEM_ENCODING environment variable or via the '-t' option.
71
- EOT
68
+ files.each { |file|
69
+ if file == '-'
70
+ STDIN.each { |line| temp << line }
71
+ else
72
+ ensure_readable(file)
73
+ File.open(file) { |f| f.each { |line| temp << line } }
74
+ end
72
75
  }
73
76
 
74
- def not_found.to_s
75
- 'NOT FOUND'
77
+ # return File, instead of Tempfile
78
+ temp.close
79
+ temp.open
80
+ end
81
+
82
+ def trailing_args_as_input(options)
83
+ unless ARGV.empty? || options[:input_set]
84
+ options[:input] = if ARGV.size == 1
85
+ open_file_or_std(ARGV.first)
86
+ else
87
+ open_temporary_input(*ARGV)
88
+ end
89
+ end
90
+ end
91
+
92
+ def determine_system_encoding
93
+ ENV.user_encoding || begin
94
+ dummy = lambda {
95
+ abort <<-EOT
96
+ Your system's encoding couldn't be determined automatically -- please specify
97
+ it explicitly via the ENCODING environment variable or via the '-t' option.
98
+ EOT
99
+ }
100
+
101
+ def dummy.to_s; 'NOT FOUND' end
102
+
103
+ dummy
76
104
  end
105
+ end
106
+
107
+ def cli
108
+ yield
109
+ rescue => err
110
+ if $VERBOSE
111
+ backtrace = err.backtrace
112
+ fromtrace = backtrace[1..-1].map { |i| "\n from #{i}" }
77
113
 
78
- not_found
114
+ abort "#{backtrace.first} #{err} (#{err.class})#{fromtrace}"
115
+ else
116
+ abort "#{err.to_s.capitalize} [#{err.backtrace.first}]"
117
+ end
79
118
  end
80
119
 
81
120
  end
@@ -273,11 +273,11 @@ class CMess::GuessEncoding::Automatic
273
273
  # UTF-8, if number of escape-bytes and following bytes
274
274
  # is matching (cf. http://en.wikipedia.org/wiki/UTF-8)
275
275
  encoding UTF_8 do
276
- esc_bytes = byte_count_sum(0xc0..0xdf) \
276
+ esc_bytes = byte_count_sum(0xc0..0xdf) +
277
277
  # => 110xxxxx 10xxxxxx
278
- + byte_count_sum(0xe0..0xef) * 2 \
278
+ byte_count_sum(0xe0..0xef) * 2 +
279
279
  # => 1110xxxx 10xxxxxx 10xxxxxx
280
- + byte_count_sum(0xf0..0xf7) * 3
280
+ byte_count_sum(0xf0..0xf7) * 3
281
281
  # => 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
282
282
  fol_bytes = byte_count_sum(0x80..0xbf)
283
283
  # => 10xxxxxx
@@ -287,7 +287,7 @@ class CMess::GuessEncoding::Automatic
287
287
 
288
288
  # Analyse statistical appearance of German umlauts and other accented
289
289
  # letters (see TEST_CHARS)
290
- encodings *TEST_ENCODINGS do
290
+ encodings(*TEST_ENCODINGS) do
291
291
  ratios = {}
292
292
 
293
293
  TEST_ENCODINGS.find(lambda {
@@ -95,7 +95,7 @@ module CMess::GuessEncoding::Manual
95
95
  "ILLEGAL INPUT SEQUENCE: #{err}"
96
96
  rescue Iconv::InvalidEncoding
97
97
  if encoding == target
98
- abort "Invalid encoding: #{encoding}"
98
+ raise ArgumentError, "invalid encoding: #{encoding}"
99
99
  else
100
100
  "INVALID ENCODING!"
101
101
  end
@@ -30,7 +30,7 @@ module CMess::Version
30
30
 
31
31
  MAJOR = 0
32
32
  MINOR = 1
33
- TINY = 1
33
+ TINY = 2
34
34
 
35
35
  class << self
36
36
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmess
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.283
4
+ version: 0.1.2.288
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Wille
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-09-16 00:00:00 +02:00
12
+ date: 2008-09-17 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: "0"
23
+ version: 0.3.3
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: htmlentities
@@ -102,6 +102,7 @@ has_rdoc: true
102
102
  homepage: http://prometheus.rubyforge.org/cmess
103
103
  post_install_message:
104
104
  rdoc_options:
105
+ - --line-numbers
105
106
  - --inline-source
106
107
  - --title
107
108
  - cmess Application documentation
@@ -110,7 +111,6 @@ rdoc_options:
110
111
  - --main
111
112
  - README
112
113
  - --all
113
- - --line-numbers
114
114
  require_paths:
115
115
  - lib
116
116
  required_ruby_version: !ruby/object:Gem::Requirement