Parent

Class/Module Index [+]

Quicksearch

ClsRuby::TagNoValue

Класс тега, который не позволяет использования внутри себя токенов :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, то тегу разрешается встречаться во входном потоке только один раз.

Public Class Methods

new( params = {} ) click to toggle source
# File lib/cls-ruby/tag_no_value.rb, line 37
def initialize( params = {} )
  super( params )

  @tag_is_once = tag_params.fetch( :once, false )
end

Public Instance Methods

tag_on_start( name ) click to toggle source

Генерит исключение 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

[Validate]

Generated with the Darkfish Rdoc Generator 2.