Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update project #16

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 2 additions & 12 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
include: package:pedantic/analysis_options.yaml
include: package:flutter_lints/flutter.yaml
analyzer:
strong-mode:
implicit-casts: false
errors:
dead_code: error
unused_element: error
Expand All @@ -15,7 +13,6 @@ linter:
# - always_put_required_named_parameters_first
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- annotate_overrides
- avoid_annotating_with_dynamic
# - avoid_as
Expand All @@ -40,11 +37,7 @@ linter:
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
# - avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
Expand Down Expand Up @@ -76,19 +69,16 @@ linter:
- hash_and_equals
- implementation_imports
- invariant_booleans
- iterable_contains_unrelated_type
- collection_methods_unrelated_type
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- lines_longer_than_80_chars
- list_remove_unrelated_type
# - literal_only_boolean_expressions
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_duplicate_case_values
- no_logic_in_create_state
- no_runtimeType_toString
- non_constant_identifier_names
- null_closures
- omit_local_variable_types
Expand Down
2 changes: 0 additions & 2 deletions bin/delta_markdown.dart
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ Future main(List<String> args) async {
}
}



void printUsage(ArgParser parser) {
print('''
Usage: delta_markdown.dart [options] [file]
Expand Down
3 changes: 1 addition & 2 deletions lib/src/block_parser.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1060,8 +1060,7 @@ class ParagraphSyntax extends BlockSyntax {
// Reference id in brackets, and URL.
r'''\[((?:\\\]|[^\]])+)\]:\s*(?:<(\S+)>|(\S+))\s*'''
// Title in double or single quotes, or parens.
r'''("[^"]+"|'[^']+'|\([^)]+\)|)\s*$''',
multiLine: true);
r'''("[^"]+"|'[^']+'|\([^)]+\)|)\s*$''', multiLine: true);
final match = pattern.firstMatch(contents);
if (match == null) {
// Not a reference link definition.
Expand Down
7 changes: 4 additions & 3 deletions lib/src/delta_markdown_decoder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -239,17 +239,18 @@ class _DeltaVisitor implements ast.NodeVisitor {
final href = el.attributes['src'];
return ImageAttribute(href);
case 'hr':
return DividerAttribute();
return const DividerAttribute();
}

return null;
}
}

class ImageAttribute extends Attribute<String?> {
ImageAttribute(String? val) : super('image', AttributeScope.EMBEDS, val);
const ImageAttribute(String? val)
: super('image', AttributeScope.embeds, val);
}

