Skip to content

Commit

Permalink
Remove TargetLink and TargetTitle classes.
Browse files Browse the repository at this point in the history
  • Loading branch information
dikmax committed Jan 26, 2017
1 parent 096ccbd commit 6f4fdbb
Show file tree
Hide file tree
Showing 11 changed files with 34 additions and 150 deletions.
9 changes: 7 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,18 +270,23 @@ In that case, you could supply parser with the resolver, which should
provide all missing links.

```dart
import 'package:mdown/mdown.dart';
import 'package:mdown/ast/standard_ast_factory.dart';
String library = "mdown";
String version = "0.11.0";
Target linkResolver(String normalizedReference, String reference) {
if (reference.startsWith("new ")) {
String className = reference.substring(4);
return new Target("http://www.dartdocs.org/documentation/$library/$version/index.html#$library/$library.$className@id_$className-", null);
return astFactory.target(
"http://www.dartdocs.org/documentation/$library/$version/index.html#$library/$library.$className@id_$className-",
null);
} else {
return null;
}
}
String res = markdownToHtml('Hello world!\n===', const Options(linkResolver: linkResolver));
String res = markdownToHtml('Hello world!\n===', new Options(linkResolver: linkResolver));
```

[CommonMark]: http://commonmark.org/
Expand Down
18 changes: 0 additions & 18 deletions lib/ast/ast.dart
Original file line number Diff line number Diff line change
Expand Up @@ -371,22 +371,8 @@ abstract class TableRow implements AstNode {

/// Target ::= TargetLink (' ' TargetTitle)?
abstract class Target implements AstNode {
TargetLink get link;

TargetTitle get title;
}

/// Target link.
///
/// TargetLink ::= '<'? link '>'?
abstract class TargetLink implements AstNode {
String get link;
}

/// Target title.
///
/// TargetTitle ::= '(' title ')' | '"' title '"' | "'" title "'"
abstract class TargetTitle implements AstNode {
String get title;
}

Expand Down Expand Up @@ -553,10 +539,6 @@ abstract class AstVisitor<R> {

R visitTarget(Target node);

R visitTargetLink(TargetLink node);

R visitTargetTitle(TargetTitle node);

R visitTexMathDisplay(TexMathDisplay node);

R visitTexMathInline(TexMathInline node);
Expand Down
8 changes: 1 addition & 7 deletions lib/ast/ast_factory.dart
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,7 @@ abstract class AstFactory {
TableCell tableCell(Iterable<BlockNode> contents);

/// Creates target for link and image.
Target target(TargetLink link, TargetTitle title);

/// Crates target link.
TargetLink targetLink(String link);

/// Creates target title.
TargetTitle targetTitle(String title);
Target target(String link, String title);

/// Creates display TeX math.
TexMathDisplay texMathDisplay(String contents);
Expand Down
30 changes: 0 additions & 30 deletions lib/ast/visitor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,6 @@ class SimpleAstVisitor<R> implements AstVisitor<R> {
@override
R visitTarget(Target node) => null;

@override
R visitTargetLink(TargetLink node) => null;

@override
R visitTargetTitle(TargetTitle node) => null;

@override
R visitTexMathDisplay(TexMathDisplay node) => null;

Expand Down Expand Up @@ -401,18 +395,6 @@ class RecursiveAstVisitor<R> implements AstVisitor<R> {
return null;
}

@override
R visitTargetLink(TargetLink node) {
node.visitChildren(this);
return null;
}

@override
R visitTargetTitle(TargetTitle node) {
node.visitChildren(this);
return null;
}

@override
R visitTexMathDisplay(TexMathDisplay node) {
node.visitChildren(this);
Expand Down Expand Up @@ -609,12 +591,6 @@ class GeneralizingAstVisitor<R> implements AstVisitor<R> {
@override
R visitTarget(Target node) => visitNode(node);

@override
R visitTargetLink(TargetLink node) => visitNode(node);

@override
R visitTargetTitle(TargetTitle node) => visitNode(node);

R visitTexMath(TexMath node) => visitTexRawInline(node);

@override
Expand Down Expand Up @@ -773,12 +749,6 @@ class UnifyingAstVisitor<R> implements AstVisitor<R> {
@override
R visitTarget(Target node) => visitNode(node);

@override
R visitTargetLink(TargetLink node) => visitNode(node);

@override
R visitTargetTitle(TargetTitle node) => visitNode(node);

@override
R visitTexMathDisplay(TexMathDisplay node) => visitNode(node);

Expand Down
71 changes: 14 additions & 57 deletions lib/src/ast/ast.dart
Original file line number Diff line number Diff line change
Expand Up @@ -449,10 +449,10 @@ class InlineImageImpl extends ImageImpl implements InlineImage {
Target get target => _target;

@override
String get link => _target?.link?.link;
String get link => _target?.link;

@override
String get title => _target?.title?.title;
String get title => _target?.title;
}

/// Default InlineLink implementation
Expand All @@ -475,10 +475,10 @@ class InlineLinkImpl extends LinkImpl implements InlineLink {
Target get target => _target;

@override
String get link => _target?.link?.link;
String get link => _target?.link;

@override
String get title => _target?.title?.title;
String get title => _target?.title;
}

/// Default InlineNode implementation
Expand Down Expand Up @@ -746,10 +746,10 @@ class ReferenceImageImpl extends ImageImpl implements ReferenceImage {
ExtendedAttributes get attributes => _attributes;

@override
String get link => _reference?.target?.link?.link;
String get link => _reference?.target?.link;

@override
String get title => _reference?.target?.title?.title;
String get title => _reference?.target?.title;
}

/// Default ReferenceLink implementation.
Expand All @@ -773,10 +773,10 @@ class ReferenceLinkImpl extends LinkImpl implements ReferenceLink {
Reference get reference => _reference;

@override
String get link => _reference?.target?.link?.link;
String get link => _reference?.target?.link;

@override
String get title => _reference?.target?.title?.title;
String get title => _reference?.target?.title;
}

/// Default SmartChar implementation.
Expand Down Expand Up @@ -990,71 +990,28 @@ class TableRowImpl extends AstNodeImpl implements TableRow {

/// Default Target implementation.
class TargetImpl extends AstNodeImpl implements Target {
final TargetLink _link;
TargetTitle _title;
final String _link;
String _title;

/// Constructs Target instance.
TargetImpl(this._link, this._title);

@override
R accept<R>(AstVisitor<R> visitor) => visitor.visitTarget(this);

@override
Iterable<AstNode> get childEntities => <AstNode>[_link, _title];

@override
TargetLink get link => _link;

@override
TargetTitle get title => _title;

set title(TargetTitle title) {
_title = title;
}

@override
void visitChildren<R>(AstVisitor<R> visitor) {
_link?.accept(visitor);
_title?.accept(visitor);
}
}

/// Default TargetLink implementation.
class TargetLinkImpl extends AstNodeImpl implements TargetLink {
final String _link;

/// Constructs TargetLink instance.
TargetLinkImpl(this._link);

@override
R accept<R>(AstVisitor<R> visitor) => visitor.visitTargetLink(this);

@override
Iterable<AstNode> get childEntities => null;

@override
String get link => _link;

@override
void visitChildren<R>(AstVisitor<R> visitor) {}
}

/// Default TargetTitle implementation.
class TargetTitleImpl extends AstNodeImpl implements TargetTitle {
final String _title;

/// Constructs TargetTitle instance.
TargetTitleImpl(this._title);

@override
R accept<R>(AstVisitor<R> visitor) => visitor.visitTargetTitle(this);

@override
Iterable<AstNode> get childEntities => null;

@override
String get title => _title;

set title(String title) {
_title = title;
}

@override
void visitChildren<R>(AstVisitor<R> visitor) {}
}
Expand Down
8 changes: 1 addition & 7 deletions lib/src/ast/ast_factory.dart
Original file line number Diff line number Diff line change
Expand Up @@ -162,15 +162,9 @@ class AstFactoryImpl implements AstFactory {
new TableCellImpl(contents);

@override
Target target(TargetLink link, TargetTitle title) =>
Target target(String link, String title) =>
new TargetImpl(link, title);

@override
TargetLink targetLink(String link) => new TargetLinkImpl(link);

@override
TargetTitle targetTitle(String title) => new TargetTitleImpl(title);

@override
TexMathDisplay texMathDisplay(String contents) =>
new TexMathDisplayImpl(contents);
Expand Down
15 changes: 1 addition & 14 deletions lib/src/ast/replacing_visitor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -413,20 +413,7 @@ class ReplacingAstVisitor extends AstVisitor<AstNodeImpl> {
}

@override
TargetImpl visitTarget(Target node) {
final TargetLink link = node.link.accept<AstNode>(this);
final TargetTitle title = node.title?.accept<AstNode>(this);

return link == node.link && title == node.title
? node
: new TargetImpl(link, title);
}

@override
TargetLinkImpl visitTargetLink(TargetLink node) => node as TargetLinkImpl;

@override
TargetTitleImpl visitTargetTitle(TargetTitle node) => node as TargetTitleImpl;
TargetImpl visitTarget(Target node) => node as TargetImpl;

@override
TexMathDisplayImpl visitTexMathDisplay(TexMathDisplay node) =>
Expand Down
4 changes: 2 additions & 2 deletions lib/src/parsers/link_image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ class LinkImageParser extends AbstractParser<InlineNodeImpl> {
}

final TargetImpl result =
astFactory.target(astFactory.targetLink(href), null);
astFactory.target(href, null);

// Maybe parsing title.
int codeUnit = text.codeUnitAt(offset);
Expand Down Expand Up @@ -152,7 +152,7 @@ class LinkImageParser extends AbstractParser<InlineNodeImpl> {

String title = text.substring(startOffset, offset - 1);
title = unescapeAndUnreference(title);
result.title = astFactory.targetTitle(title);
result.title = title;

// Skip whitespace.
while (offset < length) {
Expand Down
12 changes: 3 additions & 9 deletions lib/src/parsers/link_reference.dart
Original file line number Diff line number Diff line change
Expand Up @@ -135,25 +135,19 @@ class LinkReferenceParser extends AbstractParser<LinkReferenceImpl> {
if (offsetAfterAttributes != -1) {
return new ParseResult<LinkReferenceImpl>.success(
new LinkReferenceImpl(
label,
astFactory.target(
astFactory.targetLink(link), astFactory.targetTitle(title)),
attributes),
label, astFactory.target(link, title), attributes),
offsetAfterAttributes);
}
if (offsetAfterTitle != -1) {
return new ParseResult<LinkReferenceImpl>.success(
new LinkReferenceImpl(
label,
astFactory.target(
astFactory.targetLink(link), astFactory.targetTitle(title)),
attributes),
label, astFactory.target(link, title), attributes),
offsetAfterTitle);
}
if (offsetAfterLink != -1) {
return new ParseResult<LinkReferenceImpl>.success(
new LinkReferenceImpl(label,
astFactory.target(astFactory.targetLink(link), null), null),
astFactory.target(link, null), null),
offsetAfterLink);
}

Expand Down
2 changes: 1 addition & 1 deletion test/reference_resolver.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import 'package:mdown/ast/standard_ast_factory.dart';

Target _linkResolver(String normalizedReference, String reference) {
if (reference == "reference") {
return astFactory.target(astFactory.targetLink(reference), null);
return astFactory.target(reference, null);
} else {
return null;
}
Expand Down
7 changes: 4 additions & 3 deletions test/service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ void serviceTests() {
'<p><a href="http://test.com/" id="id">test</a></p>'));
});

/*t.test('Link resolver', () {
t.test('Link resolver', () {
final String library = "mdown";
final String version = "0.11.0";
Target linkResolver(String normalizedReference, String reference) {
Expand All @@ -73,7 +73,8 @@ void serviceTests() {
}

String res = markdownToHtml(
'Hello world!\n===', const Options(linkResolver: linkResolver));
});*/
'Hello world!\n===', new Options(linkResolver: linkResolver));
t.expect(res, t.equals("<h1>Hello world!</h1>"));
});
});
}

0 comments on commit 6f4fdbb

Please sign in to comment.