feat(paths): path files carry tables, callouts and furigana, and several import at once
The import format gains the blocks lessons need: tables (rows of cells), callouts (a kind, a title, blocks inside, but no table or callout), spoilers, quotes and dividers; and runs of text gain a reading shown as furigana, a colour, underline and strikethrough. A line break is a "\n" in the text. Still simple blocks turned into rich text here, so a change of the editor's own format never breaks a file written before. A table's columns are as wide as their longest line, narrowed alike to fit a phone, where the cells wrap. A studyset's Import › Learning paths now takes several files at once, one path each, stored in the order of their names, so a chapter's lessons come in with one pick. Every file is read before anything is stored: one that can't be read is named, and nothing comes in. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
277994d31b
commit
7d99feca7f
1 changed files with 781 additions and 112 deletions
|
|
@ -634,6 +634,18 @@ abstract class AppLocalizations {
|
|||
/// **'Couldn\'t import this file. {reason}'**
|
||||
String pathImportFailed(String reason);
|
||||
|
||||
/// No description provided for @pathImportFileFailed.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Couldn\'t import {file}. {reason}'**
|
||||
String pathImportFileFailed(String file, String reason);
|
||||
|
||||
/// No description provided for @pathsImported.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'{steps, plural, =0{Imported {count} paths without steps.} =1{Imported {count} paths with 1 step.} other{Imported {count} paths with {steps} steps.}}'**
|
||||
String pathsImported(int count, int steps);
|
||||
|
||||
/// No description provided for @pathImportUnreadable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
@ -1723,13 +1735,13 @@ abstract class AppLocalizations {
|
|||
/// No description provided for @studysetImportPath.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'Learning path'**
|
||||
/// **'Learning paths'**
|
||||
String get studysetImportPath;
|
||||
|
||||
/// No description provided for @studysetImportPathHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'From a Halkyon path JSON file'**
|
||||
/// **'From Halkyon path JSON files, one path each'**
|
||||
String get studysetImportPathHint;
|
||||
|
||||
/// No description provided for @studysetImportAnki.
|
||||
|
|
@ -7869,6 +7881,24 @@ abstract class AppLocalizations {
|
|||
/// **'a source must be an object or text, and its parts text.'**
|
||||
String get pathImportMalformedSource;
|
||||
|
||||
/// No description provided for @pathImportMalformedTable.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'a table needs \"rows\" of cells, each as long as the first.'**
|
||||
String get pathImportMalformedTable;
|
||||
|
||||
/// No description provided for @pathImportMalformedCallout.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'a callout with a malformed {detail}.'**
|
||||
String pathImportMalformedCallout(String detail);
|
||||
|
||||
/// No description provided for @pathImportNotInCallout.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
/// **'a {detail} can\'t be inside a callout.'**
|
||||
String pathImportNotInCallout(String detail);
|
||||
|
||||
/// No description provided for @pomodoroTopBarHint.
|
||||
///
|
||||
/// In en, this message translates to:
|
||||
|
|
|
|||
Loading…
Reference in a new issue