Extract regex for entity names

This commit is contained in:
Benjamin Neff 2017-09-04 01:41:32 +02:00
parent faf48e1dd4
commit 457f06d1da
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
2 changed files with 5 additions and 2 deletions

View file

@ -40,6 +40,9 @@ module DiasporaFederation
# @see https://www.w3.org/TR/REC-xml/#charsets "Extensible Markup Language (XML) 1.0"
INVALID_XML_REGEX = /[^\x09\x0A\x0D\x20-\uD7FF\uE000-\uFFFD\u{10000}-\u{10FFFF}]/
# Regex to validate and find entity names
ENTITY_NAME_REGEX = "[a-z]*(?:_[a-z]*)*".freeze
# Initializes the Entity with the given attribute hash and freezes the created
# instance it returns.
#
@ -145,7 +148,7 @@ module DiasporaFederation
# @param [String] entity_name "snake_case" class name
# @return [Class] entity class
def self.entity_class(entity_name)
raise InvalidEntityName, "'#{entity_name}' is invalid" unless entity_name =~ /\A[a-z]*(_[a-z]*)*\z/
raise InvalidEntityName, "'#{entity_name}' is invalid" unless entity_name =~ /\A#{ENTITY_NAME_REGEX}\z/
class_name = entity_name.sub(/\A[a-z]/, &:upcase)
class_name.gsub!(/_([a-z])/) { Regexp.last_match[1].upcase }

View file

@ -21,7 +21,7 @@ module DiasporaFederation
end
private_class_method def self.entity_name(class_name)
return class_name if class_name =~ /\A[a-z]*(_[a-z]*)*\z/
return class_name if class_name =~ /\A#{Entity::ENTITY_NAME_REGEX}\z/
raise DiasporaFederation::Entity::UnknownEntity, class_name unless Entities.const_defined?(class_name)