Add OrgInlineBlock equalizers
This commit is contained in:
@@ -6,8 +6,11 @@ import std/[
|
||||
import fp/[
|
||||
option,
|
||||
]
|
||||
import fusion/matching
|
||||
import ../utils/printers
|
||||
|
||||
{.experimental: "caseStmtMacros".}
|
||||
|
||||
# -- OrgInlineBlock.Type
|
||||
|
||||
type
|
||||
@@ -47,6 +50,21 @@ type
|
||||
linkUrl*: string
|
||||
linkDescription*: Option[string]
|
||||
|
||||
|
||||
# OrgInlineBlock.Equals
|
||||
|
||||
func `==`*(a: OrgInlineBlock, b: OrgInlineBlock): bool =
|
||||
## Compare two `OrgInlineBlock` objects.
|
||||
## TODO Compare children
|
||||
|
||||
if (a.kind != b.kind): return false
|
||||
|
||||
case ((a.kind, b.kind)):
|
||||
of((orgLink, orgLink)):
|
||||
a.linkUrl == b.linkUrl and a.linkDescription == b.linkDescription
|
||||
|
||||
else: a.content == b.content
|
||||
|
||||
# -- OrgInlineBlock.PrettyPrinters
|
||||
|
||||
proc `$`*(x: orgInlineBlockKind): string =
|
||||
@@ -182,28 +200,38 @@ func pprint*(x: OrgDocument, indent = 0): string =
|
||||
func `$`*(xs: OrgDocument): string = pprint(xs)
|
||||
|
||||
when isMainModule:
|
||||
let doc = OrgDocument(
|
||||
children: @[
|
||||
OrgBlock(
|
||||
kind: orgHeading,
|
||||
children: @[
|
||||
OrgInlineBlock(
|
||||
kind: orgLink,
|
||||
linkUrl: "https://placeholder.com",
|
||||
linkDescription: "Placeholder".some(),
|
||||
),
|
||||
],
|
||||
content: @[
|
||||
OrgBlock(
|
||||
kind: orgNewline,
|
||||
),
|
||||
OrgBlock(
|
||||
kind: orgNewline,
|
||||
)
|
||||
],
|
||||
),
|
||||
OrgBlock(kind: orgHeading, level: 1),
|
||||
OrgBlock(kind: orgHeading),
|
||||
]
|
||||
)
|
||||
echo doc
|
||||
|
||||
block testOrgInlineBlockEquals:
|
||||
assert OrgInlineBlock(kind: orgRawText) == OrgInlineBlock(kind: orgRawText)
|
||||
assert OrgInlineBlock(kind: orgRawText, content: "") == OrgInlineBlock(kind: orgRawText, content: "")
|
||||
assert OrgInlineBlock(kind: orgRawText, content: "a") != OrgInlineBlock(kind: orgRawText, content: "b")
|
||||
assert OrgInlineBlock(kind: orgRawText) != OrgInlineBlock(kind: orgBoldText)
|
||||
# Link
|
||||
assert OrgInlineBlock(kind: orgLink, linkDescription: "desc".some(), linkUrl: "url") == OrgInlineBlock(kind: orgLink, linkDescription: "desc".some(), linkUrl: "url")
|
||||
assert OrgInlineBlock(kind: orgLink, linkUrl: "url") != OrgInlineBlock(kind: orgLink, linkDescription: "desc".some(), linkUrl: "url")
|
||||
|
||||
# let doc = OrgDocument(
|
||||
# children: @[
|
||||
# OrgBlock(
|
||||
# kind: orgHeading,
|
||||
# children: @[
|
||||
# OrgInlineBlock(
|
||||
# kind: orgLink,
|
||||
# linkUrl: "https://placeholder.com",
|
||||
# linkDescription: "Placeholder".some(),
|
||||
# ),
|
||||
# ],
|
||||
# content: @[
|
||||
# OrgBlock(
|
||||
# kind: orgNewline,
|
||||
# ),
|
||||
# OrgBlock(
|
||||
# kind: orgNewline,
|
||||
# )
|
||||
# ],
|
||||
# ),
|
||||
# OrgBlock(kind: orgHeading, level: 1),
|
||||
# OrgBlock(kind: orgHeading),
|
||||
# ]
|
||||
# )
|
||||
# echo doc
|
||||
|
||||
Reference in New Issue
Block a user