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