Skip to content

Commit 4820a48

Browse files
committed
添加生成合约doc文档类,修改生成方法签名文件格式
1 parent a2c6ef9 commit 4820a48

File tree

3 files changed

+118
-9
lines changed

3 files changed

+118
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package com.sumingk.core;
2+
3+
import java.io.File;
4+
import java.io.FileNotFoundException;
5+
import java.io.FileOutputStream;
6+
import java.io.PrintStream;
7+
import java.util.List;
8+
9+
/**
10+
* create by sumingk 2018/11/20
11+
* weixin_public_number : blockchain_do/刻意链习
12+
* weibo: 刻意链习
13+
*/
14+
public class ContractDoc {
15+
/**
16+
* 生成的方法签名文件
17+
*/
18+
public static final String CONTRACT_FILENAME = "/contract_DOC.html";
19+
20+
public static void main(String[] args) {
21+
File file = new File(System.getProperty("user.dir") + MethodSign.OUTPUT_FILENAME);
22+
if (file.exists()) file.delete();
23+
MethodSign.anlyContractABI();
24+
25+
if (!file.exists()) {
26+
System.err.println("File " + MethodSign.OUTPUT_FILENAME.substring(1) + " does not exist!");
27+
return;
28+
}
29+
printDocHtml(file);
30+
}
31+
32+
/**
33+
* 生成contract_doc.html 文档
34+
*
35+
* @param file
36+
*/
37+
public static void printDocHtml(File file) {
38+
StringBuilder sb = new StringBuilder();
39+
PrintStream printStream = null;
40+
41+
File apiFile = new File(System.getProperty("user.dir") + CONTRACT_FILENAME);
42+
if (apiFile.exists()) apiFile.delete();
43+
44+
try {
45+
printStream = new PrintStream(new FileOutputStream(apiFile));
46+
sb.append("<html>");
47+
sb.append("<head>");
48+
sb.append("<title>Contract Method API</title>");
49+
sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
50+
sb.append("<style type=\"text/css\">");
51+
sb.append("TABLE{border-collapse:collapse;border-left:solid 1 #000000; border-top:solid 1 #000000;padding:5px;}");
52+
sb.append("TH{border-right:solid 1 #000000;border-bottom:solid 1 #000000;}");
53+
sb.append("ol{list-style-type:none;counter-reset:sectioncounter;}");
54+
sb.append("TD{font:normal;border-right:solid 1 #000000;border-bottom:solid 1 #000000;}");
55+
sb.append("</style></head>");
56+
sb.append("<body>");
57+
sb.append("<div align=\"left\">");
58+
sb.append("<ol>");
59+
60+
List<String> lists = FileOperate.readFileIntoStringArrList(file);
61+
if (lists.size() > 0) {
62+
for (int k = 0; k < lists.size(); k++) {
63+
String str = lists.get(k).replaceAll("\\s*", "");
64+
//排除 空格 空行
65+
if (str == null || "".equals(str)) continue;
66+
if (str.indexOf(".sol") > -1) {
67+
if (k < lists.size() - 1) {
68+
String nextStr = lists.get(k + 1);
69+
nextStr = nextStr.replaceAll("\\s*", "");
70+
if (nextStr == null || "".equals(nextStr)) {
71+
continue;
72+
}
73+
sb.append("<li>" + str + "</li>").append("<br/>");
74+
}
75+
} else {
76+
if (str.indexOf(":") > -1) {
77+
sb.append("<li>" + str.split(":")[1] + "</li>").append("<br/>");
78+
}
79+
}
80+
}
81+
}
82+
sb.append("</ol>");
83+
sb.append("</div></body></html>");
84+
printStream.println(sb.toString());
85+
} catch (FileNotFoundException e) {
86+
e.printStackTrace();
87+
}
88+
}
89+
90+
}

src/main/java/com/sumingk/core/FileOperate.java

+23-3
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,29 @@ public static void writeMethodSign(String filePath, String content) {
111111
}
112112
}
113113

