mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 14:23:53 +00:00
Move wildcard_string_to_regex() from IfcParse to IfcGeom as it's not really related to parsing IFC at all.
This commit is contained in:
@@ -65,6 +65,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
#include <boost/regex.hpp>
|
||||||
|
|
||||||
#include <gp_Mat.hxx>
|
#include <gp_Mat.hxx>
|
||||||
#include <gp_Mat2d.hxx>
|
#include <gp_Mat2d.hxx>
|
||||||
@@ -308,7 +309,7 @@ namespace IfcGeom {
|
|||||||
{
|
{
|
||||||
names_to_include_or_exclude.clear();
|
names_to_include_or_exclude.clear();
|
||||||
foreach(const std::string &name, names)
|
foreach(const std::string &name, names)
|
||||||
names_to_include_or_exclude.insert(IfcUtil::wildcard_string_to_regex(name));
|
names_to_include_or_exclude.insert(wildcard_string_to_regex(name));
|
||||||
include_entities_in_processing = true;
|
include_entities_in_processing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -317,10 +318,24 @@ namespace IfcGeom {
|
|||||||
{
|
{
|
||||||
names_to_include_or_exclude.clear();
|
names_to_include_or_exclude.clear();
|
||||||
foreach(const std::string &name, names)
|
foreach(const std::string &name, names)
|
||||||
names_to_include_or_exclude.insert(IfcUtil::wildcard_string_to_regex(name));
|
names_to_include_or_exclude.insert(wildcard_string_to_regex(name));
|
||||||
include_entities_in_processing = false;
|
include_entities_in_processing = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static boost::regex wildcard_string_to_regex(std::string str)
|
||||||
|
{
|
||||||
|
// Escape all non-"*?" regex special chars
|
||||||
|
std::string special_chars = "\\^.$|()[]+/";
|
||||||
|
foreach(char c, special_chars) {
|
||||||
|
std::string char_str(1, c);
|
||||||
|
boost::replace_all(str, char_str, "\\" + char_str);
|
||||||
|
}
|
||||||
|
// Convert "*?" to their regex equivalents
|
||||||
|
boost::replace_all(str, "?", ".");
|
||||||
|
boost::replace_all(str, "*", ".*");
|
||||||
|
return boost::regex(str);
|
||||||
|
}
|
||||||
|
|
||||||
const gp_XYZ& bounds_min() const { return bounds_min_; }
|
const gp_XYZ& bounds_min() const { return bounds_min_; }
|
||||||
const gp_XYZ& bounds_max() const { return bounds_max_; }
|
const gp_XYZ& bounds_max() const { return bounds_max_; }
|
||||||
|
|
||||||
|
|||||||
@@ -111,22 +111,6 @@ bool IfcUtil::valid_binary_string(const std::string& s) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef IFCPARSE_NO_REGEX
|
|
||||||
boost::regex IfcUtil::wildcard_string_to_regex(std::string str)
|
|
||||||
{
|
|
||||||
// Escape all non-"*?" regex special chars
|
|
||||||
std::string special_chars = "\\^.$|()[]+/";
|
|
||||||
foreach(char c, special_chars) {
|
|
||||||
std::string char_str(1, c);
|
|
||||||
boost::replace_all(str, char_str, "\\"+ char_str);
|
|
||||||
}
|
|
||||||
// Convert "*?" to their regex equivalents
|
|
||||||
boost::replace_all(str, "?", ".");
|
|
||||||
boost::replace_all(str, "*", ".*");
|
|
||||||
return boost::regex(str);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void IfcUtil::sanitate_material_name(std::string &str)
|
void IfcUtil::sanitate_material_name(std::string &str)
|
||||||
{
|
{
|
||||||
// Spaces in material names have been observed to cause problems with obj and dae importers.
|
// Spaces in material names have been observed to cause problems with obj and dae importers.
|
||||||
|
|||||||
@@ -36,9 +36,6 @@
|
|||||||
|
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/dynamic_bitset.hpp>
|
#include <boost/dynamic_bitset.hpp>
|
||||||
#ifndef IFCPARSE_NO_REGEX //allow builds without boost.regex
|
|
||||||
#include <boost/regex.hpp>
|
|
||||||
#endif
|
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
#define foreach BOOST_FOREACH
|
#define foreach BOOST_FOREACH
|
||||||
@@ -119,11 +116,6 @@ namespace IfcUtil {
|
|||||||
};
|
};
|
||||||
|
|
||||||
IfcParse_EXPORT bool valid_binary_string(const std::string& s);
|
IfcParse_EXPORT bool valid_binary_string(const std::string& s);
|
||||||
|
|
||||||
#ifndef IFCPARSE_NO_REGEX
|
|
||||||
IfcParse_EXPORT boost::regex wildcard_string_to_regex(std::string str);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// Replaces spaces and potentially other problem causing characters with underscores.
|
/// Replaces spaces and potentially other problem causing characters with underscores.
|
||||||
IfcParse_EXPORT void sanitate_material_name(std::string &str);
|
IfcParse_EXPORT void sanitate_material_name(std::string &str);
|
||||||
IfcParse_EXPORT void escape_xml(std::string &str);
|
IfcParse_EXPORT void escape_xml(std::string &str);
|
||||||
|
|||||||
Reference in New Issue
Block a user