Class: MetaCommit::Factories::DiffFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/meta_commit/factories/diff_factory.rb

Overview

Diff factory

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(diff_classes) ⇒ DiffFactory

Returns a new instance of DiffFactory.

Parameters:

  • diff_classes (Array<Class>)


8
9
10
# File 'lib/meta_commit/factories/diff_factory.rb', line 8

def initialize(diff_classes)
  @available_diff_classes = diff_classes
end

Instance Attribute Details

#available_diff_classesArray<Class>

diff classes that factory can build

Returns:

  • (Array<Class>)

    the current value of available_diff_classes



4
5
6
# File 'lib/meta_commit/factories/diff_factory.rb', line 4

def available_diff_classes
  @available_diff_classes
end

Instance Method Details

#create_diff(options) ⇒ Diff?

Factory method

Parameters:

  • options (Hash)

Returns:

  • (Diff, nil)

    created diff or nil if matched diff not found



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/meta_commit/factories/diff_factory.rb', line 15

def create_diff(options)
  context = change_context(options)
  @available_diff_classes.each do |diff_class|
    diff = diff_class.new
    if diff.supports_parser?(context.old_contextual_ast.parser_class) &&
        diff.supports_parser?(context.new_contextual_ast.parser_class) &&
        diff.supports_change(context)
      diff.change_context = context
      return diff
    end
  end
  nil
end