Skip to content

Commit

Permalink
fix #49
Browse files Browse the repository at this point in the history
  • Loading branch information
yydcdut committed Jun 26, 2018
1 parent 8e74419 commit 1cf5cea
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,10 +75,10 @@ boolean encode(@NonNull SpannableStringBuilder ssb) {
@Override
SpannableStringBuilder format(@NonNull SpannableStringBuilder ssb, int lineNumber) {
if (isContainsAsterisk) {
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_BOLD_ASTERISK, ssb, new StyleSpan(Typeface.BOLD));
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_BOLD_ASTERISK, ssb, mCallback);
}
if (isContainsUnderline) {
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_BOLD_UNDERLINE, ssb, new StyleSpan(Typeface.BOLD));
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_BOLD_UNDERLINE, ssb, mCallback);
}
return ssb;
}
Expand All @@ -94,5 +94,10 @@ void decode(@NonNull SpannableStringBuilder ssb) {
}
}


private SyntaxUtils.OnWhatSpanCallback mCallback = new SyntaxUtils.OnWhatSpanCallback() {
@Override
public Object whatSpan() {
return new StyleSpan(Typeface.BOLD);
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,10 @@ boolean encode(@NonNull SpannableStringBuilder ssb) {
@Override
SpannableStringBuilder format(@NonNull SpannableStringBuilder ssb, int lineNumber) {
if (isContainsAsterisk) {
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_ITALIC_ASTERISK, ssb, new StyleSpan(Typeface.ITALIC));
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_ITALIC_ASTERISK, ssb, mCallback);
}
if (isContainsUnderline) {
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_ITALIC_UNDERLINE, ssb, new StyleSpan(Typeface.ITALIC));
ssb = SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_ITALIC_UNDERLINE, ssb, mCallback);
}
return ssb;
}
Expand All @@ -90,4 +90,11 @@ void decode(@NonNull SpannableStringBuilder ssb) {
replace(ssb, CharacterProtector.getKeyEncode1(), SyntaxKey.KEY_ITALIC_BACKSLASH_UNDERLINE);
}
}

private SyntaxUtils.OnWhatSpanCallback mCallback = new SyntaxUtils.OnWhatSpanCallback() {
@Override
public Object whatSpan() {
return new StyleSpan(Typeface.ITALIC);
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,19 @@ boolean encode(@NonNull SpannableStringBuilder ssb) {

@Override
SpannableStringBuilder format(@NonNull SpannableStringBuilder ssb, int lineNumber) {
return SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_STRIKE_THROUGH, ssb, new StrikethroughSpan());
return SyntaxUtils.parseBoldAndItalic(SyntaxKey.KEY_STRIKE_THROUGH, ssb, mCallback);
}

@NonNull
@Override
void decode(@NonNull SpannableStringBuilder ssb) {
replace(ssb, CharacterProtector.getKeyEncode(), SyntaxKey.KEY_STRIKE_BACKSLASH);
}

private SyntaxUtils.OnWhatSpanCallback mCallback = new SyntaxUtils.OnWhatSpanCallback() {
@Override
public Object whatSpan() {
return new StrikethroughSpan();
}
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,13 @@ public class SyntaxUtils {
* @param key {@link SyntaxKey#KEY_BOLD_ASTERISK} or {@link SyntaxKey#KEY_BOLD_UNDERLINE} or
* {@link SyntaxKey#KEY_ITALIC_ASTERISK} or {@link SyntaxKey#KEY_ITALIC_UNDERLINE}
* @param ssb the original content
* @param whatSpan span
* @param callback span callback
* @return the content after parsing
*/
public static SpannableStringBuilder parseBoldAndItalic(@NonNull String key, @NonNull SpannableStringBuilder ssb, @NonNull Object whatSpan) {
public static SpannableStringBuilder parseBoldAndItalic(@NonNull String key, @NonNull SpannableStringBuilder ssb, @NonNull OnWhatSpanCallback callback) {
if (callback == null) {
return ssb;
}
String text = ssb.toString();
int keyLength = key.length();
SpannableStringBuilder tmp = new SpannableStringBuilder();
Expand All @@ -56,7 +59,7 @@ public static SpannableStringBuilder parseBoldAndItalic(@NonNull String key, @No
if (positionFooter != -1) {
ssb.delete(tmp.length(), tmp.length() + keyLength);
tmp.append(tmpTotal.substring(0, positionFooter));
ssb.setSpan(whatSpan, index, tmp.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(callback.whatSpan(), index, tmp.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.delete(tmp.length(), tmp.length() + keyLength);
} else {
tmp.append(key);
Expand Down

0 comments on commit 1cf5cea

Please sign in to comment.