Skip to content

Instantly share code, notes, and snippets.

@jonnii
Created January 30, 2013 18:19
Show Gist options
  • Save jonnii/4675384 to your computer and use it in GitHub Desktop.
Save jonnii/4675384 to your computer and use it in GitHub Desktop.
Ember Cassette pipeline transformer.
public class EmberPipelineModifier : IBundlePipelineModifier<HtmlTemplateBundle>
{
public IBundlePipeline<HtmlTemplateBundle> Modify(IBundlePipeline<HtmlTemplateBundle> pipeline)
{
pipeline.Add(new EmberCompatabilityProcessor());
return pipeline;
}
}
public class EmberCompatabilityProcessor : IBundleProcessor<HtmlTemplateBundle>
{
public void Process(HtmlTemplateBundle bundle)
{
foreach (var asset in bundle.Assets)
{
asset.AddAssetTransformer(new EmberCompatibleIdAssetTransformer());
}
}
}
public class EmberCompatibleIdAssetTransformer : IAssetTransformer
{
public Func<Stream> Transform(Func<Stream> openSourceStream, IAsset asset)
{
return () =>
{
using (var reader = new StreamReader(openSourceStream()))
{
var content = reader.ReadToEnd();
var matches = Regex.Matches(content, "id=\"([a-zA-Z-]+)\"");
foreach (Match match in matches)
{
var replaced = match.Value.Replace("-", "/");
content = content.Replace(match.Value, replaced);
}
return new MemoryStream(Encoding.Default.GetBytes(content));
}
};
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment