From 9342d6482ac671319bc3c4e0f00a269c95516938 Mon Sep 17 00:00:00 2001 From: Tomas Aparicio Date: Sun, 4 Oct 2015 10:05:05 +0100 Subject: [PATCH] refactor(type): simplify image type matching --- metadata.go | 2 +- type.go | 48 +++++++++++++++++++++--------------------------- type_test.go | 2 +- 3 files changed, 23 insertions(+), 29 deletions(-) diff --git a/metadata.go b/metadata.go index 1ec26de..c1e311a 100644 --- a/metadata.go +++ b/metadata.go @@ -68,7 +68,7 @@ func Metadata(buf []byte) (ImageMetadata, error) { Alpha: vipsHasAlpha(image), Profile: vipsHasProfile(image), Space: vipsSpace(image), - Type: getImageTypeName(imageType), + Type: ImageTypeName(imageType), } return metadata, nil diff --git a/type.go b/type.go index 3be6dd4..4077231 100644 --- a/type.go +++ b/type.go @@ -11,6 +11,15 @@ const ( MAGICK ) +// Pairs of image type and its name +var ImageTypes = map[ImageType]string{ + JPEG: "jpeg", + PNG: "png", + WEBP: "webp", + TIFF: "tiff", + MAGICK: "magick", +} + // Determines the image type format (jpeg, png, webp or tiff) func DetermineImageType(buf []byte) ImageType { return vipsImageType(buf) @@ -18,43 +27,28 @@ func DetermineImageType(buf []byte) ImageType { // Determines the image type format by name (jpeg, png, webp or tiff) func DetermineImageTypeName(buf []byte) string { - return getImageTypeName(vipsImageType(buf)) + return ImageTypeName(vipsImageType(buf)) } // Check if a given image type is supported func IsTypeSupported(t ImageType) bool { - return t == JPEG || t == PNG || t == WEBP || t == MAGICK + return ImageTypes[t] != "" } // Check if a given image type name is supported func IsTypeNameSupported(t string) bool { - return t == "jpeg" || - t == "jpg" || - t == "png" || - t == "webp" || - t == "magick" + for _, name := range ImageTypes { + if name == t { + return true + } + } + return false } -func getImageTypeName(code ImageType) string { - imageType := "unknown" - - switch { - case code == JPEG: - imageType = "jpeg" - break - case code == WEBP: - imageType = "webp" - break - case code == PNG: - imageType = "png" - break - case code == TIFF: - imageType = "tiff" - break - case code == MAGICK: - imageType = "magick" - break +func ImageTypeName(t ImageType) string { + imageType := ImageTypes[t] + if imageType == "" { + return "unknown" } - return imageType } diff --git a/type_test.go b/type_test.go index 534f738..68e6d21 100644 --- a/type_test.go +++ b/type_test.go @@ -68,7 +68,7 @@ func TestIsTypeNameSupported(t *testing.T) { name string expected bool }{ - {"jpg", true}, + {"jpeg", true}, {"png", true}, {"webp", true}, {"gif", false},