class DividerAttribute extends Attribute<String?> {
DividerAttribute() : super('divider', AttributeScope.EMBEDS, 'hr');
const DividerAttribute() : super('divider', AttributeScope.embeds, 'hr');
}
8 changes: 4 additions & 4 deletions lib/src/delta_markdown_encoder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class DeltaMarkdownEncoder extends Converter<String, String> {
String convert(String input) {
markdownBuffer = StringBuffer();
lineBuffer = StringBuffer();
currentInlineStyle = Style();
currentInlineStyle = const Style();
currentBlockLines = <String>[];

final inputJson = jsonDecode(input) as List<dynamic>?;
Expand Down Expand Up @@ -66,7 +66,7 @@ class DeltaMarkdownEncoder extends Converter<String, String> {
for (final value
in currentInlineStyle.attributes.values.toList().reversed) {
// TODO(tillf): Is block correct?
if (value.scope == AttributeScope.BLOCK) {
if (value.scope == AttributeScope.block) {
continue;
}
if (style.containsKey(value.key)) {
Expand All @@ -89,7 +89,7 @@ class DeltaMarkdownEncoder extends Converter<String, String> {
// Now open any new styles.
for (final attribute in style.attributes.values) {
// TODO(tillf): Is block correct?
if (attribute.scope == AttributeScope.BLOCK) {
if (attribute.scope == AttributeScope.block) {
continue;
}
if (currentInlineStyle.containsKey(attribute.key)) {
Expand Down Expand Up @@ -124,7 +124,7 @@ class DeltaMarkdownEncoder extends Converter<String, String> {
final lineBlock = Style.fromJson(attributes)
.attributes
.values
.singleWhereOrNull((a) => a.scope == AttributeScope.BLOCK);
.singleWhereOrNull((a) => a.scope == AttributeScope.block);

if (lineBlock == currentBlockStyle) {
currentBlockLines.add(lineBuffer.toString());
Expand Down
31 changes: 13 additions & 18 deletions lib/src/inline_parser.dart
Original file line number Diff line number Diff line change
Expand Up @@ -194,9 +194,7 @@ class LineBreakSyntax extends InlineSyntax {

/// Matches stuff that should just be passed through as straight text.
class TextSyntax extends InlineSyntax {
TextSyntax(String pattern, {String? sub})
: substitute = sub,
super(pattern);
TextSyntax(super.pattern, {String? sub}) : substitute = sub;

final String? substitute;

Expand Down Expand Up @@ -399,8 +397,8 @@ class AutolinkExtensionSyntax extends InlineSyntax {
}
}

class _DelimiterRun {
_DelimiterRun._(
class DelimiterRun {
DelimiterRun._(
{this.char,
this.length,
this.isLeftFlanking,
Expand All @@ -420,8 +418,7 @@ class _DelimiterRun {
final bool? isFollowedByPunctuation;

// ignore: prefer_constructors_over_static_methods
static _DelimiterRun? tryParse(
InlineParser parser, int runStart, int runEnd) {
static DelimiterRun? tryParse(InlineParser parser, int runStart, int runEnd) {
bool leftFlanking,
rightFlanking,
precededByPunctuation,
Expand Down Expand Up @@ -466,7 +463,7 @@ class _DelimiterRun {
return null;
}

return _DelimiterRun._(
return DelimiterRun._(
char: parser.charAt(runStart),
length: runEnd - runStart + 1,
isLeftFlanking: leftFlanking,
Expand Down Expand Up @@ -494,9 +491,8 @@ class _DelimiterRun {
/// Matches syntax that has a pair of tags and becomes an element, like `*` for
/// `<em>`. Allows nested tags.
class TagSyntax extends InlineSyntax {
TagSyntax(String pattern, {String? end, this.requiresDelimiterRun = false})
: endPattern = RegExp((end != null) ? end : pattern, multiLine: true),
super(pattern);
TagSyntax(super.pattern, {String? end, this.requiresDelimiterRun = false})
: endPattern = RegExp((end != null) ? end : pattern, multiLine: true);

final RegExp endPattern;

Expand All @@ -516,7 +512,7 @@ class TagSyntax extends InlineSyntax {
return true;
}

final delimiterRun = _DelimiterRun.tryParse(parser, matchStart, matchEnd);
final delimiterRun = DelimiterRun.tryParse(parser, matchStart, matchEnd);
if (delimiterRun != null && delimiterRun.canOpen) {
parser.openTag(TagState(parser.pos, matchEnd + 1, this, delimiterRun));
return true;
Expand All @@ -531,7 +527,7 @@ class TagSyntax extends InlineSyntax {
final matchStart = parser.pos;
final matchEnd = parser.pos + runLength - 1;
final openingRunLength = state.endPos - state.startPos;
final delimiterRun = _DelimiterRun.tryParse(parser, matchStart, matchEnd);
final delimiterRun = DelimiterRun.tryParse(parser, matchStart, matchEnd);

if (openingRunLength == 1 && runLength == 1) {
parser.addNode(Element('em', state.children));
Expand Down Expand Up @@ -579,7 +575,7 @@ class StrikethroughSyntax extends TagSyntax {
final runLength = match.group(0)!.length;
final matchStart = parser.pos;
final matchEnd = parser.pos + runLength - 1;
final delimiterRun = _DelimiterRun.tryParse(parser, matchStart, matchEnd)!;
final delimiterRun = DelimiterRun.tryParse(parser, matchStart, matchEnd)!;
if (!delimiterRun.isRightFlanking!) {
return false;
}
Expand Down Expand Up @@ -1048,8 +1044,7 @@ class LinkSyntax extends TagSyntax {
/// Matches images like `![alternate text](url "optional title")` and
/// `![alternate text][label]`.
class ImageSyntax extends LinkSyntax {
ImageSyntax({Resolver? linkResolver})
: super(linkResolver: linkResolver, pattern: r'!\[');
ImageSyntax({super.linkResolver}) : super(pattern: r'!\[');

@override
Node _createNode(TagState state, String destination, String? title) {
Expand Down Expand Up @@ -1170,7 +1165,7 @@ class TagState {
/// The children of this node. Will be `null` for text nodes.
final List<Node> children;

final _DelimiterRun? openingDelimiterRun;
final DelimiterRun? openingDelimiterRun;

/// Attempts to close this tag by matching the current text against its end
/// pattern.
Expand All @@ -1193,7 +1188,7 @@ class TagState {
final closingMatchStart = parser.pos;
final closingMatchEnd = parser.pos + runLength - 1;
final closingDelimiterRun =
_DelimiterRun.tryParse(parser, closingMatchStart, closingMatchEnd);
DelimiterRun.tryParse(parser, closingMatchStart, closingMatchEnd);
if (closingDelimiterRun != null && closingDelimiterRun.canClose) {
// Emphasis rules #9 and #10:
final oneRunOpensAndCloses =
Expand Down
14 changes: 7 additions & 7 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@ description: A library for converting between Markdown and Delta of the
homepage: https://github.com/friebetill/notus_markdown

environment:
sdk: ">=2.12.0 <3.0.0"
sdk: '>=3.1.5 <4.0.0'

dependencies:
args: ^2.0.0
charcode: ^1.2.0
args: ^2.4.2
charcode: ^1.3.1
collection: ^1.15.0
flutter_quill: ^7.0.0
flutter_quill: ^8.5.1

dev_dependencies:
build_runner: ^2.0.0
build_runner: ^2.4.6
flutter_lints: ^3.0.1
flutter_test:
sdk: flutter
pedantic: ^1.11.0
test: ^1.16.5
test: ^1.24.3
3 changes: 2 additions & 1 deletion test/delta_to_markdown_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,8 @@ void main() {
});

test('Works with horizontal line', () {
const delta = r'[{"insert":"Foo\n"},{"insert":{"divider":"hr"}},{"insert":"Bar\n"}]';
const delta =
r'[{"insert":"Foo\n"},{"insert":{"divider":"hr"}},{"insert":"Bar\n"}]';
const expected = 'Foo\n\n---\n\nBar\n';

final result = deltaToMarkdown(delta);
Expand Down
3 changes: 2 additions & 1 deletion test/markdown_to_delta_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,8 @@ void main() {

test('Works with horizontal line', () {
const markdown = 'Foo\n\n---\n\nBar\n';
const expected = r'[{"insert":"Foo\n"},{"insert":{"divider":"hr"}},{"insert":"Bar\n"}]';
const expected =
r'[{"insert":"Foo\n"},{"insert":{"divider":"hr"}},{"insert":"Bar\n"}]';

final result = markdownToDelta(markdown);

Expand Down