Class: Jekyll::PandocExports::Statistics

Inherits:
Object
  • Object
show all
Defined in:
lib/jekyll-pandoc-exports/statistics.rb

Instance Method Summary collapse

Constructor Details

#initializeStatistics

Returns a new instance of Statistics.



4
5
6
7
8
9
10
11
12
13
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 4

def initialize
  @stats = {
    total_processed: 0,
    successful_conversions: 0,
    failed_conversions: 0,
    formats: { docx: 0, pdf: 0 },
    processing_times: [],
    errors: []
  }
end

Instance Method Details



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 53

def print_summary(config)
  return unless config['performance_monitoring'] || config['debug']
  
  stats = summary
  Jekyll.logger.info "Pandoc Exports Stats:", "Processed #{stats[:total_files]} files"
  Jekyll.logger.info "Pandoc Exports Stats:", "Success rate: #{(stats[:success_rate] * 100).round(1)}%"
  Jekyll.logger.info "Pandoc Exports Stats:", "Average time: #{stats[:average_processing_time]}s"
  Jekyll.logger.info "Pandoc Exports Stats:", "Formats - DOCX: #{stats[:formats][:docx]}, PDF: #{stats[:formats][:pdf]}"
  
  if stats[:total_errors] > 0 && config['debug']
    Jekyll.logger.warn "Pandoc Exports Stats:", "#{stats[:total_errors]} errors occurred"
  end
end

#record_conversion_failure(format, error) ⇒ Object



30
31
32
33
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 30

def record_conversion_failure(format, error)
  @stats[:failed_conversions] += 1
  @stats[:errors] << { format: format, error: error.message, time: Time.now }
end

#record_conversion_success(format) ⇒ Object



25
26
27
28
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 25

def record_conversion_success(format)
  @stats[:successful_conversions] += 1
  @stats[:formats][format] += 1
end

#record_file_processedObject



35
36
37
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 35

def record_file_processed
  @stats[:total_processed] += 1
end

#record_processing_endObject



19
20
21
22
23
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 19

def record_processing_end
  return unless @start_time
  @stats[:processing_times] << Time.now - @start_time
  @start_time = nil
end

#record_processing_startObject



15
16
17
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 15

def record_processing_start
  @start_time = Time.now
end

#summaryObject



39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/jekyll-pandoc-exports/statistics.rb', line 39

def summary
  avg_time = @stats[:processing_times].empty? ? 0 : @stats[:processing_times].sum / @stats[:processing_times].length
  
  {
    total_files: @stats[:total_processed],
    successful: @stats[:successful_conversions],
    failed: @stats[:failed_conversions],
    success_rate: success_rate,
    formats: @stats[:formats],
    average_processing_time: avg_time.round(3),
    total_errors: @stats[:errors].length
  }
end