mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00

Partially completes #1068, and will allow mobile clients to drop their separate diff-match-patch imports. Does not yet try to handle case folding or combining-char stripping, and leaves some of the outer HTML wrapping up to the frontend for now. The logic for rendering the provided string has changed: missing chars are now only inserted if they follow a correct section, and the original text is shown instead of hyphens. This is an experiment, and can be changed if it's not well received.
140 lines
3.1 KiB
Protocol Buffer
140 lines
3.1 KiB
Protocol Buffer
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
syntax = "proto3";
|
|
|
|
option java_multiple_files = true;
|
|
|
|
package anki.card_rendering;
|
|
|
|
import "anki/generic.proto";
|
|
import "anki/notes.proto";
|
|
import "anki/notetypes.proto";
|
|
|
|
service CardRenderingService {
|
|
rpc ExtractAVTags(ExtractAVTagsRequest) returns (ExtractAVTagsResponse);
|
|
rpc ExtractLatex(ExtractLatexRequest) returns (ExtractLatexResponse);
|
|
rpc GetEmptyCards(generic.Empty) returns (EmptyCardsReport);
|
|
rpc RenderExistingCard(RenderExistingCardRequest)
|
|
returns (RenderCardResponse);
|
|
rpc RenderUncommittedCard(RenderUncommittedCardRequest)
|
|
returns (RenderCardResponse);
|
|
rpc RenderUncommittedCardLegacy(RenderUncommittedCardLegacyRequest)
|
|
returns (RenderCardResponse);
|
|
rpc StripAVTags(generic.String) returns (generic.String);
|
|
rpc RenderMarkdown(RenderMarkdownRequest) returns (generic.String);
|
|
rpc EncodeIriPaths(generic.String) returns (generic.String);
|
|
rpc DecodeIriPaths(generic.String) returns (generic.String);
|
|
rpc StripHtml(StripHtmlRequest) returns (generic.String);
|
|
rpc CompareAnswer(CompareAnswerRequest) returns (generic.String);
|
|
}
|
|
|
|
message ExtractAVTagsRequest {
|
|
string text = 1;
|
|
bool question_side = 2;
|
|
}
|
|
|
|
message ExtractAVTagsResponse {
|
|
string text = 1;
|
|
repeated AVTag av_tags = 2;
|
|
}
|
|
|
|
message AVTag {
|
|
oneof value {
|
|
string sound_or_video = 1;
|
|
TTSTag tts = 2;
|
|
}
|
|
}
|
|
|
|
message TTSTag {
|
|
string field_text = 1;
|
|
string lang = 2;
|
|
repeated string voices = 3;
|
|
float speed = 4;
|
|
repeated string other_args = 5;
|
|
}
|
|
|
|
message ExtractLatexRequest {
|
|
string text = 1;
|
|
bool svg = 2;
|
|
bool expand_clozes = 3;
|
|
}
|
|
|
|
message ExtractLatexResponse {
|
|
string text = 1;
|
|
repeated ExtractedLatex latex = 2;
|
|
}
|
|
|
|
message ExtractedLatex {
|
|
string filename = 1;
|
|
string latex_body = 2;
|
|
}
|
|
|
|
message EmptyCardsReport {
|
|
message NoteWithEmptyCards {
|
|
int64 note_id = 1;
|
|
repeated int64 card_ids = 2;
|
|
bool will_delete_note = 3;
|
|
}
|
|
string report = 1;
|
|
repeated NoteWithEmptyCards notes = 2;
|
|
}
|
|
|
|
message RenderExistingCardRequest {
|
|
int64 card_id = 1;
|
|
bool browser = 2;
|
|
}
|
|
|
|
message RenderUncommittedCardRequest {
|
|
notes.Note note = 1;
|
|
uint32 card_ord = 2;
|
|
notetypes.Notetype.Template template = 3;
|
|
bool fill_empty = 4;
|
|
}
|
|
|
|
message RenderUncommittedCardLegacyRequest {
|
|
notes.Note note = 1;
|
|
uint32 card_ord = 2;
|
|
bytes template = 3;
|
|
bool fill_empty = 4;
|
|
}
|
|
|
|
message RenderCardResponse {
|
|
repeated RenderedTemplateNode question_nodes = 1;
|
|
repeated RenderedTemplateNode answer_nodes = 2;
|
|
string css = 3;
|
|
bool latex_svg = 4;
|
|
}
|
|
|
|
message RenderedTemplateNode {
|
|
oneof value {
|
|
string text = 1;
|
|
RenderedTemplateReplacement replacement = 2;
|
|
}
|
|
}
|
|
|
|
message RenderedTemplateReplacement {
|
|
string field_name = 1;
|
|
string current_text = 2;
|
|
repeated string filters = 3;
|
|
}
|
|
|
|
message RenderMarkdownRequest {
|
|
string markdown = 1;
|
|
bool sanitize = 2;
|
|
}
|
|
|
|
message StripHtmlRequest {
|
|
enum Mode {
|
|
NORMAL = 0;
|
|
PRESERVE_MEDIA_FILENAMES = 1;
|
|
}
|
|
|
|
string text = 1;
|
|
Mode mode = 2;
|
|
}
|
|
|
|
message CompareAnswerRequest {
|
|
string expected = 1;
|
|
string provided = 2;
|
|
}
|