class Qwik::CatalogValidator
Attributes
error_messages[R]
Public Class Methods
main(argv)
click to toggle source
# File vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb, line 12 def self.main(argv) if argv.length < 2 puts "usage: ruby catalog-validator.rb <catalog> <source...>" exit end catalog_file = argv.shift catalog = load_catalog(catalog_file) set_catalog(catalog) ok = true argv.each {|source_file| validator = self.new(source_file, catalog) validator.validate validator.error_messages.each {|message| puts message } ok = (ok and validator.ok?) } if ok then exit else exit(1) end end
new(source_file_name, messages)
click to toggle source
# File vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb, line 34 def initialize (source_file_name, messages) @source_file_name = source_file_name @gettext_catalog = messages @error_messages = [] end
Public Instance Methods
collect_messages(content)
click to toggle source
# File vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb, line 50 def collect_messages (content) messages = [] while content.sub!(/\b_\[(\d+)\]\(("(?:\\"|.)*?").*?\)/m, "") lineno = $1.to_i message = eval($2) messages.push([lineno, message]) end messages end
ok?()
click to toggle source
# File vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb, line 79 def ok? @error_messages.empty? end
read_file_with_numbering(file_name)
click to toggle source
# File vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb, line 41 def read_file_with_numbering (file_name) content = '' File.open(file_name).each_with_index {|line, idx| lineno = idx + 1 content << line.gsub(/\b_\(/, "_[#{lineno}](") } content end
validate()
click to toggle source
# File vendor/qwik/lib/qwik/qwikweb-catalog-validator.rb, line 60 def validate @gettext_catalog or return content = read_file_with_numbering(@source_file_name) messages = collect_messages(content) messages.each {|lineno, message| translated_message = @gettext_catalog[message] if not translated_message message = sprintf('%s:%d: %s', @source_file_name, lineno, message.inspect) @error_messages.push(message) elsif message.count('%') != translated_message.count('%') message = sprintf("%s:%d: %s => # of %% mismatch.", @source_file_name, lineno, message.inspect, translated_message) @error_messages.push(message) end } end