2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-11-09 05:36:34 +08:00
|
|
|
class RegexSettingValidator
|
2020-04-30 14:48:34 +08:00
|
|
|
LOREM =
|
|
|
|
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget sem non elit tincidunt rhoncus."
|
2016-11-09 05:36:34 +08:00
|
|
|
|
|
|
|
def initialize(opts = {})
|
|
|
|
@opts = opts
|
|
|
|
end
|
|
|
|
|
|
|
|
def valid_value?(val)
|
|
|
|
!val.present? || valid_regex?(val)
|
|
|
|
end
|
|
|
|
|
|
|
|
# Check that string is a valid regex, and that it doesn't match most of the lorem string.
|
|
|
|
def valid_regex?(val)
|
|
|
|
r = Regexp.new(val)
|
|
|
|
matches = r.match(LOREM)
|
|
|
|
matches.nil? || matches[0].length < (LOREM.length - 10)
|
|
|
|
rescue StandardError
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
def error_message
|
|
|
|
I18n.t("site_settings.errors.invalid_regex")
|
|
|
|
end
|
|
|
|
end
|