Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
/ mug Public

A small Java 8 library (string manipulation, BiStream, Structured Concurrency, SQL Templates)

License

Notifications You must be signed in to change notification settings

google/mug

Disclaimer: This is not an official Google product.

Mug (Coverage)

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 – streams Map and pair-wise collections
    BiStream.zip(keys, values).toMap()
  • SafeSqllibrary-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 code
  • BinarySearch - 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:

 <dependency>
 <groupId>com.google.mug</groupId>
 <artifactId>mug</artifactId>
 <version>9.9.2</version>
 </dependency>

Add mug-errorprone to your annotationProcessorPaths:

 <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.2</version>
 </path>
 </annotationProcessorPaths>
 </configuration>
 </plugin>
 </plugins>
 </pluginManagement>
 </build>

SafeSql (javadoc):

 <dependency>
 <groupId>com.google.mug</groupId>
 <artifactId>mug-safesql</artifactId>
 <version>9.9.2</version>
 </dependency>

Dot Parse Combinators (javadoc):

 <dependency>
 <groupId>com.google.mug</groupId>
 <artifactId>dot-parse</artifactId>
 <version>9.9.2</version>
 </dependency>

Protobuf utils (javadoc):

 <dependency>
 <groupId>com.google.mug</groupId>
 <artifactId>mug-protobuf</artifactId>
 <version>9.9.2</version>
 </dependency>
Gradle

Add to build.gradle:

 implementation 'com.google.mug:mug:9.9.2'
 implementation 'com.google.mug:mug-safesql:9.9.2'
 implementation 'com.google.mug:dot-parse:9.9.2'
 implementation 'com.google.mug:mug-guava:9.9.2'
 implementation 'com.google.mug:mug-protobuf:9.9.2'

About

A small Java 8 library (string manipulation, BiStream, Structured Concurrency, SQL Templates)

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /