Class: FilterRename::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/filter_rename.rb

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ Builder

Returns a new instance of Builder.



15
16
17
18
19
20
# 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

Instance Method Details

#applyObject

Raises:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# 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
      elsif fp.source.class.has_writable_tags
        Messages.changed_tags(fp, old_data)
      else
        Messages.file_exists(fp)
        Messages.file_hash(fp, @cfg.global.hash_type) if @cfg.global.hash_if_exists
      end

    else
      Messages.skipping(fp)
    end
  end
end

#configsObject



69
70
71
72
# File 'lib/filter_rename.rb', line 69

def configs
  Messages.label 'Filter\'s configurations:'
  Messages.config_list @cfg.filter
end

#dry_runObject

Raises:



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/filter_rename.rb', line 79

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.keys.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)
        Messages.file_hash(fp, @cfg.global.hash_type, cache[fp.dest.full_filename]) if @cfg.global.hash_if_exists
      end
    else
      Messages.renamed(fp)
      Messages.changed_tags(fp, {}, false) if fp.source.class.has_writable_tags
      cache[fp.dest.full_filename] = fp.dest
    end
  end
end

#globalsObject



64
65
66
67
# File 'lib/filter_rename.rb', line 64

def globals
  Messages.label 'Global configurations:'
  Messages.config_list @cfg.global
end

#macrosObject



120
121
122
123
# File 'lib/filter_rename.rb', line 120

def macros
  Messages.label 'Macros:'
  Messages.list @cfg.macro.get_macros
end

#previewObject

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
# 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_macroObject



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

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

#targetsObject

Raises:



107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/filter_rename.rb', line 107

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

#wordsObject



74
75
76
77
# File 'lib/filter_rename.rb', line 74

def words
  Messages.label 'Groups and subgroups of words available for translation:'
  Messages.config_multilist @cfg.words
end