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

Skip to content

Commit e90b9e5

Browse files
committed
修复了一些问题
1 parent af24f2e commit e90b9e5

File tree

6 files changed

+74
-69
lines changed

6 files changed

+74
-69
lines changed

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,14 @@
44

55
---
66

7-
### 使用方式
7+
### 使用方式
8+
9+
> 1. hh
10+
> 1. gg
11+
12+
13+
> * hello
14+
> * gg
15+
> * hh
16+
>
17+
>

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

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ public class Line {
2121

2222
private final int lineNum;
2323
private String source;
24-
private boolean codeBlock;
2524
private CharSequence builder;
2625
private int type;
27-
private int typeCount;
26+
private int count;
27+
private int attr;
2828

2929
Line() {
3030
lineNum = 0;
@@ -33,8 +33,7 @@ public class Line {
3333
public Line(int lineNum, String source) {
3434
this.lineNum = lineNum;
3535
this.source = source;
36-
codeBlock = false;
37-
typeCount = 1;
36+
count = 1;
3837
type = LINE_NORMAL;
3938
}
4039

@@ -59,14 +58,6 @@ public void setSource(String source) {
5958
this.source = source;
6059
}
6160

62-
public boolean isCodeBlock() {
63-
return codeBlock;
64-
}
65-
66-
public void setCodeBlock(boolean codeBlock) {
67-
this.codeBlock = codeBlock;
68-
}
69-
7061
public int getType() {
7162
return type;
7263
}
@@ -75,15 +66,23 @@ public void setType(int type) {
7566
this.type = type;
7667
}
7768

78-
public int getTypeCount() {
79-
return typeCount;
69+
public int getCount() {
70+
return count;
8071
}
8172

82-
public void setTypeCount(int typeCount) {
83-
this.typeCount = typeCount;
73+
public void setCount(int count) {
74+
this.count = count;
8475
}
8576

8677
public int getLineNum() {
8778
return lineNum;
8879
}
80+
81+
public int getAttr() {
82+
return attr;
83+
}
84+
85+
public void setAttr(int attr) {
86+
this.attr = attr;
87+
}
8988
}

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -130,16 +130,6 @@ public void setSource(String source) {
130130
get().setSource(source);
131131
}
132132

133-
@Override
134-
public boolean isCodeBlock() {
135-
return get().isCodeBlock();
136-
}
137-
138-
@Override
139-
public void setCodeBlock(boolean codeBlock) {
140-
get().setCodeBlock(codeBlock);
141-
}
142-
143133
@Override
144134
public int getType() {
145135
return get().getType();
@@ -151,20 +141,30 @@ public void setType(int type) {
151141
}
152142

153143
@Override
154-
public int getTypeCount() {
155-
return super.getTypeCount();
144+
public int getCount() {
145+
return super.getCount();
156146
}
157147

158148
@Override
159-
public void setTypeCount(int typeCount) {
160-
super.setTypeCount(typeCount);
149+
public void setCount(int typeCount) {
150+
super.setCount(typeCount);
161151
}
162152

163153
@Override
164154
public int getLineNum() {
165155
return super.getLineNum();
166156
}
167157

158+
@Override
159+
public int getAttr() {
160+
return get().getAttr();
161+
}
162+
163+
@Override
164+
public void setAttr(int attr) {
165+
get().setAttr(attr);
166+
}
167+
168168
@Override
169169
public String toString() {
170170
return "LineQueue{" +

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

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
import android.text.SpannableString;
55
import android.text.SpannableStringBuilder;
66
import android.text.Spanned;
7-
import android.text.TextUtils;
8-
import android.util.Pair;
97

10-
import com.zzhoujay.markdown.style.CodeSpan;
118
import com.zzhoujay.markdown.style.ScaleHeightSpan;
129

1310
import java.io.BufferedReader;
@@ -16,8 +13,6 @@
1613
import java.io.InputStreamReader;
1714
import java.io.StringReader;
1815
import java.util.ArrayList;
19-
import java.util.HashMap;
20-
import java.util.HashSet;
2116
import java.util.LinkedList;
2217
import java.util.List;
2318
import java.util.regex.Matcher;
@@ -115,14 +110,14 @@ private Spannable merge(LineQueue queue) {
115110
Line next = queue.nextLine();
116111
Line curr = queue.get();
117112

118-
if (!block2 && tagHandler.codeBlock1(curr)) {
113+
if (!block2 && tagHandler.codeBlock1(queue)) {
119114
if (next != null) {
120115
removeBlankLine(queue);
121116
}
122117
continue;
123118
}
124119

125-
if (tagHandler.codeBlock2(curr)) {
120+
if (tagHandler.codeBlock2(queue)) {
126121
block2 = !block2;
127122
queue.remove();
128123
if (!block2) {
@@ -174,12 +169,12 @@ private Spannable merge(LineQueue queue) {
174169
}
175170

176171
}
177-
if (tagHandler.gap(curr) || tagHandler.quota(curr) || tagHandler.ol(curr) || tagHandler.ul(curr) ||
178-
tagHandler.h(curr)) {
172+
if (tagHandler.gap(queue) || tagHandler.quota(queue) || tagHandler.ol(queue) || tagHandler.ul(queue) ||
173+
tagHandler.h(queue)) {
179174
continue;
180175
}
181176
curr.setBuilder(SpannableStringBuilder.valueOf(curr.getSource()));
182-
tagHandler.inline(curr);
177+
tagHandler.inline(queue);
183178
} while (!need_next || queue.next());
184179
return mergeSpannable(queue);
185180
}
@@ -230,7 +225,7 @@ private Spannable mergeSpannable(LineQueue queue) {
230225
switch (curr.getType()) {
231226
case Line.LINE_TYPE_QUOTA:
232227
if (next != null && next.getType() == Line.LINE_TYPE_QUOTA) {
233-
int num = curr.getTypeCount();
228+
int num = curr.getCount();
234229
SpannableStringBuilder ssb = new SpannableStringBuilder(" ");
235230
while (num > 0) {
236231
ssb = styleBuilder.quota(ssb);

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

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public StyleBuilderImpl(TextView textView, Html.ImageGetter imageGetter) {
5252

5353
@Override
5454
public SpannableStringBuilder em(CharSequence charSequence) {
55-
SpannableStringBuilder builder = new SpannableStringBuilder(charSequence);
55+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(charSequence);
5656
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
5757
builder.setSpan(styleSpan, 0, charSequence.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
5858
ForegroundColorSpan colorSpan = new ForegroundColorSpan(h1_color);
@@ -62,7 +62,7 @@ public SpannableStringBuilder em(CharSequence charSequence) {
6262

6363
@Override
6464
public SpannableStringBuilder italic(CharSequence charSequence) {
65-
SpannableStringBuilder builder = new SpannableStringBuilder(charSequence);
65+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(charSequence);
6666
StyleSpan styleSpan = new StyleSpan(Typeface.ITALIC);
6767
ForegroundColorSpan colorSpan = new ForegroundColorSpan(h1_color);
6868
builder.setSpan(colorSpan, 0, charSequence.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -72,7 +72,7 @@ public SpannableStringBuilder italic(CharSequence charSequence) {
7272

7373
@Override
7474
public SpannableStringBuilder emItalic(CharSequence charSequence) {
75-
SpannableStringBuilder builder = new SpannableStringBuilder(charSequence);
75+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(charSequence);
7676
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD_ITALIC);
7777
ForegroundColorSpan colorSpan = new ForegroundColorSpan(h1_color);
7878
builder.setSpan(colorSpan, 0, charSequence.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -82,7 +82,7 @@ public SpannableStringBuilder emItalic(CharSequence charSequence) {
8282

8383
@Override
8484
public SpannableStringBuilder delete(CharSequence charSequence) {
85-
SpannableStringBuilder builder = new SpannableStringBuilder(charSequence);
85+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(charSequence);
8686
StrikethroughSpan span = new StrikethroughSpan();
8787
ForegroundColorSpan colorSpan = new ForegroundColorSpan(h1_color);
8888
builder.setSpan(colorSpan, 0, charSequence.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -92,12 +92,13 @@ public SpannableStringBuilder delete(CharSequence charSequence) {
9292

9393
@Override
9494
public SpannableStringBuilder email(CharSequence charSequence) {
95-
return new SpannableStringBuilder(String.format("{email:%s}", charSequence));
95+
return link(charSequence,"","");
96+
// return new SpannableStringBuilder(String.format("{email:%s}", charSequence));
9697
}
9798

9899
@Override
99100
public SpannableStringBuilder code(CharSequence charSequence) {
100-
SpannableStringBuilder builder = new SpannableStringBuilder(charSequence);
101+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(charSequence);
101102
CodeSpan span = new CodeSpan(code_color);
102103
ForegroundColorSpan colorSpan = new ForegroundColorSpan(h1_color);
103104
builder.setSpan(colorSpan, 0, charSequence.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -137,7 +138,7 @@ public SpannableStringBuilder h6(CharSequence charSequence) {
137138

138139
@Override
139140
public SpannableStringBuilder quota(CharSequence charSequence) {
140-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
141+
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(charSequence);
141142
QuoteSpan span = new MarkDownQuoteSpan(quota_color);
142143
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(h6_color);
143144
spannableStringBuilder.setSpan(span, 0, spannableStringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -147,39 +148,39 @@ public SpannableStringBuilder quota(CharSequence charSequence) {
147148

148149
@Override
149150
public SpannableStringBuilder ul(CharSequence charSequence) {
150-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
151+
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(charSequence);
151152
BulletSpan bulletSpan = new MarkDownBulletSpan(40, h1_color, 0);
152153
spannableStringBuilder.setSpan(bulletSpan, 0, spannableStringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
153154
return spannableStringBuilder;
154155
}
155156

156157
@Override
157158
public SpannableStringBuilder ol(CharSequence charSequence, int index) {
158-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
159+
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(charSequence);
159160
BulletSpan bulletSpan = new MarkDownBulletSpan(40, h1_color, index, textView);
160161
spannableStringBuilder.setSpan(bulletSpan, 0, spannableStringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
161162
return spannableStringBuilder;
162163
}
163164

164165
@Override
165166
public SpannableStringBuilder ul2(CharSequence charSequence) {
166-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
167+
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(charSequence);
167168
MarkDownInnerBulletSpan bulletSpan = new MarkDownInnerBulletSpan(40, h1_color, 0);
168169
spannableStringBuilder.setSpan(bulletSpan, 0, spannableStringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
169170
return spannableStringBuilder;
170171
}
171172

172173
@Override
173174
public SpannableStringBuilder ol2(CharSequence charSequence, int index) {
174-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
175+
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(charSequence);
175176
MarkDownInnerBulletSpan bulletSpan = new MarkDownInnerBulletSpan(40, h1_color, index);
176177
spannableStringBuilder.setSpan(bulletSpan, 0, spannableStringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
177178
return spannableStringBuilder;
178179
}
179180

180181
@Override
181182
public SpannableStringBuilder codeBlock(CharSequence... charSequence) {
182-
SpannableStringBuilder builder = new SpannableStringBuilder("$");
183+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf("$");
183184
AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(14, true);
184185
CodeBlockSpan codeBlockSpan = new CodeBlockSpan(getTextViewRealWidth(), code_color, charSequence);
185186
builder.setSpan(codeBlockSpan, 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -190,7 +191,7 @@ public SpannableStringBuilder codeBlock(CharSequence... charSequence) {
190191

191192
@Override
192193
public SpannableStringBuilder link(CharSequence title, String link, String hint) {
193-
SpannableStringBuilder builder = new SpannableStringBuilder(title);
194+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(title);
194195
LinkSpan linkSpan = new LinkSpan(link, link_color);
195196
builder.setSpan(linkSpan, 0, title.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
196197
return builder;
@@ -199,15 +200,15 @@ public SpannableStringBuilder link(CharSequence title, String link, String hint)
199200

200201
@Override
201202
public SpannableStringBuilder image(CharSequence title, String url, String hint) {
202-
SpannableStringBuilder builder = new SpannableStringBuilder(title);
203+
SpannableStringBuilder builder = SpannableStringBuilder.valueOf(title);
203204
ImageSpan imageSpan = new ImageSpan(imageGetter.getDrawable(url));
204205
builder.setSpan(imageSpan, 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
205206
return builder;
206207
// return new SpannableStringBuilder(String.format("{title:%s,url:%s,hint:%s}", title, url, hint));
207208
}
208209

209210
protected SpannableStringBuilder h(CharSequence charSequence, float s, int color) {
210-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
211+
SpannableStringBuilder spannableStringBuilder = SpannableStringBuilder.valueOf(charSequence);
211212
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
212213
RelativeSizeSpan sizeSpan = new RelativeSizeSpan(s);
213214
ForegroundColorSpan colorSpan = new ForegroundColorSpan(color);
@@ -218,7 +219,7 @@ protected SpannableStringBuilder h(CharSequence charSequence, float s, int color
218219
}
219220

220221
private SpannableStringBuilder hWithUnderLine(CharSequence charSequence, float s) {
221-
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(charSequence);
222+
SpannableStringBuilder spannableStringBuilder =new SpannableStringBuilder(charSequence);
222223
int start = 0;
223224
StyleSpan styleSpan = new StyleSpan(Typeface.BOLD);
224225
RelativeSizeSpan sizeSpan = new RelativeSizeSpan(s);

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,6 @@ public class TagHandlerImpl implements TagHandler {
8888
private StyleBuilder styleBuilder;
8989
private HashMap<String, Pair<String, String>> idLinkLinks;
9090
private HashMap<String, Pair<String, String>> idImageUrl;
91-
private boolean isOl;
92-
private int olIndex;
9391

9492

9593
public TagHandlerImpl(StyleBuilder styleBuilder) {
@@ -196,14 +194,13 @@ public boolean h6(Line line) {
196194
public boolean quota(Line line) {
197195
Matcher matcher = patternQuota.matcher(line.getSource());
198196
if (matcher.find()) {
199-
isOl = false;
200197
line.setType(Line.LINE_TYPE_QUOTA);
201198
Line line1 = new Line(line.getLineNum(), matcher.group(1));
202199
CharSequence userText;
203-
line.setTypeCount(1);
200+
line.setCount(1);
204201
if (quota(line1)) {
205202
if (line1.getType() == Line.LINE_TYPE_QUOTA)
206-
line.setTypeCount(line1.getTypeCount() + 1);
203+
line.setCount(line1.getCount() + 1);
207204
line.setBuilder(styleBuilder.quota(line1.getBuilder()));
208205
return true;
209206
}
@@ -281,16 +278,19 @@ private boolean ol(Line line, boolean normal) {
281278
line.setBuilder(builder);
282279
inline(line);
283280
int index = 1;
284-
if (isOl) {
285-
index = ++olIndex;
286-
} else {
287-
olIndex = index;
281+
if(line instanceof LineQueue){
282+
LineQueue queue = (LineQueue) line;
283+
if (!queue.start()) {
284+
Line prev = queue.prevLine();
285+
if (prev != null && prev.getType() == Line.LINE_TYPE_OL) {
286+
index = prev.getAttr() + 1;
287+
}
288+
}
288289
}
290+
line.setAttr(index);
289291
line.setBuilder(normal ? styleBuilder.ol2(line.getBuilder(), index) : styleBuilder.ol(line.getBuilder(), index));
290-
isOl = true;
291292
return true;
292293
}
293-
isOl = false;
294294
return false;
295295
}
296296

0 commit comments

Comments
 (0)