Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use highlight.js to add syntax highlighting to the generated HTML documents. #68

Merged
merged 2 commits into from
Nov 17, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public void buildAllInOne(List<ApiDoc> apiDocList, ApiConfig config, JavaProject
List<ApiErrorCode> errorCodeList = errorCodeDictToList(config);

Template tpl = BeetlTemplateUtil.getByName(template);
tpl.binding(TemplateVariable.STYLE.getVariable(),config.getStyle());
tpl.binding(TemplateVariable.API_DOC_LIST.getVariable(), apiDocList);
tpl.binding(TemplateVariable.ERROR_CODE_LIST.getVariable(), errorCodeList);
tpl.binding(TemplateVariable.VERSION_LIST.getVariable(), config.getRevisionLogs());
Expand Down
26 changes: 24 additions & 2 deletions src/main/java/com/power/doc/builder/ProjectDocConfigBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import com.power.common.util.CollectionUtil;
import com.power.common.util.StringUtil;
import com.power.doc.constants.DocGlobalConstants;
import com.power.doc.constants.HighlightStyle;
import com.power.doc.model.*;
import com.power.doc.utils.JavaClassUtil;
import com.thoughtworks.qdox.JavaProjectBuilder;
Expand Down Expand Up @@ -71,6 +72,7 @@ public ProjectDocConfigBuilder(ApiConfig apiConfig, JavaProjectBuilder javaProje
} else {
this.serverUrl = apiConfig.getServerUrl();
}
this.setHighlightStyle();
javaProjectBuilder.setEncoding(Charset.DEFAULT_CHARSET);
this.javaProjectBuilder = javaProjectBuilder;
this.loadJavaSource(apiConfig.getSourceCodePaths(), this.javaProjectBuilder);
Expand Down Expand Up @@ -164,12 +166,32 @@ private void checkResponseBodyAdvice(ApiConfig config) {
if (Objects.nonNull(responseBodyAdvice) && StringUtil.isNotEmpty(responseBodyAdvice.getClassName())) {
try {
Class.forName(responseBodyAdvice.getClassName());
}catch (ClassNotFoundException e){
throw new RuntimeException("Can't find class "+responseBodyAdvice.getClassName()+" for ResponseBodyAdvice.");
} catch (ClassNotFoundException e) {
throw new RuntimeException("Can't find class " + responseBodyAdvice.getClassName() + " for ResponseBodyAdvice.");
}
}
}

/**
* 设置高亮样式
*/
private void setHighlightStyle() {
String style = apiConfig.getStyle();
if (HighlightStyle.containStyle(style)) {
return;
}
Random random = new Random();
if ("randomLight".equals(style)) {
apiConfig.setStyle(HighlightStyle.randomLight(random));
} else if ("randomDark".equals(style)) {
apiConfig.setStyle(HighlightStyle.randomDark(random));
} else if ("random".equals(style)) {
apiConfig.setStyle(HighlightStyle.randomAll(random));
} else {
apiConfig.setStyle(HighlightStyle.DEFAULT_STYLE);
}
}


public JavaProjectBuilder getJavaProjectBuilder() {
return javaProjectBuilder;
Expand Down
167 changes: 167 additions & 0 deletions src/main/java/com/power/doc/constants/HighlightStyle.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
package com.power.doc.constants;

import java.util.Arrays;
import java.util.List;
import java.util.Random;

/**
* @author jitmit 2020/11/16
*/
public class HighlightStyle {

public static final String DEFAULT_STYLE = "github";

private static final List<String> DARK_STYLE;

private static final List<String> LIGHT_STYLE;

static {
LIGHT_STYLE = Arrays.asList(
DEFAULT_STYLE,
"a11y-light",
"arduino-light",
"ascetic",
"atelier-cave-light",
"atelier-dune-light",
"atelier-estuary-light",
"atelier-forest-light",
"atelier-heath-light",
"atelier-lakeside-light",
"atelier-plateau-light",
"atelier-savanna-light",
"atelier-seaside-light",
"atelier-sulphurpool-light",
"atom-one-light",
"color-brewer",
"docco",
"github-gist",
"googlecode",
"grayscale",
"gruvbox-light",
"idea",
"isbl-editor-light",
"kimbie.light",
"lightfair",
"magula",
"mono-blue",
"nnfx",
"paraiso-light",
"purebasic",
"qtcreator_light",
"routeros",
"school-book",
"solarized-light",
"tomorrow",
"vs",
"xcode"
);

}

static {
DARK_STYLE = Arrays.asList(
"a11y-dark",
"agate",
"an-old-hope",
"androidstudio",
"arta",
"atelier-cave-dark",
"atelier-dune-dark",
"atelier-estuary-dark",
"atelier-forest-dark",
"atelier-heath-dark",
"atelier-lakeside-dark",
"atelier-plateau-dark",
"atelier-savanna-dark",
"atelier-seaside-dark",
"atelier-sulphurpool-dark",
"atom-one-dark-reasonable",
"atom-one-dark",
"brown-paper",
"codepen-embed",
"darcula",
"dark",
"default",
"dracula",
"far",
"foundation",
"gml",
"gradient-dark",
"gruvbox-dark",
"hopscotch",
"hybrid",
"ir-black",
"isbl-editor-dark",
"kimbie.dark",
"lioshi",
"monokai",
"monokai-sublime",
"night-owl",
"nnfx-dark",
"nord",
"obsidian",
"ocean",
"paraiso-dark",
"pojoaque",
"qtcreator_dark",
"railscasts",
"rainbow",
"shades-of-purple",
"solarized-dark",
"srcery", "sunburst",
"tomorrow-night",
"tomorrow-night-blue",
"tomorrow-night-bright",
"tomorrow-night-eighties",
"vs2015",
"xt256",
"zenburn"
);
}


/**
* 随机一个 light style
*
* @param random
* @return
*/
public static String randomLight(Random random) {
return LIGHT_STYLE.get(random.nextInt(LIGHT_STYLE.size()));
}

/**
* 随机一个 dark style
*
* @param random
* @return
*/
public static String randomDark(Random random) {
return DARK_STYLE.get(random.nextInt(DARK_STYLE.size()));
}

/**
* 随机一个 style
*
* @param random
* @return
*/
public static String randomAll(Random random) {
if (random.nextBoolean()) {
return randomLight(random);
} else {
return randomDark(random);
}
}

/**
* |
* 高亮样式是否存在
*
* @param style 高亮样式
* @return
*/
public static boolean containStyle(String style) {
return LIGHT_STYLE.contains(style) || DARK_STYLE.contains(style) ? true : false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public enum TemplateVariable {
HOME_PAGE("homePage"),
HTML("html"),
TITLE("title"),
STYLE("style"),
ERROR_LIST_TITLE("errorListTitle"),
CREATE_TIME("createTime"),
PROJECT_NAME("projectName"),
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/com/power/doc/model/ApiConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ public class ApiConfig {
*/
private ResponseBodyAdvice responseBodyAdvice;

private String style;

public String getServerUrl() {
return serverUrl;
}
Expand Down Expand Up @@ -554,6 +556,14 @@ public void setResponseBodyAdvice(ResponseBodyAdvice responseBodyAdvice) {
this.responseBodyAdvice = responseBodyAdvice;
}

public String getStyle() {
return style;
}

public void setStyle(String style) {
this.style = style;
}

@Override
public String toString() {
final StringBuilder sb = new StringBuilder("{");
Expand Down Expand Up @@ -629,6 +639,8 @@ public String toString() {
.append(displayActualType);
sb.append(",\"responseBodyAdvice\":")
.append(responseBodyAdvice);
sb.append(",\"style\":")
.append(style);
sb.append('}');
return sb.toString();
}
Expand Down
Loading