textutils 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -32,9 +32,10 @@ lib/textutils/reader/values_reader.rb
32
32
  lib/textutils/reader/values_reader_v2.rb
33
33
  lib/textutils/sanitizier.rb
34
34
  lib/textutils/title.rb
35
+ lib/textutils/title_mapper.rb
35
36
  lib/textutils/utils.rb
36
37
  lib/textutils/version.rb
37
- test/cl_all.txt
38
+ test/data/cl_all.txt
38
39
  test/helper.rb
39
40
  test/test_address_helper.rb
40
41
  test/test_asciify.rb
data/lib/textutils.rb CHANGED
@@ -63,6 +63,7 @@ require 'textutils/reader/fixture_reader'
63
63
 
64
64
  require 'textutils/classifier'
65
65
  require 'textutils/title' # title table/mapper/finder utils
66
+ require 'textutils/title_mapper'
66
67
 
67
68
  require 'textutils/page' # for book pages and page templates
68
69
 
@@ -6,15 +6,30 @@ class CodeReader
6
6
 
7
7
  include LogUtils::Logging
8
8
 
9
- def initialize( path )
10
- @path = path
11
-
9
+ def self.from_file( path )
12
10
  ## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
13
11
  ## - see textutils/utils.rb
14
-
15
- @code = File.read_utf8( @path )
12
+ code = File.read_utf8( path )
13
+ self.from_string( code )
14
+ end
15
+
16
+ def self.from_string( code )
17
+ CodeReader.new( code: code )
16
18
  end
17
19
 
20
+
21
+ def initialize( arg )
22
+ if arg.is_a?( String ) ## old style (deprecated) - pass in filepath as string
23
+ path = arg
24
+ logger.info "CodeReader.new - deprecated API - use CodeReader.from_file() instead"
25
+ @code = File.read_utf8( path )
26
+ else ## assume it's a hash
27
+ opts = arg
28
+ @code = opts[:code]
29
+ end
30
+ end
31
+
32
+
18
33
  def eval( klass )
19
34
  klass.class_eval( @code )
20
35
 
@@ -26,4 +41,4 @@ class CodeReader
26
41
  # end
27
42
  end
28
43
 
29
- end # class CodeReader
44
+ end # class CodeReader
@@ -7,14 +7,28 @@ class HashReader
7
7
 
8
8
  include LogUtils::Logging
9
9
 
10
- def initialize( path )
11
- @path = path
12
-
10
+ def self.from_file( path )
13
11
  ## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
14
12
  ## - see textutils/utils.rb
15
-
16
- text = File.read_utf8( @path )
17
-
13
+ text = File.read_utf8( path )
14
+ self.from_string( text )
15
+ end
16
+
17
+ def self.from_string( text )
18
+ HashReader.new( text: text )
19
+ end
20
+
21
+ def initialize( arg )
22
+
23
+ if arg.is_a?( String ) ## old style (deprecated) - pass in filepath as string
24
+ path = arg
25
+ logger.info "HashReader.new - deprecated API - use HashReader.from_file() instead"
26
+ text = File.read_utf8( path )
27
+ else ## assume it's a hash
28
+ opts = arg
29
+ text = opts[:text]
30
+ end
31
+
18
32
  ### hack for syck yaml parser (e.g.ruby 1.9.2) (cannot handle !!null)
19
33
  ## change it to !null to get plain nil
20
34
  ## w/ both syck and psych/libyml
@@ -32,7 +32,7 @@ class HashReaderV2
32
32
 
33
33
  def each
34
34
  path = "#{include_path}/#{name_real_path}.yml"
35
- reader = HashReader.new( path )
35
+ reader = HashReader.from_file( path )
36
36
 
37
37
  logger.info "parsing data '#{name}' (#{path})..."
38
38
 
@@ -46,7 +46,7 @@ class HashReaderV2
46
46
 
47
47
  def each_typed
48
48
  path = "#{include_path}/#{name_real_path}.yml"
49
- reader = HashReader.new( path )
49
+ reader = HashReader.from_file( path )
50
50
 
51
51
  logger.info "parsing data '#{name}' (#{path})..."
52
52
 
@@ -1,60 +1,58 @@
1
1
  # encoding: utf-8
2
2
 
3
- ##
4
- ## fix/todo: move to/merge into LineReader itself
5
- # e.g. use fromString c'tor ??? or similar??
6
-
7
3
  # fix: move into TextUtils namespace/module!!
8
4
 
9
5
 