114+
/**
115+
* 逐行读取文件,返回集合
116+
*
117+
* @param file
118+
* @return
119+
*/
120+
public static List<String> readFileIntoStringArrList(File file) {
121+
List<String> list = new ArrayList<>();
122+
try {
123+
InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");
124+
BufferedReader bufferedReader = new BufferedReader(read);
125+
String lineTxt = null;
126+
while ((lineTxt = bufferedReader.readLine()) != null) {
127+
list.add(lineTxt);
128+
}
129+
bufferedReader.close();
130+
read.close();
131+
} catch (Exception e) {
132+
e.printStackTrace();
133+
}
134+
return list;
135+
}
136+
114137
/**
115138
* 遍历目录下的所有文件
116139
*
@@ -140,9 +163,6 @@ public static List<File> getFile(String fileDir, int way) {
140163
}
141164
}
142165
}
143-
/*for (int k = 0; k < fileList.size(); k++) {
144-
System.out.println(k + " :" + fileList.get(k).getName());
145-
}*/
146166
return fileList;
147167
}
148168

src/main/java/com/sumingk/core/MethodSign.java

+5-6
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ public static void main(String[] args) {
2626
anlyContractABI();
2727
}
2828

29-
3029
/**
3130
* abi 解析
3231
*/
@@ -68,7 +67,7 @@ public static void anlyContractABI() {
6867
*/
6968
public static void truffleGenerate(File f1, Keccak.Digest256 digest256) {
7069
String fileName = f1.getName();
71-
String printContractName = "--------------------------------" + "ContractName: " + fileName.substring(0, fileName.lastIndexOf("json")) + "sol" + "------------------------------------";
70+
String printContractName = "--------------------------------" + fileName.substring(0, fileName.lastIndexOf("json")) + "sol" + "------------------------------------";
7271
System.out.println(printContractName);
7372
FileOperate.writeMethodSign(System.getProperty("user.dir") + OUTPUT_FILENAME, "\r\n" + printContractName + "\r\n");
7473
if (f1.canRead()) {
@@ -89,10 +88,9 @@ public static void truffleGenerate(File f1, Keccak.Digest256 digest256) {
8988
public static void solcGenerate(File f1, Keccak.Digest256 digest256) {
9089
String fileName = f1.getName();
9190
if (fileName.endsWith(".abi")) {//以.abi结尾的文件
92-
String printContractName = "--------------------------------" + "ContractName: " + fileName.substring(0, fileName.lastIndexOf("abi")) + "sol" + "------------------------------------";
91+
String printContractName = "--------------------------------" + fileName.substring(0, fileName.lastIndexOf("abi")) + "sol" + "------------------------------------";
9392
System.out.println(printContractName);
9493
FileOperate.writeMethodSign(System.getProperty("user.dir") + OUTPUT_FILENAME, "\r\n" + printContractName + "\r\n");
95-
9694
if (f1.canRead()) {
9795
JSONArray jsonArray = FileOperate.getDatafromFileForArray(f1.getPath());//abi文件
9896
if (jsonArray != null && jsonArray.size() > 0) {
@@ -125,15 +123,16 @@ public static void digestMethodSign(JSONArray jsonArray, Keccak.Digest256 digest
125123
sbf.append(")");
126124
String finalFunc = funcName + sbf.toString();
127125
functionSign = Hex.toHexString(digest256.digest(finalFunc.getBytes())).substring(0, 8);
128-
writeContent = "--with param--: " + functionSign + " : " + finalFunc;
126+
writeContent = functionSign + " : " + finalFunc;
129127
System.out.println(writeContent);
130128
} else {
131129
functionSign = Hex.toHexString(digest256.digest((funcName + "()").getBytes())).substring(0, 8);
132-
writeContent = "---no param---: " + functionSign + " : " + funcName + "()";
130+
writeContent = functionSign + " : " + funcName + "()";
133131
System.out.println(writeContent);
134132
}
135133
FileOperate.writeMethodSign(System.getProperty("user.dir") + OUTPUT_FILENAME, writeContent + "\r\n");
136134
}
137135
}
138136
}
137+
139138
}

0 commit comments

Comments
 (0)