mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 14:05:37 +08:00
d0d5a138c3
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
28 lines
630 B
Ruby
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
|