-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix package of PreviewLayout (#5702)
... and also improve (bst) VM (and introduce BstPreviewLayout) * Move PreviewLayout to org.jabref.logic.preview * Modernize code of (bst) VM * Add IEEEtran.bst * Introduce BstPreviewLayout * Fix Bst.g to allow "_" as identifier * Fix quotes and other output of IEEEtran.bst * Use public final instead of getters
- Loading branch information
Showing
27 changed files
with
314 additions
and
95 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Use `public final` instead of getters to offer access to immutable variables | ||
|
||
## Context and Problem Statement | ||
|
||
When making immutable data accessible in a java class, should it be using getters or by non-modifiable fields? | ||
|
||
## Considered Options | ||
|
||
* Offer public static field | ||
* Offer getters | ||
|
||
## Decision Outcome | ||
|
||
Chosen option: "Offer public static field", because getters used to be a convention which was even more manifested due to libraries depending on the existence on getters/setters. In the case of immutable variables, adding public getters is just useless since one is not hiding anything. | ||
|
||
### Positive Consequences | ||
|
||
* Shorter code | ||
|
||
### Negative Consequences | ||
|
||
* new comers could get confused, because getters/setters are still teached |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
package org.jabref.logic.bst; | ||
|
||
import java.nio.file.Files; | ||
import java.nio.file.Path; | ||
import java.util.List; | ||
|
||
import org.jabref.logic.cleanup.ConvertToBibtexCleanup; | ||
import org.jabref.logic.formatter.bibtexfields.RemoveNewlinesFormatter; | ||
import org.jabref.logic.l10n.Localization; | ||
import org.jabref.logic.layout.format.LatexToUnicodeFormatter; | ||
import org.jabref.logic.layout.format.RemoveLatexCommandsFormatter; | ||
import org.jabref.logic.layout.format.RemoveTilde; | ||
import org.jabref.logic.preview.PreviewLayout; | ||
import org.jabref.model.database.BibDatabase; | ||
import org.jabref.model.entry.BibEntry; | ||
|
||
import org.slf4j.Logger; | ||
import org.slf4j.LoggerFactory; | ||
|
||
public class BstPreviewLayout implements PreviewLayout { | ||
|
||
private static final Logger LOGGER = LoggerFactory.getLogger(BstPreviewLayout.class); | ||
|
||
private final String name; | ||
|
||
private VM vm; | ||
private String error; | ||
|
||
public BstPreviewLayout(Path path) { | ||
name = path.getFileName().toString(); | ||
if (!Files.exists(path)) { | ||
LOGGER.error("File {} not found", path.toAbsolutePath()); | ||
error = Localization.lang("Error opening file '%0'.", path.toString()); | ||
return; | ||
} | ||
try { | ||
vm = new VM(path.toFile()); | ||
} catch (Exception e) { | ||
LOGGER.error("Could not read {}.", path.toAbsolutePath(), e); | ||
error = Localization.lang("Error opening file '%0'.", path.toString()); | ||
} | ||
} | ||
|
||
@Override | ||
public String generatePreview(BibEntry originalEntry, BibDatabase database) { | ||
if (error != null) { | ||
return error; | ||
} | ||
// ensure that the entry is of BibTeX format (and do not modify the original entry) | ||
BibEntry entry = (BibEntry) originalEntry.clone(); | ||
new ConvertToBibtexCleanup().cleanup(entry); | ||
String result = vm.run(List.of(entry)); | ||
// Remove all comments | ||
result = result.replaceAll("%.*", ""); | ||
// Remove all LaTeX comments | ||
// The RemoveLatexCommandsFormatter keeps the words inside latex environments. Therefore, we remove them manually | ||
result = result.replace("\\begin{thebibliography}{1}", ""); | ||
result = result.replace("\\end{thebibliography}", ""); | ||
// The RemoveLatexCommandsFormatter keeps the word inside the latex command, but we want to remove that completely | ||
result = result.replaceAll("\\\\bibitem[{].*[}]", ""); | ||
// We want to replace \newblock by a space instead of completely removing it | ||
result = result.replace("\\newblock", " "); | ||
// remove all latex commands statements - assumption: command in a separate line | ||
result = result.replaceAll("(?m)^\\\\.*$", ""); | ||
// remove some IEEEtran.bst output (resulting from a multiline \providecommand) | ||
result = result.replace("#2}}", ""); | ||
// Have quotes right - and more | ||
result = new LatexToUnicodeFormatter().format(result); | ||
result = result.replace("``", "\""); | ||
result = result.replace("''", "\""); | ||
// Final cleanup | ||
result = new RemoveNewlinesFormatter().format(result); | ||
result = new RemoveLatexCommandsFormatter().format(result); | ||
result = new RemoveTilde().format(result); | ||
result = result.trim().replaceAll(" +", " "); | ||
return result; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return name; | ||
} | ||
} |
Oops, something went wrong.