56
56
from processing .core .outputs import OutputRaster
57
57
from processing .core .outputs import OutputHTML
58
58
from processing .core .outputs import OutputFile
59
+ from processing .core .parameters import getParameterFromString
60
+ from processing .core .outputs import getOutputFromString
59
61
from processing .tools import dataobjects
60
62
from processing .tools .system import isWindows
61
63
from processing .script .WrongScriptException import WrongScriptException
@@ -148,7 +150,6 @@ def createDescriptiveName(self, s):
148
150
149
151
def processParameterLine (self , line ):
150
152
param = None
151
- out = None
152
153
line = line .replace ('#' , '' )
153
154
if line .lower ().strip ().startswith ('showplots' ):
154
155
self .showPlots = True
@@ -169,133 +170,24 @@ def processParameterLine(self, line):
169
170
self .name = self .i18n_name = tokens [0 ]
170
171
return
171
172
172
- if tokens [1 ].lower ().strip ().startswith ('output' ):
173
- outToken = tokens [1 ].strip ()[len ('output' ) + 1 :]
174
- out = self .processOutputParameterToken (outToken )
175
-
176
- elif tokens [1 ].lower ().strip ().startswith ('optional' ):
177
- optToken = tokens [1 ].strip ()[len ('optional' ) + 1 :]
178
- param = self .processInputParameterToken (optToken , tokens [0 ])
179
- if param :
180
- param .optional = True
181
-
182
- else :
183
- param = self .processInputParameterToken (tokens [1 ], tokens [0 ])
173
+ out = getOutputFromString (line )
174
+ if out is None :
175
+ param = getParameterFromString (line )
184
176
185
177
if param is not None :
186
178
self .addParameter (param )
187
179
elif out is not None :
188
180
out .name = tokens [0 ]
189
- out .description = tokens [ 0 ]
181
+ out .description = desc
190
182
self .addOutput (out )
191
183
else :
192
184
raise WrongScriptException (
193
- self .tr ('Could not load R script: %s.\n Problem with line %s' % (self .descriptionFile , line )))
194
-
195
- def processInputParameterToken (self , token , name ):
196
- param = None
197
-
198
- desc = self .createDescriptiveName (name )
199
-
200
- if token .lower ().strip ().startswith ('raster' ):
201
- param = ParameterRaster (name , desc , False )
202
- elif token .lower ().strip () == 'vector' :
203
- param = ParameterVector (name , desc ,
204
- [dataobjects .TYPE_VECTOR_ANY ])
205
- elif token .lower ().strip () == 'vector point' :
206
- param = ParameterVector (name , desc ,
207
- [dataobjects .TYPE_VECTOR_POINT ])
208
- elif token .lower ().strip () == 'vector line' :
209
- param = ParameterVector (name , desc ,
210
- [dataobjects .TYPE_VECTOR_LINE ])
211
- elif token .lower ().strip () == 'vector polygon' :
212
- param = ParameterVector (name , desc ,
213
- [dataobjects .TYPE_VECTOR_POLYGON ])
214
- elif token .lower ().strip () == 'table' :
215
- param = ParameterTable (name , desc , False )
216
- elif token .lower ().strip ().startswith ('multiple raster' ):
217
- param = ParameterMultipleInput (name , desc ,
218
- dataobjects .TYPE_RASTER )
219
- param .optional = False
220
- elif token .lower ().strip () == 'multiple vector' :
221
- param = ParameterMultipleInput (name , desc ,
222
- dataobjects .TYPE_VECTOR_ANY )
223
- param .optional = False
224
- elif token .lower ().strip ().startswith ('selection' ):
225
- options = token .strip ()[len ('selection' ):].split (';' )
226
- param = ParameterSelection (name , desc , options )
227
- elif token .lower ().strip ().startswith ('boolean' ):
228
- default = token .strip ()[len ('boolean' ) + 1 :]
229
- if default :
230
- param = ParameterBoolean (name , desc , default )
231
- else :
232
- param = ParameterBoolean (name , desc )
233
- elif token .lower ().strip ().startswith ('number' ):
234
- default = token .strip ()[len ('number' ) + 1 :]
235
- if default :
236
- param = ParameterNumber (name , desc , default = default )
237
- else :
238
- param = ParameterNumber (name , desc )
239
- elif token .lower ().strip ().startswith ('field' ):
240
- field = token .strip ()[len ('field' ) + 1 :]
241
- found = False
242
- for p in self .parameters :
243
- if p .name == field :
244
- found = True
245
- break
246
- if found :
247
- param = ParameterTableField (name , desc , field )
248
- elif token .lower ().strip ().startswith ('multiple field' ):
249
- field = token .strip ()[len ('multiple field' ) + 1 :]
250
- found = False
251
- for p in self .parameters :
252
- if p .name == field :
253
- found = True
254
- break
255
- if found :
256
- param = ParameterTableMultipleField (token , desc , field )
257
- elif token .lower ().strip () == 'extent' :
258
- param = ParameterExtent (name , desc )
259
- elif token .lower ().strip () == 'point' :
260
- param = ParameterPoint (name , desc )
261
- elif token .lower ().strip () == 'file' :
262
- param = ParameterFile (name , desc , False )
263
- elif token .lower ().strip () == 'folder' :
264
- param = ParameterFile (name , desc , True )
265
- elif token .lower ().strip ().startswith ('string' ):
266
- default = token .strip ()[len ('string' ) + 1 :]
267
- if default :
268
- param = ParameterString (name , desc , default )
269
- else :
270
- param = ParameterString (name , desc )
271
- elif token .lower ().strip ().startswith ('longstring' ):
272
- default = token .strip ()[len ('longstring' ) + 1 :]
273
- if default :
274
- param = ParameterString (name , desc , default , multiline = True )
275
- else :
276
- param = ParameterString (name , desc , multiline = True )
277
- elif token .lower ().strip () == 'crs' :
278
- default = token .strip ()[len ('crs' ) + 1 :]
279
- if default :
280
- param = ParameterCrs (name , desc , default )
281
- else :
282
- param = ParameterCrs (name , desc )
185
+ self .tr ('Could not load script: %s.\n '
186
+ 'Problem with line "%s"' , 'ScriptAlgorithm' ) % (self .descriptionFile or '' , line ))
283
187
284
- return param
285
-
286
- def processOutputParameterToken (self , token ):
287
- out = None
288
-
289
- if token .lower ().strip ().startswith ('raster' ):
290
- out = OutputRaster ()
291
- elif token .lower ().strip ().startswith ('vector' ):
292
- out = OutputVector ()
293
- elif token .lower ().strip ().startswith ('table' ):
294
- out = OutputTable ()
295
- elif token .lower ().strip ().startswith ('file' ):
296
- out = OutputFile ()
188
+ raise WrongScriptException (
189
+ self .tr ('Could not load R script: %s.\n Problem with line %s' % (self .descriptionFile , line )))
297
190
298
- return out
299
191
300
192
def processAlgorithm (self , progress ):
301
193
if isWindows ():
0 commit comments