History

Use String#remove

Thibaut committed 12 years ago

Commit bcd4a5b1 parent a0b795934 files · +79 −79Browse files

Unified · Split

34 files
  1. lib/docs/core/filter.rb +1 −1
  2. lib/docs/core/scrapers/file_scraper.rb +1 −1
  3. lib/docs/core/subscriber.rb +2 −2
  4. lib/docs/filters/angular/entries.rb +1 −1
  5. lib/docs/filters/backbone/entries.rb +1 −1
  6. lib/docs/filters/c/clean_html.rb +1 −1
  7. lib/docs/filters/c/entries.rb +4 −4
  8. lib/docs/filters/core/clean_text.rb +1 −1
  9. lib/docs/filters/core/normalize_paths.rb +1 −1
  10. lib/docs/filters/cpp/entries.rb +8 −8
  11. lib/docs/filters/css/entries.rb +1 −1
  12. lib/docs/filters/d3/clean_html.rb +2 −2
  13. lib/docs/filters/d3/entries.rb +1 −1
  14. lib/docs/filters/git/clean_html.rb +1 −1
  15. lib/docs/filters/go/clean_html.rb +1 −1
  16. lib/docs/filters/go/entries.rb +1 −1
  17. lib/docs/filters/javascript/entries.rb +4 −4
  18. lib/docs/filters/jquery_mobile/entries.rb +1 −1
  19. lib/docs/filters/jquery_ui/entries.rb +1 −1
  20. lib/docs/filters/knockout/entries.rb +1 −1
  21. lib/docs/filters/lodash/entries.rb +1 −1
  22. lib/docs/filters/moment/clean_html.rb +1 −1
  23. lib/docs/filters/moment/entries.rb +2 −2
  24. lib/docs/filters/node/entries.rb +12 −12
  25. lib/docs/filters/php/entries.rb +2 −2
  26. lib/docs/filters/postgresql/entries.rb +9 −9
  27. lib/docs/filters/python/clean_html.rb +1 −1
  28. lib/docs/filters/python/entries.rb +6 −6
  29. lib/docs/filters/rdoc/entries.rb +5 −5
  30. lib/docs/filters/sass/clean_html.rb +1 −1
  31. lib/docs/filters/sass/entries.rb +1 −1
  32. lib/docs/subscribers/filter_subscriber.rb +1 −1
  33. lib/tasks/docs.thor +1 −1
  34. test/lib/docs/storage/file_store_test.rb +1 −1