10
6
  class StringLineReader
7
+ ## fix/todo:
8
+ ## remove - deprecated/obsolete - do NOT use
9
+ ## use LineReader.from_string
11
10
 
12
11
  include LogUtils::Logging
13
12
 
14
- def initialize( data )
15
- @data = data
13
+ def initialize( text )
14
+ logger.info "StringLineReader.new - deprecated API - use LineReader.from_string() instead"
15
+ @reader = LineReader.from_string( text )
16
16
  end
17
17
 
18
-
19
18
  def each_line
20
- @data.each_line do |line|
21
-
22
- if line =~ /^\s*#/
23
- # skip komments and do NOT copy to result (keep comments secret!)
24
- logger.debug 'skipping comment line'
25
- next
26
- end
27
-
28
- if line =~ /^\s*$/
29
- # kommentar oder leerzeile überspringen
30
- logger.debug 'skipping blank line'
31
- next
32
- end
33
-
34
- # remove leading and trailing whitespace
35
- line = line.strip
36
-
19
+ @reader.each_line do |line|
37
20
  yield( line )
38
21
  end # each lines
39
22
  end # method each_line
40
-
41
23
  end
42
24
 
43
25
 
26
+
44
27
  class LineReader
45
28
 
46
29
  include LogUtils::Logging
47
30
 
48
- def initialize( path )
49
- @path = path
50
-
31
+ def self.from_file( path )
51
32
  ## nb: assume/enfore utf-8 encoding (with or without BOM - byte order mark)
52
33
  ## - see textutils/utils.rb
53
- @data = File.read_utf8( @path )
34
+ text = File.read_utf8( path )
35
+ self.from_string( text )
36
+ end
37
+
38
+ def self.from_string( text )
39
+ LineReader.new( text: text )
40
+ end
41
+
42
+
43
+ def initialize( arg )
44
+ if arg.is_a?( String ) ## old style (deprecated) - pass in filepath as string
45
+ path = arg
46
+ logger.info "LineReader.new - deprecated API - use LineReader.from_file() instead"
47
+ @text = File.read_utf8( path )
48
+ else ## assume it's a hash
49
+ opts = arg
50
+ @text = opts[:text]
51
+ end
54
52
  end
55
53
 
56
54
  def each_line
57
- @data.each_line do |line|
55
+ @text.each_line do |line|
58
56
 
59
57
  # comments allow:
60
58
  # 1) ##### (shell/ruby style)
@@ -32,7 +32,7 @@ class LineReaderV2
32
32
 
33
33
  def each_line
34
34
  path = "#{include_path}/#{name_real_path}.txt"
35
- reader = LineReader.new( path )
35
+ reader = LineReader.from_file( path )
36
36
 
37
37
  logger.info "parsing data '#{name}' (#{path})..."
38
38
 
@@ -55,7 +55,7 @@ class ValuesReader
55
55
  def initialize( arg, more_attribs={} )
56
56
  @more_attribs = more_attribs
57
57
 
58
- ### todo/fix: rename @data to @text !!!!
58
+ ### todo/fix: rename @text to @text !!!!
59
59
 
60
60
  if arg.is_a?( String ) ## old style (deprecated) - pass in filepath as string
61
61
  path = arg
@@ -66,14 +66,14 @@ class ValuesReader
66
66
  # check what is the best convention (follow ???)
67
67
  if path =~ /\n/m
68
68
  logger.info "ValuesReader.new - deprecated API - use ValuesReader.from_string() instead"
69
- @data = path.dup # make a duplicate ?? why? why not?
69
+ @text = path.dup # make a duplicate ?? why? why not?
70
70
  else
71
71
  logger.info "ValuesReader.new - deprecated API - use ValuesReader.from_file() instead"
72
- @data = File.read_utf8( @path )
72
+ @text = File.read_utf8( @path )
73
73
  end
74
74
  else ## assume it's a hash
75
75
  opts = arg
76
- @data = opts[:text]
76
+ @text = opts[:text]
77
77
  end
78
78
  end
79
79
 
@@ -102,7 +102,7 @@ class ValuesReader
102
102
  last_header = nil
103
103
 
104
104
 
105
- @data.each_line do |line|
105
+ @text.each_line do |line|
106
106
 
107
107
  ## allow alternative comment lines
108
108
  ## e.g. -- comment or
@@ -7,19 +7,31 @@
7
7
  # or rename to KeyMapping?, KeyMapper?, KeyTable? etc.
8
8
 
9
9
 
