Class: BetterTranslate::Analyzer::Reporter

Inherits:
Object
  • Object
show all
Defined in:
lib/better_translate/analyzer/reporter.rb

Overview

Generates reports for orphan key analysis

Supports multiple output formats: text, JSON, CSV

Examples:

Basic usage

reporter = Reporter.new(
  orphans: ["orphan_key"],
  orphan_details: { "orphan_key" => "Unused" },
  total_keys: 10,
  used_keys: 9,
  usage_percentage: 90.0,
  format: :text
)
puts reporter.generate

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(orphans:, orphan_details:, total_keys:, used_keys:, usage_percentage:, format: :text) ⇒ Reporter

Initialize reporter

Parameters:

  • orphans (Array<String>)

    List of orphan keys

  • orphan_details (Hash)

    Orphan keys with values

  • total_keys (Integer)

    Total number of keys

  • used_keys (Integer)

    Number of used keys

  • usage_percentage (Float)

    Usage percentage

  • format (Symbol) (defaults to: :text)

    Output format (:text, :json, :csv)



51
52
53
54
55
56
57
58
# File 'lib/better_translate/analyzer/reporter.rb', line 51

def initialize(orphans:, orphan_details:, total_keys:, used_keys:, usage_percentage:, format: :text)
  @orphans = orphans
  @orphan_details = orphan_details
  @total_keys = total_keys
  @used_keys = used_keys
  @usage_percentage = usage_percentage
  @format = format
end

Instance Attribute Details

#formatSymbol (readonly)

Returns Output format (:text, :json, :csv).

Returns:

  • (Symbol)

    Output format (:text, :json, :csv)



40
41
42
# File 'lib/better_translate/analyzer/reporter.rb', line 40

def format
  @format
end

#orphan_detailsHash (readonly)

Returns Orphan keys with their values.

Returns:

  • (Hash)

    Orphan keys with their values



28
29
30
# File 'lib/better_translate/analyzer/reporter.rb', line 28

def orphan_details
  @orphan_details
end

#orphansArray<String> (readonly)

Returns List of orphan keys.

Returns:

  • (Array<String>)

    List of orphan keys



25
26
27
# File 'lib/better_translate/analyzer/reporter.rb', line 25

def orphans
  @orphans
end

#total_keysInteger (readonly)

Returns Total number of keys.

Returns:

  • (Integer)

    Total number of keys



31
32
33
# File 'lib/better_translate/analyzer/reporter.rb', line 31

def total_keys
  @total_keys
end

#usage_percentageFloat (readonly)

Returns Usage percentage.

Returns:

  • (Float)

    Usage percentage



37
38
39
# File 'lib/better_translate/analyzer/reporter.rb', line 37

def usage_percentage
  @usage_percentage
end

#used_keysInteger (readonly)

Returns Number of used keys.

Returns:

  • (Integer)

    Number of used keys



34
35
36
# File 'lib/better_translate/analyzer/reporter.rb', line 34

def used_keys
  @used_keys
end

Instance Method Details

#generateString

Generate report in specified format

Returns:

  • (String)

    Generated report



64
65
66
67
68
69
70
71
72
73
# File 'lib/better_translate/analyzer/reporter.rb', line 64

def generate
  case format
  when :json
    generate_json
  when :csv
    generate_csv
  else
    generate_text
  end
end

#generate_csvString (private)

Generate CSV format report

Returns:

  • (String)

    CSV report



143
144
145
146
147
148
149
150
151
152
# File 'lib/better_translate/analyzer/reporter.rb', line 143

def generate_csv
  CSV.generate do |csv|
    csv << %w[Key Value]

    orphans.each do |key|
      value = orphan_details[key]
      csv << [key, value]
    end
  end
end

#generate_jsonString (private)

Generate JSON format report

Returns:

  • (String)

    JSON report



126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/better_translate/analyzer/reporter.rb', line 126

def generate_json
  data = {
    orphans: orphans,
    orphan_details: orphan_details,
    orphan_count: orphans.size,
    total_keys: total_keys,
    used_keys: used_keys,
    usage_percentage: usage_percentage
  }

  JSON.pretty_generate(data)
end

#generate_textString (private)

Generate text format report

Returns:

  • (String)

    Text report



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/better_translate/analyzer/reporter.rb', line 89

def generate_text
  lines = [] # : Array[String]
  lines << "=" * 60
  lines << "Orphan Keys Analysis Report"
  lines << "=" * 60
  lines << ""
  lines << "Statistics:"
  lines << "  Total keys: #{total_keys}"
  lines << "  Used keys: #{used_keys}"
  lines << "  Orphan keys: #{orphans.size}"
  lines << "  Usage: #{usage_percentage}%"
  lines << ""

  if orphans.empty?
    lines << "✓ No orphan keys found! All translation keys are being used."
  else
    lines << "Orphan Keys (#{orphans.size}):"
    lines << "-" * 60

    orphans.each do |key|
      value = orphan_details[key]
      lines << ""
      lines << "  Key: #{key}"
      lines << "  Value: #{value}" if value
    end
  end

  lines << ""
  lines << "=" * 60

  lines.join("\n")
end

#save_to_file(file_path) ⇒ Object

Save report to file

Parameters:

  • file_path (String)

    Output file path



79
80
81
# File 'lib/better_translate/analyzer/reporter.rb', line 79

def save_to_file(file_path)
  File.write(file_path, generate)
end