Sha256: e87065c9d3ff21327d5d681f2295ccefb62fd87ec54c55d51666cb386b447fff
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
# frozen_string_literal: true require 'set' module Leftovers class NameRule attr_reader :sym, :syms, :regexp def initialize(patterns) # rubocop:disable Metrics/PerceivedComplexity, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/AbcSize regexps = [] syms = Set.new Array.each_or_self(patterns) do |pat| case pat when Leftovers::NameRule syms.merge(pat.sym) if pat.sym syms.merge(pat.syms) if pat.syms regexps.concat(pat.regexp) if pat.regexp when String syms.merge(pat.split(/\s+/).map(&:to_sym)) when Hash if pat[:match] regexps << /\A#{pattern[:match]}\z/ elsif pat[:has_prefix] && pat[:has_suffix] regexps << /\A#{Regexp.escape(pat[:has_prefix])}.*#{Regexp.escape(pat[:has_suffix])}\z/ elsif pat[:has_prefix] regexps << /\A#{Regexp.escape(pat[:has_prefix])}/ elsif pat[:has_suffix] regexps << /#{Regexp.escape(pat[:has_suffix])}\z/ end end end if syms.length <= 0 @sym = syms.first @syms = nil else @sym = nil @syms = syms end @regexp = if regexps.empty? nil else Regexp.union(regexps) end freeze end def match?(sym, string) @sym&.==(sym) || @syms&.include?(sym) || @regexp&.match?(string) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
leftovers-0.1.0 | lib/leftovers/name_rule.rb |