import React from 'react'; /** * Parses a string with Japanese Furigana format {kanji|reading} * into HTML tags. */ export function parseFurigana(text: string): React.ReactNode[] { if (!text) return []; const regex = /\{([^|]+)\|([^}]+)\}/g; const parts = []; let lastIndex = 0; let match; while ((match = regex.exec(text)) !== null) { // Add text before match if (match.index > lastIndex) { parts.push(text.substring(lastIndex, match.index)); } // Add ruby tag const [fullMatch, kanji, reading] = match; parts.push( {kanji} {reading} ); lastIndex = regex.lastIndex; } // Add remaining text if (lastIndex < text.length) { parts.push(text.substring(lastIndex)); } return parts; } interface FuriganaTextProps { text: string; className?: string; } export const FuriganaText: React.FC = ({ text, className }) => { return {parseFurigana(text)}; };