10
+ ######
11
+ ## todo/check:
12
+ ### remove - use TitleMapper instead
13
+ ## deprecated/obsolete - do NOT use will get removed
14
+
15
+
10
16
  module TextUtils
11
17
  module TitleTable
12
18
 
13
19
  ####
14
20
  ## fix: turn it into a class w/ methods
15
21
  #
16
- #e.g t =TitleTable.new( records, name ) # e.g. name='team'
22
+ #e.g t =TitleMapper.new( records, name ) # e.g. name='team'
17
23
  # t.map!( line )
18
24
  # t.find_key!( line )
19
25
  # etc.
26
+ #
27
+ # see textutils/title_mapper.rb
28
+ #
29
+ # deprecate code here!!! - move to new TitleMapper class
20
30
 
21
31
 
22
32
  def build_title_table_for( records )
33
+ LogUtils::Logger.root.info " build_title_table_for - deprecated API - use TitleMapper.new instead"
34
+
23
35
  ## build known tracks table w/ synonyms e.g.
24
36
  #
25
37
  # [[ 'wolfsbrug', [ 'VfL Wolfsburg' ]],
@@ -72,6 +84,8 @@ end
72
84
 
73
85
 
74
86
  def find_key_for!( name, line )
87
+ LogUtils::Logger.root.info " find_key_for! #{name} - deprecated API - use TitleMapper.find_key! instead"
88
+
75
89
  regex = /@@oo([^@]+?)oo@@/ # e.g. everything in @@ .... @@ (use non-greedy +? plus all chars but not @, that is [^@])
76
90
 
77
91
  upcase_name = name.upcase
@@ -92,6 +106,8 @@ end
92
106
 
93
107
 
94
108
  def find_keys_for!( name, line ) # NB: keys (plural!) - will return array
109
+ LogUtils::Logger.root.info " find_keys_for! #{name} - deprecated API - use TitleMapper.find_keys! instead"
110
+
95
111
  counter = 1
96
112
  keys = []
97
113
 
@@ -109,6 +125,8 @@ end
109
125
 
110
126
 
111
127
  def map_titles_for!( name, line, title_table )
128
+ LogUtils::Logger.root.info " map_titles_for! #{name} - deprecated API - use TitleMapper.map_titles! instead"
129
+
112
130
  title_table.each do |rec|
113
131
  key = rec[0]
114
132
  values = rec[1]
