From 1eb7ca73cdef5d92c3463fbef6ee774ab9077831 Mon Sep 17 00:00:00 2001 From: Martin Monperrus Date: Fri, 19 Aug 2016 17:57:42 +0200 Subject: [PATCH] improves reconstructed mode --- bibtexbrowser-test.php | 6 +++--- bibtexbrowser.php | 12 +++++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/bibtexbrowser-test.php b/bibtexbrowser-test.php index e5b2927..de51da0 100755 --- a/bibtexbrowser-test.php +++ b/bibtexbrowser-test.php @@ -279,17 +279,17 @@ class BTBTest extends PHPUnit_Framework_TestCase { function test_filter_view() { $test_data = fopen('php://memory','x+'); - fwrite($test_data, "@article{aKey,title={A Book},author={Martin Monperrus},publisher={Springer},year=2009,pages={42--4242},number=1}\n"); + fwrite($test_data, "@article{aKey,title={A Book},author={Martin M\'e},publisher={Springer},year=2009,pages={42--4242},number=1}\n"); fseek($test_data,0); $db = new BibDataBase(); $db->update_internal("inline", $test_data); $dis = $db->getEntryByKey('aKey'); - $this->assertEquals("@article{aKey,title={A Book},author={Martin Monperrus},publisher={Springer},year=2009,pages={42--4242},number=1}",$dis->getText()); + $this->assertEquals("@article{aKey,title={A Book},author={Martin M\'e},publisher={Springer},year=2009,pages={42--4242},number=1}",$dis->getText()); // now ith option bibtexbrowser_configure('BIBTEXBROWSER_BIBTEX_VIEW', 'reconstructed'); bibtexbrowser_configure('BIBTEXBROWSER_BIBTEX_VIEW_FILTEREDOUT', 'pages|number'); - $this->assertEquals("@article{aKey,\n title = {A Book},\n author = {Martin Monperrus},\n publisher = {Springer},\n year = {2009},\n}\n", $dis->getText()); + $this->assertEquals("@article{aKey,\n title = {A Book},\n author = {Martin M\'e},\n publisher = {Springer},\n year = {2009},\n}\n", $dis->getText()); } function test_BIBTEXBROWSER_USE_LATEX2HTML() { diff --git a/bibtexbrowser.php b/bibtexbrowser.php index 5b5e24b..a31c236 100755 --- a/bibtexbrowser.php +++ b/bibtexbrowser.php @@ -1105,9 +1105,12 @@ notes: */ class BibEntry { - /** The fields (fieldName -> value) of this bib entry. */ + /** The fields (fieldName -> value) of this bib entry with Latex macros interpreted and encoded in the desired character set . */ var $fields = array(); + /** The raw fields (fieldName -> value) of this bib entry. */ + var $raw_fields = array(); + /** The constants @STRINGS referred to by this entry */ var $constants = array(); @@ -1177,6 +1180,8 @@ class BibEntry { /** Sets a field of this bib entry. */ function setField($name, $value) { $name = strtolower($name); + $this->raw_fields[$name] = $value; + // fields that should not be transformed // we assume that "comment" is never latex code // but instead could contain HTML code (with links using the character "~" for example) @@ -1224,7 +1229,7 @@ class BibEntry { // to support space e.g. "@article {" // as generated by ams.org // thanks to Jacob Kellner - $this->fields[Q_INNER_TYPE] =trim($value); + $this->fields[Q_INNER_TYPE] = trim($value); } function setIndex($index) { $this->index = $index; } @@ -1680,7 +1685,7 @@ class BibEntry { } if (c('BIBTEXBROWSER_BIBTEX_VIEW') == 'reconstructed') { $result = '@'.$this->getType().'{'.$this->getKey().",\n"; - foreach ($this->fields as $k=>$v) { + foreach ($this->raw_fields as $k=>$v) { if ( !preg_match('/^('.c('BIBTEXBROWSER_BIBTEX_VIEW_FILTEREDOUT').')$/i', $k) && !preg_match('/^(key|'.Q_INNER_AUTHOR.'|'.Q_INNER_TYPE.')$/i', $k) ) { @@ -1908,6 +1913,7 @@ class BibEntry { class RawBibEntry extends BibEntry { function setField($name, $value) { $this->fields[$name]=$value; + $this->raw_fields[$name]=$value; } }