84 lines
2.7 KiB
Java
84 lines
2.7 KiB
Java
|
package com.keylesspalace.tusky.util;
|
||
|
|
||
|
import androidx.annotation.IntDef;
|
||
|
import androidx.annotation.IntRange;
|
||
|
import androidx.annotation.NonNull;
|
||
|
import androidx.annotation.VisibleForTesting;
|
||
|
import android.text.Editable;
|
||
|
import android.text.Selection;
|
||
|
import android.text.Spannable;
|
||
|
import android.widget.EditText;
|
||
|
import me.thanel.markdownedit.SelectionUtils;
|
||
|
|
||
|
public class BBCodeEdit {
|
||
|
private BBCodeEdit() { /* cannot be instantiated */ }
|
||
|
|
||
|
public static void addBold(@NonNull Editable text) {
|
||
|
HTMLEdit.surroundSelectionWith(text, "[b]", "[/b]");
|
||
|
}
|
||
|
|
||
|
public static void addBold(@NonNull EditText editText) {
|
||
|
addBold(editText.getText());
|
||
|
}
|
||
|
|
||
|
public static void addItalic(@NonNull Editable text) {
|
||
|
HTMLEdit.surroundSelectionWith(text, "[i]", "[/i]");
|
||
|
}
|
||
|
|
||
|
public static void addItalic(@NonNull EditText editText) {
|
||
|
addItalic(editText.getText());
|
||
|
}
|
||
|
|
||
|
public static void addStrikeThrough(@NonNull Editable text) {
|
||
|
HTMLEdit.surroundSelectionWith(text, "[s]", "[/s]");
|
||
|
}
|
||
|
|
||
|
public static void addStrikeThrough(@NonNull EditText editText) {
|
||
|
addStrikeThrough(editText.getText());
|
||
|
}
|
||
|
|
||
|
public static void addLink(@NonNull Editable text) {
|
||
|
if (!SelectionUtils.hasSelection(text)) {
|
||
|
SelectionUtils.selectWordAroundCursor(text);
|
||
|
}
|
||
|
String selectedText = SelectionUtils.getSelectedText(text).toString().trim();
|
||
|
|
||
|
int selectionStart = SelectionUtils.getSelectionStart(text);
|
||
|
|
||
|
String begin = "[url=url]";
|
||
|
String end = "[/url]";
|
||
|
String result = begin + selectedText + end;
|
||
|
SelectionUtils.replaceSelectedText(text, result);
|
||
|
|
||
|
if (selectedText.length() == 0) {
|
||
|
Selection.setSelection(text, selectionStart + begin.length());
|
||
|
} else {
|
||
|
selectionStart = selectionStart + 5; // [url=".length()
|
||
|
Selection.setSelection(text, selectionStart, selectionStart + 3);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static void addLink(@NonNull EditText editText) {
|
||
|
addLink(editText.getText());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Inserts a markdown code block to the specified EditText at the currently selected position.
|
||
|
*
|
||
|
* @param text The {@link Editable} view to which to add markdown code block.
|
||
|
*/
|
||
|
public static void addCode(@NonNull Editable text) {
|
||
|
HTMLEdit.surroundSelectionWith(text, "[code]", "[/code]");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Inserts a markdown code block to the specified EditText at the currently selected position.
|
||
|
*
|
||
|
* @param editText The {@link EditText} view to which to add markdown code block.
|
||
|
*/
|
||
|
public static void addCode(@NonNull EditText editText) {
|
||
|
addCode(editText.getText());
|
||
|
}
|
||
|
}
|
||
|
|