1 // Copyright 2004-2008 Castle Project - http://www.castleproject.org/
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
7 // http://www.apache.org/licenses/LICENSE-2.0
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 Castle
.MonoRail
.Views
.Brail
17 using System
.Collections
;
18 using System
.Collections
.Generic
;
22 public class HtmlExtension
: IDslLanguageExtension
24 private readonly TextWriter _output
= null;
26 public HtmlExtension(TextWriter output
)
31 public TextWriter Output
33 get { return _output; }
36 #region IDslLanguageExtension Members
38 public void Tag(string name
)
40 BlockTag(name
, null, null);
43 public void Tag(string name
, ICallable block
)
45 BlockTag(name
, null, block
);
48 public void Tag(string name
, IDictionary attributes
, ICallable block
)
50 BlockTag(name
, attributes
, block
);
60 private void BlockTag(string tag
, IDictionary attributes
, ICallable block
)
62 Output
.Write("<{0}", tag
);
64 List
<string> attributeValues
= new List
<string>();
66 if (null != attributes
)
68 foreach(DictionaryEntry entry
in attributes
)
70 attributeValues
.Add(string.Format("{0}=\"{1}\"", entry
.Key
, entry
.Value
));
74 if (0 != attributeValues
.Count
)
77 Output
.Write(string.Join(" ", attributeValues
.ToArray()));
85 Output
.Write("</{0}>", tag
);
88 public void html(ICallable block
)
90 BlockTag("html", null, block
);
93 public void text(string value)
98 public void p(ICallable block
)
103 public void p(IDictionary attributes
, ICallable block
)
105 BlockTag("p", attributes
, block
);