@@ -0,0 +1,159 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ ## see textutils/title.rb
5
+ ## for existing code
6
+ ## move over here
7
+
8
+ ####
9
+ ## fix: turn it into a class w/ methods
10
+ #
11
+ #e.g t =TitleMapper.new( records, name ) # e.g. name='team'
12
+ # t.map!( line )
13
+ # t.find_key!( line )
14
+ # etc.
15
+
16
+
17
+ module TextUtils
18
+
19
+ class TitleMapper ## todo/check: rename to NameMapper ? why? why not??
20
+
21
+ include LogUtils::Logging
22
+
23
+ attr_reader :known_titles ## rename to mapping or mappings or just titles - why? why not?
24
+
25
+ def initialize( records, tag )
26
+ @known_titles = build_title_table_for( records ) ## build mapping lookup table
27
+
28
+ ## todo: rename tag to attrib or attrib_name - why ?? why not ???
29
+ @tag = tag # e.g. tag name use for @@brewery@@ @@team@@ etc.
30
+ end
31
+
32
+
33
+ def map_titles!( line ) ## rename to just map! - why?? why not???
34
+ @known_titles.each do |rec|
35
+ key = rec[0]
36
+ values = rec[1]
37
+ map_title_for!( @tag, line, key, values )
38
+ end
39
+ end
40
+
41
+
42
+ def find_key!( line )
43
+ find_key_for!( @tag, line )
44
+ end
45
+
46
+ def find_keys!( line ) # NB: keys (plural!) - will return array
47
+ counter = 1
48
+ keys = []
49
+
50
+ key = find_key_for!( "#{@tag}#{counter}", line )
51
+ while key.present?
52
+ keys << key
53
+ counter += 1
54
+ key = find_key_for!( "#{@tag}#{counter}", line )
55
+ end
56
+ keys
57
+ end
58
+
59
+
60
+ private
61
+ def build_title_table_for( records )
62
+
63
+ #### fix/todo:
64
+ ### reorder - sort by largest strings etc.
65
+ ## do NOT use lookup w/ array per key; use 1:1 one key per lookup
66
+ ## -> lets us sort by find largest first
67
+
68
+
69
+ ## build known tracks table w/ synonyms e.g.
70
+ #
71
+ # [[ 'wolfsbrug', [ 'VfL Wolfsburg' ]],
72
+ # [ 'augsburg', [ 'FC Augsburg', 'Augi2', 'Augi3' ]],
73
+ # [ 'stuttgart', [ 'VfB Stuttgart' ]] ]
74
+
75
+ known_titles = []
76
+
77
+ records.each_with_index do |rec,index|
78
+
79
+ title_candidates = []
80
+ title_candidates << rec.title
81
+
82
+ title_candidates += rec.synonyms.split('|') if rec.synonyms.present?
83
+
84
+
85
+ ## check if title includes subtitle e.g. Grand Prix Japan (Suzuka Circuit)
86
+ # make subtitle optional by adding title w/o subtitle e.g. Grand Prix Japan
87
+
88
+ titles = []
89
+ title_candidates.each do |t|
90
+ titles << t
91
+ if t =~ /\(.+\)/
92
+ extra_title = t.gsub( /\(.+\)/, '' ) # remove/delete subtitles
93
+ extra_title.strip! # strip leading n trailing withspaces too!
94
+ titles << extra_title
95
+ end
96
+ end
97
+
98
+
99
+ ## NB: sort here by length (largest goes first - best match)
100
+ # exclude code and key (key should always go last)
101
+ titles = titles.sort { |left,right| right.length <=> left.length }
102
+
103
+ ## escape for regex plus allow subs for special chars/accents
104
+ titles = titles.map { |title| TextUtils.title_esc_regex( title ) }
105
+
106
+ ## NB: only include code field - if defined
107
+ titles << rec.code if rec.respond_to?(:code) && rec.code.present?
108
+
109
+ known_titles << [ rec.key, titles ]
110
+
111
+ logger.debug " #{rec.class.name}[#{index+1}] #{rec.key} >#{titles.join('|')}<"
112
+ end
113
+
114
+ known_titles
115
+ end
116
+
117
+
118
+ def map_title_for!( tag, line, key, values )
119
+
120
+ downcase_tag = tag.downcase
121
+
122
+ values.each do |value|
123
+ ## nb: \b does NOT include space or newline for word boundry (only alphanums e.g. a-z0-9)
124
+ ## (thus add it, allows match for Benfica Lis. for example - note . at the end)
125
+
126
+ ## check add $ e.g. (\b| |\t|$) does this work? - check w/ Benfica Lis.$
127
+ regex = /\b#{value}(\b| |\t|$)/ # wrap with world boundry (e.g. match only whole words e.g. not wac in wacker)
128
+ if line =~ regex
129
+ logger.debug " match for #{downcase_tag} >#{key}< >#{value}<"
130
+ # make sure @@oo{key}oo@@ doesn't match itself with other key e.g. wacker, wac, etc.
131
+ line.sub!( regex, "@@oo#{key}oo@@ " ) # NB: add one space char at end
132
+ return true # break out after first match (do NOT continue)
133
+ end
134
+ end
135
+ return false
136
+ end
137
+
138
+
139
+ def find_key_for!( tag, line )
140
+ regex = /@@oo([^@]+?)oo@@/ # e.g. everything in @@ .... @@ (use non-greedy +? plus all chars but not @, that is [^@])
141
+
142
+ upcase_tag = tag.upcase
143
+ downcase_tag = tag.downcase
144
+
145
+ if line =~ regex
146
+ value = "#{$1}"
147
+ logger.debug " #{downcase_tag}: >#{value}<"
148
+
149
+ line.sub!( regex, "[#{upcase_tag}]" )
150
+
151
+ return $1
152
+ else
153
+ return nil
154
+ end
155
+ end # method find_key_for!
156
+
157
+
158
+ end # class TitleMapper
159
+ end # module TextUtils
@@ -3,7 +3,7 @@ module TextUtils
3
3
 
4
4
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
5
5
  MINOR = 9
6
- PATCH = 8
6
+ PATCH = 9
7
7
  VERSION = [MAJOR,MINOR,PATCH].join('.')
8
8
 
9
9
  def self.version
File without changes
data/test/helper.rb CHANGED
@@ -6,7 +6,6 @@
6
6
  # require 'minitest/unit'
7
7
  require 'minitest/autorun'
8
8
 
9
- # include MiniTest::Unit # lets us use TestCase instead of MiniTest::Unit::TestCase
10
9
 
