public string Write(IGlslShader shader) { var impl = new NestedStringBuilderImpl(" "); // TODO: Support different versions. impl.WriteLine("#version 110"); foreach (var inVar in shader.Ins) { GlslWriter.WriteHeaderVariable_(impl, HeaderVariableType.IN, inVar); } impl.Write("\n"); foreach (var outVar in shader.Outs) { GlslWriter.WriteHeaderVariable_(impl, HeaderVariableType.OUT, outVar); } impl.Write("\n"); foreach (var uniformVar in shader.Uniforms) { GlslWriter.WriteHeaderVariable_(impl, HeaderVariableType.UNIFORM, uniformVar); } impl.Write("\n\n"); foreach (var method in shader.Methods) { GlslWriter.WriteMethod_(impl, method); impl.Write("\n"); } return(impl.ToString()); }
public void TestAll() { var writer = new NestedStringBuilderImpl(" "); writer.Write("foo") .WriteLine("bar") .Write("(") .Nest("foo") .Nest("bar") .WriteLine(")") .Write("(") .Nest( w => w .WriteLine("boo") .WriteLine("(") .Nest("hoo") .WriteLine(")")) .WriteLine(")") .WriteLine("hello") .Write("goodbye"); var actualText = writer.ToString(); var expectedLines = new[] { "foobar", "(", " foo", " bar", ")", "(", " boo", " (", " hoo", " )", ")", "hello", "goodbye", }; var expectedText = StringUtil.Concat(expectedLines, "\n"); Expect.AreEqual(expectedText, actualText); }