Sha256: dfc54da2649cefb9cde8450f246742a2300eef44de1edbd27f64360b4029583d
Contents?: true
Size: 1.28 KB
Versions: 2
Compression:
Stored size: 1.28 KB
Contents
# typed: strict # frozen_string_literal: true require "singleton" module Packwerk module Parsers class Factory extend T::Sig include Singleton RUBY_REGEX = %r{ # Although not important for regex, these are ordered from most likely to match to least likely. \.(rb|rake|builder|gemspec|ru)\Z | (Gemfile|Rakefile)\Z }x private_constant :RUBY_REGEX ERB_REGEX = /\.erb\Z/ private_constant :ERB_REGEX sig { void } def initialize @ruby_parser = T.let(nil, T.nilable(ParserInterface)) @erb_parser = T.let(nil, T.nilable(ParserInterface)) @erb_parser_class = T.let(nil, T.nilable(T::Class[T.anything])) end sig { params(path: String).returns(T.nilable(ParserInterface)) } def for_path(path) case path when RUBY_REGEX @ruby_parser ||= Ruby.new when ERB_REGEX @erb_parser ||= T.unsafe(erb_parser_class).new end end sig { returns(T::Class[T.anything]) } def erb_parser_class @erb_parser_class ||= Erb end sig { params(klass: T.nilable(T::Class[T.anything])).void } def erb_parser_class=(klass) @erb_parser_class = klass @erb_parser = nil end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
packwerk-3.2.2 | lib/packwerk/parsers/factory.rb |
packwerk-3.2.1 | lib/packwerk/parsers/factory.rb |