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

Skip to content

Commit d449581

Browse files
committed
修复了一些问题,将项目发布到了jcenter
1 parent 7775597 commit d449581

File tree

9 files changed

+301
-251
lines changed

9 files changed

+301
-251
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,58 @@
44
55
Markdown文本直接转换成Spanned,直接设置给TextView即可完成显示
66

7+
遵循Github Flavored Markdown标准
8+
79
### 效果展示
810

911
![效果图](image/img1.jpg)
1012

13+
### 使用
14+
15+
```
16+
Markdown.fromMarkdown(text,imageGetter,textView);
17+
```
18+
19+
**注意:** 此方法需要在textView的Measure完成后调用,因为需要获取textView的宽高
20+
21+
例子:
22+
```
23+
textView.post(new Runnable() {
24+
@Override
25+
public void run() {
26+
Spanned spanned = MarkDown.fromMarkdown(stream, new Html.ImageGetter() {
27+
@Override
28+
public Drawable getDrawable(String source) {
29+
Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
30+
drawable.setBounds(0, 0, 400, 400);
31+
return drawable;
32+
}
33+
}, textView);
34+
textView.setText(spanned);
35+
}
36+
```
37+
38+
### Use in Gradle
39+
40+
`compile 'com.zzhoujay.markdown:markdown:0.0.1'`
41+
42+
**注意:** 当前并非稳定版,仅供尝鲜使用
43+
1144
### 项目进度
1245

1346
* 已完成大部分功能开发
1447
* 一些细节优化和接口待开发
1548

49+
### 已知问题
50+
51+
* 引用块内不支持Setext-style的标题(后续会想办法修复)
52+
* 不支持表格
53+
54+
55+
### 后续计划
56+
57+
* 修复完善当前版本
58+
* 整合进 [RichText](https://github.com/zzhoujay/RichText)
59+
* 修复一些已知问题
60+
1661
_by zzhoujay_

app/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ dependencies {
2323
compile fileTree(include: ['*.jar'], dir: 'libs')
2424
testCompile 'junit:junit:4.12'
2525
compile 'com.android.support:appcompat-v7:23.4.0'
26-
compile project(':markdown')
26+
// compile project(':markdown')
27+
compile 'com.zzhoujay.markdown:markdown:0.0.2'
2728
}

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.tt);
48+
final InputStream stream = getResources().openRawResource(R.raw.test);
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: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
> * * * * hello
1+
> hello
2+
> > sdjfg
3+
> > > * * * sadfg
4+
5+
6+
> > > hello
7+
> > > =

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 = 1
5-
def version_name = '0.0.1'
4+
def version_code = 2
5+
def version_name = '0.0.2'
66

77
android {
88
compileSdkVersion 23

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

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public LineQueue getQueue() {
103103

104104
if (!notBlock && tagHandler.codeBlock2(queue)) {
105105
block2 = !block2;
106-
queue.remove();
106+
queue.removeCurrLine();
107107
if (!block2) {
108108
removeBlankLine(queue, true);
109109
}
@@ -123,7 +123,7 @@ public LineQueue getQueue() {
123123
curr.setStyle(SpannableStringBuilder.valueOf(curr.getSource()));
124124
tagHandler.inline(curr);
125125
curr.setStyle(styleBuilder.h1(curr.getStyle()));
126-
curr.removeNext();
126+
queue.removeNext();
127127
removeBlankLine(queue);
128128
continue;
129129
}
@@ -133,7 +133,7 @@ public LineQueue getQueue() {
133133
curr.setStyle(SpannableStringBuilder.valueOf(curr.getSource()));
134134
tagHandler.inline(curr);
135135
curr.setStyle(styleBuilder.h2(curr.getStyle()));
136-
curr.removeNext();
136+
queue.removeNext();
137137
removeBlankLine(queue);
138138
continue;
139139
}
@@ -164,7 +164,7 @@ public LineQueue getQueue() {
164164
// if (findUl(r)||findOl(r)) {
165165
if (tagHandler.find(Tag.UL, r) || tagHandler.find(Tag.OL, r) || tagHandler.find(Tag.H, r)) {
166166
break;
167-
} else {
167+
}else {
168168
queue.currLine().setSource(curr.getSource() + ' ' + r);
169169
queue.removeNext();
170170
}
@@ -226,25 +226,23 @@ private Spannable mergeSpannable(LineQueue queue) {
226226
builder.append(curr.getStyle()).append('\n');
227227
switch (curr.getType()) {
228228
case Line.LINE_TYPE_QUOTA:
229-
if (next != null && next.getType() == Line.LINE_TYPE_QUOTA) {
230-
int num = curr.getCount();
231-
SpannableStringBuilder ssb = new SpannableStringBuilder(" ");
232-
while (num > 0) {
233-
ssb = styleBuilder.quota(ssb);
234-
num--;
235-
}
236-
ssb.append('\n');
237-
builder.append(ssb);
238-
} else {
229+
if(next!=null&&next.getType()!=Line.LINE_TYPE_QUOTA){
239230
builder.append('\n');
240231
}
241232
break;
242-
case Line.LINE_TYPE_H3:
233+
case Line.LINE_TYPE_UL:
234+
if (next != null && next.getType() == Line.LINE_TYPE_UL)
235+
builder.append(listMarginBottom());
243236
builder.append('\n');
244237
break;
245-
case Line.LINE_TYPE_H4:
238+
case Line.LINE_TYPE_OL:
239+
if (next != null && next.getType() == Line.LINE_TYPE_OL) {
240+
builder.append(listMarginBottom());
241+
}
246242
builder.append('\n');
247243
break;
244+
case Line.LINE_TYPE_H3:
245+
case Line.LINE_TYPE_H4:
248246
case Line.LINE_TYPE_H5:
249247
case Line.LINE_TYPE_H6:
250248
case Line.LINE_TYPE_H1:
@@ -253,16 +251,6 @@ private Spannable mergeSpannable(LineQueue queue) {
253251
case Line.LINE_NORMAL:
254252
builder.append('\n');
255253
break;
256-
case Line.LINE_TYPE_UL:
257-
if (next != null && next.getType() == Line.LINE_TYPE_UL)
258-
builder.append(listMarginBottom());
259-
builder.append('\n');
260-
break;
261-
case Line.LINE_TYPE_OL:
262-
if (next != null && next.getType() == Line.LINE_TYPE_OL) {
263-
builder.append(listMarginBottom());
264-
}
265-
builder.append('\n');
266254
}
267255
} while (queue.next());
268256
return builder;
@@ -274,20 +262,21 @@ private boolean removeBlankLine(LineQueue queue) {
274262

275263
private boolean removeBlankLine(LineQueue queue, boolean curr) {
276264
boolean flag = false;
277-
if (curr) {
278-
queue = queue.copy();
279-
} else {
280-
queue = queue.copyNext();
281-
}
282-
if (queue == null) {
283-
return false;
265+
Line m = curr ? queue.prevLine() : queue.get();
266+
if (!curr) {
267+
queue.next();
284268
}
285269
do {
286-
if (!tagHandler.find(Tag.BLANK, queue.get())) {
270+
if (!tagHandler.find(Tag.BLANK, queue.get()) || queue.get() == m) {
287271
break;
288272
}
289273
flag = true;
290274
} while (queue.removeCurrLine() != null);
275+
if (!curr) {
276+
if (queue.get() != m) {
277+
queue.prev();
278+
}
279+
}
291280
return flag;
292281
}
293282

0 commit comments

Comments
 (0)