Class: WikiAvro::MediaWiki::FinalProgress

Inherits:
Object
  • Object
show all
Defined in:
lib/wikiavro/mediawiki.rb

Direct Known Subclasses

RevisionProgress

Instance Method Summary collapse

Constructor Details

#initializeFinalProgress

Returns a new instance of FinalProgress.



172
173
174
175
176
177
# File 'lib/wikiavro/mediawiki.rb', line 172

def initialize
  @start_time = Time.now
  @pages = 0
  @revisions = 0
  @skipped_counts = Hash.new 0
end

Instance Method Details

#f(n) ⇒ Object



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/wikiavro/mediawiki.rb', line 117

def f(n)
  parts = []
  while n >= 1
    parts.unshift(n % 1000)
    n /= 1000
  end
  head = parts.shift
  if parts.empty?
    if head
      head.to_s
    else
      n
    end
  else
    [head, parts.map {|p| sprintf('%03d', p)}.join(',')].join(',')
  end
end

#report_doneObject



157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/wikiavro/mediawiki.rb', line 157

def report_done
  duration = Time.now - @start_time
  avg_rate = @revisions / duration
  h = (duration / 60 / 60).floor
  m = (duration % (60 * 60) / 60).floor
  s = (duration % 60).floor
  # FIXME: Print to STDERR or some log
  skipped = total_skipped
  if skipped > 0
    puts "Couldn't process #{skipped} elements! Detailed breakdown:"
    show_skipped
  end
  puts "Done! Took #{h}h#{m}m#{s}s. Averaged #{f avg_rate.round(0)} rps."
end

#report_pages(n) ⇒ Object



139
140
141
# File 'lib/wikiavro/mediawiki.rb', line 139

def report_pages(n)
  @pages += n
end

#report_revisions(n) ⇒ Object



143
144
145
# File 'lib/wikiavro/mediawiki.rb', line 143

def report_revisions(n)
  @revisions += n
end

#report_skipped_element(name) ⇒ Object



147
148
149
# File 'lib/wikiavro/mediawiki.rb', line 147

def report_skipped_element(name)
  @skipped_counts[name] += 1
end

#show_skippedObject



151
152
153
154
155
# File 'lib/wikiavro/mediawiki.rb', line 151

def show_skipped
  @skipped_counts.each do |name, count|
    puts "#{name}: #{count}"
  end
end

#total_skippedObject



135
136
137
# File 'lib/wikiavro/mediawiki.rb', line 135

def total_skipped
  @skipped_counts.values.reduce(0, :+)
end