Class MacroDefinitionTransformerImpl

    • Constructor Detail

      • MacroDefinitionTransformerImpl

        public MacroDefinitionTransformerImpl​(ContentTransformerFactory contentTransformerFactory)
    • Method Detail

      • updateMacroDefinitions

        public String updateMacroDefinitions​(String storageFragment,
                                             ConversionContext context,
                                             MacroDefinitionUpdater updater)
                                      throws XhtmlException
        Description copied from interface: MacroDefinitionTransformer
        Updates MacroDefinitions in the supplied storageFragment.
         // 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;
                }
            }));
         
        Specified by:
        updateMacroDefinitions in interface MacroDefinitionTransformer
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which 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.
      • replaceMacroDefinitionsWithString

        public String replaceMacroDefinitionsWithString​(String storageFragment,
                                                        ConversionContext context,
                                                        MacroDefinitionReplacer replacer)
                                                 throws XhtmlException
        Description copied from interface: MacroDefinitionTransformer
        Replaces MacroDefinitions in the supplied storageFragment with 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); } }));
        Specified by:
        replaceMacroDefinitionsWithString in interface MacroDefinitionTransformer
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which 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.
      • handleMacroDefinitions

        public void handleMacroDefinitions​(String storageFragment,
                                           ConversionContext context,
                                           MacroDefinitionHandler handler)
                                    throws XhtmlException
        Description copied from interface: MacroDefinitionTransformer
        Perform an operation on MacroDefinitions in the supplied storageFragment without 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();
         
        Specified by:
        handleMacroDefinitions in interface MacroDefinitionTransformer
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which 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.
      • handleMacroDefinitions

        public void handleMacroDefinitions​(String storageFragment,
                                           ConversionContext context,
                                           MacroDefinitionHandler handler,
                                           MacroDefinitionMarshallingStrategy strategy)
                                    throws XhtmlException
        Description copied from interface: MacroDefinitionTransformer
        Perform an operation on MacroDefinitions in the supplied storageFragment, with optional changes to the storage representation defined by the MacroDefinitionMarshallingStrategy.
         // 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();
         
        Specified by:
        handleMacroDefinitions in interface MacroDefinitionTransformer
        Parameters:
        storageFragment - or more typically the storage representation of a complete ContentEntityObject which 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.