diff --git a/web/dart/main.dart b/web/dart/main.dart index 2d2eedc..eb182ef 100644 --- a/web/dart/main.dart +++ b/web/dart/main.dart @@ -1,6 +1,6 @@ +import './parse_sitemap.dart' show createSitemap; import './reorganize_html.dart' show reorganizeHtml; import './theme.dart' show enableThemeChanger, setTheme; -import './parse_sitemap.dart' show createSitemap; Future main() async { await setTheme(); diff --git a/web/dart/parse_sitemap.dart b/web/dart/parse_sitemap.dart index cbf09af..b38ab98 100644 --- a/web/dart/parse_sitemap.dart +++ b/web/dart/parse_sitemap.dart @@ -18,9 +18,12 @@ Future fetchRemoteSitemap() async { // Parse the list of elements and detect pages from this list Map detectPages(List t_sitemap, - [String t_prefix]) { - final links = {}; + [String t_prefix, Map t_links]) { + t_links ??= {}; + + // parse each element in sitemap for (var elem in t_sitemap) { + // if it’s a link if (elem.innerHtml.startsWith(' detectPages(List t_sitemap, excluded_keywords.contains(url.substring(0, url.length - 5))) { continue; } - links['/$url'] = (t_prefix == null) ? text : '$text ($t_prefix)'; + t_links['/$url'] = (t_prefix == null) ? text : '$text ($t_prefix)'; } else { - t_prefix = (t_prefix == null) + final prefix = (t_prefix == null) ? elem.firstChild.text.replaceAll('\n', '') - : '$t_prefix / ${elem.firstChild.text}'; - final ul = elem.children[0].children; - links.addAll(detectPages(ul, t_prefix)); + : '$t_prefix / ${elem.firstChild.text}'.replaceAll('\n', ''); + t_links = detectPages(elem.children[0].children, prefix, t_links); } } - return links; + return t_links; } // This function returns a Map which contains all links to languages detected