class MetaCommit::Factories::ParserFactory

Parser factory @attr [Array<Class>] available_parser_classes parser classes that factory can build

Attributes

available_parser_classes[RW]

Public Class Methods

new(parser_classes) click to toggle source

@param [Array<Class>] parser_classes

# File lib/meta_commit/factories/parser_factory.rb, line 8
def initialize(parser_classes)
  @available_parser_classes = parser_classes
end

Public Instance Methods

create_parser_for(filename, content) click to toggle source

@param [String] filename @param [String] content @return [MetaCommit::Contracts::Parser, Nil]

# 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) click to toggle source

@param [Class] parser @param [String] filename @param [String] content @return [Boolean]

# 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