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

Method parse

output/java_guava/1.4.18/MediaType.java:928–965  ·  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

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