com.dexcoder.commons.utils.SourceCodeFormatter Maven / Gradle / Ivy
//package com.dexcoder.commons.utils;
//
//import java.io.BufferedReader;
//import java.io.StringReader;
//import java.io.StringWriter;
//import java.util.Map;
//
//import org.apache.commons.io.IOUtils;
//import org.dom4j.io.OutputFormat;
//import org.dom4j.io.SAXReader;
//import org.dom4j.io.XMLWriter;
//import org.eclipse.jdt.core.JavaCore;
//import org.eclipse.jdt.core.ToolFactory;
//import org.eclipse.jdt.core.formatter.CodeFormatter;
//import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
//import org.eclipse.jface.text.BadLocationException;
//import org.eclipse.jface.text.Document;
//import org.eclipse.jface.text.IDocument;
//import org.eclipse.text.edits.TextEdit;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
///**
// * 对源代码进行格式化
// */
//public class SourceCodeFormatter {
//
// private static final Logger LOG = LoggerFactory.getLogger(SourceCodeFormatter.class);
//
// /**
// * 自动格式化 会尝试判断格式 python等语言不支持
// *
// * @param source
// * @return
// */
// public static String formatEscapeCode(String source) {
//
// source = StrUtils.trim(source);
// //需要先还原,因为提交过来页面显示的代码都是转义后的
// source = TextUtils.reverseHtmlSpecialChars(source);
// if (StrUtils.startsWith(source, "<")) {
// source = formatXML(source);
// } else {
// source = formatCode(source);
// }
// //还原成转义后
// return TextUtils.convertHtmlSpecialChars(source);
// }
//
// /**
// * 对源代码进行格式化,格式化失败返回原格式
// *
// * @param sourceCode
// * @return
// */
// public static String formatCode(String sourceCode) {
//
// BufferedReader reader = new BufferedReader(new StringReader(sourceCode));
// try {
// StringBuilder header = new StringBuilder();
// StringBuilder content = new StringBuilder();
// String lineSeparator = System.getProperty("line.separator", "\n");
// boolean isHeader = true;
// String line;
// while ((line = reader.readLine()) != null) {
// line = StrUtils.trim(line);
// if (StrUtils.isBlank(line)) {
// continue;
// }
// if (isHeader
// && (StrUtils.startsWith(line, "package") || StrUtils.startsWith(line,
// "import"))) {
// header.append(line).append(lineSeparator);
// } else {
// isHeader = false;
// content.append(line).append(lineSeparator);
// }
// }
// String finalCode = StrUtils.trim(content.toString());
// finalCode = formatBodyCode(finalCode);
// return header.append(finalCode).toString();
//
// } catch (Exception e) {
// LOG.error("格式化源代码失败", e);
// //忽略,返回原格式
// } finally {
// IOUtils.closeQuietly(reader);
// }
// return sourceCode;
// }
//
// /**
// * 格式化源码
// *
// * @param code
// * @return
// */
// @SuppressWarnings({"rawtypes", "unchecked"})
// private static String formatBodyCode(String code) {
// try {
// //此处可以修改格式化配置
// Map m = DefaultCodeFormatterConstants.getEclipseDefaultSettings();
// m.put(DefaultCodeFormatterConstants.FORMATTER_LINE_SPLIT, "100");
// m.put(DefaultCodeFormatterConstants.FORMATTER_ALIGN_TYPE_MEMBERS_ON_COLUMNS, "true");
// m.put(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, JavaCore.SPACE);
// CodeFormatter codeFormatter = ToolFactory.createCodeFormatter(m);
// TextEdit textEdit = codeFormatter.format(CodeFormatter.K_UNKNOWN, code, 0,
// code.length(), 0, null);
// if (textEdit != null) {
// IDocument doc = new Document(code);
// textEdit.apply(doc);
// return doc.get();
// }
// } catch (BadLocationException e) {
// LOG.error("格式化源代码失败", e);
// }
// return code;
// }
//
// /**
// * 格式化xml
// *
// * @param xml
// * @return
// */
// public static String formatXML(String xml) {
//
// SAXReader reader = null;
// XMLWriter writer = null;
// StringWriter stringWriter = null;
// try {
// reader = new SAXReader();
// org.dom4j.Document document = reader.read(new StringReader(xml));
// if (document != null) {
// stringWriter = new StringWriter();
// OutputFormat format = new OutputFormat(" ", false);
// format.setSuppressDeclaration(true);
// writer = new XMLWriter(stringWriter, format);
// writer.write(document);
// writer.flush();
// }
// return stringWriter.getBuffer().toString();
// } catch (Exception e) {
// LOG.error("格式化xml失败", e);
// } finally {
// try {
// writer.close();
// stringWriter.close();
// } catch (Exception e) {
// //ignore
// }
// }
// return xml;
// }
//}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy