ptolemy.actor.lib.string
Class StringReplace

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.string.StringSimpleReplace
                              extended by ptolemy.actor.lib.string.StringReplace
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class StringReplace
extends StringSimpleReplace

On each firing, look for instances of the pattern specified by pattern in stringToEdit and replace them with the string given by replacement. If replaceAll is true, then replace all instances that match pattern. Otherwise, replace only the first instance that matches. If there is no match, then the output is the string provided by stringToEdit, unchanged. The pattern is given by a regular expression. For a reference on regular expression syntax see: http://java.sun.com/docs/books/tutorial/extra/regex/index.html

The replacement string, as usual with string-valued parameters in Ptolemy II, can include references to parameter values in scope. E.g., if the enclosing composite actor has a parameter named "x" with value 1, say, then the replacement string a${x}b will become "a1b".

In addition, the replacement string can reference the pattern that is matched using the syntax "$$0". For example, the regular expression "t[a-z]+" in pattern will match the character t followed by a sequence of one or more lower-case letters. If replacement is "p$$0" then "this is a test" becomes "pthis is a ptest".

If the pattern containes parenthesized subpatterns, such as "(t[a-z]+)|(T([a-z]+))", then the value of replacement can reference the match of each parenthesized subpattern with the syntax "$$n", where "n" is an integer between 1 and 9. For example, if pattern="(t[a-z]+)|(T([a-z]+))" and replacement="p$$1$$3", then "this is a Test" becomes "pthis is a pest". The index "n" corresponds to the order of opening parentheses in the pattern.

To get a "$" into the replacement string, use "\$$". To get a "\" into the replacement string, use "\\".

Since:
Ptolemy II 4.0
Version:
$Id: StringReplace.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Antonio Yordan-Nones, Neil E. Turner, Edward A. Lee
See Also:
Serialized Form
Accepted Rating:
Green (net)
Proposed Rating:
Green (djstone)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  java.util.regex.Pattern _pattern
           
 Parameter replaceAll
          When the boolean value is true, replace all instances that match the pattern, and when false, replace the first instance.
 
Fields inherited from class ptolemy.actor.lib.string.StringSimpleReplace
output, pattern, replacement, stringToEdit
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
StringReplace(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
 void attributeChanged(Attribute attribute)
          Override the base class to compile a regular expression when it is changed.
 void fire()
          Perform pattern matching and substring replacement, and output the modified string.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

replaceAll

public Parameter replaceAll
When the boolean value is true, replace all instances that match the pattern, and when false, replace the first instance.


_pattern

private java.util.regex.Pattern _pattern
Constructor Detail

StringReplace

public StringReplace(CompositeEntity container,
                     java.lang.String name)
              throws NameDuplicationException,
                     IllegalActionException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
Override the base class to compile a regular expression when it is changed.

Overrides:
attributeChanged in class StringSimpleReplace
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the specified attribute is pattern and the regular expression fails to compile.

fire

public void fire()
          throws IllegalActionException
Perform pattern matching and substring replacement, and output the modified string. If no match is found, output the unmodified stringToEdit string.

Specified by:
fire in interface Executable
Overrides:
fire in class StringSimpleReplace
Throws:
IllegalActionException - If there is no director.