lib/regexp-examples/constants.rb in regexp-examples-1.1.4 vs lib/regexp-examples/constants.rb in regexp-examples-1.2.0

- old
+ new

@@ -15,23 +15,32 @@ # For example, if @@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 = 10000 class << self - attr_reader :max_repeater_variance, :max_group_results - def configure!(max_repeater_variance, max_group_results = nil) + attr_reader :max_repeater_variance, :max_group_results, :max_results_limit + def configure!(max_repeater_variance: nil, max_group_results: nil, max_results_limit: nil) @max_repeater_variance = (max_repeater_variance || MAX_REPEATER_VARIANCE_DEFAULT) @max_group_results = (max_group_results || MAX_GROUP_RESULTS_DEFAULT) + @max_results_limit = (max_results_limit || MAX_RESULTS_LIMIT_DEFAULT) end end end def self.max_repeater_variance ResultCountLimiters.max_repeater_variance end def self.max_group_results ResultCountLimiters.max_group_results + end + def self.max_results_limit + ResultCountLimiters.max_results_limit end # Definitions of various special characters, used in regular expressions. # For example, `/\h/.examples` will return the value of `Hex` in this module module CharSets