class Console1984::CommandValidator::ForbiddenReopeningValidation
Validates attempts to reopen classes and modules based on a configured set.
Attributes
banned_class_or_module_names[R]
Public Class Methods
new(banned_classes_or_modules)
click to toggle source
# File lib/console1984/command_validator/forbidden_reopening_validation.rb, line 7 def initialize(banned_classes_or_modules) @banned_class_or_module_names = banned_classes_or_modules.collect(&:to_s) end
Public Instance Methods
validate(parsed_command)
click to toggle source
Raises a Console1984::Errors::ForbiddenCommandAttempted
if an banned class or module reopening is detected.
# File lib/console1984/command_validator/forbidden_reopening_validation.rb, line 13 def validate(parsed_command) if contains_invalid_class_or_module_declaration?(parsed_command) raise Console1984::Errors::ForbiddenCommandAttempted end end
Private Instance Methods
banned?(class_or_module_name)
click to toggle source
# File lib/console1984/command_validator/forbidden_reopening_validation.rb, line 24 def banned?(class_or_module_name) @banned_class_or_module_names.find do |banned_class_or_module_name| "#{class_or_module_name}::".start_with?("#{banned_class_or_module_name}::") end end
contains_invalid_class_or_module_declaration?(parsed_command)
click to toggle source
# File lib/console1984/command_validator/forbidden_reopening_validation.rb, line 20 def contains_invalid_class_or_module_declaration?(parsed_command) (parsed_command.declared_classes_or_modules + parsed_command.constant_assignments).find { |class_or_module_name| banned?(class_or_module_name) } end