diff --git a/run.n b/run.n index 3e3ed35b7..2fd34d55d 100644 Binary files a/run.n and b/run.n differ diff --git a/script/src/RunScript.hx b/script/src/RunScript.hx index 95a23e0c1..06a6a7dfe 100644 --- a/script/src/RunScript.hx +++ b/script/src/RunScript.hx @@ -23,6 +23,8 @@ class RunScript { private static var isMac:Bool; private static var isWindows:Bool; private static var limeDirectory:String; + private static var wikiLinks:EReg = ~/\[\[(.+)\]\]/g; + //private static var nmeFilters:Array = [ "obj", ".git", ".gitignore", ".svn", ".DS_Store", "all_objs", "Export", "tools", "project" ]; @@ -626,9 +628,9 @@ class RunScript { } - var links = ~/\[\[(.+)\]\]/g; - - for (i in 0...sourcePaths.length) { + for (i in 0...targetPaths.length) { + + if (names[i] == "_sidebar") continue; var sourcePath = sourcePaths[i]; var targetPath = targetPaths[i]; @@ -639,60 +641,39 @@ class RunScript { PathHelper.mkdir (Path.directory (outputPath)); var content = File.getContent (sourcePath); - - while (links.match (content)) { - - var link = links.matched (0); - link = link.substr (2, link.length - 4); - var components = link.split ("|"); - - var title = ""; - var target = ""; - - if (components.length > 1) { - - title = components[0]; - target = components[1]; - - } else { - - title = target = components[0]; - - } - - if (StringTools.endsWith (target, ".md")) { - - target = target.substr (0, target.length - 3); - - } - - var replacement = "[" + title + "](/documentation/)"; - - for (i in 0...names.length) { - - if (target == names[i]) { - - var path = targetPaths[i]; - path = path.substr (0, path.lastIndexOf ("/")); - - replacement = "[" + title + "](/documentation/" + path + ")"; - break; - - } - - } - - content = links.matchedLeft () + replacement + links.matchedRight (); - - } + content = replaceWikiLinks (content, names, targetPaths); var output = File.write (outputPath, false); output.writeString ("---\n"); - output.writeString ("layout: default\n"); + output.writeString ("layout: documentation\n"); output.writeString ("title: " + title + "\n"); output.writeString ("---\n\n"); output.writeString ("# " + title + "\n\n"); output.writeString (content); + + var components = sourcePath.split ("/"); + var foundSidebar = false; + + while (!foundSidebar && components.length > 1) { + + components.pop (); + var sidebarPath = components.copy ().join ("/") + "/_sidebar.md"; + + if (FileSystem.exists (sidebarPath)) { + + foundSidebar = true; + output.writeString ("\n\n{% sidebar %}"); + + var sidebar = File.getContent (sidebarPath); + sidebar = replaceWikiLinks (sidebar, names, targetPaths); + + output.writeString (sidebar); + output.writeString ("{% endsidebar %}"); + + } + + } + output.close (); } @@ -1032,6 +1013,59 @@ class RunScript { } + + private static function replaceWikiLinks (content:String, names:Array, targetPaths:Array):String { + + while (wikiLinks.match (content)) { + + var link = wikiLinks.matched (0); + link = link.substr (2, link.length - 4); + var components = link.split ("|"); + + var title = ""; + var target = ""; + + if (components.length > 1) { + + title = components[0]; + target = components[1]; + + } else { + + title = target = components[0]; + + } + + if (StringTools.endsWith (target, ".md")) { + + target = target.substr (0, target.length - 3); + + } + + var replacement = "[" + title + "](/documentation/)"; + + for (i in 0...names.length) { + + if (target == names[i]) { + + var path = targetPaths[i]; + path = path.substr (0, path.lastIndexOf ("/")); + + replacement = "[" + title + "](/documentation/" + path + ")"; + break; + + } + + } + + content = wikiLinks.matchedLeft () + replacement + wikiLinks.matchedRight (); + + } + + return content; + + } + public static function runCommand (path:String, command:String, args:Array, throwErrors:Bool = true):Int {