class FilterRename::Builder

Public Class Methods

new(options) click to toggle source
# File lib/filter_rename.rb, line 15
def initialize(options)
  @cfg = Config.new(options.global)
  @filters = FilterList.new(options.filters)
  @files = options.files
  @show_macro = options.show_macro
end

Public Instance Methods

apply() click to toggle source
# File lib/filter_rename.rb, line 35
def apply
  raise MissingFiles if @files.empty?

  @filters.expand_macros!(@cfg.macro)

  Messages.label "Apply:"
  @files.each do |src|

    fp = FilterPipe.new(src, @filters, @cfg).apply

    if fp.changed?
      old_data = fp.rename!

      if old_data[:full_filename]
        Messages.renamed!(old_data, fp.dest)
        Messages.changed_tags(fp, old_data, false) if fp.source.class.has_writable_tags
      else
        Messages.changed_tags(fp, old_data)
      end

    else
      Messages.skipping(fp)
    end
  end
end
configs() click to toggle source
# File lib/filter_rename.rb, line 66
def configs
  Messages.label 'Filter\'s configurations:'
  Messages.config_list @cfg.filter
end
dry_run() click to toggle source
# File lib/filter_rename.rb, line 76
def dry_run
  raise MissingFiles if @files.empty?

  @filters.expand_macros!(@cfg.macro)
  cache = []

  Messages.label "Dry Run:"
  @files.each do |src|

    fp = FilterPipe.new(src, @filters, @cfg).apply

    if fp.unchanged?
      Messages.skipping(fp)
    elsif (cache.include?(fp.dest.full_filename) || fp.dest.exists?)
      if fp.source.full_filename == fp.dest.full_filename
        Messages.changed_tags(fp)
      else
        Messages.file_exists(fp)
      end
    else
      Messages.renamed(fp)
      Messages.changed_tags(fp, {}, false) if fp.source.class.has_writable_tags
      cache << fp.dest.full_filename
    end
  end
end
globals() click to toggle source
# File lib/filter_rename.rb, line 61
def globals
  Messages.label 'Global configurations:'
  Messages.config_list @cfg.global
end
macros() click to toggle source
# File lib/filter_rename.rb, line 116
def macros
  Messages.label 'Macros:'
  Messages.list @cfg.macro.get_macros
end
preview() click to toggle source
# File lib/filter_rename.rb, line 22
def preview
  raise MissingFiles if @files.empty?

  @filters.expand_macros!(@cfg.macro)

  Messages.label "Preview:"

  @files.each do |src|
    fp = FilterPipe.new(src, @filters, @cfg).apply
    Messages.diff(fp)
  end
end
show_macro() click to toggle source
# File lib/filter_rename.rb, line 121
def show_macro
  Messages.label "Macro: #{@show_macro}"
  macro = @cfg.macro.get_macro(@show_macro)
  if macro.class == Array
    macro.each do |k|
      Messages.item k.keys.first.to_s + ': ' + k.values.first.map { |x| '"' + x.to_s.green + '"' }.join(',')
    end
  elsif macro.class == Hash
    macro.each do |k, v|
      Messages.item k.to_s + ': ' +  v.map { |x| '"' + x.to_s.green + '"'  }.join(', ')
    end
  end
end
targets() click to toggle source
# File lib/filter_rename.rb, line 103
def targets
  raise MissingFiles if @files.empty?

  Messages.label 'Targets:'
  @files.each do |src|

    fname = FilenameFactory.create(src, @cfg.global)

    Messages.multi fname.full_filename
    Messages.send(@cfg.global.targets == :short ? :short_targets : :long_targets, fname)
  end
end
words() click to toggle source
# File lib/filter_rename.rb, line 71
def words
  Messages.label 'Groups and subgroups of words available for translation:'
  Messages.config_multilist @cfg.words
end