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

Skip to content

Commit 552d6ee

Browse files
committed
修复了一些bug
1 parent 4acad94 commit 552d6ee

File tree

7 files changed

+66
-57
lines changed

7 files changed

+66
-57
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
@@ -46,7 +46,7 @@ protected void onCreate(Bundle savedInstanceState) {
4646
// });
4747

4848

49-
final InputStream stream = getResources().openRawResource(R.raw.hello);
49+
final InputStream stream = getResources().openRawResource(R.raw.mark);
5050
// BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream));
5151
// final StringBuilder sb = new StringBuilder();
5252
// String line;

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,12 @@
1-
* 123
2-
*
1+
# hello
2+
3+
> gg
4+
5+
* hello
6+
* gg
7+
* zz
8+
* cc
9+
10+
hello code
11+
12+
_by zzhoujay_

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

Lines changed: 24 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -9,135 +9,128 @@
99
public class LineQueue extends Line {
1010

1111
private List<Line> lines;
12-
private int point;
13-
private Line currLine;
12+
private int position;
1413
private Stack<Integer> status;
1514

1615
public LineQueue(List<Line> lines) {
1716
this.lines = lines;
18-
point = 0;
19-
currLine = get();
17+
position = 0;
2018
status = new Stack<>();
2119
}
2220

2321
public boolean end() {
24-
return point == lines.size() - 1;
22+
return position == lines.size() - 1;
2523
}
2624

2725
public boolean start() {
28-
return point == 0;
26+
return position == 0;
2927
}
3028

3129
public Line nextLine() {
3230
if (!end()) {
33-
return lines.get(point + 1);
31+
return lines.get(position + 1);
3432
}
3533
return null;
3634
}
3735

3836
public Line prevLine() {
3937
if (!start()) {
40-
return lines.get(point - 1);
38+
return lines.get(position - 1);
4139
}
4240
return null;
4341
}
4442

4543
public Line get() {
46-
return lines.get(point);
44+
return lines.get(position);
4745
}
4846

4947
public boolean next() {
5048
if (end()) {
5149
return false;
5250
}
53-
point++;
54-
currLine = get();
51+
position++;
5552
return true;
5653
}
5754

5855
public boolean prev() {
5956
if (start()) {
6057
return false;
6158
}
62-
point--;
63-
currLine = get();
59+
position--;
6460
return true;
6561
}
6662

6763
public void seek(int position) {
68-
point = position;
69-
currLine = get();
64+
this.position = position;
7065
}
7166

7267
public void push() {
73-
status.push(point);
68+
status.push(position);
7469
}
7570

7671
public void pop() {
77-
point = status.pop();
78-
currLine = get();
72+
position = status.pop();
7973
}
8074

8175
public void add(Line line) {
82-
lines.add(point + 1, line);
76+
lines.add(position + 1, line);
8377
}
8478

8579
public Line remove() {
86-
return remove(point);
80+
return remove(position);
8781
}
8882

8983
public Line removeNext() {
90-
return remove(point + 1);
84+
return remove(position + 1);
9185
}
9286

9387
public Line removePrev() {
94-
return remove(point - 1);
88+
return remove(position - 1);
9589
}
9690

9791
public Line remove(int position) {
9892
Line l = lines.remove(position);
99-
currLine = get();
10093
return l;
10194
}
10295

10396
@Override
10497
public CharSequence getBuilder() {
105-
return currLine.getBuilder();
98+
return get().getBuilder();
10699
}
107100

108101
@Override
109102
public void setBuilder(CharSequence builder) {
110-
currLine.setBuilder(builder);
103+
get().setBuilder(builder);
111104
}
112105

113106
@Override
114107
public String getSource() {
115-
return currLine.getSource();
108+
return get().getSource();
116109
}
117110

118111
@Override
119112
public void setSource(String source) {
120-
currLine.setSource(source);
113+
get().setSource(source);
121114
}
122115

123116
@Override
124117
public boolean isCodeBlock() {
125-
return currLine.isCodeBlock();
118+
return get().isCodeBlock();
126119
}
127120

128121
@Override
129122
public void setCodeBlock(boolean codeBlock) {
130-
currLine.setCodeBlock(codeBlock);
123+
get().setCodeBlock(codeBlock);
131124
}
132125

133126
@Override
134127
public int getType() {
135-
return currLine.getType();
128+
return get().getType();
136129
}
137130

138131
@Override
139132
public void setType(int type) {
140-
currLine.setType(type);
133+
get().setType(type);
141134
}
142135

143136
@Override
@@ -155,7 +148,4 @@ public int getLineNum() {
155148
return super.getLineNum();
156149
}
157150

158-
public int position() {
159-
return point;
160-
}
161151
}

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

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import android.text.TextUtils;
88
import android.util.Pair;
99

10-
import com.zzhoujay.markdown.style.CodeBlockSpan;
1110
import com.zzhoujay.markdown.style.CodeSpan;
1211
import com.zzhoujay.markdown.style.ScaleHeightSpan;
1312

@@ -132,7 +131,8 @@ private LineQueue collect() throws IOException {
132131
lines.add(l);
133132
}
134133
}
135-
return new LineQueue(lines);
134+
LineQueue queue = new LineQueue(lines);
135+
return queue;
136136
}
137137

