Class Index [+]

Quicksearch

Принципы работы с Cls. Базовые методы разбора входных потоков

ClsRuby предоставляет готовые методы для разбора Cls-потока, находящегося в строке, файле или произвольном объекте IO. Данный раздел коротко описывает каждый из методов.

ClsRuby#parse_io

Метод ClsRuby#parse_io предназначен для разбора Cls-потока, который доступен через объект IO. Этот объект может быть получен, например, в результате открытия файла или с помощью метода IO#popen.

Пример использования ClsRuby#parse_io:

parsed_output = IO.popen( 'some-cmd' ) do |output|
  root_tag = SomeRootTag.new
  ClsRuby::parse_io( output, 'some-cmd output', root_tag )
  root_tag.value
end

ClsRuby#parse_file

Метод ClsRuby#parse_file предназначен для разбора Cls-потока, находящегося в указаном файле. Данный метод удобен при чтении конфигурационных файлов в формате Ruby.

Пример использования ClsRuby#parse_file:

root_tag = SomeConfigRootTag.new
ClsRuby::parse_file( 'some-config.cfg', root_tag )

ClsRuby#parse_string

Метод ClsRuby#parse_string предназначен для разбора Cls-потока, находящегося в указаном объекте String. Данный метод удобен при извлечении строк с Cls-тегами из каких-либо не Cls-хранилищ. Например, когда Cls-теги хранятся в текстовых полях базы данных.

Пример использования ClsRuby#parse_string:

cls_data = read_cls_data_from_somewhere
root_tag = SomeRootTag.new
ClsRuby::parse_string( cls_data, root_tag )

Общие замечания

Методы ClsRuby#parse_file и ClsRuby#parse_string всего лишь синтаксический сахар

Основные действия по разбору Cls-потока выполняет метод ClsRuby#parse_io. Методы ClsRuby#parse_file и ClsRuby#parse_string являются всего лишь синтаксическим сахаром, облегчающим разбор в наиболее распространенных ситуациях. В действительности же parse_file и parse_string являются тонкими обертками над parse_io.

Данный факт может быть важен при необходимости создания собственного метода разбора Cls-потока – вполне вероятно, что его можно будет сделать такой же оберткой над ClsRuby#parse_io, как в случае parse_file и parse_string.

Методы parse_* могут принимать более одного корневого тега в качестве параметров

Приведенные выше примеры использования методов parse_* использовали всего один корневой тег во входном потоке – он передавался в методы parse_* последним аргументом с именем root_tag. Однако, методы parse_* могут работать и в случаях, когда таких корневых тегов должно быть несколько:

first_root_tag = FirstRootTag.new
second_root_tag = SecondRootTag.new
third_root_tag = ThirdRootTag.new

ClsRuby::parse_string( cls_data,
    first_root_tag,
    second_root_tag,
    third_root_tag )

или же таким образом:

# Корневые теги создаются вспомогательным методом и
# возвращаются в виде объекта Array.
root_tags = make_root_tags

ClsRuby::parse_string( cls_data, *root_tags )

# vim:ts=2:sts=2:sw=2:expandtab:ft=txt:tw=78

[Validate]

Generated with the Darkfish Rdoc Generator 2.