Skip to content

Commit

Permalink
[DOXIASITETOOLS-324] Allow configuration of parsers (#140)
Browse files Browse the repository at this point in the history
Introduce interface ParserConfigurator which can be passed to
SiteRenderingContext
  • Loading branch information
kwin committed Apr 20, 2024
1 parent 511fb2f commit 2cdd1de
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -320,9 +320,16 @@ public void renderDocument(
String resource = doc.getAbsolutePath();

Parser parser = doxia.getParser(docRenderingContext.getParserId());
// DOXIASITETOOLS-146 don't render comments from source markup
parser.setEmitComments(false);
parser.setEmitAnchorsForIndexableEntries(true);
ParserConfigurator configurator = siteContext.getParserConfigurator();
boolean isConfigured = false;
if (configurator != null) {
isConfigured = configurator.configure(docRenderingContext.getParserId(), doc.toPath(), parser);
}
if (!isConfigured) {
// DOXIASITETOOLS-146 don't render comments from source markup
parser.setEmitComments(false);
parser.setEmitAnchorsForIndexableEntries(true);
}

// TODO: DOXIA-111: the filter used here must be checked generally.
if (docRenderingContext.getAttribute("velocity") != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.maven.doxia.siterenderer;

import java.nio.file.Path;

import org.apache.maven.doxia.parser.Parser;

/**
* Interface which allows to configure a particular {@link Parser} before it is being used.
*/
public interface ParserConfigurator {

/**
* Configures the given parser which is afterwards used to parse the source file with the given path.
* @param parserId the parser id
* @param filePath the absolute path of the file to parse
* @param parser the parser to configure
* @return {@code true} if the parser has been configured, otherwise {@code false}
*/
boolean configure(String parserId, Path filePath, Parser parser);
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ public class SiteRenderingContext {

private File processedContentOutput;

private ParserConfigurator parserConfigurator;

/**
* If input documents should be validated before parsing.
* By default no validation is performed.
Expand Down Expand Up @@ -388,4 +390,22 @@ public File getRootDirectory() {
public void setRootDirectory(File rootDirectory) {
this.rootDirectory = rootDirectory;
}

/**
* Return the configurator for {@link Parser}s.
* @return the parser configurator (may be {@code null} in which case the default configuration is applied)
* @since 4.0
*/
public ParserConfigurator getParserConfigurator() {
return parserConfigurator;
}

/**
* Set the configurator to use for {@link Parser}s.
* @param parserConfigurator the configurator
* @since 4.0
*/
public void setParserConfigurator(ParserConfigurator parserConfigurator) {
this.parserConfigurator = parserConfigurator;
}
}

0 comments on commit 2cdd1de

Please sign in to comment.