Skip to content

Commit

Permalink
Small refactoring of OutputGenerator
Browse files Browse the repository at this point in the history
  • Loading branch information
zenden2k committed Jul 10, 2024
1 parent 38b8116 commit 8896f7c
Show file tree
Hide file tree
Showing 10 changed files with 18 additions and 25 deletions.
2 changes: 1 addition & 1 deletion Source/Core/OutputGenerator/AbstractCodeGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace ImageUploader::Core::OutputGenerator {

std::string AbstractCodeGenerator::generate(const std::vector<UploadObject>& items) {
std::string AbstractCodeGenerator::doGenerate(const std::vector<UploadObject>& items) {
std::string result;
std::vector<std::string> groups;
std::vector<std::string> fileNames;
Expand Down
4 changes: 2 additions & 2 deletions Source/Core/OutputGenerator/AbstractCodeGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ namespace ImageUploader::Core::OutputGenerator {

class AbstractCodeGenerator: public AbstractOutputGenerator {
public:
AbstractCodeGenerator() = default;
std::string generate(const std::vector<UploadObject>& items) override;
AbstractCodeGenerator() = default;
protected:
std::string doGenerate(const std::vector<UploadObject>& items) override;
virtual std::string generateCodeForItem(const UploadObject& item, int index);
virtual std::string image(const std::string& url, const std::string& alt);
virtual std::string link(const std::string& url, const std::string& body);
Expand Down
8 changes: 4 additions & 4 deletions Source/Core/OutputGenerator/AbstractOutputGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,15 @@ bool AbstractOutputGenerator::loadTemplate(const std::string& templateFileName){
return true;
}

std::string AbstractOutputGenerator::generateWithTemplate(const std::vector<UploadObject>& items) {
std::string AbstractOutputGenerator::generate(const std::vector<UploadObject>& items, bool withTemplate /*= true*/) {
std::string res;
if (templateHead_) {
if (withTemplate && templateHead_) {
res += *templateHead_;
}

res += generate(items);
res += doGenerate(items);

if (templateFoot_) {
if (withTemplate && templateFoot_) {
res += *templateFoot_;
}
return res;
Expand Down
4 changes: 2 additions & 2 deletions Source/Core/OutputGenerator/AbstractOutputGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,13 @@ class AbstractOutputGenerator
void setItemsPerLine(int n);
virtual GeneratorID id() const = 0;
bool loadTemplate(const std::string& templateFileName);
std::string generateWithTemplate(const std::vector<UploadObject>& items);
virtual std::string generate(const std::vector<UploadObject>& items) = 0;
std::string generate(const std::vector<UploadObject>& items, bool withTemplate = true);
protected:
CodeType codeType_;
bool preferDirectLinks_ = true, shortenUrl_ = false, groupByFile_ = false;
int itemsPerLine_ = 4;
std::optional<std::string> templateHead_, templateFoot_;
virtual std::string doGenerate(const std::vector<UploadObject>& items) = 0;
};

}
2 changes: 1 addition & 1 deletion Source/Core/OutputGenerator/JSONGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace ImageUploader::Core::OutputGenerator {

std::string JSONGenerator::generate(const std::vector<UploadObject>& items) {
std::string JSONGenerator::doGenerate(const std::vector<UploadObject>& items) {
Json::Value arrValue(Json::arrayValue);

for (const auto& item : items) {
Expand Down
3 changes: 2 additions & 1 deletion Source/Core/OutputGenerator/JSONGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ class JSONGenerator : public AbstractOutputGenerator {
public:
JSONGenerator() = default;
GeneratorID id() const override;
std::string generate(const std::vector<UploadObject>& items) override;
protected:
std::string doGenerate(const std::vector<UploadObject>& items) override;
private:
};

Expand Down
2 changes: 1 addition & 1 deletion Source/Core/OutputGenerator/XmlTemplateGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ XmlTemplateGenerator::XmlTemplateGenerator(XmlTemplateList* templateList): templ

}

std::string XmlTemplateGenerator::generate(const std::vector<UploadObject>& items) {
std::string XmlTemplateGenerator::doGenerate(const std::vector<UploadObject>& items) {
std::string res;
std::string itemsStr;
std::unordered_map<std::string, std::string> vars;
Expand Down
2 changes: 1 addition & 1 deletion Source/Core/OutputGenerator/XmlTemplateGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,12 @@ class XmlTemplateGenerator : public AbstractOutputGenerator {
public:
explicit XmlTemplateGenerator(XmlTemplateList* templateList);
GeneratorID id() const override;
std::string generate(const std::vector<UploadObject>& items) override;
void setTemplateIndex(size_t index);
private:
std::string replaceVars(const std::string& text, const std::unordered_map<std::string, std::string>& vars);
XmlTemplateList* templateList_;
size_t templateIndex_ = 0;
std::string doGenerate(const std::vector<UploadObject>& items) override;
};

}
7 changes: 2 additions & 5 deletions Source/Gui/Dialogs/FloatingWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -932,11 +932,8 @@ void CFloatingWindow::ShowImageUploadedMessage(UploadTask* task, const CString&
auto xmlTemplateGenerator = dynamic_cast<XmlTemplateGenerator*>(generator.get());
xmlTemplateGenerator->setTemplateIndex(templateIndex);
}
if (settings->UseTxtTemplate) {
code = U2W(generator->generateWithTemplate(objects));
} else {
code = U2W(generator->generate(objects));
}

code = U2W(generator->generate(objects, settings->UseTxtTemplate));
}
WinUtils::CopyTextToClipboard(code);
CString trimmedUrl = WinUtils::TrimString(code, 70);
Expand Down
9 changes: 2 additions & 7 deletions Source/Gui/Dialogs/ResultsPanel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ std::string CResultsPanel::GenerateOutput()
{
namespace OG = ImageUploader::Core::OutputGenerator;
auto* settings = ServiceLocator::instance()->settings<WtlGuiSettings>();
std::string Buffer;

if (!Toolbar.m_hWnd) return {};
int Index = GetCodeType();

Expand Down Expand Up @@ -264,13 +264,8 @@ std::string CResultsPanel::GenerateOutput()
auto xmlTemplateGenerator = dynamic_cast<OG::XmlTemplateGenerator*>(generator);
xmlTemplateGenerator->setTemplateIndex(templateIndex);
}
if (UseTemplate) {
Buffer += generator->generateWithTemplate(UrlList);
} else {
Buffer += generator->generate(UrlList);
}

return Buffer;
return generator->generate(UrlList, UseTemplate);
}

void CResultsPanel::UpdateOutput(bool immediately)
Expand Down

0 comments on commit 8896f7c

Please sign in to comment.