lib/docs/core/filter.rb+1−1
@@ -41,7 +41,7 @@ module Docs · 40 unmodified lines
4141 end
4242
4343 def slug
44− @slug ||= subpath.sub(/\A\//, '').sub(/\.html\z/, '')
44+ @slug ||= subpath.sub(/\A\//, '').remove(/\.html\z/)
4545 end
4646
4747 def root_page?
lib/docs/core/scrapers/file_scraper.rb+1−1
@@ -34,7 +34,7 @@ module Docs · 33 unmodified lines
3434 end
3535
3636 def file_path_for(url)
37− File.join self.class.dir, url.sub(base_url.to_s, '')
37+ File.join self.class.dir, url.remove(base_url.to_s)
3838 end
3939
4040 def read_file(path)
lib/docs/core/subscriber.rb+2−2
@@ -17,11 +17,11 @@ module Docs · 16 unmodified lines
1717 end
1818
1919 def format_url(url)
20− url.to_s.sub %r{\Ahttps?://}, ''
20+ url.to_s.remove %r{\Ahttps?://}
2121 end
2222
2323 def format_path(path)
24− path.to_s.sub File.join(File.expand_path('.'), ''), ''
24+ path.to_s.remove File.join(File.expand_path('.'), '')
2525 end
2626
2727 def justify(str)
lib/docs/filters/angular/entries.rb+1−1
@@ -3,7 +3,7 @@ module Docs · 2 unmodified lines
33 class EntriesFilter < Docs::EntriesFilter
44 def get_name
55 name = slug.split(':').last
6− name.sub! %r{\Ang\.}, ''
6+ name.remove! %r{\Ang\.}
77 name << " (#{subtype})" if subtype == 'directive' || subtype == 'filter'
88 name
99 end
lib/docs/filters/backbone/entries.rb+1−1
@@ -8,7 +8,7 @@ module Docs · 7 unmodified lines
88 css('[id]').each do |node|
99 # Module
1010 if node.name == 'h2'
11− type = node.content.sub 'Backbone.', ''
11+ type = node.content.remove 'Backbone.'
1212 if type.capitalize! # sync, history
1313 entries << [node.content, node['id'], type]
1414 end
lib/docs/filters/c/clean_html.rb+1−1
@@ -35,7 +35,7 @@ module Docs · 34 unmodified lines
3535 end
3636
3737 css('area[href]').each do |node|
38− node['href'] = node['href'].sub('.html', '')
38+ node['href'] = node['href'].remove('.html')
3939 end
4040
4141 doc
lib/docs/filters/c/entries.rb+4−4
@@ -15,8 +15,8 @@ module Docs · 14 unmodified lines
1515
1616 def get_name
1717 name = at_css('#firstHeading').content.strip
18− name.sub! 'C keywords: ', ''
19− name.sub! %r{\s\(.+\)}, ''
18+ name.remove! 'C keywords: '
19+ name.remove! %r{\s\(.+\)}
2020 name = name.split(',').first
2121 REPLACE_NAMES[name] || name
2222 end
@@ -24,8 +24,8 @@ module Docs · 1 unmodified line
2424 def get_type
2525 if type = at_css('.t-navbar > div:nth-child(4) > :first-child').try(:content)
2626 type.strip!
27− type.sub! ' library', ''
28− type.sub! ' utilities', ''
27+ type.remove! ' library'
28+ type.remove! ' utilities'
2929 type
3030 end
3131 end
lib/docs/filters/core/clean_text.rb+1−1
@@ -4,7 +4,7 @@ module Docs · 3 unmodified lines
44
55 def call
66 html.strip!
7− while html.gsub!(EMPTY_NODES_RGX, ''); end
7+ while html.remove!(EMPTY_NODES_RGX); end
88 html
99 end
1010 end
lib/docs/filters/core/normalize_paths.rb+1−1
@@ -21,7 +21,7 @@ module Docs · 20 unmodified lines
2121 end
2222
2323 def normalized_subpath
24− normalize_path subpath.sub(/\A\//, '')
24+ normalize_path subpath.remove(/\A\//)
2525 end
2626
2727 def normalize_href(href)
lib/docs/filters/cpp/entries.rb+8−8
@@ -10,10 +10,10 @@ module Docs · 9 unmodified lines
1010
1111 def get_name
1212 name = at_css('#firstHeading').content.strip
13− name.sub! 'C++ concepts: ', ''
14− name.sub! 'C++ keywords: ', ''
15− name.sub! 'C++ ', ''
16− name.sub! %r{\s\(.+\)}, ''
13+ name.remove! 'C++ concepts: '
14+ name.remove! 'C++ keywords: '
15+ name.remove! 'C++ '
16+ name.remove! %r{\s\(.+\)}
1717 name.sub! %r{\AStandard library header <(.+)>\z}, '\1'
1818 name = name.split(',').first
1919 REPLACE_NAMES[name] || name
@@ -24,9 +24,9 @@ module Docs · 4 unmodified lines
2424 'Keywords'
2525 elsif type = at_css('.t-navbar > div:nth-child(4) > :first-child').try(:content)
2626 type.strip!
27− type.sub! ' library', ''
28− type.sub! ' utilities', ''
29− type.sub! 'C++ ', ''
27+ type.remove! ' library'
28+ type.remove! ' utilities'
29+ type.remove! 'C++ '
3030 type.capitalize!
3131 type
3232 end
@@ -34,7 +34,7 @@ module Docs · 1 unmodified line
3434
3535 def additional_entries
3636 return [] unless include_default_entry?
37− names = at_css('#firstHeading').content.gsub(%r{\(.+?\)}, '').split(',')[1..-1]
37+ names = at_css('#firstHeading').content.remove(%r{\(.+?\)}).split(',')[1..-1]
3838 names.each(&:strip!).reject! do |name|
3939 name.size <= 2 || name == '...' || name =~ /\A[<>]/ || name.start_with?('operator')
4040 end
lib/docs/filters/css/entries.rb+1−1
@@ -60,7 +60,7 @@ module Docs · 59 unmodified lines
6060
6161 def get_name
6262 case type
63− when 'Data Types' then "<#{super.gsub(' value', '')}>"
63+ when 'Data Types' then "<#{super.remove ' value'}>"
6464 when 'Functions' then "#{super}()"
6565 else super
6666 end
lib/docs/filters/d3/clean_html.rb+2−2
@@ -4,7 +4,7 @@ module Docs · 3 unmodified lines
44 def call
55 # Remove links inside <h2> and add "id" attributes
66 css('h2 > a').each do |node|
7− node.parent['id'] = node['name'].sub('wiki-', '') if node['name']
7+ node.parent['id'] = node['name'].remove('wiki-') if node['name']
88 node.before(node.children).remove
99 end
1010
@@ -26,7 +26,7 @@ module Docs · 15 unmodified lines
2626 next unless node['name'] || node.content == '#'
2727 parent = node.parent
2828 parent.name = 'h6'
29− parent['id'] = (node['name'] || node['href'].sub(/\A.+#/, '')).sub('wiki-', '')
29+ parent['id'] = (node['name'] || node['href'].remove(/\A.+#/)).remove('wiki-')
3030 parent.css('a[name]').remove
3131 node.remove
3232 end
lib/docs/filters/d3/entries.rb+1−1
@@ -12,7 +12,7 @@ module Docs · 11 unmodified lines
1212 def additional_entries
1313 css('h6[id]').inject [] do |entries, node|
1414 name = node.content
15− name.sub! %r{\(.*\z}, ''
15+ name.remove! %r{\(.*\z}
1616 entries << [name, node['id']] unless name == entries.last.try(:first)
1717 entries
1818 end
lib/docs/filters/git/clean_html.rb+1−1
@@ -18,7 +18,7 @@ module Docs · 17 unmodified lines
1818 end
1919
2020 css('> h1').each do |node|
21− node.content = node.content.sub(/\(\d\) Manual Page/, '')
21+ node.content = node.content.remove(/\(\d\) Manual Page/)
2222 end
2323
2424 unless at_css('> h2')
lib/docs/filters/go/clean_html.rb+1−1
@@ -18,7 +18,7 @@ module Docs · 17 unmodified lines
1818
1919 # Remove triangle character
2020 css('h2', '.exampleHeading').each do |node|
21− node.content = node.content.sub("\u25BE", '')
21+ node.content = node.content.remove("\u25BE")
2222 node.name = 'h2'
2323 end
2424
lib/docs/filters/go/entries.rb+1−1
@@ -3,7 +3,7 @@ module Docs · 2 unmodified lines
33 class EntriesFilter < Docs::EntriesFilter
44 def get_name
55 name = at_css('h1').content
6− name.sub! 'Package ', ''
6+ name.remove! 'Package '
77 name
88 end
99
lib/docs/filters/javascript/entries.rb+4−4
@@ -19,9 +19,9 @@ module Docs · 18 unmodified lines
1919 name
2020 else
2121 name = super
22− name.sub! 'Functions and function scope.', ''
23− name.sub! 'Operators.', ''
24− name.sub! 'Statements.', ''
22+ name.remove! 'Functions and function scope.'
23+ name.remove! 'Operators.'
24+ name.remove! 'Statements.'
2525 name
2626 end
2727 end
@@ -34,7 +34,7 @@ module Docs · 6 unmodified lines
3434 elsif slug.start_with? 'Functions_and_function_scope'
3535 'Function'
3636 elsif slug.start_with? 'Global_Objects'
37− object, method = *slug.sub('Global_Objects/', '').split('/')
37+ object, method = *slug.remove('Global_Objects/').split('/')
3838 if object.end_with? 'Error'
3939 'Errors'
4040 elsif INTL_OBJECTS.include?(object)
lib/docs/filters/jquery_mobile/entries.rb+1−1
@@ -6,7 +6,7 @@ module Docs · 5 unmodified lines
66
77 def get_name
88 name = at_css('h1').content.strip
9− name.sub! ' Widget', ''
9+ name.remove! ' Widget'
1010 name.prepend '.' if name.start_with? 'jqm'
1111 name << ' event' if type == 'Events' && !name.end_with?(' event')
1212 name
lib/docs/filters/jquery_ui/entries.rb+1−1
@@ -6,7 +6,7 @@ module Docs · 5 unmodified lines
66
77 def get_name
88 name = at_css('h1').content.strip
9− name.sub! ' Widget', ''
9+ name.remove! ' Widget'
1010 name.gsub!(/ [A-Z]/) { |str| str.downcase! }
1111 name
1212 end
lib/docs/filters/knockout/entries.rb+1−1
@@ -15,7 +15,7 @@ module Docs · 14 unmodified lines
1515 def get_name
1616 return NAME_BY_SLUG[slug] if NAME_BY_SLUG.has_key?(slug)
1717 name = at_css('h1').content.strip
18− name.sub! 'The ', ''
18+ name.remove! 'The '
1919 name.sub! %r{"(.+?)"}, '\1'
2020 name.gsub!(/ [A-Z]/) { |str| str.downcase! }
2121 name
lib/docs/filters/lodash/entries.rb+1−1
@@ -6,7 +6,7 @@ module Docs · 5 unmodified lines
66
77 css('h2').each do |node|
88 type = node.content.split.first
9− type.gsub! %r{\W}, '' # remove quotation marks
9+ type.remove! %r{\W} # remove quotation marks
1010
1111 node.parent.css('h3').each do |heading|
1212 name = heading.content
lib/docs/filters/moment/clean_html.rb+1−1
@@ -4,7 +4,7 @@ module Docs · 3 unmodified lines
44 def call
55 # Set id attributes on headings
66 css('a.target').each do |node|
7− node.next_element['id'] = node['name'].sub(/\A\//, '').sub(/\/\z/, '').gsub('/', '-')
7+ node.next_element['id'] = node['name'].remove(/\A\//).remove(/\/\z/).gsub('/', '-')
88 end
99
1010 css('> article', '.prose', 'h2 > a', 'h3 > a', 'pre > code').each do |node|
lib/docs/filters/moment/entries.rb+2−2
@@ -31,8 +31,8 @@ module Docs · 30 unmodified lines
3131 name.prepend 'Language#'
3232 else
3333 name = node.content.strip
34− name.sub! %r{\s[\d\.]+\z}, '' # remove version number
35− name.sub! %r{\s\(.+\)\z}, '' # remove parenthesis
34+ name.remove! %r{\s[\d\.]+\z} # remove version number
35+ name.remove! %r{\s\(.+\)\z} # remove parenthesis
3636 name.prepend 'Parse: ' if type == 'Parse'
3737 end
3838
lib/docs/filters/node/entries.rb+12−12
@@ -54,8 +54,8 @@ module Docs · 53 unmodified lines
5454 end
5555
5656 # Classes
57− if name.sub! 'Class: ', ''
58− name.sub! 'events.', '' # EventEmitter
57+ if name.remove! 'Class: '
58+ name.remove! 'events.' # EventEmitter
5959 klass = name
6060 entries << [name, node['id']]
6161 next
@@ -70,7 +70,7 @@ module Docs · 8 unmodified lines
7070
7171 name.gsub! %r{\(.*?\)}, '()'
7272 name.gsub! %r{\[.+?\]}, '[]'
73− name.sub! 'assert(), ', '' # assert/assert.ok
73+ name.remove! 'assert(), ' # assert/assert.ok
7474
7575 # Skip all that start with an uppercase letter ("Example") or include a space ("exports alias")
7676 next unless (name.first.upcase! && !name.include?(' ')) || name.start_with?('Class Method')
@@ -80,15 +80,15 @@ module Docs · 3 unmodified lines
8080 # Differentiate socket classes (net, dgram, etc.)
8181 name.sub!('socket.') { "#{klass.sub('.', '_').downcase!}." }
8282
83− name.sub! 'Class Method:', ''
84− name.sub! 'buf.', 'buffer.'
85− name.sub! 'buf[', 'buffer['
86− name.sub! 'child.', 'childprocess.'
87− name.sub! 'decoder.', 'stringdecoder.'
88− name.sub! 'emitter.', 'eventemitter.'
89− name.sub! %r{\Arl\.}, 'interface.'
90− name.sub! 'rs.', 'readstream.'
91− name.sub! 'ws.', 'writestream.'
83+ name.remove! 'Class Method:'
84+ name.sub! 'buf.', 'buffer.'
85+ name.sub! 'buf[', 'buffer['
86+ name.sub! 'child.', 'childprocess.'
87+ name.sub! 'decoder.', 'stringdecoder.'
88+ name.sub! 'emitter.', 'eventemitter.'
89+ name.sub! %r{\Arl\.}, 'interface.'
90+ name.sub! 'rs.', 'readstream.'
91+ name.sub! 'ws.', 'writestream.'
9292
9393 # Skip duplicates (listen, connect, etc.)
9494 unless name == entries[-1].try(:first) || name == entries[-2].try(:first)
lib/docs/filters/php/entries.rb+2−2
@@ -82,7 +82,7 @@ module Docs · 81 unmodified lines
8282 def get_name
8383 return 'IntlException' if slug == 'class.intlexception'
8484 name = css('> .sect1 > .title', 'h1', 'h2').first.content
85− name.sub! 'The ', ''
85+ name.remove! 'The '
8686 name.sub! ' class', ' (class)'
8787 name.sub! ' interface', ' (interface)'
8888 name
@@ -91,7 +91,7 @@ module Docs · 2 unmodified lines
9191 def get_type
9292 type = at_css('.up').content.strip
9393 type = 'SPL/Iterators' if type.end_with? 'Iterator'
94− type.sub! ' Functions', ''
94+ type.remove! ' Functions'
9595
9696 TYPE_BY_NAME_STARTS_WITH.each_pair do |key, value|
9797 break type = value if name.start_with?(key)
lib/docs/filters/postgresql/entries.rb+9−9
@@ -18,15 +18,15 @@ module Docs · 17 unmodified lines
1818 if %w(Overview Introduction).include?(name)
1919 result[:pg_chapter_name]
2020 else
21− name.sub! ' (Common Table Expressions)', ''
21+ name.remove! ' (Common Table Expressions)'
2222 REPLACE_NAMES[name] || name
2323 end
2424 end
2525
2626 def clean_heading_name(name)
27− name.sub! %r{\A[\d\.\s]+}, ''
28− name.sub! 'Using ', ''
29− name.sub! %r{\AThe }, ''
27+ name.remove! %r{\A[\d\.\s]+}
28+ name.remove! 'Using '
29+ name.remove! %r{\AThe }
3030 name
3131 end
3232
@@ -41,7 +41,7 @@ module Docs · 8 unmodified lines
4141 if type.start_with?('Func') && (match = name.match(/\A(?!Form|Seq|Set|Enum)(.+) Func/))
4242 "Functions: #{match[1]}"
4343 else
44− type.sub 'SQL ', ''
44+ type.remove 'SQL '
4545 end
4646 end
4747 end
@@ -104,10 +104,10 @@ module Docs · 56 unmodified lines
104104 def get_custom_entries(selector)
105105 css(selector).inject [] do |entries, node|
106106 name = node.content
107− name.gsub! %r{\(.*?\)}m, ''
108− name.gsub! %r{\[.*?\]}m, ''
107+ name.remove! %r{\(.*?\)}m
108+ name.remove! %r{\[.*?\]}m
109109 name.squeeze! ' '
110− name.sub! %r{\([^\)]*\z}, '' # bug fix: json_populate_record
110+ name.remove! %r{\([^\)]*\z} # bug fix: json_populate_record
111111 name = '||' if name.include? ' || '
112112 id = name.gsub(/[^a-z0-9\-_]/) { |char| char.ord }
113113 id = id.parameterize
@@ -129,7 +129,7 @@ module Docs · 15 unmodified lines
129129 end
130130
131131 def additional_entry_prefix
132− type.dup.sub!('Functions: ', '') || self.name
132+ type.dup.remove!('Functions: ') || self.name
133133 end
134134
135135 def skip_additional_entries?
lib/docs/filters/python/clean_html.rb+1−1
@@ -38,7 +38,7 @@ module Docs · 37 unmodified lines
3838 node.css('a').each do |link|
3939 link.before(link.children).remove
4040 end
41− node.child.content = node.child.content.sub @levelRegexp, ''
41+ node.child.content = node.child.content.remove @levelRegexp
4242 end
4343
4444 css('dt').each do |node|
lib/docs/filters/python/entries.rb+6−6
@@ -15,8 +15,8 @@ module Docs · 14 unmodified lines
1515
1616 def get_name
1717 name = at_css('h1').content
18− name.sub! %r{\A[\d\.]+ }, '' # remove list number
19− name.sub! %r{ [\u{2013}\u{2014}].+\z}, '' # remove text after em/en dash
18+ name.remove! %r{\A[\d\.]+ } # remove list number
19+ name.remove! %r{ [\u{2013}\u{2014}].+\z} # remove text after em/en dash
2020 name
2121 end
2222
@@ -33,10 +33,10 @@ module Docs · 10 unmodified lines
3333 type = 'Internet Data Handling'
3434 end
3535
36− type.sub! %r{\A\d+\.\s+}, '' # remove list number
37− type.sub! "\u{00b6}", '' # remove paragraph character
36+ type.remove! %r{\A\d+\.\s+} # remove list number
37+ type.remove! "\u{00b6}" # remove paragraph character
3838 type.sub! ' and ', ' & '
39− [' Services', ' Modules', ' Specific', 'Python '].each { |str| type.sub! str, '' }
39+ [' Services', ' Modules', ' Specific', 'Python '].each { |str| type.remove!(str) }
4040
4141 REPLACE_TYPES[type] || type
4242 end
@@ -74,7 +74,7 @@ module Docs · 31 unmodified lines
7474 def clean_id_attributes
7575 css('.section > .target[id]').each do |node|
7676 if dt = node.at_css('+ dl > dt')
77− dt['id'] ||= node['id'].sub(/\w+\-/, '')
77+ dt['id'] ||= node['id'].remove(/\w+\-/)
7878 end
7979 node.remove
8080 end
lib/docs/filters/rdoc/entries.rb+5−5
@@ -3,15 +3,15 @@ module Docs · 2 unmodified lines
33 class EntriesFilter < Docs::EntriesFilter
44 def get_name
55 name = at_css('h1').content.strip
6− name.sub! 'class ', ''
7− name.sub! 'module ', ''
6+ name.remove! 'class '
7+ name.remove! 'module '
88 name
99 end
1010
1111 def get_type
1212 type = name.dup
1313
14− unless type.sub! %r{::.*\z}, ''
14+ unless type.remove! %r{::.*\z}
1515 parent = at_css('.meta-parent').try(:content).to_s
1616 return 'Errors' if type.end_with?('Error') || parent.end_with?('Error') || parent.end_with?('Exception')
1717 end
@@ -29,8 +29,8 @@ module Docs · 11 unmodified lines
2929
3030 css('.method-detail').inject [] do |entries, node|
3131 name = node['id'].dup
32− name.sub! %r{\A\w+?\-.}, ''
33− name.sub! %r{\A-(?!\d)}, ''
32+ name.remove! %r{\A\w+?\-.}
33+ name.remove! %r{\A-(?!\d)}
3434 name.gsub! '-', '%'
3535 name = CGI.unescape(name)
3636
lib/docs/filters/sass/clean_html.rb+1−1
@@ -44,7 +44,7 @@ module Docs · 43 unmodified lines
4444
4545 # Remove links to type classes (e.g. Number)
4646 css('.type > code').each do |node|
47− node.before(node.content.sub('Sass::Script::Value::', '').sub('Sass::Script::', '')).remove
47+ node.before(node.content.remove('Sass::Script::Value::').remove('Sass::Script::')).remove
4848 end
4949 end
5050 end
lib/docs/filters/sass/entries.rb+1−1
@@ -47,7 +47,7 @@ module Docs · 46 unmodified lines
4747 next unless TYPES.include?(type)
4848
4949 name = node.content.strip
50− name.sub! %r{\A.+?: }, ''
50+ name.remove! %r{\A.+?: }
5151
5252 next if SKIP_NAMES.include?(name)
5353
lib/docs/subscribers/filter_subscriber.rb+1−1
@@ -3,7 +3,7 @@ module Docs · 2 unmodified lines
33 self.namespace = 'html_pipeline'
44
55 def call_filter(event)
6− log "Filter: #{event.payload[:filter].sub('Docs::', '').sub('Filter', '')} [#{event.duration.round}ms]"
6+ log "Filter: #{event.payload[:filter].remove('Docs::').remove('Filter')} [#{event.duration.round}ms]"
77 end
88 end
99 end
lib/tasks/docs.thor+1−1
@@ -17,7 +17,7 @@ class DocsCLI < Thor · 16 unmodified lines
1717 Docs.all.
1818 map { |doc| [doc.to_s.demodulize.underscore, doc] }.
1919 each { |pair| max_length = pair.first.length if pair.first.length > max_length }.
20− each { |pair| puts "#{pair.first.rjust max_length + 1}: #{pair.second.base_url.sub %r{\Ahttps?://}, ''}" }
20+ each { |pair| puts "#{pair.first.rjust max_length + 1}: #{pair.second.base_url.remove %r{\Ahttps?://}}" }
2121 end
2222
2323 desc 'page <doc> [path] [--verbose] [--debug]', 'Generate a page (no indexing)'
test/lib/docs/storage/file_store_test.rb+1−1
@@ -124,7 +124,7 @@ class DocsFileStoreTest < MiniTest::Spec · 123 unmodified lines
124124 describe "#each" do
125125 let :paths do
126126 paths = []
127− store.each { |path| paths << path.sub(tmp_path, '') }
127+ store.each { |path| paths << path.remove(tmp_path) }
128128 paths
129129 end
130130