Update coverage badges
/isclaimer: This is not an official Google product.
A small Java 8+ string processing and streams library (javadoc), widely used in Google’s internal Java codebase, with 0 deps (Proto, BigQuery, Guava addons are in separate artifacts).
Substring
Substring.between("(", ")").from("call(foo)") → "foo"
StringFormat
new StringFormat("/home/{user}/{date}").parse(filePath, (user, date) -> ...)
Parser
zeroOrMore(noneOf("\'")).immediatelyBetween("'", "'").parse(input);
BiStream
Map
BiStream.zip(keys, values).toMap()
SafeSql
SafeSql.of("select id, `{col}` from Users where id = {id}", col, id)
DateTimeFormats
DateTimeFormatter format = formatOf("2024-03-14 10:00:00.123 America/New_York")
Iteration
BinarySearch
BinarySearch.inSortedArrayWithTolerance(doubleArray, 0.0001).find(target)
StructuredConcurrency
concurrently(() -> fetchArm(), () -> fetchLeg(), (arm, leg) -> makeRobot(arm, leg))
MoreStreams
whileNotNull(queue::poll).filter(...).map(...)
Optionals
return optionally(obj.hasFoo(), obj::getFoo);
Add the following to pom.xml:
<dependency> <groupId>com.google.mug</groupId> <artifactId>mug</artifactId> <version>9.9.9</version> </dependency>
Add mug-errorprone to your annotationProcessorPaths:
mug-errorprone
<build> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <annotationProcessorPaths> <path> <groupId>com.google.errorprone</groupId> <artifactId>error_prone_core</artifactId> <version>2.23.0</version> </path> <path> <groupId>com.google.mug</groupId> <artifactId>mug-errorprone</artifactId> <version>9.9.9</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </pluginManagement> </build>
SafeSql (javadoc):
<dependency> <groupId>com.google.mug</groupId> <artifactId>mug-safesql</artifactId> <version>9.9.9</version> </dependency>
Dot Parse Combinators (javadoc):
<dependency> <groupId>com.google.mug</groupId> <artifactId>dot-parse</artifactId> <version>9.9.9</version> </dependency>
Protobuf utils (javadoc):
<dependency> <groupId>com.google.mug</groupId> <artifactId>mug-protobuf</artifactId> <version>9.9.9</version> </dependency>
Add to build.gradle:
implementation 'com.google.mug:mug:9.9.9' implementation 'com.google.mug:mug-safesql:9.9.9' implementation 'com.google.mug:dot-parse:9.9.9' implementation 'com.google.mug:mug-guava:9.9.9' implementation 'com.google.mug:mug-protobuf:9.9.9'
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802032778号
/isclaimer: This is not an official Google product.
Mug (
)
A small Java 8+ string processing and streams library (javadoc), widely used in Google’s internal Java codebase, with 0 deps (Proto, BigQuery, Guava addons are in separate artifacts).
Highlights
Substring– composable substring extraction & manipulation→
Substring.between("(", ")").from("call(foo)") → "foo"StringFormat– compile-time-safe bidirectional parsing/formatting→
new StringFormat("/home/{user}/{date}").parse(filePath, (user, date) -> ...)Parser– easier and faster than regex→
zeroOrMore(noneOf("\'")).immediatelyBetween("'", "'").parse(input);BiStream– streamsMapand pair-wise collections→
BiStream.zip(keys, values).toMap()SafeSql– library-enforced safe, composable SQL template→
SafeSql.of("select id, `{col}` from Users where id = {id}", col, id)More tools
DateTimeFormats– parse datetimes by example→
DateTimeFormatter format = formatOf("2024-03-14 10:00:00.123 America/New_York")Iteration- implement lazy stream with recursive codeBinarySearch- solve LeetCode binary search problems→
BinarySearch.inSortedArrayWithTolerance(doubleArray, 0.0001).find(target)StructuredConcurrency- simple structured concurrency on virtual threads→
concurrently(() -> fetchArm(), () -> fetchLeg(), (arm, leg) -> makeRobot(arm, leg))MoreStreams→
whileNotNull(queue::poll).filter(...).map(...)Optionals→
return optionally(obj.hasFoo(), obj::getFoo);Installation
Maven
Add the following to pom.xml:
Add
mug-errorproneto your annotationProcessorPaths:SafeSql (javadoc):
Dot Parse Combinators (javadoc):
Protobuf utils (javadoc):
Gradle
Add to build.gradle: