Skip to content

Commit

Permalink
Hack to combat missing ordered item generation in SwiftUI beta.
Browse files Browse the repository at this point in the history
  • Loading branch information
iiroalhonen committed Aug 19, 2021
1 parent 653971b commit 113b19c
Showing 1 changed file with 29 additions and 11 deletions.
40 changes: 29 additions & 11 deletions Sources/NiftyMarkdownFormatter/NiftyMarkdownFormatter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,20 @@ public func formattedMarkdownArray(markdown: String) -> [AnyView] {
formattedViews.append(
AnyView(
HStack {
Circle().frame(width: 5, height: 5)
VStack(alignment: .leading) {
Circle().frame(width: 5, height: 5).padding(.top, 9)
Spacer()
}
Text(formatUnorderedListItem(string))
.multilineTextAlignment(.leading)
}
)
)
} else if string.range(of: "^[0-9].") != nil {
formattedViews.append(AnyView(Text(formatOrderedListItem(string))))
// formattedViews.append(AnyView(Text(formatOrderedListItem(string))))
formattedViews.append(
formatOrderedListItem(string)
)
} else if string.count == 0 {
// Ignore empty lines
} else {
Expand Down Expand Up @@ -135,22 +141,34 @@ internal func formatHeading(_ formattedText: Heading) -> Text {

- Returns: a `Text` view formatted into an ordered list item.
*/
internal func formatOrderedListItem(_ string: String) -> String {
let regex = "^[0-9]."
internal func formatOrderedListItem(_ string: String) -> AnyView {
let regex = "^[0-9*]."
if string.range(of: regex, options: .regularExpression) != nil {
var orderedItem = string
var orderedPrefix = string
orderedPrefix.removeSubrange(
(orderedItem.firstIndex(of: " ") ?? orderedItem.startIndex)..<orderedItem.endIndex
)
orderedItem.replaceSubrange(
orderedItem.startIndex...(
orderedItem.firstIndex(of: ".") ?? orderedItem.startIndex
),
with: "**\(orderedPrefix)**")
return orderedItem
// orderedItem.replaceSubrange(
// orderedItem.startIndex...(
// orderedItem.firstIndex(of: ".") ?? orderedItem.startIndex
// ),
// with: "**\(orderedPrefix)**")
orderedItem.removeSubrange(orderedItem.startIndex...(
orderedItem.firstIndex(of: " ") ?? orderedItem.startIndex
))
return AnyView(
HStack {
VStack(alignment: .leading) {
Text(orderedPrefix).bold().padding(.top, 9)
Spacer()
}
Text(orderedItem)
.multilineTextAlignment(.leading)
}
)
} else {
return string
return AnyView(Text(string))
}
}

Expand Down

0 comments on commit 113b19c

Please sign in to comment.