Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4acad94

Browse files
committed
重构了一部分代码
1 parent 534c769 commit 4acad94

File tree

9 files changed

+1002
-88
lines changed

9 files changed

+1002
-88
lines changed

app/src/main/java/com/zzhoujay/markdowndemo/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public Drawable getDrawable(String source) {
7070
}
7171
}));
7272
try {
73-
textView.setText(markDownParser.parser());
73+
textView.setText(markDownParser.get());
7474
} catch (IOException e) {
7575
e.printStackTrace();
7676
}

app/src/main/res/raw/mark.md

Lines changed: 2 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,80 +1,2 @@
1-
### 1.标题
2-
3-
行首加井号表示不同级别的标题 (H1-H6),例如:# H1, ## H2, ### H3,#### H4.
4-
# 一级标题
5-
## 二级标题
6-
### 三级标题
7-
#### 四级标题
8-
##### 五级标题
9-
###### 六级标题
10-
11-
12-
### 2. 文本
13-
+ 普通文本
14-
15-
直接输入的文字就是普通文本。需要注意的是要换行的时候不<br>能直接通过回车来换行,需要使用\<br\>.也就是html里面的标签. 注意第三行的`<br>`前加了反斜杠 \\ .目的就是像其他语言那样实现转义,也就是 \< 的转义.
16-
17-
+ 单行文本
18-
19-
使用两个Tab符实现单行文本.
20-
+ 多行文本
21-
22-
多行文本和
23-
单行文本异曲同工,只要在
24-
每行行首加两个Tab.
25-
+ 文字高亮
26-
27-
如果你想使一段话中部分文字高亮显示,来起到突出强调的作用,那么可以把它用 \` \` 包围起来.`注意`这不是单引号,而是`Tab`上方,`数字1`左边的按键(注意使用`英文`输入法).
28-
29-
### 3. 斜体和粗体
30-
31-
使用 * 和 ** 表示斜体和粗体.
32-
33-
这是 *斜体*,这是 **粗体**.
34-
35-
### 4. 删除线
36-
37-
~~使用\~\~表示删除线.~~
38-
39-
### 5. 外链接
40-
41-
使用 \[描述](链接地址) 为文字增加外链接。
42-
43-
这是去往 [有趣的HTML5和CSS3特效在线演示地址](http://gnipbao.github.io/css3-test/menu.html) 的链接。
44-
45-
### 6.锚点<a name=""/>
46-
我们可以使用HTML的锚点标签(`#`)来设置锚点:[回到目录](#index)
47-
但其实呢,每一个标题都是一个锚点,不需要用标签来指定,比如我们 [回到顶部](#TEST)
48-
不过不幸的是,由于对中文支持的不好,所以中文标题貌似是不能视作标签的。
49-
50-
### 6. 列表
51-
52-
使用 *,+,- 表示无序列表。
53-
54-
- 无序列表项 一
55-
- 无序列表项 二
56-
- 无序列表项 三
57-
58-
二级三级原点
59-
60-
+ 编程语言
61-
+ 脚本语言
62-
+ Python
63-
64-
使用数字和点表示有序列表。
65-
66-
1. 有序列表项 一
67-
2. 有序列表项 二
68-
3. 有序列表项 三
69-
70-
### 7. 数字列表自动排序
71-
也可以在第一行指定`1. `,而接下来的几行用星号`*`(或者继续用数字1. )就可以了,它会自动显示成2、3、4……
72-
面向对象的七大原则:
73-
74-
1. 开闭原则
75-
* 里氏转换原则
76-
* 依赖倒转原则
77-
1. 接口隔离原则
78-
1. 组合聚合复用原则
79-
1. 迪米特法则
80-
1. 单一直则原则
1+
* 123
2+
*

markdown/src/main/java/com/zzhoujay/markdown/parser/Line.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,17 @@ public class Line {
1919
public static final int LINE_TYPE_CODE_BLOCK_1 = 11;
2020
public static final int LINE_TYPE_GAP = 12;
2121

22-
public final int lineNum;
22+
private final int lineNum;
2323
private String source;
2424
private boolean codeBlock;
2525
private CharSequence builder;
2626
private int type;
2727
private int typeCount;
2828

29+
Line() {
30+
lineNum = 0;
31+
}
32+
2933
public Line(int lineNum, String source) {
3034
this.lineNum = lineNum;
3135
this.source = source;
@@ -73,4 +77,8 @@ public int getTypeCount() {
7377
public void setTypeCount(int typeCount) {
7478
this.typeCount = typeCount;
7579
}
80+
81+
public int getLineNum() {
82+
return lineNum;
83+
}
7684
}

markdown/src/main/java/com/zzhoujay/markdown/parser/LineQueue.java

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
package com.zzhoujay.markdown.parser;
22

3-
import java.util.LinkedList;
43
import java.util.List;
4+
import java.util.Stack;
55

66
/**
77
* Created by zhou on 16-7-2.
88
*/
9-
public class LineQueue {
9+
public class LineQueue extends Line {
1010

1111
private List<Line> lines;
1212
private int point;
13+
private Line currLine;
14+
private Stack<Integer> status;
1315

1416
public LineQueue(List<Line> lines) {
1517
this.lines = lines;
1618
point = 0;
19+
currLine = get();
20+
status = new Stack<>();
1721
}
1822

1923
public boolean end() {
@@ -47,6 +51,111 @@ public boolean next() {
4751
return false;
4852
}
4953
point++;
54+
currLine = get();
5055
return true;
5156
}
57+
58+
public boolean prev() {
59+
if (start()) {
60+
return false;
61+
}
62+
point--;
63+
currLine = get();
64+
return true;
65+
}
66+
67+
public void seek(int position) {
68+
point = position;
69+
currLine = get();
70+
}
71+
72+
public void push() {
73+
status.push(point);
74+
}
75+
76+
public void pop() {
77+
point = status.pop();
78+
currLine = get();
79+
}
80+
81+
public void add(Line line) {
82+
lines.add(point + 1, line);
83+
}
84+
85+
public Line remove() {
86+
return remove(point);
87+
}
88+
89+
public Line removeNext() {
90+
return remove(point + 1);
91+
}
92+
93+
public Line removePrev() {
94+
return remove(point - 1);
95+
}
96+
97+
public Line remove(int position) {
98+
Line l = lines.remove(position);
99+
currLine = get();
100+
return l;
101+
}
102+
103+
@Override
104+
public CharSequence getBuilder() {
105+
return currLine.getBuilder();
106+
}
107+
108+
@Override
109+
public void setBuilder(CharSequence builder) {
110+
currLine.setBuilder(builder);
111+
}
112+
113+
@Override
114+
public String getSource() {
115+
return currLine.getSource();
116+
}
117+
118+
@Override
119+
public void setSource(String source) {
120+
currLine.setSource(source);
121+
}
122+
123+
@Override
124+
public boolean isCodeBlock() {
125+
return currLine.isCodeBlock();
126+
}
127+
128+
@Override
129+
public void setCodeBlock(boolean codeBlock) {
130+
currLine.setCodeBlock(codeBlock);
131+
}
132+
133+
@Override
134+
public int getType() {
135+
return currLine.getType();
136+
}
137+
138+
@Override
139+
public void setType(int type) {
140+
currLine.setType(type);
141+
}
142+
143+
@Override
144+
public int getTypeCount() {
145+
return super.getTypeCount();
146+
}
147+
148+
@Override
149+
public void setTypeCount(int typeCount) {
150+
super.setTypeCount(typeCount);
151+
}
152+
153+
@Override
154+
public int getLineNum() {
155+
return super.getLineNum();
156+
}
157+
158+
public int position() {
159+
return point;
160+
}
52161
}

0 commit comments

Comments
 (0)