Class ExampleMacro

  • All Implemented Interfaces:
    org.apache.maven.doxia.logging.LogEnabled, org.apache.maven.doxia.macro.Macro

    @Component(role=org.apache.maven.doxia.macro.Macro.class,
               hint="example")
    public class ExampleMacro
    extends org.apache.maven.doxia.macro.AbstractMacro
    A macro that inserts a snippet of code or configuration from a file.
    • Method Detail

      • execute

        public void execute​(org.apache.maven.doxia.sink.Sink sink,
                            org.apache.maven.doxia.macro.MacroRequest request)
                     throws org.apache.maven.doxia.macro.MacroExecutionException
        Throws:
        org.apache.maven.doxia.macro.MacroExecutionException
      • readFile

        private static List<StringreadFile​(String path)
                                      throws org.apache.maven.doxia.macro.MacroExecutionException
        Read the file at the given path and returns its contents as a list of lines.
        Parameters:
        path - the path to the file to read.
        Returns:
        the contents of the file as a list of lines.
        Throws:
        org.apache.maven.doxia.macro.MacroExecutionException - if the file could not be read.
      • getConfigSnippet

        private static String getConfigSnippet​(Collection<String> lines)
        Extract a configuration snippet from the given lines. Config delimiters use the whole line for themselves and have no indentation. We use equals() instead of contains() to be more strict because some examples contain those delimiters.
        Parameters:
        lines - the lines to extract the snippet from.
        Returns:
        the configuration snippet.
      • getCodeSnippet

        private static String getCodeSnippet​(Collection<String> lines)
        Extract a code snippet from the given lines. Code delimiters can be indented, so we use contains() instead of equals().
        Parameters:
        lines - the lines to extract the snippet from.
        Returns:
        the code snippet.
      • writeSnippet

        private static void writeSnippet​(org.apache.maven.doxia.sink.Sink sink,
                                         String snippet)
        Write the given snippet to the file inside a source block.
        Parameters:
        sink - the sink to write to.
        snippet - the snippet to write.