#ifndef ARABICA_XSLT_TEXT_HPP
#define ARABICA_XSLT_TEXT_HPP

#include "xslt_item.hpp"

namespace Arabica
{
namespace XSLT
{

template<class string_type, class string_adaptor>
class Text : public Item<string_type, string_adaptor>
{
public:
  Text(bool disable_output_escaping) : 
    disable_(disable_output_escaping)
  { 
  } // Text

  Text(const string_type& text) :
      text_(text),
      disable_(false)
  {
  } // Text

  void set(const string_type& text) { text_ = text; }

  virtual void execute(const DOM::Node<string_type, string_adaptor>& /* node */, 
		                   ExecutionContext<string_type, string_adaptor>& context) const
  {
    if(disable_)
      context.sink().disableOutputEscaping(true);

    context.sink().characters(text_);

    if(disable_)
      context.sink().disableOutputEscaping(false);
  } // execute

private:
  string_type text_;
  const bool disable_;
}; // class Text

} // namespace XSLT
} // namespace Arabica
#endif