@@ -98,8 +98,16 @@ module.exports = {
9898 fileContent += NEWLINE + NEWLINE ;
9999 }
100100 fileContent += `@ simple ${ entity . name } ` ;
101- if ( entity . roles . length > 0 ) {
102- fileContent += ` ${ entity . roles . length > 1 ? `hasRoles` : `hasRole` } ${ entity . roles . join ( ',' ) } `
101+ if ( entity . roles && entity . roles . length > 0 ) {
102+ fileContent += ` ${ entity . roles . length > 1 ? `hasRoles` : `hasRole` } ${ entity . roles . join ( ',' ) } ` ;
103+ }
104+ if ( entity . features && entity . features . length > 0 ) {
105+ let featuresList = new Array ( ) ;
106+ entity . features . forEach ( item => {
107+ if ( item . featureName ) featuresList . push ( item . featureName ) ;
108+ if ( item . modelName ) featuresList . push ( item . modelName ) ;
109+ } )
110+ fileContent += ` ${ featuresList . length > 1 ? `usesFeatures` : `usesFeature` } ${ featuresList . join ( ',' ) } ` ;
103111 }
104112 fileContent += NEWLINE + NEWLINE ;
105113 } ) ;
@@ -110,9 +118,17 @@ module.exports = {
110118 fileContent += '> # PREBUILT Entity definitions' + NEWLINE + NEWLINE ;
111119 LUISJSON . prebuiltEntities . forEach ( function ( entity ) {
112120 fileContent += `@ prebuilt ${ entity . name } ` ;
113- if ( entity . roles . length > 0 ) {
121+ if ( entity . roles && entity . roles . length > 0 ) {
114122 fileContent += ` ${ entity . roles . length > 1 ? `hasRoles` : `hasRole` } ${ entity . roles . join ( ',' ) } ` ;
115123 }
124+ if ( entity . features && entity . features . length > 0 ) {
125+ let featuresList = new Array ( ) ;
126+ entity . features . forEach ( item => {
127+ if ( item . featureName ) featuresList . push ( item . featureName ) ;
128+ if ( item . modelName ) featuresList . push ( item . modelName ) ;
129+ } )
130+ fileContent += ` ${ featuresList . length > 1 ? `usesFeatures` : `usesFeature` } ${ featuresList . join ( ',' ) } ` ;
131+ }
116132 fileContent += NEWLINE + NEWLINE ;
117133 } ) ;
118134 fileContent += NEWLINE ;
@@ -122,7 +138,7 @@ module.exports = {
122138 fileContent += '> # Phrase list definitions' + NEWLINE + NEWLINE ;
123139 LUISJSON . model_features . forEach ( function ( entity ) {
124140 fileContent += `@ phraselist ${ entity . name } ${ ( entity . mode ? `(interchangeable)` : `` ) } ` ;
125- if ( entity . words !== '' ) {
141+ if ( entity . words && entity . words !== '' ) {
126142 fileContent += ` = ${ NEWLINE } \t- ${ entity . words } ` ;
127143 }
128144 fileContent += NEWLINE + NEWLINE ;
@@ -133,9 +149,17 @@ module.exports = {
133149 fileContent += '> # List entities' + NEWLINE + NEWLINE ;
134150 LUISJSON . closedLists . forEach ( function ( ListItem ) {
135151 fileContent += `@ list ${ ListItem . name } ` ;
136- if ( ListItem . roles . length > 0 ) {
152+ if ( ListItem . roles && ListItem . roles . length > 0 ) {
137153 fileContent += ` ${ ListItem . roles . length > 1 ? `hasRoles` : `hasRole` } ${ ListItem . roles . join ( ',' ) } ` ;
138154 }
155+ if ( ListItem . features && ListItem . features . length > 0 ) {
156+ let featuresList = new Array ( ) ;
157+ ListItem . features . forEach ( item => {
158+ if ( item . featureName ) featuresList . push ( item . featureName ) ;
159+ if ( item . modelName ) featuresList . push ( item . modelName ) ;
160+ } )
161+ fileContent += ` ${ featuresList . length > 1 ? `usesFeatures` : `usesFeature` } ${ featuresList . join ( ',' ) } ` ;
162+ }
139163 if ( ListItem . subLists . length !== 0 ) {
140164 fileContent += ` = ` ;
141165 fileContent += NEWLINE ;
@@ -155,9 +179,17 @@ module.exports = {
155179 fileContent += '> # RegEx entities' + NEWLINE + NEWLINE ;
156180 LUISJSON . regex_entities . forEach ( function ( regExEntity ) {
157181 fileContent += `@ regex ${ regExEntity . name } ` ;
158- if ( regExEntity . roles . length > 0 ) {
182+ if ( regExEntity . roles && regExEntity . roles . length > 0 ) {
159183 fileContent += ` ${ regExEntity . roles . length > 1 ? `hasRoles` : `hasRole` } ${ regExEntity . roles . join ( ',' ) } ` ;
160184 }
185+ if ( regExEntity . features && regExEntity . features . length > 0 ) {
186+ let featuresList = new Array ( ) ;
187+ regExEntity . features . forEach ( item => {
188+ if ( item . featureName ) featuresList . push ( item . featureName ) ;
189+ if ( item . modelName ) featuresList . push ( item . modelName ) ;
190+ } )
191+ fileContent += ` ${ featuresList . length > 1 ? `usesFeatures` : `usesFeature` } ${ featuresList . join ( ',' ) } ` ;
192+ }
161193 if ( regExEntity . regexPattern !== '' ) {
162194 fileContent += ` = /${ regExEntity . regexPattern } /` ;
163195 }
@@ -171,9 +203,17 @@ module.exports = {
171203 fileContent += '> # Composite entities' + NEWLINE + NEWLINE ;
172204 LUISJSON . composites . forEach ( composite => {
173205 fileContent += `@ composite ${ composite . name } ` ;
174- if ( composite . roles . length > 0 ) {
206+ if ( composite . roles && composite . roles . length > 0 ) {
175207 fileContent += ` ${ composite . roles . length > 1 ? `hasRoles` : `hasRole` } ${ composite . roles . join ( ',' ) } ` ;
176208 }
209+ if ( composite . features && composite . features . length > 0 ) {
210+ let featuresList = new Array ( ) ;
211+ composite . features . forEach ( item => {
212+ if ( item . featureName ) featuresList . push ( item . featureName ) ;
213+ if ( item . modelName ) featuresList . push ( item . modelName ) ;
214+ } )
215+ fileContent += ` ${ featuresList . length > 1 ? `usesFeatures` : `usesFeature` } ${ featuresList . join ( ',' ) } ` ;
216+ }
177217 if ( composite . children . length > 0 ) {
178218 fileContent += ` = [${ composite . children . join ( ', ' ) } ]` ;
179219 }
0 commit comments