mirror of
				https://github.com/art-ist/mustache-sharp.git
				synced 2024-06-16 21:05:32 +00:00 
			
		
		
		
	Allow for the preservation of newlines
This commit is contained in:
		
							parent
							
								
									10304d811c
								
							
						
					
					
						commit
						60f8294eb4
					
				| @ -1364,5 +1364,28 @@ Odd | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         #endregion |         #endregion | ||||||
|  | 
 | ||||||
|  |         #region New Line Management | ||||||
|  | 
 | ||||||
|  | 		/// <summary> | ||||||
|  | 		/// If the compiler is configured to ignore new lines, | ||||||
|  |         /// they should not be removed from the output. | ||||||
|  | 		/// </summary> | ||||||
|  | 		[TestMethod] | ||||||
|  | 		public void TestCompile_PreserveNewLines()  | ||||||
|  |         { | ||||||
|  | 		    FormatCompiler compiler = new FormatCompiler(); | ||||||
|  | 		    compiler.RemoveNewLines = false; | ||||||
|  | 		    const string format = @"Hello
 | ||||||
|  |     ";
 | ||||||
|  | 
 | ||||||
|  | 		    const string expected = @"Hello
 | ||||||
|  |     ";
 | ||||||
|  | 		    Generator generator = compiler.Compile(format); | ||||||
|  | 		    string result = generator.Render(null); | ||||||
|  | 		    Assert.AreEqual(expected, result, "The wrong text was generated."); | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  |         #endregion | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -41,6 +41,8 @@ namespace Mustache | |||||||
|             _tagLookup.Add(newlineDefinition.Name, newlineDefinition); |             _tagLookup.Add(newlineDefinition.Name, newlineDefinition); | ||||||
|             SetTagDefinition setDefinition = new SetTagDefinition(); |             SetTagDefinition setDefinition = new SetTagDefinition(); | ||||||
|             _tagLookup.Add(setDefinition.Name, setDefinition); |             _tagLookup.Add(setDefinition.Name, setDefinition); | ||||||
|  | 
 | ||||||
|  |             RemoveNewLines = true; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
| @ -53,6 +55,11 @@ namespace Mustache | |||||||
|         /// </summary> |         /// </summary> | ||||||
|         public event EventHandler<VariableFoundEventArgs> VariableFound; |         public event EventHandler<VariableFoundEventArgs> VariableFound; | ||||||
| 
 | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// Gets or sets whether newlines are removed from the template (default: true). | ||||||
|  |         /// </summary> | ||||||
|  |         public bool RemoveNewLines { get; set; } | ||||||
|  | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// Registers the given tag definition with the parser. |         /// Registers the given tag definition with the parser. | ||||||
|         /// </summary> |         /// </summary> | ||||||
| @ -87,7 +94,7 @@ namespace Mustache | |||||||
|             List<Context> context = new List<Context>() { new Context(_masterDefinition.Name, new ContextParameter[0]) }; |             List<Context> context = new List<Context>() { new Context(_masterDefinition.Name, new ContextParameter[0]) }; | ||||||
|             int formatIndex = buildCompoundGenerator(_masterDefinition, context, generator, format, 0); |             int formatIndex = buildCompoundGenerator(_masterDefinition, context, generator, format, 0); | ||||||
|             string trailing = format.Substring(formatIndex); |             string trailing = format.Substring(formatIndex); | ||||||
|             generator.AddGenerator(new StaticGenerator(trailing)); |             generator.AddGenerator(new StaticGenerator(trailing, RemoveNewLines)); | ||||||
|             return new Generator(generator); |             return new Generator(generator); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -198,7 +205,7 @@ namespace Mustache | |||||||
| 
 | 
 | ||||||
|                 if (match.Groups["key"].Success) |                 if (match.Groups["key"].Success) | ||||||
|                 { |                 { | ||||||
|                     generator.AddGenerator(new StaticGenerator(leading)); |                     generator.AddGenerator(new StaticGenerator(leading, RemoveNewLines)); | ||||||
|                     formatIndex = match.Index + match.Length; |                     formatIndex = match.Index + match.Length; | ||||||
|                     string key = match.Groups["key"].Value; |                     string key = match.Groups["key"].Value; | ||||||
|                     string alignment = match.Groups["alignment"].Value; |                     string alignment = match.Groups["alignment"].Value; | ||||||
| @ -239,7 +246,7 @@ namespace Mustache | |||||||
|                         throw new FormatException(message); |                         throw new FormatException(message); | ||||||
|                     } |                     } | ||||||
| 
 | 
 | ||||||
|                     generator.AddGenerator(new StaticGenerator(leading)); |                     generator.AddGenerator(new StaticGenerator(leading, RemoveNewLines)); | ||||||
|                     ArgumentCollection arguments = getArguments(nextDefinition, match, context); |                     ArgumentCollection arguments = getArguments(nextDefinition, match, context); | ||||||
| 
 | 
 | ||||||
|                     if (nextDefinition.HasContent) |                     if (nextDefinition.HasContent) | ||||||
| @ -267,7 +274,7 @@ namespace Mustache | |||||||
|                 } |                 } | ||||||
|                 else if (match.Groups["close"].Success) |                 else if (match.Groups["close"].Success) | ||||||
|                 { |                 { | ||||||
|                     generator.AddGenerator(new StaticGenerator(leading)); |                     generator.AddGenerator(new StaticGenerator(leading, RemoveNewLines)); | ||||||
|                     string tagName = match.Groups["name"].Value; |                     string tagName = match.Groups["name"].Value; | ||||||
|                     TagDefinition nextDefinition = _tagLookup[tagName]; |                     TagDefinition nextDefinition = _tagLookup[tagName]; | ||||||
|                     formatIndex = match.Index; |                     formatIndex = match.Index; | ||||||
| @ -279,7 +286,7 @@ namespace Mustache | |||||||
|                 } |                 } | ||||||
|                 else if (match.Groups["comment"].Success) |                 else if (match.Groups["comment"].Success) | ||||||
|                 { |                 { | ||||||
|                     generator.AddGenerator(new StaticGenerator(leading)); |                     generator.AddGenerator(new StaticGenerator(leading, RemoveNewLines)); | ||||||
|                     formatIndex = match.Index + match.Length; |                     formatIndex = match.Index + match.Length; | ||||||
|                 } |                 } | ||||||
|                 else if (match.Groups["unknown"].Success) |                 else if (match.Groups["unknown"].Success) | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.IO; | using System.IO; | ||||||
| 
 | 
 | ||||||
| namespace Mustache | namespace Mustache | ||||||
| @ -14,10 +13,17 @@ namespace Mustache | |||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// Initializes a new instance of a StaticGenerator. |         /// Initializes a new instance of a StaticGenerator. | ||||||
|         /// </summary> |         /// </summary> | ||||||
|         public StaticGenerator(string value) |         public StaticGenerator(string value, bool removeNewLines) | ||||||
|  |         { | ||||||
|  |             if (removeNewLines) | ||||||
|             { |             { | ||||||
|                 this.value = value.Replace(Environment.NewLine, String.Empty); |                 this.value = value.Replace(Environment.NewLine, String.Empty); | ||||||
|             } |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 this.value = value; | ||||||
|  |             } | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
|         /// Gets or sets the static text. |         /// Gets or sets the static text. | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Travis Parks
						Travis Parks