diff options
| author | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2010-10-17 00:48:09 -0700 | 
|---|---|---|
| committer | David Vazgenovich Shakaryan <dvshakaryan@gmail.com> | 2010-10-17 00:48:09 -0700 | 
| commit | b9210324dc69b8bba6471bb0fdfc1f6dbb913668 (patch) | |
| tree | ad8846473fb435a44d590f2a23ac9ce15ea6a091 /omptagger | |
| parent | 389bebecc054b0013d2a08dd5dc4aeddf37da631 (diff) | |
| download | omptagger-b9210324dc69b8bba6471bb0fdfc1f6dbb913668.tar.gz omptagger-b9210324dc69b8bba6471bb0fdfc1f6dbb913668.tar.xz | |
Create an Action class.
Diffstat (limited to 'omptagger')
| -rwxr-xr-x | omptagger | 63 | 
1 files changed, 44 insertions, 19 deletions
| @@ -111,6 +111,44 @@ Tag Generation:    end  end +class Action +  def initialize(action, *arguments) +    @action = action +    @arguments = arguments +  end + +  def execute(metadata) +    if @arguments.empty? +      metadata.send(@action) +    else +      metadata.send(@action, *@arguments) +    end +  end + +  def to_s +    case @action +    when :view +      str = 'Viewing all fields' +    when :viewtag +      str = 'Viewing %s field' +    when :addtag +      str = 'Adding %s field' +    when :settag +      str = 'Setting %s field' +    when :remove +      str = 'Removing all fields' +    when :removetag +      str = 'Removing %s field' +    when :generate +      str = 'Generating fields' +    when :rename +      str = 'Renaming file' +    end + +    return str % @arguments +  end +end +  class Array    def longest_element_length      self.inject(0) do |longest, key| @@ -139,8 +177,6 @@ class Metadata    end    def view -    Output.action('Viewing all fields') -      next_if_no_fields_set      @metadata.sort.each do |field, value| @@ -153,8 +189,6 @@ class Metadata    def viewtag(field)      field.upcase! -    Output.action('Viewing ' + field + ' field') -      next_if_field_not_set(field)      @metadata[field].each do |value| @@ -165,8 +199,6 @@ class Metadata    def addtag(field, value)      field.upcase! -    Output.action('Adding ' + field + ' field') -      next_if_not_valid_field(field)      if @metadata.has_key?(field) @@ -183,8 +215,6 @@ class Metadata    def settag(field, value)      field.upcase! -    Output.action('Setting ' + field + ' field') -      next_if_not_valid_field(field)      @metadata[field] = [value] @@ -194,8 +224,6 @@ class Metadata    end    def remove -    Output.action('Removing all fields') -      next_if_no_fields_set      @metadata.clear @@ -207,8 +235,6 @@ class Metadata    def removetag(field)      field.upcase! -    Output.action('Removing ' + field + ' field') -      next_if_field_not_set(field)      @metadata.delete(field) @@ -218,8 +244,6 @@ class Metadata    end    def generate(scheme) -    Output.action('Generating fields') -      regexp = Regexp.escape(scheme)      regexp = regexp.gsub(/%([#{keys.keys.join}]|\\\*)/, '([^/]*?)')      regexp = /#{regexp}\Z/ @@ -392,14 +416,14 @@ GetoptLong.new(    when :nocolour, :pretend      options << option    when :viewtag, :removetag -    actions << [option, argument.dup] +    actions << Action.new(option, argument.dup)    when :addtag, :settag      raise 'Incorrect argument' unless argument.include?('=') -    actions << [option, argument.split('=', 2)].flatten +    actions << Action.new(option, *argument.split('=', 2))    when :generate, :rename -    actions << [option, scheme] +    actions << Action.new(option, scheme)    else -    actions << [option] +    actions << Action.new(option)    end  end @@ -435,8 +459,9 @@ ARGV.each do |file|      end      actions.each do |action| +      Output.action(action.to_s)        catch :next do -        track.send(*action) +        action.execute(track)        end      end | 
