Commit a5e1455f0c30d7c1f99b2bb6d1dee26bb7c23530

Authored by Charles Otto
1 parent d177a459

Rework SubjectTransform

Filename is now accessible via the metadata interface, and Subject is now no
longer an important variable name.
Rework subject transform to apply an input regex to the value of an input key
name, and store the resulting value in the specified output key name.
Showing 1 changed file with 10 additions and 6 deletions
openbr/plugins/misc.cpp
@@ -354,27 +354,31 @@ BR_REGISTER(Transform, AsTransform) @@ -354,27 +354,31 @@ BR_REGISTER(Transform, AsTransform)
354 354
355 /*! 355 /*!
356 * \ingroup transforms 356 * \ingroup transforms
357 - * \brief Change the template subject using a regular expresion matched to the file's base name. 357 + * \brief Apply the input regular expression to the value of inputProperty, store the matched portion in outputProperty.
358 * \author Josh Klontz \cite jklontz 358 * \author Josh Klontz \cite jklontz
359 */ 359 */
360 -class SubjectTransform : public UntrainableMetaTransform 360 +class RegexPropertyTransform : public UntrainableMetaTransform
361 { 361 {
362 Q_OBJECT 362 Q_OBJECT
363 Q_PROPERTY(QString regexp READ get_regexp WRITE set_regexp RESET reset_regexp STORED false) 363 Q_PROPERTY(QString regexp READ get_regexp WRITE set_regexp RESET reset_regexp STORED false)
  364 + Q_PROPERTY(QString inputProperty READ get_inputProperty WRITE set_inputProperty RESET reset_inputProperty STORED false)
  365 + Q_PROPERTY(QString outputProperty READ get_outputProperty WRITE set_outputProperty RESET reset_outputProperty STORED false)
364 BR_PROPERTY(QString, regexp, "(.*)") 366 BR_PROPERTY(QString, regexp, "(.*)")
  367 + BR_PROPERTY(QString, inputProperty, "name")
  368 + BR_PROPERTY(QString, outputProperty, "Label")
365 369
366 void project(const Template &src, Template &dst) const 370 void project(const Template &src, Template &dst) const
367 { 371 {
368 dst = src; 372 dst = src;
369 QRegularExpression re(regexp); 373 QRegularExpression re(regexp);
370 - QRegularExpressionMatch match = re.match(dst.file.baseName()); 374 + QRegularExpressionMatch match = re.match(dst.file.get<QString>(inputProprety));
371 if (!match.hasMatch()) 375 if (!match.hasMatch())
372 - qFatal("Unable to match regular expression \"%s\" to base name \"%s\"!", qPrintable(regexp), qPrintable(dst.file.baseName()));  
373 - dst.file.set("Subject", match.captured(match.lastCapturedIndex())); 376 + qFatal("Unable to match regular expression \"%s\" to base name \"%s\"!", qPrintable(regexp), qPrintable(dst.file.get<QString>(inputProperty)));
  377 + dst.file.set(outputProperty, match.captured(match.lastCapturedIndex()));
374 } 378 }
375 }; 379 };
376 380
377 -BR_REGISTER(Transform, SubjectTransform) 381 +BR_REGISTER(Transform, RegexPropertyTransform)
378 382
379 /*! 383 /*!
380 * \ingroup transforms 384 * \ingroup transforms