mirror of
https://github.com/qgis/QGIS.git
synced 2025-11-16 00:05:54 -05:00
Add method to launder layer names to get them into a format
suitable for typical database layer naming
This commit is contained in:
parent
567315d658
commit
60bb4b321b
@ -66,6 +66,18 @@ result list.
|
|||||||
.. versionadded:: 3.26
|
.. versionadded:: 3.26
|
||||||
%End
|
%End
|
||||||
|
|
||||||
|
static QString launderLayerName( const QString &name );
|
||||||
|
%Docstring
|
||||||
|
Launders a layer's name, converting it into a format which is general suitable for
|
||||||
|
file names or database layer names.
|
||||||
|
|
||||||
|
Specifically this method:
|
||||||
|
|
||||||
|
- Converts the name to lowercase
|
||||||
|
- Replaces spaces by underscore characters
|
||||||
|
|
||||||
|
.. versionadded:: 3.28
|
||||||
|
%End
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
#include "qgslogger.h"
|
#include "qgslogger.h"
|
||||||
#include "qgsmaplayer.h"
|
#include "qgsmaplayer.h"
|
||||||
#include "qgscoordinatetransform.h"
|
#include "qgscoordinatetransform.h"
|
||||||
|
#include <QRegularExpression>
|
||||||
|
|
||||||
QgsRectangle QgsMapLayerUtils::combinedExtent( const QList<QgsMapLayer *> &layers, const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &transformContext )
|
QgsRectangle QgsMapLayerUtils::combinedExtent( const QList<QgsMapLayer *> &layers, const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &transformContext )
|
||||||
{
|
{
|
||||||
@ -154,3 +155,15 @@ QList<QgsMapLayer *> QgsMapLayerUtils::sortLayersByType( const QList<QgsMapLayer
|
|||||||
} );
|
} );
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QgsMapLayerUtils::launderLayerName( const QString &name )
|
||||||
|
{
|
||||||
|
QString laundered = name.toLower();
|
||||||
|
const thread_local QRegularExpression sRxSwapChars( QStringLiteral( "\\s" ) );
|
||||||
|
laundered.replace( sRxSwapChars, QStringLiteral( "_" ) );
|
||||||
|
|
||||||
|
const thread_local QRegularExpression sRxRemoveChars( QStringLiteral( "[^a-zA-Z0-9_]" ) );
|
||||||
|
laundered.replace( sRxRemoveChars, QString() );
|
||||||
|
|
||||||
|
return laundered;
|
||||||
|
}
|
||||||
|
|||||||
@ -80,6 +80,18 @@ class CORE_EXPORT QgsMapLayerUtils
|
|||||||
*/
|
*/
|
||||||
static QList< QgsMapLayer * > sortLayersByType( const QList< QgsMapLayer * > &layers, const QList< QgsMapLayerType > &order );
|
static QList< QgsMapLayer * > sortLayersByType( const QList< QgsMapLayer * > &layers, const QList< QgsMapLayerType > &order );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Launders a layer's name, converting it into a format which is general suitable for
|
||||||
|
* file names or database layer names.
|
||||||
|
*
|
||||||
|
* Specifically this method:
|
||||||
|
*
|
||||||
|
* - Converts the name to lowercase
|
||||||
|
* - Replaces spaces by underscore characters
|
||||||
|
*
|
||||||
|
* \since QGIS 3.28
|
||||||
|
*/
|
||||||
|
static QString launderLayerName( const QString &name );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -159,6 +159,9 @@ class TestQgsMapLayerUtils(unittest.TestCase):
|
|||||||
self.assertEqual(QgsMapLayerUtils.sortLayersByType([vl1, rl1, gp1, vl2], [QgsMapLayerType.AnnotationLayer]),
|
self.assertEqual(QgsMapLayerUtils.sortLayersByType([vl1, rl1, gp1, vl2], [QgsMapLayerType.AnnotationLayer]),
|
||||||
[vl1, rl1, gp1, vl2])
|
[vl1, rl1, gp1, vl2])
|
||||||
|
|
||||||
|
def test_launder_layer_name(self):
|
||||||
|
self.assertEqual(QgsMapLayerUtils.launderLayerName('abc Def4_a.h%'), 'abc_def4_ah')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user