1
- import { get , set , each , isObject , isArray , isFunction , cloneDeep } from "lodash" ;
1
+ import { get , set , each , isObject , isArray , isFunction , cloneDeep } from "lodash" ;
2
2
3
3
// Create a new model by schema default values
4
- module . exports . createDefaultObject = function ( schema , obj = { } ) {
4
+ module . exports . createDefaultObject = function ( schema , obj = { } ) {
5
5
each ( schema . fields , ( field ) => {
6
6
if ( get ( obj , field . model ) === undefined && field . default !== undefined ) {
7
7
if ( isFunction ( field . default ) ) {
@@ -16,18 +16,18 @@ module.exports.createDefaultObject = function (schema, obj = {}){
16
16
} ;
17
17
18
18
// Get a new model which contains only properties of multi-edit fields
19
- module . exports . getMultipleFields = function ( schema ) {
19
+ module . exports . getMultipleFields = function ( schema ) {
20
20
let res = [ ] ;
21
21
each ( schema . fields , ( field ) => {
22
- if ( field . multi === true )
22
+ if ( field . multi === true )
23
23
res . push ( field ) ;
24
24
} ) ;
25
25
26
26
return res ;
27
27
} ;
28
28
29
29
// Merge many models to one 'work model' by schema
30
- module . exports . mergeMultiObjectFields = function ( schema , objs ) {
30
+ module . exports . mergeMultiObjectFields = function ( schema , objs ) {
31
31
let model = { } ;
32
32
33
33
let fields = module . exports . getMultipleFields ( schema ) ;
@@ -54,7 +54,7 @@ module.exports.mergeMultiObjectFields = function(schema, objs) {
54
54
return model ;
55
55
} ;
56
56
57
- module . exports . slugifyFormID = function ( schema , prefix = "" ) {
57
+ module . exports . slugifyFormID = function ( schema , prefix = "" ) {
58
58
// Try to get a reasonable default id from the schema,
59
59
// then slugify it.
60
60
if ( typeof schema . id !== "undefined" ) {
@@ -78,3 +78,21 @@ module.exports.slugifyFormID = function(schema, prefix = "") {
78
78
. replace ( / ( [ ^ a - z A - Z 0 - 9 - ] + ) / g, "" ) ;
79
79
}
80
80
} ;
81
+
82
+ module . exports . slugify = function ( name = "" ) {
83
+ // Return the slugified version of either:
84
+ return name
85
+ // NB: This is a very simple, conservative, slugify function,
86
+ // avoiding extra dependencies.
87
+ . toString ( )
88
+ . trim ( )
89
+ //.toLowerCase()
90
+ // Spaces & underscores to dashes
91
+ . replace ( / | _ / g, "-" )
92
+ // Multiple dashes to one
93
+ . replace ( / - { 2 , } / g, "-" )
94
+ // Remove leading & trailing dashes
95
+ . replace ( / ^ - + | - + $ / g, "" )
96
+ // Remove anything that isn't a (English/ASCII) letter, number or dash.
97
+ . replace ( / ( [ ^ a - z A - Z 0 - 9 - ] + ) / g, "" ) ;
98
+ } ;
0 commit comments