WIP: android/ios-adaption feature, markdown, and augment #6

Draft
Juan wants to merge 28 commits from android-adaption into main
Showing only changes of commit 8568eafba3 - Show all commits

View File

@ -1,6 +1,7 @@
//data structures //data structures
import 'dart:typed_data'; import 'dart:typed_data';
import 'package:markdown/markdown.dart' as md;
class GetThreadResponse { class GetThreadResponse {
final int id; final int id;
@ -151,6 +152,48 @@ class AttachmentResponse {
} }
class AugmentTree { class AugmentTree {
List children = []; List<AugmentTree> children = [];
AugmentTree? node;
String data = '';
AugmentTree? parent;
String ogTag = '';
String numbering = '';
void setData(String data) {
this.data = data;
}
static String _intToLetter(int index) {
return String.fromCharCode('a'.runes.first + index);
}
void addNumbering({String prefix = ''}) {
//if called in root, numbers them all
for (int i = 0; i < children.length; i++) {
final child = children[i];
String childNumbering;
bool parentIsLettered = prefix.contains(RegExp(r'[a-z]'));
if (prefix.isEmpty) {
parentIsLettered = false;
} else {
parentIsLettered = prefix.runes.last >= 'a'.runes.first &&
prefix.runes.last <= 'z'.runes.first;
}
if (prefix.isEmpty) {
// Top-level children (direct children of the original root being numbered) get 1, 2, 3...
childNumbering = (i + 1).toString();
} else if (parentIsLettered) {
// Deeper children get '1a', '1b', '2a', '2b', etc.
childNumbering = '$prefix${i + 1}';
} else {
childNumbering = '$prefix${_intToLetter(i)}';
}
child.numbering = childNumbering;
// Recursively call for children
child.addNumbering(prefix: childNumbering);
}
}
} }