Class StringReplace
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- ptolemy.actor.lib.string.StringReplace
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
public class StringReplace extends TypedAtomicActor
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://download.oracle.com/javase/tutorial/essential/regex/.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 contains 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$
- Author:
- Antonio Yordan-Nones, Neil E. Turner, Edward A. Lee
- Pt.AcceptedRating:
- Green (net)
- Pt.ProposedRating:
- Green (djstone)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description TypedIOPort
output
The output port on which the edited string is produced.PortParameter
pattern
The pattern used to pattern match and replace the stringToEdit string.Parameter
regularExpression
If true, interpret the pattern as a regular expression.Parameter
replaceAll
When the boolean value is true, replace all instances that match the pattern, and when false, replace the first instance.PortParameter
replacement
The replacement string that replaces any matched instance of the pattern.PortParameter
stringToEdit
The string to edit by replacing substrings that match the specified pattern with the specified replacement.-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _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
Constructors Constructor Description StringReplace(CompositeEntity container, java.lang.String name)
Construct an actor with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attributeChanged(Attribute attribute)
Override the base class to compile a regular expression when it is changed.java.lang.Object
clone(Workspace workspace)
Clone the attribute into the specified workspace.void
fire()
Perform pattern matching and substring replacement, and output the modified string.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, 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
_addPort, _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, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, 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.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
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
-
-
-
-
Field Detail
-
stringToEdit
public PortParameter stringToEdit
The string to edit by replacing substrings that match the specified pattern with the specified replacement. This is a string that defaults to the empty string.
-
output
public TypedIOPort output
The output port on which the edited string is produced. This has type string.
-
pattern
public PortParameter pattern
The pattern used to pattern match and replace the stringToEdit string. It is an empty string by default.
-
replacement
public PortParameter replacement
The replacement string that replaces any matched instance of the pattern. It is an empty string by default.
-
replaceAll
public Parameter replaceAll
When the boolean value is true, replace all instances that match the pattern, and when false, replace the first instance.
-
regularExpression
public Parameter regularExpression
If true, interpret the pattern as a regular expression. Otherwise, interpret it as the literal string to replace. This is a boolean that defaults to true.
-
-
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 classNamedObj
- Parameters:
attribute
- The attribute that changed.- Throws:
IllegalActionException
- If the specified attribute is pattern and the regular expression fails to compile.
-
clone
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
Clone the attribute into the specified workspace. The resulting object has no base directory name nor any reference to any open stream.- Overrides:
clone
in classTypedAtomicActor
- Parameters:
workspace
- The workspace for the new object.- Returns:
- A new attribute.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class contains an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,NamedObj.setDeferringChangeRequests(boolean)
-
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 interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If there is no director.
-
-