Класс тега, который не позволяет использования внутри себя токенов :tok_string и :tok_nonspace. Он может использоваться либо в качестве тега-переключателя (т.е. важен сам факт его наличия), либо в качестве хранилища дочерних тегов.
Например, следующая теговая структура:
{mode {logging} # Наличие тега как переключатель. {timeout 100} # Дочерние теги с собственными значениями. {attempts 10} }
может быть выражена через TagNoValue таким образом:
class TagMode < ClsRuby::TagNoValue def initialize super( :name => 'mode', :mandatory => true, :once => true ) @logging = ClsRuby::TagNoValue.new( :name => 'logging', ... ) @timeout = ClsRuby::TagScalar.new( :name => 'timeout', ... ) @attempts = ClsRuby::TagScalar.new( :name => 'attempts', ... ) end end
В списке начальных параметров обрабатывается специальное значение: :once Если оно равно true, то тегу разрешается встречаться во входном потоке только один раз.
Генерит исключение TagAlreadyDefinedEx, если тег уже был разобран и тег может встречаться во входном потоке только один раз.
# File lib/cls-ruby/tag_no_value.rb, line 45 def tag_on_start( name ) raise TagAlreadyDefinedEx.new( "tag '#{name}' already defined" ) if tag_defined? && @tag_is_once super( name ) end
Generated with the Darkfish Rdoc Generator 2.