138138
private int findQuotaCount(Line line) {
@@ -145,12 +145,14 @@ private int findQuotaCount(Line line) {
145145

146146
private Spannable merge(LineQueue queue) {
147147
boolean block2 = false;
148+
removeBlankLine(queue);
148149
do {
149-
Line curr = queue.get();
150+
150151
Line prev = queue.prevLine();
151152
Line next = queue.nextLine();
153+
Line curr = queue.get();
152154

153-
if (!block2 && tagHandler.codeBlock(curr)) {
155+
if (!block2 && tagHandler.codeBlock1(curr)) {
154156
removeBlankLine(queue);
155157
continue;
156158
}
@@ -160,7 +162,10 @@ private Spannable merge(LineQueue queue) {
160162
queue.remove();
161163
if (!block2) {
162164
removeBlankLine(queue);
165+
} else {
166+
queue.prev();
163167
}
168+
164169
continue;
165170
}
166171

@@ -213,7 +218,6 @@ private Spannable merge(LineQueue queue) {
213218
}
214219
curr.setBuilder(SpannableStringBuilder.valueOf(curr.getSource()));
215220
tagHandler.inline(curr);
216-
217221
} while (queue.next());
218222
return mergeSpannable(queue);
219223
}
@@ -223,25 +227,25 @@ private Spannable mergeSpannable(LineQueue queue) {
223227
SpannableStringBuilder builder = new SpannableStringBuilder();
224228
List<CharSequence> codeBlock = new ArrayList<>();
225229
do {
226-
Line line = queue.get();
230+
Line curr = queue.get();
227231
Line prev = queue.prevLine();
228232
Line next = queue.nextLine();
229-
switch (line.getType()) {
233+
switch (curr.getType()) {
230234
case Line.LINE_TYPE_CODE_BLOCK_2:
231235
if (prev != null && prev.getType() == Line.LINE_TYPE_CODE_BLOCK_1) {
232236
CharSequence[] cs = new CharSequence[codeBlock.size()];
233237
builder.append(styleBuilder.codeBlock(codeBlock.toArray(cs))).append('\n').append('\n');
234238
codeBlock.clear();
235239
}
236-
codeBlock.add(line.getBuilder());
240+
codeBlock.add(curr.getBuilder());
237241
continue;
238242
case Line.LINE_TYPE_CODE_BLOCK_1:
239243
if (prev != null && prev.getType() == Line.LINE_TYPE_CODE_BLOCK_2) {
240244
CharSequence[] cs = new CharSequence[codeBlock.size()];
241245
builder.append(styleBuilder.codeBlock(codeBlock.toArray(cs))).append('\n').append('\n');
242246
codeBlock.clear();
243247
}
244-
codeBlock.add(line.getBuilder());
248+
codeBlock.add(curr.getBuilder());
245249
continue;
246250
default:
247251
if (prev != null && (prev.getType() == Line.LINE_TYPE_CODE_BLOCK_1 || prev.getType() == Line.LINE_TYPE_CODE_BLOCK_2)) {
@@ -250,11 +254,11 @@ private Spannable mergeSpannable(LineQueue queue) {
250254
codeBlock.clear();
251255
}
252256
}
253-
builder.append(line.getBuilder()).append('\n');
254-
switch (line.getType()) {
257+
builder.append(curr.getBuilder()).append('\n');
258+
switch (curr.getType()) {
255259
case Line.LINE_TYPE_QUOTA:
256260
if (next != null && next.getType() == Line.LINE_TYPE_QUOTA) {
257-
int num = line.getTypeCount();
261+
int num = curr.getTypeCount();
258262
SpannableStringBuilder ssb = new SpannableStringBuilder(" ");
259263
while (num > 0) {
260264
ssb = styleBuilder.quota(ssb);
@@ -430,7 +434,7 @@ private SpannableStringBuilder merge(List<Line> lines) {
430434
}
431435
codeBlock.add(line.getBuilder());
432436
// if (prev == null || prev.getType() != Line.LINE_TYPE_CODE_BLOCK_2) {
433-
// codeBlock.add(line.getBuilder());
437+
// codeBlock1.add(line.getBuilder());
434438
// }
435439
continue;
436440
case Line.LINE_TYPE_CODE_BLOCK_1:
@@ -474,14 +478,14 @@ private SpannableStringBuilder merge(List<Line> lines) {
474478
break;
475479
// case Line.LINE_TYPE_CODE_BLOCK_1:
476480
// if (next == null || next.getType() != Line.LINE_TYPE_CODE_BLOCK_1) {
477-
// builder.append(styleBuilder.codeBlock(" ", CodeBlockSpan.FLAG_END));
481+
// builder.append(styleBuilder.codeBlock1(" ", CodeBlockSpan.FLAG_END));
478482
// builder.append('\n');
479483
// builder.append('\n');
480484
// }
481485
// break;
482486
// case Line.LINE_TYPE_CODE_BLOCK_2:
483487
// if (next == null || next.getType() != Line.LINE_TYPE_CODE_BLOCK_2) {
484-
// builder.append(styleBuilder.codeBlock(" ", CodeBlockSpan.FLAG_END));
488+
// builder.append(styleBuilder.codeBlock1(" ", CodeBlockSpan.FLAG_END));
485489
// builder.append('\n');
486490
// builder.append('\n');
487491
// }
@@ -531,7 +535,6 @@ private boolean findCodeBlock(Line line) {
531535
String content = matcher.group(2);
532536
line.setType(Line.LINE_TYPE_CODE_BLOCK_1);
533537
line.setBuilder(content);
534-
// line.setCodeBlock(true);
535538
// line.setBuilder(styleBuilder.codeBlock(content, CodeBlockSpan.FLAG_CENTER));
536539
return true;
537540
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ public SpannableStringBuilder codeBlock(CharSequence... charSequence) {
185185
builder.setSpan(codeBlockSpan, 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
186186
builder.setSpan(sizeSpan, 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
187187
return builder;
188-
// return new SpannableStringBuilder(String.format("codeBlock:{%s}", charSequence));
188+
// return new SpannableStringBuilder(String.format("codeBlock1:{%s}", charSequence));
189189
}
190190

191191
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public interface TagHandler extends TagFinder {
5555

5656
boolean inline(Line line);
5757

58-
boolean codeBlock(Line line);
58+
boolean codeBlock1(Line line);
5959

6060
boolean codeBlock2(Line line);
6161

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,13 @@ private boolean ol(Line line, boolean normal) {
296296

297297
@Override
298298
public boolean gap(Line line) {
299-
return patternGap.matcher(line.getSource()).find();
299+
Matcher matcher = patternGap.matcher(line.getSource());
300+
if (matcher.matches()) {
301+
line.setType(Line.LINE_TYPE_GAP);
302+
line.setBuilder(styleBuilder.gap());
303+
return true;
304+
}
305+
return false;
300306
}
301307

302308
@Override
@@ -510,7 +516,7 @@ public boolean imageId(String line) {
510516
}
511517

512518
@Override
513-
public boolean codeBlock(Line line) {
519+
public boolean codeBlock1(Line line) {
514520
Matcher matcher = patternCodeBlock.matcher(line.getSource());
515521
if (matcher.find()) {
516522
String content = matcher.group(2);

0 commit comments

Comments
 (0)