Refactoring

This commit is contained in:
Oleg Korshul
2020-07-05 17:59:45 +03:00
parent 568aa779be
commit f06d02bac2
15 changed files with 130 additions and 106 deletions

View File

@ -2,6 +2,7 @@
#include "../DesktopEditor/xml/include/xmlutils.h"
#include "../DesktopEditor/common/Base64.h"
#include "../DesktopEditor/common/File.h"
#include "../DesktopEditor/common/Directory.h"
#include <vector>
#include <map>
@ -367,7 +368,7 @@ bool CFb2File::IsFb2File(const std::wstring& sFile)
}
// Выставление временной (рабочей) папки
void CFb2File::SetImpDirectory(const std::wstring& sFolder)
void CFb2File::SetTmpDirectory(const std::wstring& sFolder)
{
m_internal->m_sDstFolder = sFolder;
}
@ -398,6 +399,8 @@ int CFb2File::Convert (const std::wstring& sPath, const std::wstring& sDirectory
// ПРОПУСКАЕМ body
std::wstring sMediaDirectory = sDirectory + L"/media";
NSDirectory::CreateDirectory(sMediaDirectory);
while(m_internal->m_oLightReader.ReadNextNode())
{
// Читает картинки
@ -421,7 +424,7 @@ int CFb2File::Convert (const std::wstring& sPath, const std::wstring& sDirectory
// Пишет картинку в файл
NSFile::CFileBinary oImageWriter;
if (!oImageWriter.CreateFileW(sDirectory + sId))
if (!oImageWriter.CreateFileW(sMediaDirectory + L"/" + sId))
return false;
std::string sBase64 = m_internal->contentA(sId);
int nSrcLen = (int)sBase64.length();

View File

@ -20,7 +20,7 @@ public:
~CFb2File();
bool IsFb2File(const std::wstring& sFile);
void SetImpDirectory(const std::wstring& sFolder);
void SetTmpDirectory(const std::wstring& sFolder);
int Convert(const std::wstring& sPath, const std::wstring& sDirectory);
};

29
Fb2File/test/main.cpp Normal file
View File

@ -0,0 +1,29 @@
#include <iostream>
#include "../Fb2File.h"
#include "../../DesktopEditor/common/File.h"
#include "../../DesktopEditor/common/Directory.h"
int main()
{
CFb2File oFile;
oFile.SetTmpDirectory(NSFile::GetProcessDirectory() + L"/tmp");
// файл, который открываем
std::wstring sFile = NSFile::GetProcessDirectory() + L"/../../../examples/test1.fb2";
// директория, где будем создавать docx
std::wstring sOutputDirectory = NSFile::GetProcessDirectory() + L"/output";
if (!NSDirectory::Exists(sOutputDirectory))
NSDirectory::CreateDirectory(sOutputDirectory);
bool bCheck = oFile.IsFb2File(sFile);
if (!bCheck)
{
std::cout << "This isn't a fb2 file" << std::endl;
return 1;
}
int nResConvert = oFile.Convert(sFile, sOutputDirectory);
return 0;
}

View File

@ -10,8 +10,10 @@ DEFINES += FB2FILE_USE_DYNAMIC_LIBRARY
SOURCES += main.cpp
CORE_ROOT_DIR = $$PWD/../../../../core
CORE_ROOT_DIR = $$PWD/../../../core
PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
LIBS += -L$$CORE_BUILDS_LIBRARIES_PATH -lkernel -lFb2File
ADD_DEPENDENCY(kernel, Fb2File)
DESTDIR = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX

View File

@ -1,18 +0,0 @@
#include <iostream>
#include "../../Fb2File.h"
int main()
{
CFb2File oFile;
oFile.SetImpDirectory(L"../../../media/");
bool bCheck = oFile.IsFb2File(L"../../../../test_TheLastWish.fb2");
if (!bCheck)
{
std::cout << "This isn't a fb2 file" << std::endl;
return 1;
}
int nResConvert = oFile.Convert(L"path", L"../../../media/");
return 0;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View File

@ -1,10 +0,0 @@
#include <iostream>
#include "../../../DesktopEditor/xml/include/xmlutils.h"
int main()
{
XmlUtils::CXmlNode oNode;
oNode.FromXmlFile(L"../../../../test.xml");
return 0;
}

10
Fb2File/xml/dom/main.cpp Normal file
View File

@ -0,0 +1,10 @@
#include "../../../DesktopEditor/xml/include/xmlutils.h"
#include "../../../DesktopEditor/common/File.h"
int main()
{
XmlUtils::CXmlNode oNode;
oNode.FromXmlFile(NSFile::GetProcessDirectory() + L"/../../../examples/test.xml");
return 0;
}

View File

@ -13,3 +13,5 @@ PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
ADD_DEPENDENCY(kernel)
DESTDIR = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX

View File

@ -1,10 +1,11 @@
#include <iostream>
#include "../../../DesktopEditor/xml/include/xmlutils.h"
#include "../../../DesktopEditor/common/File.h"
int main()
{
XmlUtils::CXmlLiteReader oLightReader;
if (oLightReader.FromFile(L"../../../../test.xml"))
if (oLightReader.FromFile(NSFile::GetProcessDirectory() + L"/../../../examples/test.xml"))
{
while(oLightReader.ReadNextNode())
{

View File

@ -13,3 +13,5 @@ PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
ADD_DEPENDENCY(kernel)
DESTDIR = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX

View File

@ -1,72 +1,73 @@
#include <iostream>
#include "../../../DesktopEditor/xml/include/xmlutils.h"
int main()
{
// sax reader
XmlUtils::CXmlLiteReader oLightReader;
/*
Выводы:
Возвращает успешность открытия файла
Читает файл в поток m_pStream
Длина потока в m_lStreamLen
Формирует reader
После чтения файл закрывается
Мысли:
xmlreader.h - функции работы с xml
*/
bool res1 = oLightReader.FromFile(L"../../../../test.xml");
std::wcout << res1 << std::endl; // true
/*
Возвращает порядковый номер узла (кажется нет)
Мысли:
Возвращает XmlNodeType_None(0)
*/
XmlUtils::XmlNodeType res2 = oLightReader.GetNodeType();
std::wcout << res2<< " " << oLightReader.GetName() << std::endl; // 0 пусто, т.к. текущий узел отсутствует
/*
GetName() - возвращает имя текущего узла
GetDepth() - возвращает глубину текущего узла
*/
/*
Возвращает успешность чтения узла указанного типа
По ссылке сохраняет тип узла
Мысли:
Значение XmlNodeType_None(0) преобразуется в XmlNodeType_Element(1)
*/
bool res3 = oLightReader.Read(res2); // Прочитает company
std::wcout << res3 << " " << res2 << " " << oLightReader.GetName() << std::endl; // true 1
/*
Мысли:
Возвращает успешность чтения следующего узла
В reader изменяются глубина depth если узел вложенный
И текущий узел node
*/
bool res4 = oLightReader.ReadNextNode(); // Прочитает staff
std::wcout << res4 << " " << oLightReader.GetName() << std::endl; // true
bool res5 = oLightReader.ReadNextNode(); // Прочитает firstname
std::wcout << res5 << " " << oLightReader.GetName() << std::endl; // true
/*
Возвращает успешность чтения следующего узла на той же глубине - 1
Внешний тэг не в счет
*/
bool res6 = oLightReader.ReadNextSiblingNode(1); // Прочитает lastname
std::wcout << res6 << " " << oLightReader.GetName() << std::endl; // true
//bool res7 = oLightReader.ReadNextSiblingNode(1); // Прочитает staff закрывающий
//std::wcout << res7 << std::endl; // false, т.к. прочитанный узел на другой глубине
/*
Мысли:
Принудительно читает узел на той-же глубине,
Если узла нет, то создает узел text
*/
bool res7 = oLightReader.ReadNextSiblingNode2(1); // Прочитает text (ЧТО ЭТО) родитель parent будет staff
std::wcout << res7 << " " << oLightReader.GetName() << std::endl; // true
return 0;
}
#include <iostream>
#include "../../../DesktopEditor/xml/include/xmlutils.h"
#include "../../../DesktopEditor/common/File.h"
int main()
{
// sax reader
XmlUtils::CXmlLiteReader oLightReader;
/*
Выводы:
Возвращает успешность открытия файла
Читает файл в поток m_pStream
Длина потока в m_lStreamLen
Формирует reader
После чтения файл закрывается
Мысли:
xmlreader.h - функции работы с xml
*/
bool res1 = oLightReader.FromFile(NSFile::GetProcessDirectory() + L"/../../../examples/test.xml");
std::wcout << res1 << std::endl; // true
/*
Возвращает порядковый номер узла (кажется нет)
Мысли:
Возвращает XmlNodeType_None(0)
*/
XmlUtils::XmlNodeType res2 = oLightReader.GetNodeType();
std::wcout << res2<< " " << oLightReader.GetName() << std::endl; // 0 пусто, т.к. текущий узел отсутствует
/*
GetName() - возвращает имя текущего узла
GetDepth() - возвращает глубину текущего узла
*/
/*
Возвращает успешность чтения узла указанного типа
По ссылке сохраняет тип узла
Мысли:
Значение XmlNodeType_None(0) преобразуется в XmlNodeType_Element(1)
*/
bool res3 = oLightReader.Read(res2); // Прочитает company
std::wcout << res3 << " " << res2 << " " << oLightReader.GetName() << std::endl; // true 1
/*
Мысли:
Возвращает успешность чтения следующего узла
В reader изменяются глубина depth если узел вложенный
И текущий узел node
*/
bool res4 = oLightReader.ReadNextNode(); // Прочитает staff
std::wcout << res4 << " " << oLightReader.GetName() << std::endl; // true
bool res5 = oLightReader.ReadNextNode(); // Прочитает firstname
std::wcout << res5 << " " << oLightReader.GetName() << std::endl; // true
/*
Возвращает успешность чтения следующего узла на той же глубине - 1
Внешний тэг не в счет
*/
bool res6 = oLightReader.ReadNextSiblingNode(1); // Прочитает lastname
std::wcout << res6 << " " << oLightReader.GetName() << std::endl; // true
//bool res7 = oLightReader.ReadNextSiblingNode(1); // Прочитает staff закрывающий
//std::wcout << res7 << std::endl; // false, т.к. прочитанный узел на другой глубине
/*
Мысли:
Принудительно читает узел на той-же глубине,
Если узла нет, то создает узел text
*/
bool res7 = oLightReader.ReadNextSiblingNode2(1); // Прочитает text (ЧТО ЭТО) родитель parent будет staff
std::wcout << res7 << " " << oLightReader.GetName() << std::endl; // true
return 0;
}

View File

@ -13,3 +13,5 @@ PWD_ROOT_DIR = $$PWD
include($$CORE_ROOT_DIR/Common/base.pri)
ADD_DEPENDENCY(kernel)
DESTDIR = $$PWD/build/$$CORE_BUILDS_PLATFORM_PREFIX