Skip to content

String formatting library for Java, Android, Web and Unix Terminal

License

Notifications You must be signed in to change notification settings

pwittchen/kirai

Repository files navigation

Kirai

Build Status Android Arsenal Maven Central codecov

Kirai means phrase in Swahili language. It's string formatting library for Java, Android, Web and Unix Terminal.

Project is inspired by phrase, TaggerString and BabushkaText. Kirai has fluent API similar to phrase with additional formatting similar to TaggerString and allows to add formatted pieces of text like BabushkaText.

JavaDoc is available at: http://pwittchen.github.io/kirai/

Library is compatible with Java 1.7 and higher. It should work with Java 1.6 and is compatible with Android applications.

Contents

Usage

Basic

CharSequence formatted = Kirai
  .from("Hi {first_name}, your are {age} years old.")
  .put("first_name", firstName)
  .put("age", age)
  .format();

Android

CharSequence formatted = Kirai
  .from("Hi {first_name}, your are {age} years old.")
  .put(HtmlPiece.put("first_name", firstName).bold().italic().big())
  .put(HtmlPiece.put("age", age).underline().color("#FF0000"))
  .format(new Formatter() {
    @Override public CharSequence format(String input) {
      return Html.fromHtml(input);
    }
  });

Code above will generate formatted text and can be used in Android TextView as follows:

textView.setText(formatted);

Web

CharSequence formatted = Kirai
  .from("Hi {first_name}, your are {age} years old.")
  .put(HtmlPiece.put("first_name", firstName).bold().italic().big())
  .put(HtmlPiece.put("age", age).underline().color("#FF0000"))
  .format();

Code above will generate text formatted with HTML tags.

Terminal

CharSequence formatted = Kirai
  .from("Hi {first_name}, your are {age} years old.")
  .put(TerminalPiece.put("first_name", firstName).background(TerminalBgColor.DARK_GRAY).bold())
  .put(TerminalPiece.put("age", age).color(TerminalColor.CYAN).underline())
  .format();

Code above will generate formatted text ready to display in Unix terminal as follows:

System.out.println(formatted);

instead of TerminalColor and TerminalBgColor enums we can pass color code as a string to color(string) method and it will work as well. We can use it for setting foreground and background color. For the reference of color codes take a look at http://misc.flogisoft.com/bash/tip_colors_and_formatting website.

Download

You can depend on the library through Maven:

<dependency>
    <groupId>com.github.pwittchen.kirai</groupId>
    <artifactId>library</artifactId>
    <version>1.4.1</version>
</dependency>

or through Gradle:

dependencies {
  compile 'com.github.pwittchen.kirai:library:1.4.1'
}

Building project

To build project, run the following command:

./gradlew build

Tests

Unit Tests are available in library/src/test directory. They can be run from IntelliJ IDEA or CLI with Gradle Wrapper. Tests were written according to TDD methodology. They determine library specification and check if project is fault-tolerant. Code Coverage is monitored by codecov.io integrated with Travis CI.

To execute tests, run the following command:

./gradlew test

To generate code coverage report, run the following command:

./gradlew jacocoTestReport

All reports are generated in build/reports/ directory.

Static Code Analysis

Project has Static Code Analysis configured in build.gradle file. It consists of CheckStyle, PMD and FindBugs.

Static Code Analysis can be executed with the following command:

./gradlew check

Code style

Code style used in the project is called Square from Java Code Styles repository by Square available at: https://github.com/square/java-code-styles.

License

Copyright 2015 Piotr Wittchen

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.