MCPcopy Create free account
hub / github.com/antlr/codebuff / parse

Method parse

output/java_guava/1.4.19/MediaType.java:929–966  ·  view source on GitHub ↗

Parses a media type from its string representation. @throws IllegalArgumentException if the input is not parsable

(String input)

Source from the content-addressed store, hash-verified

927
928
929 public static MediaType parse(String input) {
930 checkNotNull(input);
931 Tokenizer tokenizer = new Tokenizer(input);
932 try {
933 String type = tokenizer.consumeToken(TOKEN_MATCHER);
934 tokenizer.consumeCharacter('/');
935 String subtype = tokenizer.consumeToken(TOKEN_MATCHER);
936 ImmutableListMultimap.Builder<String, String> parameters = ImmutableListMultimap.builder();
937 while (tokenizer.hasMore()) {
938 tokenizer.consumeCharacter(';');
939 tokenizer.consumeTokenIfPresent(LINEAR_WHITE_SPACE);
940 String attribute = tokenizer.consumeToken(TOKEN_MATCHER);
941 tokenizer.consumeCharacter('=');
942
943 final String value;
944 if ('"' == tokenizer.previewChar()) {
945 tokenizer.consumeCharacter('"');
946 StringBuilder valueBuilder = new StringBuilder();
947 while ('"' != tokenizer.previewChar()) {
948 if ('\\' == tokenizer.previewChar()) {
949 tokenizer.consumeCharacter('\\');
950 valueBuilder.append(tokenizer.consumeCharacter(ascii()));
951 } else {
952 valueBuilder.append(tokenizer.consumeToken(QUOTED_TEXT_MATCHER));
953 }
954 }
955 value = valueBuilder.toString();
956 tokenizer.consumeCharacter('"');
957 } else {
958 value = tokenizer.consumeToken(TOKEN_MATCHER);
959 }
960 parameters.put(attribute, value);
961 }
962 return create(type, subtype, parameters.build());
963 } catch (IllegalStateException e) {
964 throw new IllegalArgumentException("Could not parse '" + input + "'", e);
965 }
966 }
967
968 private static final class Tokenizer {
969 final String input;

Callers

nothing calls this directly

Calls 13

consumeTokenMethod · 0.95
consumeCharacterMethod · 0.95
builderMethod · 0.95
hasMoreMethod · 0.95
consumeTokenIfPresentMethod · 0.95
previewCharMethod · 0.95
createMethod · 0.95
toStringMethod · 0.65
putMethod · 0.65
checkNotNullMethod · 0.45
appendMethod · 0.45
asciiMethod · 0.45

Tested by

no test coverage detected