Skip to content

Token Replacer is a simple and small Java Library that helps replacing tokens in strings. You can replace the tokens with static values or create values "on-the-fly" by calling a generator. You can even pass arguments to the generator which makes it pretty powerful.

License

Notifications You must be signed in to change notification settings

niesfisch/tokenreplacer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b949110 · May 18, 2018

History

89 Commits
Jul 10, 2011
Nov 28, 2011
Apr 22, 2011
Sep 28, 2010
Apr 21, 2011
May 14, 2018
May 18, 2018
Sep 29, 2010
Dec 18, 2011
Dec 18, 2011
Dec 18, 2011

Repository files navigation

What's that for?

Token Replacer is a simple and small Java Library that helps replacing tokens in strings.

You can replace tokens with simple static strings:

String toReplace = "i can count to {number}";
String result = new Toky().register("number", "123").substitute(toReplace);
System.out.println(result); // i can count to 123

or strings generated "on-the-fly":

String toReplace = "i can count to {number}";
String result = new Toky().register(new Token("number").replacedBy(new Generator() {
    
	@Override
	public void inject(String[] args) {
	    // store the arguments
	}

	@Override
	public String generate() {
	    return "123"; // some very sophisticated stuff happens here :), we just return 123 to keep it simple
	}
})).substitute(toReplace);
System.out.println(result); // i can count to 123

You can even pass arguments to the generator which makes it pretty powerful:

String toReplace = "i can count to {number(1,2,3)}";
String result = new Toky().register(new Token("number").replacedBy(new Generator() {
    
	@Override
	public void inject(String[] args) {
	    // store the arguments
	}

	@Override
	public String generate() {
	    return args[0] + args[1] + args[2]; // some very sophisticated stuff happens here :)
	}
})).substitute(toReplace);
System.out.println(result); // i can count to 123

If you prefer to use index based tokens, you can also use this:

toky.register(new String[] { "one", "two", "three" });
toky.substitute("abc {0} {1} {2} def"); // will produce "abc one two three def";

Getting the Jar File

via Maven:

<dependency>
    <groupId>de.marcelsauer</groupId>
    <artifactId>tokenreplacer</artifactId>
    <version>1.3.2</version>
</dependency>

or just take the latest "tokenreplacer-x.y.jar" from the downloads section and put it in your classpath. If you also need the sources and javadoc download the "tokenreplacer-x.y-sources.jar" / "tokenreplacer-x.y-javadoc.jar".

Licence

Version >= 1.2 -> Apache 2.0 http://www.apache.org/licenses/LICENSE-2.0.txt

Version <= 1.1 -> GPL 3

Release Notes

Release Notes

Usage

simplest use case, only static values

TokenReplacer toky = new Toky().register("number", "123");
toky.substitute("i can count to {number}");

is same as registering an explicit {@link Token}

toky = new Toky().register(new Token("number").replacedBy("123"));
toky.substitute("i can count to {number}");

we can also use a {@link Generator} to dynamically get the value (which here does not really make sense ;-))

toky = new Toky().register(new Token("number").replacedBy(new Generator() {

	 @Override
	 public void inject(String[] args) {
	     // not relevant here
	 }

	 @Override
	 public String generate() {
	     return "123";
	 }
}));

here we use a generator and pass the arguments "a,b,c" to it, they will be injected via {@link Generator#inject(String[] args)} before the call to {@link Generator#generate()} is done. it is up to the generator to decide what to do with them. this feature makes handling tokens pretty powerful because you can write very dynamic generators.

toky.substitute("i can count to {number(a,b,c)}");

if you prefer to use index based tokens, you can also use this:

toky.register(new String[] { "one", "two", "three" });
toky.substitute("abc {0} {1} {2} def"); // will produce "abc one two three def";

of course you can replace all default delimiters with your preferred ones, just make sure start and end are different.

toky.withTokenStart("*"); // default is '{'
toky.withTokenEnd("#"); // default is '}'
toky.withArgumentDelimiter(";"); // default is ','
toky.withArgumentStart("["); // default is '('
toky.withArgumentEnd("]"); // default is ')'

by default Toky will throw IllegalStateExceptions if there was no matching value or generator found for a token. you can enable/disable generating exceptions.

toky.doNotIgnoreMissingValues(); // which is the DEFAULT

will turn error reporting for missing values OFF

toky.ignoreMissingValues();

you can enable/disable generator caching. if you enable caching once a generator for a token returned a value this value will be used for all subsequent tokens with the same name

toky.enableGeneratorCaching();
toky.disableGeneratorCaching();

More Samples

Have a look at the unit test of Toky to see some more samples

peeking into the source code and building from scratch

$ git clone http://github.com/niesfisch/tokenreplacer.git tokenreplacer
$ cd tokenreplacer
$ mvn clean install

About

Token Replacer is a simple and small Java Library that helps replacing tokens in strings. You can replace the tokens with static values or create values "on-the-fly" by calling a generator. You can even pass arguments to the generator which makes it pretty powerful.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages