Skip to content

Commit

Permalink
Support rich content in link descriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
amake committed Dec 7, 2024
1 parent f996780 commit 502e936
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 13 deletions.
9 changes: 9 additions & 0 deletions assets/test/markup-nested.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
_Nested *emphasis /markups/ +here+ now*!_

e^{_underline_ + 2_{sub}}

[[https://example.com][link /with/ objects_1^2 inside]]

[[https://example.com][link with [[https://orgro.org][link]​] inside]]

* headline with [[https://example.com][link]] inside
4 changes: 4 additions & 0 deletions assets/test/test.org
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ Bidi
- [[file:layout-bidi-ltr.org][LTR]]
- [[file:layout-bidi-auto.org][Auto]]

* Markup

- [[file:markup-nested.org][Nested objects]]

* Locale

- [[file:locale-zh_Hant.org][zh-Hant]]
Expand Down
2 changes: 1 addition & 1 deletion lib/src/components/document_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ class DocumentAnalysis {
var hasRemoteImages = false;
var hasRelativeLinks = false;
var hasEncryptedContent = false;
doc.visit<OrgLeafNode>((node) {
doc.visit<OrgNode>((node) {
if (node is OrgLink) {
hasRemoteImages |=
looksLikeImagePath(node.location) && looksLikeUrl(node.location);
Expand Down
8 changes: 4 additions & 4 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -500,18 +500,18 @@ packages:
dependency: "direct main"
description:
name: org_flutter
sha256: ae824fc775f9d24244757bc31848e1e9b4fe1d71a9cc14f6f2475b21411d1664
sha256: b7696199e5597af015e4b5462e6835bb8c229c442692110a1ebda4304c03fcbb
url: "https://pub.dev"
source: hosted
version: "8.1.0"
version: "8.2.0"
org_parser:
dependency: transitive
description:
name: org_parser
sha256: "6db74eb2bde348289504df69f2c895cdda540f2f521c3d7d97d4cfb08686a7ae"
sha256: c0e29db34aa1972177d55c981b516ceef0f23384d93c21da36a0ac1a44eb7d5e
url: "https://pub.dev"
source: hosted
version: "8.0.0"
version: "8.1.0"
path:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ dependencies:
google_fonts: ^6.0.0
http: ^1.1.0
intl: ^0.19.0
org_flutter: ^8.1.0
org_flutter: ^8.2.0
# org_flutter:
# path: ../org_flutter
path_provider: ^2.0.9
Expand Down
14 changes: 7 additions & 7 deletions test/links_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,43 +35,43 @@ void main() {
group('Extraction', () {
test('Appending', () {
final doc = OrgDocument.parse('''#+LINK: foo bar''');
final link = OrgLink('foo:buzz');
final link = OrgPlainLink('foo:buzz');
final result = extractUrl(doc, link);
expect(result, Uri.parse('barbuzz'));
});
test('Replacing', () {
final doc = OrgDocument.parse('''#+LINK: foo bar=%s&blah''');
final link = OrgLink('foo:buzz');
final link = OrgPlainLink('foo:buzz');
final result = extractUrl(doc, link);
expect(result, Uri.parse('bar=buzz&blah'));
});
test('Percent-encoding', () {
final doc = OrgDocument.parse('''#+LINK: foo bar=%h&blah''');
final link = OrgLink('foo:あ');
final link = OrgPlainLink('foo:あ');
final result = extractUrl(doc, link);
expect(result, Uri.parse('bar=%E3%81%82&blah'));
});
test('Missing definition', () {
final doc = OrgDocument.parse('''#+LINK: foo bar=%h&blah''');
final link = OrgLink('foof:あ');
final link = OrgPlainLink('foof:あ');
final result = extractUrl(doc, link);
expect(result, Uri.parse('foof:あ'));
});
test('Space in linkword', () {
final doc = OrgDocument.parse('''#+LINK: "foo bar" baz=%h&blah''');
final link = OrgLink('foo bar:あ');
final link = OrgPlainLink('foo bar:あ');
final result = extractUrl(doc, link);
expect(result, Uri.parse('baz=%E3%81%82&blah'));
});
test('Multiple placeholders (same)', () {
final doc = OrgDocument.parse('''#+LINK: foo bar=%s&%s''');
final link = OrgLink('foo:baz');
final link = OrgPlainLink('foo:baz');
final result = extractUrl(doc, link);
expect(result, Uri.parse('bar=baz&%s'));
});
test('Multiple placeholders (different)', () {
final doc = OrgDocument.parse('''#+LINK: foo bar=%h&%s''');
final link = OrgLink('foo:baz');
final link = OrgPlainLink('foo:baz');
final result = extractUrl(doc, link);
expect(result, Uri.parse('bar=%h&baz'));
});
Expand Down

0 comments on commit 502e936

Please sign in to comment.