react-native-markdown-renderer
Version:
Markdown renderer for react-native, with CommonMark spec support + adds syntax extensions & sugar (URL autolinking, typographer).
30 lines (25 loc) • 703 B
text/typescript
import Token from './Token';
interface GroupableToken {
block?: boolean;
[key: string]: unknown;
}
export default function groupTextTokens<T extends GroupableToken>(tokens: T[]): (T | Token)[] {
const result: (T | Token)[] = [];
let hasGroup = false;
tokens.forEach((token) => {
if (!token.block && !hasGroup) {
hasGroup = true;
result.push(new Token('textgroup', 1));
result.push(token);
} else if (!token.block && hasGroup) {
result.push(token);
} else if (token.block && hasGroup) {
hasGroup = false;
result.push(new Token('textgroup', -1));
result.push(token);
} else {
result.push(token);
}
});
return result;
}