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

Skip to content

Commit cc8d549

Browse files
committed
进行了少许优化
1 parent f7adcad commit cc8d549

File tree

9 files changed

+101
-214
lines changed

9 files changed

+101
-214
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ textView.post(new Runnable() {
3737

3838
### Use in Gradle
3939

40-
`compile 'com.zzhoujay.markdown:markdown:0.0.2'`
40+
`compile 'com.zzhoujay.markdown:markdown:0.0.3'`
4141

4242
**注意:** 当前并非稳定版,仅供尝鲜使用
4343

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ protected void onCreate(Bundle savedInstanceState) {
4545
// });
4646

4747

48-
final InputStream stream = getResources().openRawResource(R.raw.test);
48+
final InputStream stream = getResources().openRawResource(R.raw.tt);
4949
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
5050
// final StringBuilder sb = new StringBuilder();
5151
// String line;

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
1-
> hello
2-
> > sdjfg
3-
> > > * * * sadfg
1+
hello
2+
code
43

54

6-
> > > hello
7-
> > > =
5+
6+
7+
8+
9+
10+
11+
12+
13+
zz
14+
gg

markdown/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
apply plugin: 'com.android.library'
22
apply plugin: 'com.novoda.bintray-release'
33

4-
def version_code = 2
5-
def version_name = '0.0.2'
4+
def version_code = 3
5+
def version_name = '0.0.3'
66

77
android {
88
compileSdkVersion 23

markdown/src/main/java/com/zzhoujay/markdown/MarkDownParser.java

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import java.io.StringReader;
2222
import java.util.ArrayList;
2323
import java.util.List;
24-
import java.util.regex.Matcher;
25-
import java.util.regex.Pattern;
2624

2725
/**
2826
* Created by zhou on 16-6-25.
@@ -51,7 +49,7 @@ class MarkDownParser {
5149

5250
public Spannable parser() throws IOException {
5351
LineQueue queue = collect();
54-
return merge(queue);
52+
return analytic(queue);
5553
}
5654

5755
private LineQueue collect() throws IOException {
@@ -72,7 +70,7 @@ private LineQueue collect() throws IOException {
7270
return queue;
7371
}
7472

75-
private Spannable merge(final LineQueue queue) {
73+
private Spannable analytic(final LineQueue queue) {
7674
tagHandler.setQueueProvider(new QueueConsumer.QueueProvider() {
7775
@Override
7876
public LineQueue getQueue() {
@@ -94,14 +92,14 @@ public LineQueue getQueue() {
9492
notBlock = true;
9593
}
9694

97-
if (!notBlock && !block2 && tagHandler.codeBlock1(queue)) {
95+
if (!notBlock && !block2 && tagHandler.codeBlock1(queue.currLine())) {
9896
if (next != null) {
9997
removeBlankLine(queue);
10098
}
10199
continue;
102100
}
103101

104-
if (!notBlock && tagHandler.codeBlock2(queue)) {
102+
if (!notBlock && tagHandler.codeBlock2(queue.currLine())) {
105103
block2 = !block2;
106104
queue.removeCurrLine();
107105
if (!block2) {
@@ -112,28 +110,28 @@ public LineQueue getQueue() {
112110
}
113111

114112
if (block2) {
115-
queue.setType(Line.LINE_TYPE_CODE_BLOCK_2);
116-
queue.setStyle(queue.getSource());
113+
queue.currLine().setType(Line.LINE_TYPE_CODE_BLOCK_2);
114+
queue.currLine().setStyle(queue.currLine().getSource());
117115
continue;
118116
}
119117

120118

121119
if (tagHandler.find(Tag.H1_2, next)) {
122-
curr.setType(Line.LINE_TYPE_H1);
123-
curr.setStyle(SpannableStringBuilder.valueOf(curr.getSource()));
124-
tagHandler.inline(curr);
125-
curr.setStyle(styleBuilder.h1(curr.getStyle()));
126-
queue.removeNext();
120+
queue.currLine().setType(Line.LINE_TYPE_H1);
121+
queue.currLine().setStyle(SpannableStringBuilder.valueOf(queue.currLine().getSource()));
122+
tagHandler.inline(queue.currLine());
123+
queue.currLine().setStyle(styleBuilder.h1(queue.currLine().getStyle()));
124+
queue.removeNextLine();
127125
removeBlankLine(queue);
128126
continue;
129127
}
130128

131129
if (tagHandler.find(Tag.H2_2, next)) {
132-
curr.setType(Line.LINE_TYPE_H2);
133-
curr.setStyle(SpannableStringBuilder.valueOf(curr.getSource()));
134-
tagHandler.inline(curr);
135-
curr.setStyle(styleBuilder.h2(curr.getStyle()));
136-
queue.removeNext();
130+
queue.currLine().setType(Line.LINE_TYPE_H2);
131+
queue.currLine().setStyle(SpannableStringBuilder.valueOf(queue.currLine().getSource()));
132+
tagHandler.inline(queue.currLine());
133+
queue.currLine().setStyle(styleBuilder.h2(queue.currLine().getStyle()));
134+
queue.removeNextLine();
137135
removeBlankLine(queue);
138136
continue;
139137
}
@@ -166,27 +164,27 @@ public LineQueue getQueue() {
166164
break;
167165
}else {
168166
queue.currLine().setSource(curr.getSource() + ' ' + r);
169-
queue.removeNext();
167+
queue.removeNextLine();
170168
}
171169
}
172170

173171
}
174-
if (tagHandler.gap(queue) || tagHandler.quota(queue) || tagHandler.ol(queue) || tagHandler.ul(queue) ||
175-
tagHandler.h(queue)) {
172+
if (tagHandler.gap(queue.currLine()) || tagHandler.quota(queue.currLine()) || tagHandler.ol(queue.currLine()) ||
173+
tagHandler.ul(queue.currLine()) || tagHandler.h(queue.currLine())) {
176174
continue;
177175
}
178-
curr.setStyle(SpannableStringBuilder.valueOf(queue.getSource()));
179-
tagHandler.inline(queue);
176+
curr.setStyle(SpannableStringBuilder.valueOf(queue.currLine().getSource()));
177+
tagHandler.inline(queue.currLine());
180178
} while (!need_next || queue.next());
181-
return mergeSpannable(queue);
179+
return merge(queue);
182180
}
183181

184-
private Spannable mergeSpannable(LineQueue queue) {
182+
private Spannable merge(LineQueue queue) {
185183
queue.reset();
186184
SpannableStringBuilder builder = new SpannableStringBuilder();
187185
List<CharSequence> codeBlock = new ArrayList<>();
188186
do {
189-
Line curr = queue.get();
187+
Line curr = queue.currLine();
190188
Line prev = queue.prevLine();
191189
Line next = queue.nextLine();
192190
switch (curr.getType()) {
@@ -262,18 +260,18 @@ private boolean removeBlankLine(LineQueue queue) {
262260

263261
private boolean removeBlankLine(LineQueue queue, boolean curr) {
264262
boolean flag = false;
265-
Line m = curr ? queue.prevLine() : queue.get();
263+
Line m = curr ? queue.prevLine() : queue.currLine();
266264
if (!curr) {
267265
queue.next();
268266
}
269267
do {
270-
if (!tagHandler.find(Tag.BLANK, queue.get()) || queue.get() == m) {
268+
if (!tagHandler.find(Tag.BLANK, queue.currLine()) || queue.currLine() == m) {
271269
break;
272270
}
273271
flag = true;
274272
} while (queue.removeCurrLine() != null);
275273
if (!curr) {
276-
if (queue.get() != m) {
274+
if (queue.currLine() != m) {
277275
queue.prev();
278276
}
279277
}

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

Lines changed: 2 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/**
44
* Created by zhou on 16-7-2.
55
*/
6-
public class LineQueue extends Line {
6+
public class LineQueue {
77

88
private Line root;
99
private Line curr;
@@ -32,14 +32,8 @@ public Line prevLine() {
3232
return curr.prevLine();
3333
}
3434

35-
@Override
36-
public Line get() {
37-
return curr;
38-
}
39-
40-
4135
public Line currLine() {
42-
return get();
36+
return curr;
4337
}
4438

4539
public boolean next() {
@@ -120,126 +114,4 @@ public void reset() {
120114
curr = root;
121115
}
122116

123-
@Override
124-
public Line createChild(String src) {
125-
return curr.createChild(src);
126-
}
127-
128-
@Override
129-
public Line addNext(Line line) {
130-
return curr.addNext(line);
131-
}
132-
133-
@Override
134-
public Line addPrev(Line line) {
135-
return curr.addPrev(line);
136-
}
137-
138-
@Override
139-
public Line add(Line line) {
140-
return curr.add(line);
141-
}
142-
143-
144-
@Override
145-
public void remove() {
146-
curr.remove();
147-
}
148-
149-
@Override
150-
public void addChild(Line line) {
151-
curr.addChild(line);
152-
}
153-
154-
@Override
155-
public Line removeNext() {
156-
return curr.removeNext();
157-
}
158-
159-
@Override
160-
public Line removePrev() {
161-
return curr.removePrev();
162-
}
163-
164-
@Override
165-
public void attachToParent(Line line) {
166-
curr.attachToParent(line);
167-
}
168-
169-
@Override
170-
public void unAttachFromParent() {
171-
curr.unAttachFromParent();
172-
}
173-
174-
@Override
175-
public Line copyToNext() {
176-
return curr.copyToNext();
177-
}
178-
179-
@Override
180-
public Line copyToPrev() {
181-
return curr.copyToPrev();
182-
}
183-
184-
@Override
185-
public Line childLine() {
186-
return curr.childLine();
187-
}
188-
189-
@Override
190-
public Line parentLine() {
191-
return curr.parentLine();
192-
}
193-
194-
@Override
195-
public void setType(int type) {
196-
curr.setType(type);
197-
}
198-
199-
@Override
200-
public void setCount(int count) {
201-
curr.setCount(count);
202-
}
203-
204-
@Override
205-
public void setAttr(int attr) {
206-
curr.setAttr(attr);
207-
}
208-
209-
@Override
210-
public void setSource(String source) {
211-
curr.setSource(source);
212-
}
213-
214-
@Override
215-
public void setStyle(CharSequence style) {
216-
curr.setStyle(style);
217-
}
218-
219-
@Override
220-
public int getAttr() {
221-
return curr.getAttr();
222-
}
223-
224-
@Override
225-
public CharSequence getStyle() {
226-
return curr.getStyle();
227-
}
228-
229-
@Override
230-
public int getType() {
231-
return curr.getType();
232-
}
233-
234-
@Override
235-
public int getCount() {
236-
return curr.getCount();
237-
}
238-
239-
@Override
240-
public String getSource() {
241-
return curr.getSource();
242-
}
243-
244-
245117
}

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,42 @@
22

33
/**
44
* Created by zhou on 16-7-10.
5+
* TagFinder
56
*/
67
public interface TagFinder {
78

9+
/**
10+
* 检查对应tag是否存在
11+
* @param tag Tag Id
12+
* @param line line
13+
* @return true:存在,false不存在
14+
*/
815
boolean find(int tag, Line line);
916

17+
/**
18+
* 检查对应tag是否存在
19+
* @param tag Tag Id
20+
* @param line line
21+
* @return true:存在,false不存在
22+
*/
1023
boolean find(int tag, String line);
1124

25+
/**
26+
* 检查对应tag的个数
27+
* @param tag tag id
28+
* @param line line
29+
* @param group group
30+
* @return 对应tag的次数
31+
*/
1232
int findCount(int tag,Line line,int group);
1333

34+
/**
35+
* 检查对应tag的个数
36+
* @param tag tag id
37+
* @param line line
38+
* @param group group
39+
* @return 对应tag的次数
40+
*/
1441
int findCount(int tag,String line,int group);
1542

1643
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
/**
44
* Created by zhou on 16-7-10.
5+
* TagHandler
56
*/
67
public interface TagHandler extends TagFinder,QueueConsumer {
78

0 commit comments

Comments
 (0)