Module: StringEnhancer::PatternMatcher
- Defined in:
- lib/string_enhancer/pattern_matcher.rb
Constant Summary collapse
- PATTERNS =
Predefined patterns for common use cases
{ email: /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i, url: %r{\Ahttps?://[^\s/$.?#].[^\s]*\z}, phone: /\A\+?[\d\s\-()]{10,}\z/, date: /\A\d{4}-\d{2}-\d{2}\z/, time: /\A([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?\z/, ip_address: /\A(\d{1,3}\.){3}\d{1,3}\z/, credit_card: /\A\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\z/, hex_color: /\A#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\z/ }.freeze
Class Method Summary collapse
- .extract_patterns(str) ⇒ Object
- .match_pattern(str, pattern_name) ⇒ Object
- .sanitize(str, pattern_name) ⇒ Object
- .validate_format(str, pattern_name) ⇒ Object
Class Method Details
.extract_patterns(str) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/string_enhancer/pattern_matcher.rb', line 22 def self.extract_patterns(str) matches = {} PATTERNS.each do |name, pattern| matches[name] = str.scan(pattern) end matches end |
.match_pattern(str, pattern_name) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/string_enhancer/pattern_matcher.rb', line 15 def self.match_pattern(str, pattern_name) pattern = PATTERNS[pattern_name.to_sym] raise PatternMatchError, "Unknown pattern: #{pattern_name}" unless pattern pattern.match?(str) end |
.sanitize(str, pattern_name) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/string_enhancer/pattern_matcher.rb', line 34 def self.sanitize(str, pattern_name) pattern = PATTERNS[pattern_name.to_sym] raise PatternMatchError, "Unknown pattern: #{pattern_name}" unless pattern str.gsub(pattern, '') end |
.validate_format(str, pattern_name) ⇒ Object
30 31 32 |
# File 'lib/string_enhancer/pattern_matcher.rb', line 30 def self.validate_format(str, pattern_name) match_pattern(str, pattern_name) end |