class ExtractI18n::Adapters::ErbAdapter

Public Instance Methods

process_change(node) click to toggle source
# File lib/extract_i18n/adapters/erb_adapter.rb, line 28
def process_change(node)
  change = ExtractI18n::SourceChange.new(
    i18n_key: "#{@file_key}.#{ExtractI18n.key(node.text.strip)}",
    i18n_string: node.text,
    interpolate_arguments: {},
    source_line: node.to_s,
    remove: node.text,
    t_template: %{ t('%s') },
    interpolation_type: :ruby
  )
  if @on_ask.call(change)
    node.replace_text!(change.key, change.i18n_t)
  end
end
run(original_content) click to toggle source
# File lib/extract_i18n/adapters/erb_adapter.rb, line 3
def run(original_content)
  unless valid_erb?(original_content)
    puts "ERB invalid!"
    return original_content
  end
  document = ExtractI18n::HTMLExtractor::ErbDocument.parse_string(original_content)
  nodes_to_translate = ExtractI18n::HTMLExtractor::Match::Finder.new(document).matches
  nodes_to_translate.each { |node|
    next if node.text == ""

    process_change(node)
  }
  result = document.save

  result
end
valid_erb?(content) click to toggle source
# File lib/extract_i18n/adapters/erb_adapter.rb, line 20
def valid_erb?(content)
  Parser::CurrentRuby.parse(ERB.new(content).src)
  true
rescue StandardError => e
  warn e.inspect
  false
end