commit bf0259c773f61a6115772fba2154b3ee143640d9
parent 00a13505aef2305ac56e010013b731e3d026ad21
Author: Dimitrije Dobrota <mail@dimitrijedobrota.com>
Date: Thu, 9 Jan 2025 20:12:35 +0100
Empty tag(text), and general cleanup
Diffstat:
7 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/.clang-tidy b/.clang-tidy
@@ -19,6 +19,7 @@ Checks: "*,\
-readability-magic-numbers,\
fuchsia-multiple-inheritance,\
-misc-no-recursion,\
+ -performance-avoid-endl,\
-misc-non-private-member-variables-in-classes"
WarningsAsErrors: ''
CheckOptions:
diff --git a/CMakeLists.txt b/CMakeLists.txt
@@ -4,7 +4,7 @@ include(cmake/prelude.cmake)
project(
hemplate
- VERSION 0.1.10
+ VERSION 0.1.11
DESCRIPTION "Simple HTML template engine"
HOMEPAGE_URL "https://git.dimitrijedobrota.com/hemplate.git"
LANGUAGES CXX
diff --git a/include/hemplate/classes.hpp b/include/hemplate/classes.hpp
@@ -179,6 +179,7 @@ using table = elementBoolean<tag<"table">>;
using tbody = elementBoolean<tag<"tbody">>;
using td = elementBoolean<tag<"td">>;
using textarea = elementBoolean<tag<"textarea">>;
+using text = elementBoolean<tag<"">>;
using tfoot = elementBoolean<tag<"tfoot">>;
using th = elementBoolean<tag<"th">>;
using thead = elementBoolean<tag<"thead">>;
@@ -201,8 +202,8 @@ class rss : public elementBoolean<tag<"rss">>
public:
explicit rss(std::string version = "2.0",
std::string xmlns = "http://www.w3.org/2005/Atom")
- : elementBoolean(attributeList(
- {{"version", std::move(version)}, {"xmlns:atom", std::move(xmlns)}}))
+ : elementBoolean(attributeList({{"version", std::move(version)},
+ {"xmlns:atom", std::move(xmlns)}}))
{
}
};
@@ -212,8 +213,8 @@ class atomLink : public elementAtomic<tag<"atom:link">>
public:
explicit atomLink(std::string rel = "self",
std::string type = "application/rss+xml")
- : elementAtomic(
- attributeList({{"rel", std::move(rel)}, {"type", std::move(type)}}))
+ : elementAtomic(attributeList(
+ {{"rel", std::move(rel)}, {"type", std::move(type)}}))
{
}
};
@@ -242,6 +243,7 @@ using rating = elementBoolean<tag<"rating">>;
using skipDays = elementBoolean<tag<"skipDays">>;
using skipHours = elementBoolean<tag<"skipHours">>;
using source = elementBoolean<tag<"source">>;
+using text = elementBoolean<tag<"">>;
using textinput = elementBoolean<tag<"textinput">>;
using title = elementBoolean<tag<"title">>;
using ttl = elementBoolean<tag<"ttl">>;
@@ -282,6 +284,7 @@ using rights = elementBoolean<tag<"rights">>;
using source = elementBoolean<tag<"source">>;
using subtitle = elementBoolean<tag<"subtitle">>;
using summary = elementBoolean<tag<"summary">>;
+using text = elementBoolean<tag<"">>;
using title = elementBoolean<tag<"title">>;
using update = elementBoolean<tag<"update">>;
using updated = elementBoolean<tag<"updated">>;
diff --git a/include/hemplate/element.hpp b/include/hemplate/element.hpp
@@ -23,7 +23,7 @@ public:
template<class... Ts>
explicit elementList(Ts&&... args)
{
- std::initializer_list<element*> list = {&args...};
+ std::initializer_list<element*> list = {&std::forward(args)...};
for (const auto& elem : list) add(*elem);
}
@@ -45,7 +45,7 @@ private:
class HEMPLATE_EXPORT element : public streamable
{
public:
- enum class Type
+ enum class Type : uint8_t
{
Atomic,
Boolean,
diff --git a/source/attribute.cpp b/source/attribute.cpp
@@ -1,4 +1,5 @@
-#include <algorithm>
+#include <initializer_list>
+#include <ostream>
#include "hemplate/attribute.hpp"
diff --git a/source/element.cpp b/source/element.cpp
@@ -1,3 +1,8 @@
+#include <memory>
+#include <ostream>
+#include <string>
+#include <utility>
+
#include "hemplate/element.hpp"
namespace hemplate {
@@ -28,6 +33,12 @@ element& element::set(const std::string& name, const std::string& value)
void element::render(std::ostream& out) const
{
+ if (*get_name() == '\0')
+ {
+ out << m_data;
+ return;
+ }
+
const auto open_tag = [this, &out](bool atomic)
{
out << '<' << get_name();
diff --git a/test/source/hemplate_test.cpp b/test/source/hemplate_test.cpp
@@ -1,6 +1,7 @@
#include <iostream>
#include "hemplate/classes.hpp"
+#include "hemplate/attribute.hpp"
int main()
{