diff --git a/src/main/java/com/github/zafarkhaja/semver/VersionParser.java b/src/main/java/com/github/zafarkhaja/semver/VersionParser.java index 25d1c5f..083e774 100644 --- a/src/main/java/com/github/zafarkhaja/semver/VersionParser.java +++ b/src/main/java/com/github/zafarkhaja/semver/VersionParser.java @@ -128,6 +128,21 @@ class VersionParser implements Parser { return true; } }; + + /** + * Gets the type for a given character. + * + * @param chr the character to get the type for + * @return the type of the specified character + */ + static CharType forCharacter(Character chr) { + for (CharType type : values()) { + if (type.isMatchedBy(chr)) { + return type; + } + } + return null; + } } /** diff --git a/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java b/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java index 4eb4d0d..147819e 100644 --- a/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java +++ b/src/test/java/com/github/zafarkhaja/semver/VersionParserCharTypeTest.java @@ -23,6 +23,7 @@ */ package com.github.zafarkhaja.semver; +import com.github.zafarkhaja.semver.VersionParser.CharType; import org.junit.Test; import static com.github.zafarkhaja.semver.VersionParser.CharType.*; import static org.junit.Assert.*; @@ -88,4 +89,15 @@ public class VersionParserCharTypeTest { assertFalse(ILLEGAL.isMatchedBy('a')); assertFalse(ILLEGAL.isMatchedBy('0')); } + + @Test + public void shouldReturnCharTypeForCharacter() { + assertEquals(DIGIT, CharType.forCharacter('1')); + assertEquals(LETTER, CharType.forCharacter('a')); + assertEquals(DOT, CharType.forCharacter('.')); + assertEquals(HYPHEN, CharType.forCharacter('-')); + assertEquals(PLUS, CharType.forCharacter('+')); + assertEquals(EOL, CharType.forCharacter(null)); + assertEquals(ILLEGAL, CharType.forCharacter('!')); + } }