-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix package of PreviewLayout #5702
Changes from 7 commits
820a7e8
046928c
eeb1c27
2d4eb08
f16d690
30e0ac3
fbde17a
be142d5
68b8d0a
6865b13
6b9ce8a
ad392c8
62c7c76
a026538
983aaa2
f6ee3ac
a89b7a1
d72b8dc
c64ce4a
09a4e90
0323f2c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package org.jabref.logic.bst; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would move this also to the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see |
||
|
||
import java.nio.file.Files; | ||
import java.nio.file.Path; | ||
import java.nio.file.Paths; | ||
import java.util.List; | ||
|
||
import org.jabref.logic.PreviewLayout; | ||
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.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(String filename) { | ||
this(Paths.get(filename)); | ||
} | ||
|
||
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 entry, BibDatabase database) { | ||
if (error != null) { | ||
return error; | ||
} | ||
// ensure that the entry is of BibTeX format (and do not modify the original entry) | ||
entry = (BibEntry) entry.clone(); | ||
koppor marked this conversation as resolved.
Show resolved
Hide resolved
|
||
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; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why did you moved this? I find
citationstyle
is a pretty fitting package for all preview-related stuff.PreviewLayout
is definitely not important enough to directly lie in thelogic
package.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Our two other classes for previews reside in different packages:
I moved the
PreviewLayout
now toorg.jabref.logic.preview
, which is not perfect, but better than inorg.jabref.logic
.