Interface MacroDefinitionTransformer
- All Known Subinterfaces:
- XhtmlContent
- All Known Implementing Classes:
- DefaultXhtmlContent,- MacroDefinitionTransformerImpl
public interface MacroDefinitionTransformer
Provides oprations fo transforming macro definitions, typically used by macro developers to obtain
 and optionally modify macro tags (as 
MacroDefinition objects) in a
 page of macro body content.- Since:
- 7.6
- See Also:
- 
Method SummaryModifier and TypeMethodDescriptionvoidhandleMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionHandler handler) Perform an operation onMacroDefinitions in the suppliedstorageFragmentwithout making changes to the storage representation.voidhandleMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionHandler handler, MacroDefinitionMarshallingStrategy strategy) Perform an operation onMacroDefinitions in the suppliedstorageFragment, with optional changes to the storage representation defined by theMacroDefinitionMarshallingStrategy.replaceMacroDefinitionsWithString(String storageFragment, ConversionContext context, MacroDefinitionReplacer replacer) ReplacesMacroDefinitions in the suppliedstorageFragmentwith a String.updateMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionUpdater updater) UpdatesMacroDefinitions in the suppliedstorageFragment.
- 
Method Details- 
updateMacroDefinitionsString updateMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionUpdater updater) throws XhtmlException UpdatesMacroDefinitions in the suppliedstorageFragment.// Changes the name of all "mice" macros to "cheese". page.setBodyAsString(xhtmlContent.updateMacroDefinitions(page.getBodyAsString(), context, new XhtmlContent.MacroDefinitionUpdater() { public MacroDefinition update(MacroDefinition macroDefinition) { if ("mice".equals(macroDefinition.getName())) macroDefinition.setName("cheese"); return macroDefinition; } }));- Parameters:
- storageFragment- or more typically the storage representation of a complete- ContentEntityObjectwhich might contain macro definitions.
- context- for the conversion.
- updater- which is called to update each MacroDefinition found.
- Returns:
- the storage representation of the modified fragment.
- Throws:
- XhtmlException- if there was a problem reading the storage fragment, creating the MacroDefinition or creating the modified fragment.
 
- 
replaceMacroDefinitionsWithStringString replaceMacroDefinitionsWithString(String storageFragment, ConversionContext context, MacroDefinitionReplacer replacer) throws XhtmlException ReplacesMacroDefinitions in the suppliedstorageFragmentwith a String. Use {link #updateMacroDefinitions} rather than this method if you wish to replace or update one definition with another.// Replaces "cheese" macros with some XHTML. page.setBodyAsString(xhtmlContent.replaceMacroDefinitionsWithString(page.getBodyAsString(), context, new MacroDefinitionReplacer() { public String replace(MacroDefinition macroDefinition) throws XhtmlException { if ("cheese".equals(macroDefinition.getName())) return "I hate cheese! "; return xhtmlContent.convertMacroDefinitionToStorage(macroDefinition, context); } }));- Parameters:
- storageFragment- or more typically the storage representation of a complete- ContentEntityObjectwhich might contain macro definitions.
- context- for the conversion.
- replacer- which is called to replace each MacroDefinition found with a replacement in storage format (typically XHTML).
- Returns:
- the storage representation of the modified fragment.
- Throws:
- XhtmlException- if there was a problem reading the storage fragment, creating the MacroDefinition or creating the modified fragment.
 
- 
handleMacroDefinitionsvoid handleMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionHandler handler) throws XhtmlException Perform an operation onMacroDefinitions in the suppliedstorageFragmentwithout making changes to the storage representation.// Finds the last macro on a page final AtomicReference atomicMacroDefinition = new AtomicReference (); xhtmlContent.handleMacroDefinitions(page.getBodyAsString(), context, new MacroDefinitionHandler() { public void handle(MacroDefinition macroDefinition) { atomicMacroDefinition.set(macroDefinition); } }); MacroDefinition lastMacro = atomicMacroDefinition.get(); - Parameters:
- storageFragment- or more typically the storage representation of a complete- ContentEntityObjectwhich might contain macro definitions.
- context- for the conversion.
- handler- which is called each MacroDefinition found.
- Throws:
- XhtmlException- if there was a problem reading the storage fragment or creating the MacroDefinition.
 
- 
handleMacroDefinitionsvoid handleMacroDefinitions(String storageFragment, ConversionContext context, MacroDefinitionHandler handler, MacroDefinitionMarshallingStrategy strategy) throws XhtmlException Perform an operation onMacroDefinitions in the suppliedstorageFragment, with optional changes to the storage representation defined by theMacroDefinitionMarshallingStrategy.// Finds the last macro on a page, maintaining any nested macros within the MacroDefinition body final AtomicReference atomicMacroDefinition = new AtomicReference (); xhtmlContent.handleMacroDefinitions(page.getBodyAsString(), context, new MacroDefinitionHandler() { public void handle(MacroDefinition macroDefinition) { atomicMacroDefinition.set(macroDefinition); } }, MacroDefinitionMarshallingStrategy.MARSHALL_MACRO); MacroDefinition lastMacro = atomicMacroDefinition.get(); - Parameters:
- storageFragment- or more typically the storage representation of a complete- ContentEntityObjectwhich might contain macro definitions.
- context- for the conversion.
- handler- which is called each MacroDefinition found.
- strategy- the strategy used to transform the body of the handled macros
- Throws:
- XhtmlException- if there was a problem reading the storage fragment or creating the MacroDefinition.
 
 
-