Amend quill_html_converter to retain style attributes

pull/1609/head
agu 1 year ago
parent dc9e6978c9
commit b03cb72888
  1. 32
      quill_html_converter/lib/quill_html_converter.dart

@ -1,10 +1,9 @@
library quill_html_converter;
import 'package:dart_quill_delta/dart_quill_delta.dart';
import 'package:vsc_quill_delta_to_html/vsc_quill_delta_to_html.dart'
as conventer show ConverterOptions, QuillDeltaToHtmlConverter;
import 'package:vsc_quill_delta_to_html/vsc_quill_delta_to_html.dart';
typedef ConverterOptions = conventer.ConverterOptions;
export 'package:vsc_quill_delta_to_html/vsc_quill_delta_to_html.dart';
/// A extension for [Delta] which comes from `flutter_quill` to extends
/// the functionality of it to support converting the [Delta] to/from HTML
@ -19,10 +18,33 @@ extension DeltaHtmlExt on Delta {
/// that designed specifically for converting the quill delta to html
String toHtml({ConverterOptions? options}) {
final json = toJson();
final html = conventer.QuillDeltaToHtmlConverter(
final html = QuillDeltaToHtmlConverter(
List.castFrom(json),
options,
options ?? defaultConverterOptions,
).convert();
return html;
}
}
ConverterOptions get defaultConverterOptions {
return ConverterOptions(
converterOptions: OpConverterOptions(
customTagAttributes: (op) => parseStyle(op.attributes['style']),
),
);
}
Map<String, String>? parseStyle(String? style, [Map<String, String>? attrs]) {
if (style == null || style.isEmpty) return attrs;
attrs ??= <String, String>{};
for (var e in style.split(';')) {
if ((e = e.trim()).isEmpty) break;
var kv = e.split(':');
if (kv.length < 2) break;
var key = kv[0].trim();
attrs[key] = kv[1].trim();
}
return attrs;
}

Loading…
Cancel
Save