Class: MetaCommit::Factories::ParserFactory

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

Overview

Parser factory

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parser_classes) ⇒ ParserFactory

Returns a new instance of ParserFactory.

Parameters:

  • parser_classes (Array<Class>)


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

def initialize(parser_classes)
  @available_parser_classes = parser_classes
end

Instance Attribute Details

#available_parser_classesArray<Class>

parser classes that factory can build

Returns:

  • (Array<Class>)

    the current value of available_parser_classes



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

def available_parser_classes
  @available_parser_classes
end

Instance Method Details

#create_parser_for(filename, content) ⇒ MetaCommit::Contracts::Parser, Nil

Parameters:

  • filename (String)
  • content (String)

Returns:

  • (MetaCommit::Contracts::Parser, Nil)


15
16
17
18
19
20
# File 'lib/meta_commit/factories/parser_factory.rb', line 15

def create_parser_for(filename, content)
  @available_parser_classes.each do |parser|
    return parser.new if parser_supports(parser, filename, content)
  end
  nil
end

#parser_supports(parser, filename, content) ⇒ Boolean

Parameters:

  • parser (Class)
  • filename (String)
  • content (String)

Returns:

  • (Boolean)


26
27
28
# File 'lib/meta_commit/factories/parser_factory.rb', line 26

def parser_supports(parser, filename, content)
  (parser.supported_file_extensions.any? {|ext| filename.end_with?(ext)}) && (parser.supports_syntax?(content))
end