Extract regex for entity names
This commit is contained in:
parent
faf48e1dd4
commit
457f06d1da
2 changed files with 5 additions and 2 deletions
|
|
@ -40,6 +40,9 @@ module DiasporaFederation
|
||||||
# @see https://www.w3.org/TR/REC-xml/#charsets "Extensible Markup Language (XML) 1.0"
|
# @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}]/
|
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
|
# Initializes the Entity with the given attribute hash and freezes the created
|
||||||
# instance it returns.
|
# instance it returns.
|
||||||
#
|
#
|
||||||
|
|
@ -145,7 +148,7 @@ module DiasporaFederation
|
||||||
# @param [String] entity_name "snake_case" class name
|
# @param [String] entity_name "snake_case" class name
|
||||||
# @return [Class] entity class
|
# @return [Class] entity class
|
||||||
def self.entity_class(entity_name)
|
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 = entity_name.sub(/\A[a-z]/, &:upcase)
|
||||||
class_name.gsub!(/_([a-z])/) { Regexp.last_match[1].upcase }
|
class_name.gsub!(/_([a-z])/) { Regexp.last_match[1].upcase }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ module DiasporaFederation
|
||||||
end
|
end
|
||||||
|
|
||||||
private_class_method def self.entity_name(class_name)
|
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)
|
raise DiasporaFederation::Entity::UnknownEntity, class_name unless Entities.const_defined?(class_name)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue