Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Improve serialization to fix #4877 #5838

Merged
merged 8 commits into from
Jan 17, 2020
Merged

Improve serialization to fix #4877 #5838

merged 8 commits into from
Jan 17, 2020

Conversation

tobiasdiez
Copy link
Member

@tobiasdiez tobiasdiez commented Jan 17, 2020

Hopefully, fixes #4877 for good. Reason for the remaining issue is described in #4877 (comment).
This is fixed in this PR by:

  • Consistently remember in the metadata which encoding was used when saving
  • The library mode is already determined (if not set explicitly by the user - which should be the normal case) upon import/loading instead of at an arbitrary point when the mode is first used.
  • No longer format field values upon writing, instead the written field values coincide exactly with the field values contained in the entry. The little pre-save processing (newlines, trim values) is now implemented as a mandatory save action.

Along the way, I refactored a bit of code (biggest change: remove Defaults class) and fixed very small code issues.

@tobiasdiez tobiasdiez added the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label Jan 17, 2020
Copy link
Member

@Siedlerchr Siedlerchr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the awesome work!
Looks good in general, but I only think that the Latex Field Formatter is used/could have been used in the custom export format templates.

We should at least document the change

@tobiasdiez
Copy link
Member Author

The LatexFieldFormatter was actually only used for writing normal fields. I also thought that it pre-formats the field value, but it turns out that it actually contained all the logic surrounding bibtex-strings (i.e. brackets needed or not) and a bit of pre-processing. This is why I renamed it now to FieldWriter which should better reflect what this class does.

Copy link
Member

@koppor koppor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general LGTM 👍

Brave, that we switch to "BibLaTeX" as default mode. Let's see, what will happen out there.

I fixed some micro things (test case names switched (b/c biblatex being the new default mode)) and a missing space.

I think, one test case was not re-added as test to the new formatters. Would it be OK for you to add this test? 😇

@@ -515,24 +515,6 @@ void doNotWriteEmptyFields() throws IOException {
assertEquals(expected, actual);
}

@Test
void trimFieldContents() throws IOException {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we keep this test --> maybe for the whitespace removal thing?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I moved the test to the database writer as this is the new place where the field content is trimmed.
https://github.com/JabRef/jabref/pull/5838/files#diff-128297a947efc0b9e025fd5541c72376R650

@koppor
Copy link
Member

koppor commented Jan 17, 2020

I think, if the .bib file has LF endings, multine fields will be written using CRLF on Windows. - Should we add the line feed property to the meta data? Or just convert the bib file completely to LF upon write (not recommended)

@tobiasdiez
Copy link
Member Author

Thanks for the quick (and positive) reviews. I'll merge now.

I didn't change the logic of the newline normalization (just the place where it occurs). I guess it might be indeed a good idea to make the line ending configurable per database - on the other hand, no user complained so far.

@koppor
Copy link
Member

koppor commented Jan 18, 2020

Because the blame git for issues ^^. Saw that often. I also wondered when opening some bib files in Notepad++, why we have mixed line endings. Now I know it. Hope, someone will work on the fix. It is so annoying if git complains about line endings and one does not know why.

Siedlerchr added a commit that referenced this pull request Jan 18, 2020
# By Oliver Kopp (4) and others
# Via github actions (3) and Christoph (1)
* upstream/master:
  Fix missing file extension for downloaded files. Fixes #5816 by falling back to PDF as default file type. (#5841)
  The PDF has a title - try another publication without an available PDF (#5840)
  Fix BibTeX VM for IEEE (and some micro other fixes) (#5839)
  Squashed 'src/main/resources/csl-styles/' changes from 19c89f5..9c0f5c6
  Improve serialization to fix #4877 (#5838)
  Build on all branches
  update unirest (#5836)
  Squashed 'src/main/resources/csl-locales/' changes from a3e8843f75..41da445acc
  Squashed 'src/main/resources/csl-styles/' changes from bb01625..19c89f5
  Build binaries only when src/main changes (#5806)
  Bump archunit-junit5-api from 0.12.0 to 0.13.0 (#5827)
  Bump classgraph from 4.8.59 to 4.8.60 (#5828)
  Bump mariadb-java-client from 2.5.2 to 2.5.3 (#5829)
  Update jdk to build 30
  Improve change detection (#5824)

# Conflicts:
#	src/main/resources/l10n/JabRef_en.properties
@wujastyk
Copy link

wujastyk commented Feb 6, 2020

Sorry, I just made this comment under #4877, which is probably the wrong place to have made it.

@koppor
Copy link
Member

koppor commented Nov 8, 2021

Wrong line endings reported at JabRef#390

koppor pushed a commit that referenced this pull request Jan 15, 2022
5563ccc Update american-society-for-microbiology.csl (#5842)
19ab80f Merge pull request #5843 from POBrien333/patch-1002
d4a6c6d double trouble
424f7fe in-text >> superscript for T&F ACS style
605253c Merge pull request #5837 from POBrien333/patch-998
eb5417d Merge pull request #5838 from alessandro-gentilini/patch-1
7d2d3f5 Fix typo
9f557b5 Re-indent CSL styles
f587e60 polyglot style
3a3fe2c Create journal-fur-kulturpflanzen-journal-of-cultivated-plants.csl
cb24633 Merge pull request #5826 from dstark/patch-7
2590a6c Merge pull request #5833 from POBrien333/patch-997
5b2481e Create nist-techpubs-jres.csl (#5756)
d2a1a49 Re-indent CSL styles
42c51d1 Update tyndale-bulletin.csl
8dae693 rework style
070586b Localize IEEE dates (#5835)
588fbfe Hopefully fix sorting in CSE author-date (#5834)
1291d72 Update physiotherapy-theory-and-practice.csl
1a64076 New Style for "Neue Kriminalpolitik (Deutsch)" (#5586)
eac93a0 Create physiotherapy-theory-and-practice.csl
2e7a9f6 Merge pull request #5832 from POBrien333/patch-996
4dfad5f Update administrative-science-quarterly.csl
f56db0f Merge pull request #5829 from benthamite/patch-1
526b0b3 Update effective-altruism-wiki.csl
e5b11eb Update effective-altruism-wiki.csl
f2a7301 Update effective-altruism-wiki.csl
5b166c2 Update university-of-roehampton-harvard.csl (#5831)
b231514 Update european-society-of-cardiology.csl (#5519)
dbd902c Re-indent CSL styles
fe8892b Update effective-altruism-wiki.csl
734fa7d Update effective-altruism-wiki.csl
2430a32 Create effective-altruism-wiki.csl
a5101b6 update modern-pathology.csl (#5828)
16f77c8 Update tyndale-bulletin.csl
ea8804e Create the-korean-journal-of-mycology.csl (#5822)
22d8be0 Patch 3 (#5825)
0220ba2 Create jcom.csl (#5819)
cd7b72b Create taylor-and-francis-council-of-science-editors-numeric.csl (#5824)
0033383 Create gomis-senegalese-medicine-thesis.csl (#5774)
b221bcc Create mycobiology.csl (#5821)
d7056f9 Re-indent CSL styles
04ae08b Update tyndale-bulletin.csl
24bd577 Re-indent CSL styles
e08d431 clean up logging
f6ac2a6 Update tyndale-bulletin.csl
e4c07f8 this should be the PR repo name
7f9936c fetch pull request from originating repo
f232f51 Update tyndale-bulletin.csl
e2ae4fc Update tyndale-bulletin.csl
f09f8db Update Sheldon to csl-styles 2.0
a4d7dec re-indent style
a903664 sheldon
7db75fc sheldon
f08dc96 sheldon
35b8bfa sheldon
04e28ca pull req checkout
9c9d061 pull req checkout
9249490 sheldon reindent
9792be6 sheldon reindent
3bced06 reindent & commit
7cc9735 Update styles README and GitHub Actions with 1.0.2 information (#5803)
205c4ea remaining dependents
9458056 fix broken styles
07ba7af fix dependents
e2e7842 Fix term hacks for transition to CSL 1.0.2 (#5801)
5c8c5e9 Replace "sub verbo" with "sub-verbo" (#5799)
7ec637c Fix CSL styles
bcd3054 update to csl/citeproc-ruby 2.0
ec13830 bundle update

git-subtree-dir: buildres/csl/csl-styles
git-subtree-split: 5563ccc
@koppor koppor removed the status: ready-for-review Pull Requests that are ready to be reviewed by the maintainers label May 6, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

When saving: The libary has been modified by another program
4 participants