module ReservedFor::ModuleMethods
Public Instance Methods
any(whitelist: true)
click to toggle source
# File lib/reserved_for.rb, line 42 def any(whitelist: true) set = @reserved_list_map.map{ |k, v| next v if options[:check_plural] next nil if k =~ /^_plurals_/ v }.compact.inject(:+) set -= @reserved_list_map[:whitelist] if whitelist set end
clear_all!()
click to toggle source
# File lib/reserved_for.rb, line 9 def clear_all! @reserved_list_map = { whitelist: Set.new } self end
configure(options = {}, &block)
click to toggle source
# File lib/reserved_for.rb, line 25 def configure(options = {}, &block) config = OpenStruct.new block.call(config) @options = _default_config .merge(options) .merge(Hash[config.each_pair.map{ |k,v| [k, v] }]) invalid_options = @options.keys - _default_config.keys raise ReservedFor::InvalidOptionError, "invalid options: #{invalid_options}" if invalid_options.size > 0 reset!(reset_option: false) self end
method_missing(name, *args)
click to toggle source
# File lib/reserved_for.rb, line 52 def method_missing(name, *args) case name.to_s when /(.*)=$/ args = args.flatten plurals = args.map{ |arg| ActiveSupport::Inflector.pluralize(arg) } @reserved_list_map[$1.to_sym] = Set.new(args) @reserved_list_map["_plurals_#{$1}".to_sym] = Set.new(plurals) else set = @reserved_list_map[name.to_sym] return nil unless set set += @reserved_list_map["_plurals_#{name.to_s}".to_sym] if options[:check_plural] set end end
options()
click to toggle source
# File lib/reserved_for.rb, line 38 def options @options ||= _default_config end
reset!(reset_option: true)
click to toggle source
# File lib/reserved_for.rb, line 14 def reset!(reset_option: true) clear_all! @options = nil if reset_option if options[:use_default_reserved_list] plurals = _default_usernames.map{ |word| ActiveSupport::Inflector.pluralize(word) } @reserved_list_map[:usernames] = _default_usernames @reserved_list_map[:_plurals_usernames] = Set.new(plurals) end self end
Private Instance Methods
_default_config()
click to toggle source
# File lib/reserved_for.rb, line 73 def _default_config { use_default_reserved_list: true, check_plural: false, } end
_default_usernames()
click to toggle source
# File lib/reserved_for.rb, line 69 def _default_usernames File.open("#{__dir__}/../config/USERNAMES").read.split("\n") end