Fixing an issue with output parameters that are of type IntPtr
[castle.git] / Samples / MonoRail / SampleSite / Controllers / CodeController.cs
blobc27d245629405746fd19f85cc9477a37c8667920
1 // Copyright 2004-2008 Castle Project - http://www.castleproject.org/
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace SampleSite.Controllers
17 using System;
18 using System.IO;
19 using System.Text;
21 using Castle.MonoRail.Framework;
24 public class CodeController : SmartDispatcherController
26 public void ShowCode(String file)
28 FileInfo info = new FileInfo( Path.Combine(AppDomain.CurrentDomain.BaseDirectory, file) );
30 if (info.Exists &&
31 (info.Extension.Equals(".cs") || info.Extension.Equals(".vm") || info.Extension.Equals(".aspx")))
33 bool encodeTags = info.Extension.Equals(".vm") || info.Extension.Equals(".aspx");
35 StringBuilder sb = new StringBuilder();
37 using(FileStream fs = File.OpenRead( info.FullName ))
39 StreamReader reader = new StreamReader(fs);
40 String line;
41 while( (line = reader.ReadLine()) != null )
43 line = line.Replace("\t", " ");
44 if (encodeTags)
46 line = line.Replace("<", "&lt;");
47 line = line.Replace(">", "&gt;");
49 sb.Append( line );
50 sb.Append( "\r\n" );
54 PropertyBag.Add("file", info.FullName);
55 PropertyBag.Add("code", sb.ToString());
57 else
59 RenderText( String.Format("Source file {0} not found", info.Name) );