summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--project2/xml/xmlPresenter.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/project2/xml/xmlPresenter.cpp b/project2/xml/xmlPresenter.cpp
index 075518c..2d72561 100644
--- a/project2/xml/xmlPresenter.cpp
+++ b/project2/xml/xmlPresenter.cpp
@@ -1,4 +1,5 @@
#include <pch.hpp>
+#include <boost/date_time.hpp>
#include "xmlPresenter.h"
#include "scriptLoader.h"
#include "scriptStorage.h"
@@ -11,7 +12,7 @@
class XmlPresenterLoader : public PresenterLoader::For<XmlPresenter> {
public:
XmlPresenterLoader() :
- opts("XML Cache options")
+ opts("XML Presenter options")
{
opts
("presenter.xml.typeid.null", Options::value(&typeidNull, false),
@@ -30,6 +31,8 @@ class XmlPresenterLoader : public PresenterLoader::For<XmlPresenter> {
"Output a date attribute in standard format")
("presenter.xml.datetime.timeattr", Options::value(&timeAttr, true),
"Output a time attribute in standard format")
+ ("presenter.xml.datetime.customformat", Options::value(&customFormat),
+ "Output a time attribute in this custom format")
;
}
@@ -46,6 +49,7 @@ class XmlPresenterLoader : public PresenterLoader::For<XmlPresenter> {
static bool typeidDateTime;
static bool dateAttr;
static bool timeAttr;
+ static boost::optional<std::string> customFormat;
private:
Options opts;
};
@@ -58,6 +62,7 @@ bool XmlPresenterLoader::typeidFloat;
bool XmlPresenterLoader::typeidDateTime;
bool XmlPresenterLoader::dateAttr;
bool XmlPresenterLoader::timeAttr;
+boost::optional<std::string> XmlPresenterLoader::customFormat;
DECLARE_CUSTOM_COMPONENT_LOADER("xml", XmlPresenter, XmlPresenterLoader, PresenterLoader)
@@ -204,6 +209,14 @@ class XmlNodeWriter : public boost::static_visitor<bool> {
if (XmlPresenterLoader::dateAttr) {
node->set_attribute("date", boost::gregorian::to_iso_extended_string(i.date()));
}
+ if (!!XmlPresenterLoader::customFormat) {
+ std::stringstream ss;
+ boost::date_time::time_facet<boost::posix_time::ptime, char> * ft = new boost::date_time::time_facet<boost::posix_time::ptime, char>();
+ ss.imbue(std::locale(ss.getloc(), ft));
+ ft->format(XmlPresenterLoader::customFormat->c_str());
+ ss << boost::get<boost::posix_time::ptime>(i);
+ node->set_attribute("custom", ss.str());
+ }
return true;
}