mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-06 07:51:47 +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 <boost/algorithm/string.hpp>
|
||||
#include <boost/regex.hpp>
|
||||
|
||||
#include <gp_Mat.hxx>
|
||||
#include <gp_Mat2d.hxx>
|
||||
@@ -308,7 +309,7 @@ namespace IfcGeom {
|
||||
{
|
||||
names_to_include_or_exclude.clear();
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -317,10 +318,24 @@ namespace IfcGeom {
|
||||
{
|
||||
names_to_include_or_exclude.clear();
|
||||
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;
|
||||
}
|
||||
|
||||
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_max() const { return bounds_max_; }
|
||||
|
||||
|
||||
@@ -111,22 +111,6 @@ bool IfcUtil::valid_binary_string(const std::string& s) {
|
||||
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)
|
||||
{
|
||||
// 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/dynamic_bitset.hpp>
|
||||
#ifndef IFCPARSE_NO_REGEX //allow builds without boost.regex
|
||||
#include <boost/regex.hpp>
|
||||
#endif
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
#define foreach BOOST_FOREACH
|
||||
@@ -119,11 +116,6 @@ namespace IfcUtil {
|
||||
};
|
||||
|
||||
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.
|
||||
IfcParse_EXPORT void sanitate_material_name(std::string &str);
|
||||
IfcParse_EXPORT void escape_xml(std::string &str);
|
||||
|
||||
Reference in New Issue
Block a user