Add page id feature
This commit is contained in:
@ -255,6 +255,20 @@ struct Element {
|
||||
|
||||
extension Element {
|
||||
|
||||
/**
|
||||
The localized html file name for a language, including a leading slash.
|
||||
*/
|
||||
static func htmlPagePathAddition(for language: String) -> String {
|
||||
"/" + htmlPageName(for: language)
|
||||
}
|
||||
|
||||
/**
|
||||
The localized html file name for a language, without the leading slash.
|
||||
*/
|
||||
static func htmlPageName(for language: String) -> String {
|
||||
"\(language).html"
|
||||
}
|
||||
|
||||
var containsElements: Bool {
|
||||
!elements.isEmpty
|
||||
}
|
||||
@ -286,7 +300,30 @@ extension Element {
|
||||
The url of the top-level section of the element.
|
||||
*/
|
||||
func sectionUrl(for language: String) -> String {
|
||||
path.components(separatedBy: "/").first! + "/\(language).html"
|
||||
path.components(separatedBy: "/").first! + Element.htmlPagePathAddition(for: language)
|
||||
}
|
||||
|
||||
/**
|
||||
Create a relative link to another page in the tree.
|
||||
- Parameter pageUrl: The full page url of the target page, including localization
|
||||
- Returns: The relative url from a localized page of the element to the target page.
|
||||
*/
|
||||
func relativePathToOtherSiteElement(pageUrl: String) -> String {
|
||||
// Note: The element `path` is missing the last component
|
||||
// i.e. travel/alps instead of travel/alps/en.html
|
||||
let ownParts = path.components(separatedBy: "/")
|
||||
let pageParts = pageUrl.components(separatedBy: "/")
|
||||
|
||||
// Find the common elements of the path, which can be discarded
|
||||
var index = 0
|
||||
while pageParts[index] == ownParts[index] {
|
||||
index += 1
|
||||
}
|
||||
// The relative path needs to go down to the first common folder,
|
||||
// before going up to the target page
|
||||
let allParts = [String](repeating: "..", count: ownParts.count-index)
|
||||
+ pageParts.dropFirst(index)
|
||||
return allParts.joined(separator: "/")
|
||||
}
|
||||
|
||||
/**
|
||||
@ -381,7 +418,10 @@ extension Element {
|
||||
Returns the full path (relative to the site root for a page of the element in the given language.
|
||||
*/
|
||||
func localizedPath(for language: String) -> String {
|
||||
path != "" ? "\(path)/\(language).html" : "\(language).html"
|
||||
guard path != "" else {
|
||||
return Element.htmlPageName(for: language)
|
||||
}
|
||||
return path + Element.htmlPagePathAddition(for: language)
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user