11
10
  ## make sure activesupport gets included/required
12
11
  # note: just activesupport or active_support will NOT work
@@ -3,7 +3,7 @@
3
3
 
4
4
  require 'helper'
5
5
 
6
- class TestAddressHelper < MiniTest::Unit::TestCase
6
+ class TestAddressHelper < Minitest::Test
7
7
 
8
8
  def test_normalize_addr
9
9
 
data/test/test_asciify.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'helper'
5
5
 
6
6
 
7
- class TestAsciify < MiniTest::Unit::TestCase
7
+ class TestAsciify < Minitest::Test
8
8
 
9
9
  def test_asciify
10
10
 
@@ -1,14 +1,14 @@
1
1
  require 'helper'
2
2
 
3
3
 
4
- class TestFixtureReader < MiniTest::Unit::TestCase
4
+ class TestFixtureReader < Minitest::Test
5
5
 
6
6
  def test_read
7
- path = "#{TextUtils.root}/test/cl_all.txt"
7
+ path = "#{TextUtils.root}/test/data/cl_all.txt"
8
8
  puts "[TestFixtureReader.test_read] path: #{path}"
9
-
10
- reader = FixtureReader.new( path )
11
-
9
+
10
+ reader = FixtureReader.from_file( path )
11
+
12
12
  ary = [
13
13
  'europe-champions-league!/leagues',
14
14
  'europe-champions-league!/2011_12/cl',
@@ -9,7 +9,7 @@
9
9
  require 'helper'
10
10
 
11
11
 
12
- class TestHypertextHelper < MiniTest::Unit::TestCase
12
+ class TestHypertextHelper < Minitest::Test
13
13
 
14
14
  include TextUtils::HypertextHelper # lets us use textify, etc.
15
15
 
data/test/test_slugify.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'helper'
4
4
 
5
- class TestSlugify < MiniTest::Unit::TestCase
5
+ class TestSlugify < Minitest::Test
6
6
 
7
7
  def test_slugify
8
8
 
data/test/test_taglist.rb CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'helper'
5
5
 
6
6
 
7
- class TestTaglist < MiniTest::Unit::TestCase
7
+ class TestTaglist < Minitest::Test
8
8
 
9
9
  include TextUtils::ValueHelper # lets us use is_taglist?, etc.
10
10
 
@@ -4,7 +4,7 @@
4
4
  require 'helper'
5
5
 
6
6
 
7
- class TestTitleFinder < MiniTest::Unit::TestCase
7
+ class TestTitleFinder < Minitest::Test
8
8
 
9
9
  include TextUtils::ValueHelper # lets us use find_grade, etc.
10
10
 
@@ -3,7 +3,7 @@
3
3
  require 'helper'
4
4
 
5
5
 
6
- class TestTitleHelper < MiniTest::Unit::TestCase
6
+ class TestTitleHelper < Minitest::Test
7
7
 
8
8
  def test_title_to_key
9
9
 
@@ -4,7 +4,7 @@
4
4
  require 'helper'
5
5
 
6
6
 
7
- class TestTitleMapper < MiniTest::Unit::TestCase
7
+ class TestTitleMapper < Minitest::Test
8
8
 
9
9
  WineryStruct = Struct.new(:key, :title, :synonyms)
10
10
 
@@ -32,7 +32,8 @@ class TestTitleMapper < MiniTest::Unit::TestCase
32
32
  ['andreaspolsterer', [ 'Weingut Andreas B\. Polsterer', 'Andreas B\. Polsterer \(1970\)', 'Andreas B\. Polsterer' ]]
33
33
  ]
34
34
 
35
- titles_out = TextUtils.build_title_table_for( titles_in )
35
+ mapper = TextUtils::TitleMapper.new( titles_in, 'winery' )
36
+ titles_out = mapper.known_titles
36
37
 
37
38
  puts 'titles_out:'
38
39
  pp titles_out
@@ -8,7 +8,7 @@
8
8
 
9
9
  require 'helper'
10
10
 
11
- class TestUnicodeHelper < MiniTest::Unit::TestCase
11
+ class TestUnicodeHelper < Minitest::Test
12
12
 
13
13
  def test_convert_unicode_dashes
14
14
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  require 'helper'
10
10
 
11
- class TestValuesReader < MiniTest::Unit::TestCase
11
+ class TestValuesReader < Minitest::Test
12
12
 
13
13
  def test_header
14
14
  txt =<<EOS
