Browse Source

Merge 9e79a9425e into d41051959d

pull/27/merge
Seemant Rajvanshi 10 years ago
parent
commit
597e94eebf
2 changed files with 40 additions and 4 deletions
  1. +6
    -3
      src/DocNet/SimpleNavigationElement.cs
  2. +34
    -1
      src/DocNet/Utils.cs

+ 6
- 3
src/DocNet/SimpleNavigationElement.cs View File

@@ -108,9 +108,12 @@ namespace Docnet
sb.Replace("{{Breadcrumbs}}", activePath.CreateBreadCrumbsHTML(relativePathToRoot));
sb.Replace("{{ToC}}", activePath.CreateToCHTML(relativePathToRoot));
sb.Replace("{{ExtraScript}}", (this.ExtraScriptProducerFunc == null) ? string.Empty : this.ExtraScriptProducerFunc(this));

// the last action has to be replacing the content marker, so markers in the content which we have in the template as well aren't replaced
sb.Replace("{{Content}}", content);
// Check if the content contains @@include tag
content = Utils.IncludeProcessor(content, Path.Combine(activeConfig.Source, "_partials"));
// the last action has to be replacing the content marker, so markers in the content which we have in the template as well aren't replaced
sb.Replace("{{Content}}", content);
Utils.CreateFoldersIfRequired(destinationFile);
File.WriteAllText(destinationFile, sb.ToString());
if(!this.IsIndexElement)


+ 34
- 1
src/DocNet/Utils.cs View File

@@ -25,6 +25,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace Docnet
@@ -184,5 +185,37 @@ namespace Docnet

return relativePath;
}
}

/// <summary>
/// Regex expression used to parse @@include(filename.html) tag.
/// </summary>
private static Regex includeRegex = new Regex(@"@@include\((.*)\)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

/// <summary>
/// Process the input for @@include tags and embeds the included content
/// into the output.
/// </summary>
/// <param name="content"></param>
/// <param name="partialPath"></param>
/// <returns></returns>
public static string IncludeProcessor(string content, string partialPath)
{
Match m = includeRegex.Match(content);
while (m.Success)
{
if (m.Groups.Count > 1)
{
string tagToReplace = m.Groups[0].Value;
string fileName = m.Groups[1].Value;
string filePath = Path.Combine(partialPath, fileName);
if (File.Exists(filePath))
{
content = content.Replace(tagToReplace, File.ReadAllText(filePath));
}
}
m = m.NextMatch();
}
return content;
}
}
}

Loading…
Cancel
Save