Class: Maprename::FileNameParser

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

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ FileNameParser

Returns a new instance of FileNameParser.



3
4
5
6
# File 'lib/maprename/file_name_parser.rb', line 3

def initialize(config)
  @config = config
  debug "  FileNameParser: #@config"
end

Instance Method Details

#eval_var_definition(fields, field_definition, context) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/maprename/file_name_parser.rb', line 23

def eval_var_definition(fields, field_definition, context)
  debug "      FileNameParser field definition: #{field_definition}"
  debug "      FileNameParser context: #{context}"

  value = field_definition[:value].gsub(/\$(\d+)/) { fields[$1.to_i - 1] }
  context.instance_eval "self.#{field_definition[:name]} = #{value.inspect}"

  debug "      FileNameParser value: #{value}"
  debug "      FileNameParser context: #{context}"
  if parse_config = field_definition[:name_parse]
    Maprename::FileNameParser.new(parse_config).parse!(context.instance_eval(field_definition[:name]), context)
  end
end

#parse!(subject, context) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/maprename/file_name_parser.rb', line 8

def parse!(subject, context)
  debug "    FileNameParser parse subject: #{subject}"
  debug "    FileNameParser parse context: #{context}"
  fields = if split_method?
    subject.split(Regexp.new(@config[:pattern]))
  else
    subject.match(Regexp.new(@config[:pattern])).to_a[1..-1]
  end

  debug "    FileNameParser fields: #{fields}"
  @config[:fields].each do |field_definition|
    eval_var_definition(fields, field_definition, context)
  end
end

#split_method?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/maprename/file_name_parser.rb', line 37

def split_method?
  @config[:method] == 'split'
end