Hi folks!
I wrote a little library, just as an exercise to grasp techniques
around DSLs and fluent interfaces, that provides a fluent layer upon
java.util.List and java.lang.String(and StringBuilder).
The project can be reached here: http://code.google.com/p/jfluent/
Here's an example of what you can do with the library, in pure Java:
import static com.jfluent.builders.BuilderFacade.*;
import com.jfluent.base.*;
public class FluentSimpleTest {
public static void main(String[] args) {
string("o hai!")
.append(" ")
.append(
list("i", "can", "has", "cheezburger", "plz", "?")
.map(new Function<String, String>() {
public String apply(String element) {
return element + " ";
}
})
.get())
.append("\n")
.append(
list(range('A', 'Z'))
.reverse()
.filter(new Predicate<Character>() {
public boolean apply(Character c) {
return c > 'M';
}
})
.join(","))
.println(System.out);
}
}
Output:
o hai! i can has cheezburger plz ?
Z,Y,X,W,V,U,T,S,R,Q,P,O,N
I don't know if it's a dream or a nightmare for you :) but i'd like to
hear any kind of opinions, critics, possible improvements, etc...
The library is in ALPHA stage, it lacks lots of documentation, but
your IDE should be enough since intellisense should guide you through.
Most methods are just wrapped on the java's ones.
Thanks for listening!
Stefan Ram - 21 Apr 2008 13:59 GMT
>around DSLs and fluent interfaces, that provides a fluent layer upon
See also
http://stephan.reposita.org/archives/2007/10/17/creating-a-fluent-interface-for-
google-collections/
When I first heard of »fluent interface«, I misunderstood the
meaning of the term somewhat: I thought, it was about trying
to make an expression or statement of a programming language
to be a legible English language phrase or sentence, too.
For example, IIRC Sun Microsystems, Inc. uses code like:
value.add( other );
while with my own big number class, I use:
value.plus( other );
which to me sounds more like a legible English phrase.
http://google.to/search?q=%22one+*+one+makes+two%22