Top Description Fields Constructors Methods
org.jabref.logic.layout.format

public Class NameFormatter

extends Object
implements LayoutFormatter
Class Inheritance
All Implemented Interfaces
org.jabref.logic.layout.LayoutFormatter
Imports
java.util.HashMap, .List, .Map, .Objects, org.jabref.logic.bst.util.BstNameFormatter, org.jabref.logic.layout.LayoutFormatter, org.jabref.model.entry.AuthorList

This layout formatter uses the Bibtex name.format$ method and provides ultimate flexibility: The formatter needs a parameter to be passed in that follows the following format: <case1>@<range11>@"<format>"@<range12>@"<format>"@<range13>...@@ <case2>@<range21>@... and so on. Individual cases are separated by @@ and items in a case by @. Cases are just integers or the character * and will tell the formatter to apply the following formats if there are less or equal authors given to it. The cases must be in strict increasing order with the * in the last position. For instance: case1 = 2 case2 = 3 case3 = * Ranges are either <integer>..<integer>, <integer> or the character * using a 1 based index for indexing authors from the given authorlist. Integer indexes can be negative to denote them to start from the end of the list where -1 is the last author. For instance with an authorlist of "Joe Doe and Mary Jane and Bruce Bar and Arthur Kay": 1..3 will affect Joe, Mary and Bruce 4..4 will affect Arthur * will affect all of them 2..-1 will affect Mary, Bruce and Arthur The <format> uses the Bibtex formatter format: The four letter v, f, l, j indicate the name parts von, first, last, jr which are used within curly braces. A single letter v, f, l, j indicates that the name should be abbreviated. To put a quote in the format string quote it using \" (mh. this doesn't work yet) I give some examples but would rather point you to the bibtex documentation. "{ll}, {f}." Will turn "Joe Doe" into "Doe, J." Complete example: To turn: "Joe Doe and Mary Jane and Bruce Bar and Arthur Kay" into "Doe, J., Jane, M., Bar, B. and Kay, A." you would use 1@*@{ll}, {f}.@@2@1@{ll}, {f}.@2@ and {ll}, {f}.@@*@1..-3@{ll}, {f}., @-2@{ll}, {f}.@-1@ and {ll}, {f}. Yeah this is trouble-some to write, but should work. For more examples see the test-cases.

Field Summary

Modifier and TypeField and Description
public static final String
private String

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
private static String
format(String toFormat, AuthorList al, String[] formats)

public String
format(String toFormat, String inParameters)

public String
format(String
The text to layout.
fieldText
)

Implements org.jabref.logic.layout.LayoutFormatter.format.

Failure Mode:

Formatters should be robust in the sense that they always return some relevant string.

public static Map<String, String>
public void
setParameter(String parameter)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

DEFAULT_FORMATback to summary
public static final String DEFAULT_FORMAT
parameterback to summary
private String parameter

Constructor Detail

NameFormatterback to summary
public NameFormatter()

Method Detail

formatback to summary
private static String format(String toFormat, AuthorList al, String[] formats)
formatback to summary
public String format(String toFormat, String inParameters)
formatback to summary
public String format(String fieldText)

Implements org.jabref.logic.layout.LayoutFormatter.format.

Doc from org.jabref.logic.layout.LayoutFormatter.format.

Failure Mode:

Formatters should be robust in the sense that they always return some relevant string.

If the formatter can detect an invalid input it should return the original string otherwise it may simply return a wrong output.

Parameters
fieldText:String

The text to layout.

Returns:String

The layouted text.

Annotations
@Override
getNameFormattersback to summary
public static Map<String, String> getNameFormatters(NameFormatterPreferences prefs)
setParameterback to summary
public void setParameter(String parameter)