@@ -28,7 +28,7 @@ Schwechater Zwickl, 5.4%, 12.5°, 45.0 kcal/100ml
28
28
 
29
29
  EOS
30
30
 
31
- reader = ValuesReader.new( txt )
31
+ reader = ValuesReader.from_string( txt )
32
32
 
33
33
  i = 0
34
34
  reader.each_line do |attribs, values|
@@ -80,7 +80,7 @@ EOS
80
80
 
81
81
  pp txt
82
82
 
83
- reader = ValuesReader.new( txt )
83
+ reader = ValuesReader.from_string( txt )
84
84
 
85
85
  i = 0
86
86
  reader.each_line do |attribs, values|
@@ -146,7 +146,7 @@ weitra, Weitra Bräu Bierwerkstatt|Brauerei Weitra *, 1321, www.bierwerkstatt.at
146
146
  egger, Privatbrauerei Fritz Egger **, 1978, www.egger-bier.at, 3105 Unterradlberg // Tiroler Straße 18
147
147
  EOS
148
148
 
149
- reader = ValuesReader.new( txt )
149
+ reader = ValuesReader.from_string( txt )
150
150
 
151
151
  i = 0
152
152
  reader.each_line do |attribs, values|
@@ -236,7 +236,7 @@ EOS
236
236
  brands: Zwettler
237
237
  EOS
238
238
 
239
- reader = ValuesReader.new( txt )
239
+ reader = ValuesReader.from_string( txt )
240
240
 
241
241
  i = 0
242
242
  reader.each_line do |attribs, values|
@@ -283,7 +283,7 @@ manunited, Manchester United|Man Utd|Manchester U., MUN, city:manchester
283
283
  liverpool, Liverpool|Liverpool FC|FC Liverpool, LIV, city:liverpool
284
284
  EOS
285
285
 
286
- reader = ValuesReader.new( txt )
286
+ reader = ValuesReader.from_string( txt )
287
287
 
288
288
  i = 0
289
289
  reader.each_line do |attribs, values|
@@ -318,7 +318,7 @@ Ottakringer (Gold Fassl) Pils, 4.6 %, 11.2°
318
318
  Ottakringer (Gold Fassl) Pur {Bio}, 5.2 %, 11.8°, bio
319
319
  EOS
320
320
 
321
- reader = ValuesReader.new( txt )
321
+ reader = ValuesReader.from_string( txt )
322
322
 
323
323
  i = 0
324
324
  reader.each_line do |attribs, values|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: textutils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.8
4
+ version: 0.9.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-06 00:00:00.000000000 Z
12
+ date: 2014-11-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: props
16
- requirement: &72274350 !ruby/object:Gem::Requirement
16
+ requirement: &79823580 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *72274350
24
+ version_requirements: *79823580
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: logutils
27
- requirement: &72273880 !ruby/object:Gem::Requirement
27
+ requirement: &79823050 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *72273880
35
+ version_requirements: *79823050
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rubyzip
38
- requirement: &72273580 !ruby/object:Gem::Requirement
38
+ requirement: &79822760 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *72273580
46
+ version_requirements: *79822760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activesupport
49
- requirement: &72273200 !ruby/object:Gem::Requirement
49
+ requirement: &79822540 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *72273200
57
+ version_requirements: *79822540
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rdoc
60
- requirement: &72272730 !ruby/object:Gem::Requirement
60
+ requirement: &79822210 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,18 +65,18 @@ dependencies:
65
65
  version: '4.0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *72272730
68
+ version_requirements: *79822210
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hoe
71
- requirement: &72272390 !ruby/object:Gem::Requirement
71
+ requirement: &79821880 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
75
75
  - !ruby/object:Gem::Version
76
- version: '3.12'
76
+ version: '3.13'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *72272390
79
+ version_requirements: *79821880
80
80
  description: textutils - Text Filters, Helpers, Readers and More
81
81
  email: ruby-talk@ruby-lang.org
82
82
  executables: []
@@ -120,9 +120,10 @@ files:
120
120
  - lib/textutils/reader/values_reader_v2.rb
121
121
  - lib/textutils/sanitizier.rb
122
122
  - lib/textutils/title.rb
123
+ - lib/textutils/title_mapper.rb
123
124
  - lib/textutils/utils.rb
124
125
  - lib/textutils/version.rb
125
- - test/cl_all.txt
126
+ - test/data/cl_all.txt
126
127
  - test/helper.rb
127
128
  - test/test_address_helper.rb
128
129
  - test/test_asciify.rb