From 49ee61c1aa372bd4d8657270e3d155ca5eda54ed Mon Sep 17 00:00:00 2001 From: Howard Butler Date: Fri, 19 Sep 2014 13:27:19 -0500 Subject: [PATCH] Sanitize pdal::Metadata key names to remove some special characters #475 --- include/pdal/Metadata.hpp | 5 ++--- src/Metadata.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/include/pdal/Metadata.hpp b/include/pdal/Metadata.hpp index 38cdab3e61..33f6969705 100644 --- a/include/pdal/Metadata.hpp +++ b/include/pdal/Metadata.hpp @@ -68,9 +68,8 @@ class MetadataNodeImpl friend class MetadataNode; private: - MetadataNodeImpl(const std::string& name) : - m_name(name), m_kind(MetadataType::Instance) - {} + MetadataNodeImpl(const std::string& name); + MetadataNodeImpl() : m_kind(MetadataType::Instance) {} diff --git a/src/Metadata.cpp b/src/Metadata.cpp index 81e3e424ac..775d02e357 100644 --- a/src/Metadata.cpp +++ b/src/Metadata.cpp @@ -40,10 +40,30 @@ #include #include +#include + +std::string sanitize(const std::string& name) +{ + std::vector to_replace = {";", ":", " ", "'", "\""}; + + std::string v(name); + for (auto c: to_replace) + { + v = boost::algorithm::replace_all_copy(v, c, "_"); + } + return v; + +} namespace pdal { +MetadataNodeImpl::MetadataNodeImpl(const std::string& name) +{ + m_kind = MetadataType::Instance; + m_name = sanitize(name); +} + std::string MetadataNodeImpl::toJSON() const { std::ostringstream o;