Make regexes more readable

This commit is contained in:
Michael Kozono 2017-11-08 12:44:49 -08:00
parent 41412fec5b
commit 7c43692f68
2 changed files with 13 additions and 13 deletions

View file

@ -5,7 +5,8 @@ module Gitlab
self.table_name = 'unhashed_upload_files' self.table_name = 'unhashed_upload_files'
# Ends with /:random_hex/:filename # Ends with /:random_hex/:filename
FILE_UPLOADER_PATH_PATTERN = /\/\h+\/[^\/]+\z/ FILE_UPLOADER_PATH_PATTERN = %r{/\h+/[^/]+\z}
FILE_UPLOADER_CAPTURE_FULL_PATH_PATTERN = %r{\A(.+)#{FILE_UPLOADER_PATH_PATTERN}}
# These regex patterns are tested against a relative path, relative to # These regex patterns are tested against a relative path, relative to
# the upload directory. # the upload directory.
@ -13,32 +14,32 @@ module Gitlab
# it indicates the model_id. # it indicates the model_id.
PATH_PATTERNS = [ PATH_PATTERNS = [
{ {
pattern: /\A-\/system\/appearance\/logo\/(\d+)/, pattern: %r{\A-/system/appearance/logo/(\d+)/},
uploader: 'AttachmentUploader', uploader: 'AttachmentUploader',
model_type: 'Appearance' model_type: 'Appearance'
}, },
{ {
pattern: /\A-\/system\/appearance\/header_logo\/(\d+)/, pattern: %r{\A-/system/appearance/header_logo/(\d+)/},
uploader: 'AttachmentUploader', uploader: 'AttachmentUploader',
model_type: 'Appearance' model_type: 'Appearance'
}, },
{ {
pattern: /\A-\/system\/note\/attachment\/(\d+)/, pattern: %r{\A-/system/note/attachment/(\d+)/},
uploader: 'AttachmentUploader', uploader: 'AttachmentUploader',
model_type: 'Note' model_type: 'Note'
}, },
{ {
pattern: /\A-\/system\/user\/avatar\/(\d+)/, pattern: %r{\A-/system/user/avatar/(\d+)/},
uploader: 'AvatarUploader', uploader: 'AvatarUploader',
model_type: 'User' model_type: 'User'
}, },
{ {
pattern: /\A-\/system\/group\/avatar\/(\d+)/, pattern: %r{\A-/system/group/avatar/(\d+)/},
uploader: 'AvatarUploader', uploader: 'AvatarUploader',
model_type: 'Namespace' model_type: 'Namespace'
}, },
{ {
pattern: /\A-\/system\/project\/avatar\/(\d+)/, pattern: %r{\A-/system/project/avatar/(\d+)/},
uploader: 'AvatarUploader', uploader: 'AvatarUploader',
model_type: 'Project' model_type: 'Project'
}, },
@ -90,7 +91,7 @@ module Gitlab
if uploader == 'FileUploader' if uploader == 'FileUploader'
# Path relative to project directory in uploads # Path relative to project directory in uploads
matchd = path_relative_to_upload_dir.match(FILE_UPLOADER_PATH_PATTERN) matchd = path_relative_to_upload_dir.match(FILE_UPLOADER_PATH_PATTERN)
matchd[0].sub(/\A\//, '') # remove leading slash matchd[0].sub(%r{\A/}, '') # remove leading slash
else else
path_relative_to_carrierwave_root path_relative_to_carrierwave_root
end end
@ -120,7 +121,7 @@ module Gitlab
# Not including a leading slash # Not including a leading slash
def path_relative_to_upload_dir def path_relative_to_upload_dir
@path_relative_to_upload_dir ||= path.sub(/\A#{Gitlab::BackgroundMigration::PrepareUnhashedUploads::UPLOAD_DIR}\//, '') @path_relative_to_upload_dir ||= path.sub(%r{\A#{Gitlab::BackgroundMigration::PrepareUnhashedUploads::UPLOAD_DIR}/}, '')
end end
# Not including a leading slash # Not including a leading slash
@ -141,8 +142,7 @@ module Gitlab
end end
def file_uploader_model_id def file_uploader_model_id
pattern_to_capture_full_path = /\A(.+)#{FILE_UPLOADER_PATH_PATTERN}/ matchd = path_relative_to_upload_dir.match(FILE_UPLOADER_CAPTURE_FULL_PATH_PATTERN)
matchd = path_relative_to_upload_dir.match(pattern_to_capture_full_path)
raise "Could not capture project full_path from a FileUploader path: \"#{path_relative_to_upload_dir}\"" unless matchd raise "Could not capture project full_path from a FileUploader path: \"#{path_relative_to_upload_dir}\"" unless matchd
full_path = matchd[1] full_path = matchd[1]
project = Project.find_by_full_path(full_path) project = Project.find_by_full_path(full_path)

View file

@ -59,7 +59,7 @@ describe TrackUntrackedUploads, :migration, :sidekiq do
user1.update(avatar: uploaded_file) user1.update(avatar: uploaded_file)
project1.update(avatar: uploaded_file) project1.update(avatar: uploaded_file)
upload_result = UploadService.new(project1, uploaded_file, FileUploader).execute # Markdown upload upload_result = UploadService.new(project1, uploaded_file, FileUploader).execute # Markdown upload
@project1_markdown_upload_path = upload_result[:url].sub(/\A\/uploads\//, '') @project1_markdown_upload_path = upload_result[:url].sub(%r{\A/uploads/}, '')
appearance.update(logo: uploaded_file) appearance.update(logo: uploaded_file)
# Untracked, by doing normal file upload then deleting records from DB # Untracked, by doing normal file upload then deleting records from DB
@ -68,7 +68,7 @@ describe TrackUntrackedUploads, :migration, :sidekiq do
user2.uploads.delete_all user2.uploads.delete_all
project2.update(avatar: uploaded_file) project2.update(avatar: uploaded_file)
upload_result = UploadService.new(project2, uploaded_file, FileUploader).execute # Markdown upload upload_result = UploadService.new(project2, uploaded_file, FileUploader).execute # Markdown upload
@project2_markdown_upload_path = upload_result[:url].sub(/\A\/uploads\//, '') @project2_markdown_upload_path = upload_result[:url].sub(%r{\A/uploads/}, '')
project2.uploads.delete_all project2.uploads.delete_all
appearance.update(header_logo: uploaded_file) appearance.update(header_logo: uploaded_file)
appearance.uploads.last.destroy appearance.uploads.last.destroy