Sha256: 927c4540239a9e09cadeaa90eab90d029cfdb02f23b459309ad5e3d085c2301b

Contents?: true

Size: 1012 Bytes

Versions: 3

Compression:

Stored size: 1012 Bytes

Contents

# frozen_string_literal: true
# coding: utf-8
require 'cureutils/logic/base_logic'

#
# Class for managing cure tr (translate).
#
class TranslateLogic < BaseLogic
  def initialize
    super
    @translate_from = :human_name
    @translate_to = :precure_name
  end

  attr_writer :in

  def translate_from_to(from, to)
    @translate_from = pregex2str(from).to_sym
    @translate_to = pregex2str(to).to_sym
  end

  def str2pregex(str)
    '[:' + str + ':]'
  end

  def pregex2str(str)
    str.gsub(/\[:(.*):\]/, '\1')
  end

  def print_results
    # Create precure regular expression
    regex_tag = str2pregex(@translate_from.to_s)
    # Get patterns
    cure_pattern = Common.pregex2regex(regex_tag, true)
    # Get Key-Value
    table = Common.cure_table(@translate_from, @translate_to)
    @in.each do |line|
      updated_line = line.dup
      line.scan(/#{cure_pattern}/).each do |pat|
        updated_line.gsub!(/#{pat[0]}/, table[pat[0]])
      end
      @out.puts updated_line
    end
    0
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
cureutils-1.1.0 lib/cureutils/logic/translate_logic.rb
cureutils-1.0.1 lib/cureutils/logic/translate_logic.rb
cureutils-1.0.0 lib/cureutils/logic/translate_logic.rb