Allow brackets in download buttons
This commit is contained in:
parent
89245f2553
commit
87d54788db
@ -67,10 +67,21 @@ extension String {
|
|||||||
|
|
||||||
extension Substring {
|
extension Substring {
|
||||||
|
|
||||||
|
func dropBeforeFirst(_ separator: String) -> String {
|
||||||
|
guard contains(separator) else {
|
||||||
|
return String(self)
|
||||||
|
}
|
||||||
|
return components(separatedBy: separator).dropFirst().joined(separator: separator)
|
||||||
|
}
|
||||||
|
|
||||||
func between(_ start: String, and end: String) -> String {
|
func between(_ start: String, and end: String) -> String {
|
||||||
components(separatedBy: start).last!
|
components(separatedBy: start).last!
|
||||||
.components(separatedBy: end).first!
|
.components(separatedBy: end).first!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func between(first: String, andLast last: String) -> String {
|
||||||
|
dropBeforeFirst(first).dropAfterLast(last)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extension String {
|
extension String {
|
||||||
|
@ -87,7 +87,7 @@ struct PageContentGenerator {
|
|||||||
// For a simple boxes: ![box](title;body)
|
// For a simple boxes: ![box](title;body)
|
||||||
// A fancy page link: ![page](page_id)
|
// A fancy page link: ![page](page_id)
|
||||||
// External pages: ![external](url1, text1; url2, text2, ...)
|
// External pages: ![external](url1, text1; url2, text2, ...)
|
||||||
let fileAndTitle = markdown.between("(", and: ")")
|
let fileAndTitle = markdown.between(first: "](", andLast: ")")
|
||||||
let alt = markdown.between("[", and: "]").nonEmpty
|
let alt = markdown.between("[", and: "]").nonEmpty
|
||||||
if let alt = alt, let command = ShorthandMarkdownKey(rawValue: alt) {
|
if let alt = alt, let command = ShorthandMarkdownKey(rawValue: alt) {
|
||||||
return handleShortHandCommand(command, page: page, language: language, content: fileAndTitle)
|
return handleShortHandCommand(command, page: page, language: language, content: fileAndTitle)
|
||||||
@ -250,7 +250,7 @@ struct PageContentGenerator {
|
|||||||
.compactMap { button -> (file: String, text: String, downloadName: String?)? in
|
.compactMap { button -> (file: String, text: String, downloadName: String?)? in
|
||||||
let parts = button.components(separatedBy: ",")
|
let parts = button.components(separatedBy: ",")
|
||||||
guard parts.count == 2 || parts.count == 3 else {
|
guard parts.count == 2 || parts.count == 3 else {
|
||||||
results.warning("Invalid button definition", source: page.path)
|
results.warning("Invalid download definition with \(parts)", source: page.path)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
let file = parts[0].trimmed
|
let file = parts[0].trimmed
|
||||||
|
Loading…
Reference in New Issue
Block a user