Sha256: 7fed83523ec57bd992b6df98fee4e7e7feb8c8618a85bff40a3bdc72816af690
Contents?: true
Size: 1.95 KB
Versions: 1
Compression:
Stored size: 1.95 KB
Contents
# :nodoc: module RegexpExamples # Configuration settings to limit the number/length of Regexp examples generated class Config # The maximum variance for any given repeater, to prevent a huge/infinite number of # examples from being listed. For example, if self.max_repeater_variance = 2 then: # .* is equivalent to .{0,2} # .+ is equivalent to .{1,3} # .{2,} is equivalent to .{2,4} # .{,3} is equivalent to .{0,2} # .{3,8} is equivalent to .{3,5} MAX_REPEATER_VARIANCE_DEFAULT = 2 # Maximum number of characters returned from a char set, to reduce output spam # For example, if self.max_group_results = 5 then: # \d is equivalent to [01234] # \w is equivalent to [abcde] MAX_GROUP_RESULTS_DEFAULT = 5 # Maximum number of results to be generated, for Regexp#examples # This is to prevent the system "freezing" when given instructions like: # /[ab]{30}/.examples # (Which would attempt to generate 2**30 == 1073741824 examples!!!) MAX_RESULTS_LIMIT_DEFAULT = 10_000 class << self def with_configuration(**new_config) original_config = config.dup begin update_config(**new_config) result = yield ensure update_config(**original_config) end result end # Thread-safe getters and setters %i[max_repeater_variance max_group_results max_results_limit].each do |m| define_method(m) do config[m] end define_method("#{m}=") do |value| config[m] = value end end private def update_config(**args) Thread.current[:regexp_examples_config].merge!(args) end def config Thread.current[:regexp_examples_config] ||= { max_repeater_variance: MAX_REPEATER_VARIANCE_DEFAULT, max_group_results: MAX_GROUP_RESULTS_DEFAULT, max_results_limit: MAX_RESULTS_LIMIT_DEFAULT } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
regexp-examples-1.5.1 | lib/regexp-examples/config.rb |