discourse/lib/validators/regex_setting_validator.rb
Sam Saffron d0d5a138c3
DEV: stop freezing frozen strings
We have the `# frozen_string_literal: true` comment on all our
files. This means all string literals are frozen. There is no need
to call #freeze on any literals.

For files with `# frozen_string_literal: true`

```
puts %w{a b}[0].frozen?
=> true

puts "hi".frozen?
=> true

puts "a #{1} b".frozen?
=> true

puts ("a " + "b").frozen?
=> false

puts (-("a " + "b")).frozen?
=> true
```

For more details see: https://samsaffron.com/archive/2018/02/16/reducing-string-duplication-in-ruby
2020-04-30 16:48:53 +10:00

28 lines
630 B
Ruby

# frozen_string_literal: true
class RegexSettingValidator
LOREM = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam eget sem non elit tincidunt rhoncus.'
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
false
end
def error_message
I18n.t('site_settings.errors.invalid_regex')
end
end