import 'dart:html' as html show HttpRequest, Element, querySelector; import 'package:html/parser.dart' show parse; import 'package:html/dom.dart' as dom show Element; final excluded_keywords = {'index', 'CONTRIBUTING', 'LICENSE', 'README'}; // Get the sitemap content Future fetchRemoteSitemap() async { const path = '/sitemap.html'; try { return await html.HttpRequest.getString(path); } catch (e) { print('Couldn’t open $path'); } return 'Error'; } // Parse the list of elements and detect pages from this list Map detectPages(List t_sitemap, [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('> parseSitemap() async { final content = await fetchRemoteSitemap(); final sitemap = parse(content).getElementsByClassName('org-ul')[0].children; return detectPages(sitemap); } Future createSitemap() async { final sitemap = await parseSitemap(); final pages = html.querySelector('#drop-page'); sitemap.forEach((url, name) { final link = html.Element.li() ..classes.add('dropdown-item') ..append(html.Element.a() ..attributes['href'] = url ..innerText = name); pages.append(link); }); }