Skip to content

Commit 7bef2ef

Browse files
committed
fix wvware images; add <br>; more abs path
1 parent c6b9886 commit 7bef2ef

12 files changed

Lines changed: 54 additions & 36 deletions

File tree

src/odr/internal/common/file.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,14 @@
1010

1111
namespace odr::internal {
1212

13-
DiskFile::DiskFile(const char *path) : DiskFile{Path(path)} {}
13+
DiskFile::DiskFile(const char *path) : DiskFile{AbsPath(path)} {}
1414

15-
DiskFile::DiskFile(const std::string &path) : DiskFile{Path(path)} {}
15+
DiskFile::DiskFile(const std::string &path) : DiskFile{AbsPath(path)} {}
1616

17-
DiskFile::DiskFile(Path path) {
18-
if (!std::filesystem::is_regular_file(path.path())) {
17+
DiskFile::DiskFile(AbsPath path) : m_path{std::move(path)} {
18+
if (!std::filesystem::is_regular_file(m_path.path())) {
1919
throw FileNotFound();
2020
}
21-
m_path = AbsPath(std::filesystem::absolute(path.path()));
2221
}
2322

2423
FileLocation DiskFile::location() const noexcept { return FileLocation::disk; }

src/odr/internal/common/file.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class DiskFile : public abstract::File {
1717
public:
1818
explicit DiskFile(const char *path);
1919
explicit DiskFile(const std::string &path);
20-
explicit DiskFile(Path path);
20+
explicit DiskFile(AbsPath path);
2121

2222
[[nodiscard]] FileLocation location() const noexcept final;
2323
[[nodiscard]] std::size_t size() const final;

src/odr/internal/common/path.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,10 @@ Path::Iterator Path::Iterator::operator++(int) {
324324
return old;
325325
}
326326

327+
AbsPath AbsPath::current_working_directory() {
328+
return AbsPath(std::filesystem::current_path());
329+
}
330+
327331
AbsPath::AbsPath() noexcept : Path("/") {}
328332

329333
AbsPath::AbsPath(const char *c_string) : Path(c_string) {

src/odr/internal/common/path.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ class Path {
109109

110110
class AbsPath final : public Path {
111111
public:
112+
static AbsPath current_working_directory();
113+
112114
AbsPath() noexcept;
113115
explicit AbsPath(const char *c_string);
114116
explicit AbsPath(const std::string &string);

src/odr/internal/common/temporary_file.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ TemporaryDiskFile::TemporaryDiskFile(const char *path) : DiskFile{path} {}
1313
TemporaryDiskFile::TemporaryDiskFile(const std::string &path)
1414
: DiskFile{path} {}
1515

16-
TemporaryDiskFile::TemporaryDiskFile(const Path &path) : DiskFile{path} {}
16+
TemporaryDiskFile::TemporaryDiskFile(AbsPath path)
17+
: DiskFile{std::move(path)} {}
1718

1819
TemporaryDiskFile::TemporaryDiskFile(const TemporaryDiskFile &) = default;
1920

@@ -31,7 +32,7 @@ TemporaryDiskFile::operator=(TemporaryDiskFile &&) noexcept = default;
3132

3233
const TemporaryDiskFileFactory &TemporaryDiskFileFactory::system_default() {
3334
static TemporaryDiskFileFactory instance(
34-
Path(std::filesystem::temp_directory_path()),
35+
AbsPath(std::filesystem::temp_directory_path()),
3536
default_random_file_name_generator());
3637
return instance;
3738
}
@@ -42,7 +43,7 @@ TemporaryDiskFileFactory::default_random_file_name_generator() {
4243
}
4344

4445
TemporaryDiskFileFactory::TemporaryDiskFileFactory(
45-
Path directory, RandomFileNameGenerator random_file_name_generator)
46+
AbsPath directory, RandomFileNameGenerator random_file_name_generator)
4647
: m_directory{std::move(directory)},
4748
m_random_file_name_generator{std::move(random_file_name_generator)} {}
4849

@@ -53,7 +54,7 @@ TemporaryDiskFileFactory::copy(const abstract::File &file) const {
5354

5455
TemporaryDiskFile TemporaryDiskFileFactory::copy(std::istream &in) const {
5556
std::fstream file;
56-
Path file_path;
57+
AbsPath file_path;
5758

5859
while (true) {
5960
std::string file_name = m_random_file_name_generator();

src/odr/internal/common/temporary_file.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class TemporaryDiskFile final : public DiskFile {
1111
public:
1212
explicit TemporaryDiskFile(const char *path);
1313
explicit TemporaryDiskFile(const std::string &path);
14-
explicit TemporaryDiskFile(const Path &path);
14+
explicit TemporaryDiskFile(AbsPath path);
1515
TemporaryDiskFile(const TemporaryDiskFile &);
1616
TemporaryDiskFile(TemporaryDiskFile &&) noexcept;
1717
~TemporaryDiskFile() override;
@@ -27,14 +27,14 @@ class TemporaryDiskFileFactory final {
2727
static RandomFileNameGenerator default_random_file_name_generator();
2828

2929
explicit TemporaryDiskFileFactory(
30-
Path directory, RandomFileNameGenerator random_file_name_generator =
31-
default_random_file_name_generator());
30+
AbsPath directory, RandomFileNameGenerator random_file_name_generator =
31+
default_random_file_name_generator());
3232

3333
[[nodiscard]] TemporaryDiskFile copy(const abstract::File &file) const;
3434
[[nodiscard]] TemporaryDiskFile copy(std::istream &in) const;
3535

3636
private:
37-
Path m_directory;
37+
AbsPath m_directory;
3838
RandomFileNameGenerator m_random_file_name_generator;
3939
};
4040

src/odr/internal/html/document.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void front(const Document &document, const WritingState &state) {
4545
}
4646

4747
auto odr_css_file = File(
48-
Path(state.config().resource_path).join(RelPath("odr.css")).string());
48+
AbsPath(state.config().resource_path).join(RelPath("odr.css")).string());
4949
odr::HtmlResource odr_css_resource =
5050
html::HtmlResource::create(HtmlResourceType::css, "text/css", "odr.css",
5151
"odr.css", odr_css_file, true, false, true);
@@ -62,7 +62,7 @@ void front(const Document &document, const WritingState &state) {
6262

6363
if (document.document_type() == DocumentType::spreadsheet) {
6464
auto odr_spreadsheet_css_file =
65-
File(Path(state.config().resource_path)
65+
File(AbsPath(state.config().resource_path)
6666
.join(RelPath("odr_spreadsheet.css"))
6767
.string());
6868
odr::HtmlResource odr_spreadsheet_css_resource = html::HtmlResource::create(
@@ -122,8 +122,8 @@ void back(const Document &document, const WritingState &state) {
122122
out.write_element_end("div");
123123
}
124124

125-
auto odr_js_file =
126-
File(Path(state.config().resource_path).join(RelPath("odr.js")).string());
125+
auto odr_js_file = File(
126+
AbsPath(state.config().resource_path).join(RelPath("odr.js")).string());
127127
odr::HtmlResource odr_js_resource = html::HtmlResource::create(
128128
HtmlResourceType::js, "text/javascript", "odr.js", "odr.js", odr_js_file,
129129
true, false, true);

src/odr/internal/html/wvware_wrapper.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,8 +378,10 @@ void dump_bitmap(wvParseStruct *ps, const std::string &name,
378378
}
379379
}
380380

381-
int dump_metafile(wvParseStruct * /*ps*/, const std::string &path,
381+
int dump_metafile(wvParseStruct *ps, const std::string &name,
382382
MetaFileBlip *bitmap) {
383+
std::string path = figure_cache_path(ps, name);
384+
383385
FILE *fd = fopen(path.c_str(), "wb");
384386
if (fd == nullptr) {
385387
throw std::runtime_error("Cannot open " + path + " file for writing");

test/scripts/compare_output_server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ docker run -ti \
1717
-v $(pwd):/repo \
1818
-p 8000:8000 \
1919
--platform linux/amd64 \
20-
ghcr.io/opendocument-app/odr_core_test \
20+
ghcr.io/opendocument-app/odr_core_test:1.0.13 \
2121
compare-html-server /repo/$REF /repo/$OBS --compare --driver $DRIVER --port 8000

test/src/document_test.cpp

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
#include <gtest/gtest.h>
99

10+
#include <filesystem>
11+
1012
using namespace odr;
1113
using namespace odr::test;
1214

@@ -71,8 +73,8 @@ TEST(Document, edit_odt) {
7173
};
7274
edit(document.root_element());
7375

74-
document.save("about_edit.odt");
75-
DocumentFile("about_edit.odt");
76+
document.save(std::filesystem::current_path() / "about_edit.odt");
77+
DocumentFile(std::filesystem::current_path() / "about_edit.odt");
7678
}
7779

7880
TEST(Document, edit_docx) {
@@ -93,8 +95,8 @@ TEST(Document, edit_docx) {
9395
};
9496
edit(document.root_element());
9597

96-
document.save("style-various-1_edit.docx");
97-
DocumentFile("style-various-1_edit.docx");
98+
document.save(std::filesystem::current_path() / "style-various-1_edit.docx");
99+
DocumentFile(std::filesystem::current_path() / "style-various-1_edit.docx");
98100
}
99101

100102
TEST(Document, edit_odt_diff) {
@@ -108,8 +110,10 @@ TEST(Document, edit_odt_diff) {
108110

109111
html::edit(document, diff);
110112

111-
document.save("style-various-1_edit_diff.odt");
112-
DocumentFile("style-various-1_edit_diff.odt");
113+
document.save(std::filesystem::current_path() /
114+
"style-various-1_edit_diff.odt");
115+
DocumentFile(std::filesystem::current_path() /
116+
"style-various-1_edit_diff.odt");
113117
}
114118

115119
TEST(Document, edit_ods_diff) {
@@ -125,8 +129,8 @@ TEST(Document, edit_ods_diff) {
125129

126130
html::edit(document, diff);
127131

128-
document.save("pages_edit_diff.ods");
129-
DocumentFile("pages_edit_diff.ods");
132+
document.save(std::filesystem::current_path() / "pages_edit_diff.ods");
133+
DocumentFile(std::filesystem::current_path() / "pages_edit_diff.ods");
130134
}
131135

132136
TEST(Document, edit_docx_diff) {
@@ -141,6 +145,8 @@ TEST(Document, edit_docx_diff) {
141145

142146
html::edit(document, diff);
143147

144-
document.save("style-various-1_edit_diff.docx");
145-
DocumentFile("style-various-1_edit_diff.docx");
148+
document.save(std::filesystem::current_path() /
149+
"style-various-1_edit_diff.docx");
150+
DocumentFile(std::filesystem::current_path() /
151+
"style-various-1_edit_diff.docx");
146152
}

0 commit comments

Comments
 (0)